summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2020-02-27 13:09:39 -0800
committerMinh Nguyễn <mxn@1ec5.org>2020-02-27 17:14:20 -0800
commit206b9bde5ed9204de6ec18c0d37495db7c30aa09 (patch)
tree0049d4d6bd9195c194c0fe96665ba72c92f00da5
parentbd252e16a3574efd11cca57917f52e6d1b2dd0a2 (diff)
downloadqtlocation-mapboxgl-206b9bde5ed9204de6ec18c0d37495db7c30aa09.tar.gz
[ios, macos] Deleted iOS/macOS map SDK sources, resources, scripts
-rw-r--r--.gitmodules6
-rw-r--r--circle.yml6
-rw-r--r--platform/darwin/app/LimeGreenStyleLayer.h5
-rw-r--r--platform/darwin/app/LimeGreenStyleLayer.m58
-rw-r--r--platform/darwin/docs/guides/For Style Authors.md.ejs446
-rw-r--r--platform/darwin/docs/guides/Migrating to Expressions.md.ejs212
-rw-r--r--platform/darwin/docs/guides/Predicates and Expressions.md950
-rw-r--r--platform/darwin/docs/guides/Tile URL Templates.md.ejs109
-rw-r--r--platform/darwin/docs/guides/Working with GeoJSON Data.md101
-rw-r--r--platform/darwin/docs/img/data-driven-styling/cast.pngbin49974 -> 0 bytes
-rw-r--r--platform/darwin/docs/img/data-driven-styling/exponential-function-1.pngbin34835 -> 0 bytes
-rw-r--r--platform/darwin/docs/img/data-driven-styling/exponential-function.pngbin34933 -> 0 bytes
-rw-r--r--platform/darwin/docs/img/data-driven-styling/identity.pngbin70278 -> 0 bytes
-rw-r--r--platform/darwin/docs/img/data-driven-styling/multiply.pngbin50375 -> 0 bytes
m---------platform/darwin/docs/theme0
-rw-r--r--platform/darwin/resources/Base.lproj/Foundation.strings306
-rw-r--r--platform/darwin/resources/ar.lproj/Foundation.stringsdict78
-rw-r--r--platform/darwin/resources/bg.lproj/Foundation.strings296
-rw-r--r--platform/darwin/resources/bg.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/ca.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/ca.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/cs.lproj/Foundation.strings306
-rw-r--r--platform/darwin/resources/cs.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/da.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/da.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/de.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/de.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/en.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/es.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/es.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/fr.lproj/Foundation.strings303
-rw-r--r--platform/darwin/resources/fr.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/gl.lproj/Foundation.strings306
-rw-r--r--platform/darwin/resources/gl.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/he.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/hu.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/ja.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/ko.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/ko.lproj/Foundation.stringsdict48
-rw-r--r--platform/darwin/resources/lt.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/lt.lproj/Foundation.stringsdict60
-rw-r--r--platform/darwin/resources/pl.lproj/Foundation.stringsdict66
-rw-r--r--platform/darwin/resources/pt-BR.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/ru.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/ru.lproj/Foundation.stringsdict66
-rw-r--r--platform/darwin/resources/sv.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/sv.lproj/Foundation.stringsdict54
-rw-r--r--platform/darwin/resources/uk.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/uk.lproj/Foundation.stringsdict60
-rw-r--r--platform/darwin/resources/vi.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/vi.lproj/Foundation.stringsdict48
-rw-r--r--platform/darwin/resources/zh-Hans.lproj/Foundation.strings297
-rw-r--r--platform/darwin/resources/zh-Hant.lproj/Foundation.strings297
-rwxr-xr-xplatform/darwin/scripts/check-public-symbols.js83
-rwxr-xr-xplatform/darwin/scripts/generate-style-code.js925
-rw-r--r--platform/darwin/scripts/style-spec-cocoa-conventions-v8.json56
-rw-r--r--platform/darwin/scripts/style-spec-overrides-v8.json148
-rwxr-xr-xplatform/darwin/scripts/update-examples.js148
-rw-r--r--platform/darwin/src/MGLAccountManager.h41
-rw-r--r--platform/darwin/src/MGLAccountManager.m112
-rw-r--r--platform/darwin/src/MGLAccountManager_Private.h26
-rw-r--r--platform/darwin/src/MGLAnnotation.h65
-rw-r--r--platform/darwin/src/MGLAttributedExpression.h87
-rw-r--r--platform/darwin/src/MGLAttributedExpression.m68
-rw-r--r--platform/darwin/src/MGLAttributionInfo.h94
-rw-r--r--platform/darwin/src/MGLAttributionInfo.mm279
-rw-r--r--platform/darwin/src/MGLAttributionInfo_Private.h65
-rw-r--r--platform/darwin/src/MGLBackgroundStyleLayer.h149
-rw-r--r--platform/darwin/src/MGLBackgroundStyleLayer.mm146
-rw-r--r--platform/darwin/src/MGLBackgroundStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLCircleStyleLayer.h540
-rw-r--r--platform/darwin/src/MGLCircleStyleLayer.mm477
-rw-r--r--platform/darwin/src/MGLCircleStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLClockDirectionFormatter.h46
-rw-r--r--platform/darwin/src/MGLClockDirectionFormatter.m60
-rw-r--r--platform/darwin/src/MGLCluster.h53
-rw-r--r--platform/darwin/src/MGLCompassDirectionFormatter.h43
-rw-r--r--platform/darwin/src/MGLCompassDirectionFormatter.m125
-rw-r--r--platform/darwin/src/MGLComputedShapeSource.h167
-rw-r--r--platform/darwin/src/MGLComputedShapeSource.mm249
-rw-r--r--platform/darwin/src/MGLComputedShapeSource_Private.h12
-rw-r--r--platform/darwin/src/MGLConversion.h159
-rw-r--r--platform/darwin/src/MGLCoordinateFormatter.h56
-rw-r--r--platform/darwin/src/MGLCoordinateFormatter.m127
-rw-r--r--platform/darwin/src/MGLDistanceFormatter.h26
-rw-r--r--platform/darwin/src/MGLDistanceFormatter.m35
-rw-r--r--platform/darwin/src/MGLFeature.h300
-rw-r--r--platform/darwin/src/MGLFeature.mm542
-rw-r--r--platform/darwin/src/MGLFeature_Private.h85
-rw-r--r--platform/darwin/src/MGLFillExtrusionStyleLayer.h388
-rw-r--r--platform/darwin/src/MGLFillExtrusionStyleLayer.mm363
-rw-r--r--platform/darwin/src/MGLFillExtrusionStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLFillStyleLayer.h371
-rw-r--r--platform/darwin/src/MGLFillStyleLayer.mm330
-rw-r--r--platform/darwin/src/MGLFillStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLForegroundStyleLayer.h36
-rw-r--r--platform/darwin/src/MGLForegroundStyleLayer.mm26
-rw-r--r--platform/darwin/src/MGLFoundation.h5
-rw-r--r--platform/darwin/src/MGLFoundation.mm6
-rw-r--r--platform/darwin/src/MGLFoundation_Private.h19
-rw-r--r--platform/darwin/src/MGLGeometry.h243
-rw-r--r--platform/darwin/src/MGLGeometry.mm122
-rw-r--r--platform/darwin/src/MGLGeometry_Private.h152
-rw-r--r--platform/darwin/src/MGLHeatmapStyleLayer.h220
-rw-r--r--platform/darwin/src/MGLHeatmapStyleLayer.mm220
-rw-r--r--platform/darwin/src/MGLHeatmapStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLHillshadeStyleLayer.h324
-rw-r--r--platform/darwin/src/MGLHillshadeStyleLayer.mm245
-rw-r--r--platform/darwin/src/MGLHillshadeStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLImageSource.h99
-rw-r--r--platform/darwin/src/MGLImageSource.mm112
-rw-r--r--platform/darwin/src/MGLLight.h242
-rw-r--r--platform/darwin/src/MGLLight.h.ejs105
-rw-r--r--platform/darwin/src/MGLLight.mm133
-rw-r--r--platform/darwin/src/MGLLight.mm.ejs120
-rw-r--r--platform/darwin/src/MGLLight_Private.h23
-rw-r--r--platform/darwin/src/MGLLineStyleLayer.h671
-rw-r--r--platform/darwin/src/MGLLineStyleLayer.mm568
-rw-r--r--platform/darwin/src/MGLLineStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLLocationManager.h203
-rw-r--r--platform/darwin/src/MGLLocationManager.m116
-rw-r--r--platform/darwin/src/MGLLocationManager_Private.h5
-rw-r--r--platform/darwin/src/MGLLoggingConfiguration.h99
-rw-r--r--platform/darwin/src/MGLLoggingConfiguration.mm161
-rw-r--r--platform/darwin/src/MGLLoggingConfiguration_Private.h67
-rw-r--r--platform/darwin/src/MGLMapCamera.h152
-rw-r--r--platform/darwin/src/MGLMapCamera.mm196
-rw-r--r--platform/darwin/src/MGLMapSnapshotter.h281
-rw-r--r--platform/darwin/src/MGLMapSnapshotter.mm752
-rw-r--r--platform/darwin/src/MGLMapSnapshotter_Private.h14
-rw-r--r--platform/darwin/src/MGLMultiPoint.h167
-rw-r--r--platform/darwin/src/MGLMultiPoint.mm204
-rw-r--r--platform/darwin/src/MGLMultiPoint_Private.h46
-rw-r--r--platform/darwin/src/MGLNetworkConfiguration.h37
-rw-r--r--platform/darwin/src/MGLNetworkConfiguration.m162
-rw-r--r--platform/darwin/src/MGLNetworkConfiguration_Private.h25
-rw-r--r--platform/darwin/src/MGLNetworkIntegrationManager.h8
-rw-r--r--platform/darwin/src/MGLNetworkIntegrationManager.m54
-rw-r--r--platform/darwin/src/MGLOfflinePack.h203
-rw-r--r--platform/darwin/src/MGLOfflinePack.mm282
-rw-r--r--platform/darwin/src/MGLOfflinePack_Private.h23
-rw-r--r--platform/darwin/src/MGLOfflineRegion.h37
-rw-r--r--platform/darwin/src/MGLOfflineRegion_Private.h24
-rw-r--r--platform/darwin/src/MGLOfflineStorage.h474
-rw-r--r--platform/darwin/src/MGLOfflineStorage.mm652
-rw-r--r--platform/darwin/src/MGLOfflineStorage_Private.h36
-rw-r--r--platform/darwin/src/MGLOpenGLStyleLayer.h51
-rw-r--r--platform/darwin/src/MGLOpenGLStyleLayer.mm206
-rw-r--r--platform/darwin/src/MGLOpenGLStyleLayer_Private.h15
-rw-r--r--platform/darwin/src/MGLOverlay.h57
-rw-r--r--platform/darwin/src/MGLPointAnnotation.h55
-rw-r--r--platform/darwin/src/MGLPointAnnotation.mm72
-rw-r--r--platform/darwin/src/MGLPointCollection.h65
-rw-r--r--platform/darwin/src/MGLPointCollection.mm136
-rw-r--r--platform/darwin/src/MGLPointCollection_Private.h11
-rw-r--r--platform/darwin/src/MGLPolygon.h129
-rw-r--r--platform/darwin/src/MGLPolygon.mm240
-rw-r--r--platform/darwin/src/MGLPolygon_Private.h11
-rw-r--r--platform/darwin/src/MGLPolyline.h112
-rw-r--r--platform/darwin/src/MGLPolyline.mm228
-rw-r--r--platform/darwin/src/MGLPolyline_Private.h12
-rw-r--r--platform/darwin/src/MGLRasterDEMSource.h50
-rw-r--r--platform/darwin/src/MGLRasterDEMSource.mm16
-rw-r--r--platform/darwin/src/MGLRasterStyleLayer.h347
-rw-r--r--platform/darwin/src/MGLRasterStyleLayer.mm339
-rw-r--r--platform/darwin/src/MGLRasterStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLRasterTileSource.h139
-rw-r--r--platform/darwin/src/MGLRasterTileSource.mm85
-rw-r--r--platform/darwin/src/MGLRasterTileSource_Private.h23
-rw-r--r--platform/darwin/src/MGLRendererConfiguration.h54
-rw-r--r--platform/darwin/src/MGLRendererConfiguration.mm119
-rw-r--r--platform/darwin/src/MGLRendererFrontend.h75
-rw-r--r--platform/darwin/src/MGLSDKMetricsManager.h79
-rw-r--r--platform/darwin/src/MGLSDKMetricsManager.m134
-rw-r--r--platform/darwin/src/MGLSDKMetricsManager_Private.h11
-rw-r--r--platform/darwin/src/MGLShape.h115
-rw-r--r--platform/darwin/src/MGLShape.mm121
-rw-r--r--platform/darwin/src/MGLShapeCollection.h56
-rw-r--r--platform/darwin/src/MGLShapeCollection.mm80
-rw-r--r--platform/darwin/src/MGLShapeOfflineRegion.h86
-rw-r--r--platform/darwin/src/MGLShapeOfflineRegion.mm150
-rw-r--r--platform/darwin/src/MGLShapeOfflineRegion_Private.h22
-rw-r--r--platform/darwin/src/MGLShapeSource.h400
-rw-r--r--platform/darwin/src/MGLShapeSource.mm355
-rw-r--r--platform/darwin/src/MGLShapeSource_Private.h33
-rw-r--r--platform/darwin/src/MGLShape_Private.h26
-rw-r--r--platform/darwin/src/MGLSource.h56
-rw-r--r--platform/darwin/src/MGLSource.mm120
-rw-r--r--platform/darwin/src/MGLSource_Private.h89
-rw-r--r--platform/darwin/src/MGLStyle.h542
-rw-r--r--platform/darwin/src/MGLStyle.mm636
-rw-r--r--platform/darwin/src/MGLStyleLayer.h66
-rw-r--r--platform/darwin/src/MGLStyleLayer.h.ejs199
-rw-r--r--platform/darwin/src/MGLStyleLayer.mm123
-rw-r--r--platform/darwin/src/MGLStyleLayer.mm.ejs265
-rw-r--r--platform/darwin/src/MGLStyleLayerManager.h47
-rw-r--r--platform/darwin/src/MGLStyleLayerManager.mm147
-rw-r--r--platform/darwin/src/MGLStyleLayer_Private.h104
-rw-r--r--platform/darwin/src/MGLStyleLayer_Private.h.ejs24
-rw-r--r--platform/darwin/src/MGLStyleValue.h48
-rw-r--r--platform/darwin/src/MGLStyleValue.mm59
-rw-r--r--platform/darwin/src/MGLStyleValue_Private.h348
-rw-r--r--platform/darwin/src/MGLStyle_Private.h40
-rw-r--r--platform/darwin/src/MGLSymbolStyleLayer.h2488
-rw-r--r--platform/darwin/src/MGLSymbolStyleLayer.mm1670
-rw-r--r--platform/darwin/src/MGLSymbolStyleLayer_Private.h17
-rw-r--r--platform/darwin/src/MGLTilePyramidOfflineRegion.h88
-rw-r--r--platform/darwin/src/MGLTilePyramidOfflineRegion.mm154
-rw-r--r--platform/darwin/src/MGLTilePyramidOfflineRegion_Private.h22
-rw-r--r--platform/darwin/src/MGLTileSource.h206
-rw-r--r--platform/darwin/src/MGLTileSource.mm152
-rw-r--r--platform/darwin/src/MGLTileSource_Private.h38
-rw-r--r--platform/darwin/src/MGLTypes.h140
-rw-r--r--platform/darwin/src/MGLTypes.m5
-rw-r--r--platform/darwin/src/MGLValueEvaluator.h49
-rw-r--r--platform/darwin/src/MGLVectorStyleLayer.h58
-rw-r--r--platform/darwin/src/MGLVectorStyleLayer.mm34
-rw-r--r--platform/darwin/src/MGLVectorTileSource.h150
-rw-r--r--platform/darwin/src/MGLVectorTileSource.mm154
-rw-r--r--platform/darwin/src/MGLVectorTileSource_Private.h16
-rw-r--r--platform/darwin/src/NSArray+MGLAdditions.h27
-rw-r--r--platform/darwin/src/NSArray+MGLAdditions.mm66
-rw-r--r--platform/darwin/src/NSBundle+MGLAdditions.h45
-rw-r--r--platform/darwin/src/NSBundle+MGLAdditions.m50
-rw-r--r--platform/darwin/src/NSCoder+MGLAdditions.h16
-rw-r--r--platform/darwin/src/NSCoder+MGLAdditions.mm26
-rw-r--r--platform/darwin/src/NSComparisonPredicate+MGLAdditions.h7
-rw-r--r--platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm157
-rw-r--r--platform/darwin/src/NSCompoundPredicate+MGLAdditions.h7
-rw-r--r--platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm50
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.h17
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.mm11
-rw-r--r--platform/darwin/src/NSDictionary+MGLAdditions.h13
-rw-r--r--platform/darwin/src/NSDictionary+MGLAdditions.mm24
-rw-r--r--platform/darwin/src/NSException+MGLAdditions.h4
-rw-r--r--platform/darwin/src/NSExpression+MGLAdditions.h237
-rw-r--r--platform/darwin/src/NSExpression+MGLAdditions.mm1605
-rw-r--r--platform/darwin/src/NSExpression+MGLPrivateAdditions.h84
-rw-r--r--platform/darwin/src/NSPredicate+MGLAdditions.h44
-rw-r--r--platform/darwin/src/NSPredicate+MGLAdditions.mm220
-rw-r--r--platform/darwin/src/NSPredicate+MGLPrivateAdditions.h25
-rw-r--r--platform/darwin/src/NSString+MGLAdditions.h46
-rw-r--r--platform/darwin/src/NSString+MGLAdditions.m82
-rw-r--r--platform/darwin/src/NSURL+MGLAdditions.h15
-rw-r--r--platform/darwin/src/NSURL+MGLAdditions.m14
-rw-r--r--platform/darwin/src/NSValue+MGLAdditions.h148
-rw-r--r--platform/darwin/src/NSValue+MGLAdditions.m104
-rw-r--r--platform/darwin/src/NSValue+MGLStyleAttributeAdditions.h14
-rw-r--r--platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm76
-rw-r--r--platform/darwin/test/MGLAttributionInfoTests.m137
-rw-r--r--platform/darwin/test/MGLBackgroundStyleLayerTests.mm197
-rw-r--r--platform/darwin/test/MGLCircleStyleLayerTests.mm804
-rw-r--r--platform/darwin/test/MGLClockDirectionFormatterTests.m72
-rw-r--r--platform/darwin/test/MGLCodingTests.mm615
-rw-r--r--platform/darwin/test/MGLCompassDirectionFormatterTests.m88
-rw-r--r--platform/darwin/test/MGLComputedShapeSourceTests.m24
-rw-r--r--platform/darwin/test/MGLCoordinateFormatterTests.m48
-rw-r--r--platform/darwin/test/MGLDistanceFormatterTests.m30
-rw-r--r--platform/darwin/test/MGLDocumentationExampleTests.swift592
-rw-r--r--platform/darwin/test/MGLDocumentationGuideTests.swift270
-rw-r--r--platform/darwin/test/MGLExpressionTests.mm1408
-rw-r--r--platform/darwin/test/MGLFeatureTests.mm364
-rw-r--r--platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm541
-rw-r--r--platform/darwin/test/MGLFillStyleLayerTests.mm487
-rw-r--r--platform/darwin/test/MGLGeometryTests.mm211
-rw-r--r--platform/darwin/test/MGLHeatmapColorTests.mm62
-rw-r--r--platform/darwin/test/MGLHeatmapStyleLayerTests.mm313
-rw-r--r--platform/darwin/test/MGLHillshadeStyleLayerTests.mm349
-rw-r--r--platform/darwin/test/MGLImageSourceTests.m42
-rw-r--r--platform/darwin/test/MGLLightTest.mm133
-rw-r--r--platform/darwin/test/MGLLightTest.mm.ejs91
-rw-r--r--platform/darwin/test/MGLLineStyleLayerTests.mm904
-rw-r--r--platform/darwin/test/MGLMapCameraTests.m106
-rw-r--r--platform/darwin/test/MGLMapViewTests.m155
-rw-r--r--platform/darwin/test/MGLNSDateAdditionsTests.mm40
-rw-r--r--platform/darwin/test/MGLNSStringAdditionsTests.m89
-rw-r--r--platform/darwin/test/MGLOfflinePackTests.mm58
-rw-r--r--platform/darwin/test/MGLOfflineRegionTests.m71
-rw-r--r--platform/darwin/test/MGLOfflineStorageTests.mm671
-rw-r--r--platform/darwin/test/MGLPredicateTests.mm426
-rw-r--r--platform/darwin/test/MGLRasterStyleLayerTests.mm430
-rw-r--r--platform/darwin/test/MGLRendererConfigurationTests.mm197
-rw-r--r--platform/darwin/test/MGLResourceTests.mm85
-rw-r--r--platform/darwin/test/MGLSDKTestHelpers.swift48
-rw-r--r--platform/darwin/test/MGLShapeSourceTests.mm330
-rw-r--r--platform/darwin/test/MGLSourceQueryTests.m25
-rw-r--r--platform/darwin/test/MGLStyleLayerTests.h28
-rw-r--r--platform/darwin/test/MGLStyleLayerTests.m125
-rw-r--r--platform/darwin/test/MGLStyleLayerTests.mm.ejs232
-rw-r--r--platform/darwin/test/MGLStyleTests.mm500
-rw-r--r--platform/darwin/test/MGLSymbolStyleLayerTests.mm3204
-rw-r--r--platform/darwin/test/MGLTestAssertionHandler.h18
-rw-r--r--platform/darwin/test/MGLTestAssertionHandler.m77
-rw-r--r--platform/darwin/test/MGLTestUtility.h27
-rw-r--r--platform/darwin/test/MGLTileSetTests.mm149
-rw-r--r--platform/darwin/test/MGLVersionNumber.m15
-rw-r--r--platform/darwin/test/Media.xcassets/Contents.json6
-rw-r--r--platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json21
-rw-r--r--platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.pngbin44094 -> 0 bytes
-rw-r--r--platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json26
-rw-r--r--platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.pngbin407 -> 0 bytes
-rw-r--r--platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.pngbin680 -> 0 bytes
-rw-r--r--platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.pngbin903 -> 0 bytes
-rw-r--r--platform/darwin/test/amsterdam.geojson2283
-rw-r--r--platform/darwin/test/one-liner.json1
-rw-r--r--platform/darwin/test/test-Bridging-Header.h4
-rw-r--r--platform/ios/Integration Test Harness/AppDelegate.h8
-rw-r--r--platform/ios/Integration Test Harness/AppDelegate.m14
-rw-r--r--platform/ios/Integration Test Harness/Assets.xcassets/AppIcon.appiconset/Contents.json98
-rw-r--r--platform/ios/Integration Test Harness/Base.lproj/LaunchScreen.storyboard25
-rw-r--r--platform/ios/Integration Test Harness/Info.plist45
-rw-r--r--platform/ios/Integration Test Harness/main.m8
-rw-r--r--platform/ios/Integration Tests/Annotation Tests/MGLAnnotationViewIntegrationTests.mm818
-rw-r--r--platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionFinishTests.mm109
-rw-r--r--platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionTests.mm394
-rw-r--r--platform/ios/Integration Tests/Info.plist22
-rw-r--r--platform/ios/Integration Tests/MBGLIntegrationTests.mm252
-rw-r--r--platform/ios/Integration Tests/MGLMapViewIntegrationTest.h45
-rw-r--r--platform/ios/Integration Tests/MGLMapViewIntegrationTest.m200
-rw-r--r--platform/ios/Integration Tests/MGLMapViewPendingBlockTests.m366
-rw-r--r--platform/ios/Integration Tests/MGLShapeSourceTests.m163
-rw-r--r--platform/ios/Integration Tests/MGLSourceTests.swift45
-rw-r--r--platform/ios/Integration Tests/MGLStyleLayerIntegrationTests.m112
-rw-r--r--platform/ios/Integration Tests/MGLStyleURLIntegrationTest.m38
-rw-r--r--platform/ios/Integration Tests/MGLTestLocationManager.h10
-rw-r--r--platform/ios/Integration Tests/MGLTestLocationManager.m44
-rw-r--r--platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterSwiftTests.swift77
-rw-r--r--platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterTest.m537
-rw-r--r--platform/ios/Integration Tests/integration-Bridging-Header.h5
-rw-r--r--platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec32
-rw-r--r--platform/ios/Mapbox-iOS-SDK-stripped.podspec32
-rw-r--r--platform/ios/Mapbox-iOS-SDK.podspec32
-rw-r--r--platform/ios/Mapbox.playground/Contents.swift154
-rw-r--r--platform/ios/Mapbox.playground/contents.xcplayground4
-rw-r--r--platform/ios/WorkspaceSettings.xcsettings22
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json112
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.pngbin12225 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.pngbin1745 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.pngbin1745 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.pngbin2580 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.pngbin1270 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.pngbin2351 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.pngbin2351 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.pngbin3497 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.pngbin5275 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.pngbin2250 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.pngbin4425 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.pngbin4895 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.pngbin907 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.pngbin3497 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/Contents.json6
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json26
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.pngbin250 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.pngbin467 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.pngbin672 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json26
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.pngbin407 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.pngbin680 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.pngbin903 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json26
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.pngbin493 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.pngbin973 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.pngbin1407 -> 0 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/settings.imageset/Contents.json12
-rw-r--r--platform/ios/app/Assets.xcassets/settings.imageset/settings.pdfbin9177 -> 0 bytes
-rw-r--r--platform/ios/app/Base.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/Info.plist68
-rw-r--r--platform/ios/app/LaunchScreen.storyboard31
-rw-r--r--platform/ios/app/MBXAnnotationView.h4
-rw-r--r--platform/ios/app/MBXAnnotationView.m52
-rw-r--r--platform/ios/app/MBXAppDelegate.h7
-rw-r--r--platform/ios/app/MBXAppDelegate.m48
-rw-r--r--platform/ios/app/MBXCustomCalloutView.h13
-rw-r--r--platform/ios/app/MBXCustomCalloutView.m110
-rw-r--r--platform/ios/app/MBXCustomLocationViewController.h5
-rw-r--r--platform/ios/app/MBXCustomLocationViewController.m175
-rw-r--r--platform/ios/app/MBXEmbeddedMapViewController.h5
-rw-r--r--platform/ios/app/MBXEmbeddedMapViewController.m90
-rw-r--r--platform/ios/app/MBXFrameTimeGraphView.h11
-rw-r--r--platform/ios/app/MBXFrameTimeGraphView.m145
-rw-r--r--platform/ios/app/MBXOfflinePacksTableViewController.h9
-rw-r--r--platform/ios/app/MBXOfflinePacksTableViewController.m284
-rw-r--r--platform/ios/app/MBXOrnamentsViewController.h5
-rw-r--r--platform/ios/app/MBXOrnamentsViewController.m96
-rw-r--r--platform/ios/app/MBXSnapshotsViewController.h5
-rw-r--r--platform/ios/app/MBXSnapshotsViewController.m67
-rw-r--r--platform/ios/app/MBXState.h33
-rw-r--r--platform/ios/app/MBXState.m80
-rw-r--r--platform/ios/app/MBXStateManager.h19
-rw-r--r--platform/ios/app/MBXStateManager.m43
-rw-r--r--platform/ios/app/MBXUserLocationAnnotationView.h5
-rw-r--r--platform/ios/app/MBXUserLocationAnnotationView.m165
-rw-r--r--platform/ios/app/MBXViewController.h5
-rw-r--r--platform/ios/app/MBXViewController.m2369
-rw-r--r--platform/ios/app/Main.storyboard473
-rw-r--r--platform/ios/app/Settings.bundle/Base.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/Root.plist33
-rw-r--r--platform/ios/app/Settings.bundle/ar.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/bg.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/ca.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/cs.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/da.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/de.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/en.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/es.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/fi.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/fr.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/gl.lproj/Root.stringsbin488 -> 0 bytes
-rw-r--r--platform/ios/app/Settings.bundle/he.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/hu.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/it.lproj/Root.stringsbin502 -> 0 bytes
-rw-r--r--platform/ios/app/Settings.bundle/ko.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/lt.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/nl.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/pl.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/ru.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/sv.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/uk.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/vi.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings3
-rw-r--r--platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings3
-rw-r--r--platform/ios/app/ar.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/bg.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/ca.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/cs.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/da.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/de.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/es.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/fi.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/fill_filter_style.json10976
-rw-r--r--platform/ios/app/fr.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/gl.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/he.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/hu.lproj/Localizable.strings0
-rwxr-xr-xplatform/ios/app/insert_access_token.sh17
-rw-r--r--platform/ios/app/ja.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/ko.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/line_filter_style.json8746
-rw-r--r--platform/ios/app/lt.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/main.m10
-rw-r--r--platform/ios/app/missing_icon.json40
-rw-r--r--platform/ios/app/nl.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/numeric_filter_style.json8734
-rw-r--r--platform/ios/app/pl.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/points.geojson136346
-rw-r--r--platform/ios/app/polyline.geojson14187
-rw-r--r--platform/ios/app/pt-BR.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/pt-PT.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/ru.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/simple_route.json184
-rw-r--r--platform/ios/app/sv.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/threestates.geojson1612
-rw-r--r--platform/ios/app/uk.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/vi.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/zh-Hans.lproj/Localizable.strings0
-rw-r--r--platform/ios/app/zh-Hant.lproj/Localizable.strings0
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json98
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.pngbin2296 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.pngbin5596 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.pngbin1640 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.pngbin5073 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.pngbin1295 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.pngbin2971 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.pngbin5936 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.pngbin2841 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.pngbin8633 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.pngbin1009 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.pngbin2046 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.pngbin3371 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.pngbin3559 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.pngbin113442 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.pngbin399202 -> 0 bytes
-rw-r--r--platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard27
-rw-r--r--platform/ios/benchmark/Info.plist53
-rw-r--r--platform/ios/benchmark/MBXBenchAppDelegate.h7
-rw-r--r--platform/ios/benchmark/MBXBenchAppDelegate.m16
-rw-r--r--platform/ios/benchmark/MBXBenchViewController.h5
-rw-r--r--platform/ios/benchmark/MBXBenchViewController.mm151
-rwxr-xr-xplatform/ios/benchmark/assets/glyphs/download.sh29
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets.json2034
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets.pngbin81643 -> 0 bytes
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json2034
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets@2x.pngbin192103 -> 0 bytes
-rw-r--r--platform/ios/benchmark/assets/styles/streets-v8.json8935
-rwxr-xr-xplatform/ios/benchmark/assets/tiles/download.sh96
-rw-r--r--platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json1
-rw-r--r--platform/ios/benchmark/locations.cpp18
-rw-r--r--platform/ios/benchmark/locations.hpp20
-rw-r--r--platform/ios/benchmark/main.m10
-rw-r--r--platform/ios/docs/guides/For Style Authors.md434
-rw-r--r--platform/ios/docs/guides/Gesture Recognizers.md38
-rw-r--r--platform/ios/docs/guides/Info.plist Keys.md42
-rw-r--r--platform/ios/docs/guides/Migrating to Expressions.md266
-rw-r--r--platform/ios/docs/guides/Tile URL Templates.md99
-rw-r--r--platform/ios/docs/img/screenshot.pngbin327733 -> 0 bytes
-rw-r--r--platform/ios/docs/img/user-interaction/RotateSydney.gifbin693038 -> 0 bytes
-rw-r--r--platform/ios/docs/img/user-interaction/quickzoom.gifbin793787 -> 0 bytes
-rw-r--r--platform/ios/docs/pod-README.md99
-rw-r--r--platform/ios/framework/Info-static.plist26
-rw-r--r--platform/ios/framework/Info.plist30
-rw-r--r--platform/ios/framework/Mapbox-static.h5
-rw-r--r--platform/ios/framework/modulemap8
-rwxr-xr-xplatform/ios/framework/strip-frameworks.sh73
-rw-r--r--platform/ios/ios.cmake1
-rw-r--r--platform/ios/ios.xcodeproj/project.pbxproj4768
-rw-r--r--platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata7
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme148
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme101
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme91
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme127
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme112
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme91
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme89
-rw-r--r--platform/ios/ios.xcworkspace/contents.xcworkspacedata10
-rw-r--r--platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist8
-rw-r--r--platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist25
-rw-r--r--platform/ios/jazzy.yml140
-rw-r--r--platform/ios/originals/compass.sketchbin4881 -> 0 bytes
-rw-r--r--platform/ios/originals/screenshot.sketchbin1310720 -> 0 bytes
-rw-r--r--platform/ios/resources/Base.lproj/Localizable.strings111
-rw-r--r--platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json12
-rw-r--r--platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdfbin4574 -> 0 bytes
-rw-r--r--platform/ios/resources/Images.xcassets/Contents.json6
-rw-r--r--platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json12
-rw-r--r--platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdfbin4354 -> 0 bytes
-rw-r--r--platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json12
-rw-r--r--platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdfbin8823 -> 0 bytes
-rw-r--r--platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json12
-rw-r--r--platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf355
-rw-r--r--platform/ios/resources/README5
-rw-r--r--platform/ios/resources/ar.lproj/Localizable.stringsdict78
-rw-r--r--platform/ios/resources/bg.lproj/Localizable.strings114
-rw-r--r--platform/ios/resources/bg.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/ca.lproj/Localizable.strings93
-rw-r--r--platform/ios/resources/ca.lproj/Localizable.stringsdict34
-rw-r--r--platform/ios/resources/cs.lproj/Localizable.strings111
-rw-r--r--platform/ios/resources/cs.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/da.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/da.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/de.lproj/Localizable.strings93
-rw-r--r--platform/ios/resources/de.lproj/Localizable.stringsdict34
-rw-r--r--platform/ios/resources/en.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/es.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/es.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/fr.lproj/Localizable.strings111
-rw-r--r--platform/ios/resources/fr.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/gl.lproj/Localizable.strings111
-rw-r--r--platform/ios/resources/gl.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/he.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/hu.lproj/Localizable.strings93
-rw-r--r--platform/ios/resources/hu.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/ja.lproj/Localizable.strings78
-rw-r--r--platform/ios/resources/ko.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/ko.lproj/Localizable.stringsdict48
-rw-r--r--platform/ios/resources/lt.lproj/Localizable.strings93
-rw-r--r--platform/ios/resources/lt.lproj/Localizable.stringsdict38
-rw-r--r--platform/ios/resources/pt-BR.lproj/Localizable.strings93
-rw-r--r--platform/ios/resources/pt-BR.lproj/Localizable.stringsdict34
-rw-r--r--platform/ios/resources/pt-PT.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/pt-PT.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/ru.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/ru.lproj/Localizable.stringsdict66
-rw-r--r--platform/ios/resources/sv.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/sv.lproj/Localizable.stringsdict54
-rw-r--r--platform/ios/resources/uk.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/uk.lproj/Localizable.stringsdict60
-rw-r--r--platform/ios/resources/vi.lproj/Localizable.strings117
-rw-r--r--platform/ios/resources/vi.lproj/Localizable.stringsdict48
-rw-r--r--platform/ios/resources/zh-Hans.lproj/Localizable.strings93
-rw-r--r--platform/ios/resources/zh-Hant.lproj/Localizable.strings93
-rw-r--r--platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict30
-rwxr-xr-xplatform/ios/scripts/check-events-symbols.sh37
-rwxr-xr-xplatform/ios/scripts/deploy-packages.sh112
-rwxr-xr-xplatform/ios/scripts/deploy-snapshot.sh17
-rwxr-xr-xplatform/ios/scripts/deploy-to-cocoapods.sh44
-rwxr-xr-xplatform/ios/scripts/document.sh50
-rwxr-xr-xplatform/ios/scripts/install-packaging-dependencies.sh64
-rwxr-xr-xplatform/ios/scripts/ios-code-coverage.sh31
-rwxr-xr-xplatform/ios/scripts/lint-podspecs.js79
-rwxr-xr-xplatform/ios/scripts/metrics.sh26
-rwxr-xr-xplatform/ios/scripts/package.sh249
-rwxr-xr-xplatform/ios/scripts/publish.sh79
-rw-r--r--platform/ios/scripts/release-notes-github.md.ejs9
-rw-r--r--platform/ios/scripts/release-notes-jazzy.md.ejs23
-rwxr-xr-xplatform/ios/scripts/release-notes.js103
-rwxr-xr-xplatform/ios/scripts/validate-framework-zip.sh131
-rw-r--r--platform/ios/src/MGLAnnotationContainerView.h17
-rw-r--r--platform/ios/src/MGLAnnotationContainerView.m52
-rw-r--r--platform/ios/src/MGLAnnotationContainerView_Private.h14
-rw-r--r--platform/ios/src/MGLAnnotationImage.h62
-rw-r--r--platform/ios/src/MGLAnnotationImage.m77
-rw-r--r--platform/ios/src/MGLAnnotationImage_Private.h21
-rw-r--r--platform/ios/src/MGLAnnotationView.h286
-rw-r--r--platform/ios/src/MGLAnnotationView.mm387
-rw-r--r--platform/ios/src/MGLAnnotationView_Private.h15
-rw-r--r--platform/ios/src/MGLCalloutView.h140
-rw-r--r--platform/ios/src/MGLCameraChangeReason.h65
-rw-r--r--platform/ios/src/MGLCompactCalloutView.h14
-rw-r--r--platform/ios/src/MGLCompactCalloutView.m39
-rw-r--r--platform/ios/src/MGLCompassButton.h22
-rw-r--r--platform/ios/src/MGLCompassButton.mm135
-rw-r--r--platform/ios/src/MGLCompassButton_Private.h19
-rw-r--r--platform/ios/src/MGLFaux3DUserLocationAnnotationView.h15
-rw-r--r--platform/ios/src/MGLFaux3DUserLocationAnnotationView.m469
-rw-r--r--platform/ios/src/MGLMapAccessibilityElement.h54
-rw-r--r--platform/ios/src/MGLMapAccessibilityElement.mm195
-rw-r--r--platform/ios/src/MGLMapView+IBAdditions.h51
-rw-r--r--platform/ios/src/MGLMapView+Impl.h77
-rw-r--r--platform/ios/src/MGLMapView+Impl.mm114
-rw-r--r--platform/ios/src/MGLMapView+OpenGL.h60
-rw-r--r--platform/ios/src/MGLMapView+OpenGL.mm277
-rw-r--r--platform/ios/src/MGLMapView.h1968
-rw-r--r--platform/ios/src/MGLMapView.mm7010
-rw-r--r--platform/ios/src/MGLMapViewDelegate.h775
-rw-r--r--platform/ios/src/MGLMapView_Experimental.h32
-rw-r--r--platform/ios/src/MGLMapView_Private.h74
-rw-r--r--platform/ios/src/MGLMapboxEvents.h21
-rw-r--r--platform/ios/src/MGLMapboxEvents.m200
-rw-r--r--platform/ios/src/MGLSDKUpdateChecker.h13
-rw-r--r--platform/ios/src/MGLSDKUpdateChecker.mm37
-rw-r--r--platform/ios/src/MGLScaleBar.h9
-rw-r--r--platform/ios/src/MGLScaleBar.mm556
-rw-r--r--platform/ios/src/MGLTelemetryConfig.h18
-rw-r--r--platform/ios/src/MGLTelemetryConfig.m35
-rw-r--r--platform/ios/src/MGLUserLocation.h57
-rw-r--r--platform/ios/src/MGLUserLocation.m124
-rw-r--r--platform/ios/src/MGLUserLocationAnnotationView.h64
-rw-r--r--platform/ios/src/MGLUserLocationAnnotationView.m100
-rw-r--r--platform/ios/src/MGLUserLocationAnnotationView_Private.h15
-rw-r--r--platform/ios/src/MGLUserLocationHeadingArrowLayer.h11
-rw-r--r--platform/ios/src/MGLUserLocationHeadingArrowLayer.m59
-rw-r--r--platform/ios/src/MGLUserLocationHeadingBeamLayer.h11
-rw-r--r--platform/ios/src/MGLUserLocationHeadingBeamLayer.m104
-rw-r--r--platform/ios/src/MGLUserLocationHeadingIndicator.h10
-rw-r--r--platform/ios/src/MGLUserLocation_Private.h19
-rw-r--r--platform/ios/src/Mapbox-Prefix.pch1
-rw-r--r--platform/ios/src/Mapbox.h77
-rw-r--r--platform/ios/src/NSOrthography+MGLAdditions.h18
-rw-r--r--platform/ios/src/NSOrthography+MGLAdditions.m37
-rw-r--r--platform/ios/src/UIColor+MGLAdditions.h22
-rw-r--r--platform/ios/src/UIColor+MGLAdditions.mm86
-rw-r--r--platform/ios/src/UIDevice+MGLAdditions.h7
-rw-r--r--platform/ios/src/UIDevice+MGLAdditions.m53
-rw-r--r--platform/ios/src/UIImage+MGLAdditions.h25
-rw-r--r--platform/ios/src/UIImage+MGLAdditions.mm64
-rw-r--r--platform/ios/src/UIView+MGLAdditions.h19
-rw-r--r--platform/ios/src/UIView+MGLAdditions.m69
-rw-r--r--platform/ios/src/UIViewController+MGLAdditions.h11
-rw-r--r--platform/ios/src/UIViewController+MGLAdditions.m22
-rw-r--r--platform/ios/test/Info.plist24
-rw-r--r--platform/ios/test/MGLAccountManagerTests.m25
-rw-r--r--platform/ios/test/MGLAnnotationViewIntegrationTests.swift23
-rw-r--r--platform/ios/test/MGLAnnotationViewTests.m273
-rw-r--r--platform/ios/test/MGLMapAccessibilityElementTests.m87
-rw-r--r--platform/ios/test/MGLMapViewCompassViewTests.mm98
-rw-r--r--platform/ios/test/MGLMapViewContentInsetTests.m177
-rw-r--r--platform/ios/test/MGLMapViewDelegateIntegrationTests.swift103
-rw-r--r--platform/ios/test/MGLMapViewDirectionTests.mm126
-rw-r--r--platform/ios/test/MGLMapViewGestureRecognizerTests.mm280
-rw-r--r--platform/ios/test/MGLMapViewLayoutTests.m317
-rw-r--r--platform/ios/test/MGLMapViewPitchTests.m190
-rw-r--r--platform/ios/test/MGLMapViewScaleBarTests.m70
-rw-r--r--platform/ios/test/MGLMapViewZoomTests.mm192
-rw-r--r--platform/ios/test/MGLMockGestureRecognizers.h29
-rw-r--r--platform/ios/test/MGLMockGestureRecognizers.m55
-rw-r--r--platform/ios/test/MGLNSOrthographyAdditionsTests.m19
-rw-r--r--platform/ios/test/MGLNetworkConfigurationTests.m43
-rwxr-xr-xplatform/ios/vendor/SMCalloutView/SMCalloutView.h217
-rwxr-xr-xplatform/ios/vendor/SMCalloutView/SMCalloutView.m939
-rw-r--r--platform/ios/vendor/mapbox-accounts-ios/MBXSKUToken.h36
-rw-r--r--platform/ios/vendor/mapbox-accounts-ios/libmbxaccounts.abin97472 -> 0 bytes
m---------platform/ios/vendor/mapbox-events-ios0
-rw-r--r--platform/macos/ExportOptions.plist10
-rw-r--r--platform/macos/Mapbox-macOS-SDK-symbols.podspec30
-rw-r--r--platform/macos/Mapbox-macOS-SDK.podspec30
-rw-r--r--platform/macos/WorkspaceSettings.xcsettings22
-rw-r--r--platform/macos/app/AppDelegate.h26
-rw-r--r--platform/macos/app/AppDelegate.m332
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.pngbin8183 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.pngbin17649 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.pngbin917 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.pngbin2009 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.pngbin17649 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.pngbin38577 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.pngbin1730 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.pngbin3905 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.pngbin38577 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.pngbin85668 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json68
-rw-r--r--platform/macos/app/Assets.xcassets/Contents.json6
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/Contents.json6
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json20
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf69
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf70
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf72
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdfbin1046 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json20
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdfbin1262 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json20
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf70
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf71
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/Contents.json6
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.pngbin172489 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.pngbin177163 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.pngbin179236 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.pngbin177074 -> 0 bytes
-rw-r--r--platform/macos/app/Base.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/Base.lproj/MainMenu.xib982
-rw-r--r--platform/macos/app/Base.lproj/MapDocument.xib497
-rw-r--r--platform/macos/app/Credits.rtf9
-rw-r--r--platform/macos/app/DroppedPinAnnotation.h15
-rw-r--r--platform/macos/app/DroppedPinAnnotation.m73
-rw-r--r--platform/macos/app/Info.plist58
-rw-r--r--platform/macos/app/LocationCoordinate2DTransformer.h5
-rw-r--r--platform/macos/app/LocationCoordinate2DTransformer.m31
-rw-r--r--platform/macos/app/MGLStyle+MBXAdditions.h7
-rw-r--r--platform/macos/app/MGLStyle+MBXAdditions.m42
-rw-r--r--platform/macos/app/MapDocument.h14
-rw-r--r--platform/macos/app/MapDocument.m1507
-rw-r--r--platform/macos/app/OfflinePackNameValueTransformer.h5
-rw-r--r--platform/macos/app/OfflinePackNameValueTransformer.m33
-rw-r--r--platform/macos/app/StyleLayerIconTransformer.h5
-rw-r--r--platform/macos/app/StyleLayerIconTransformer.m47
-rw-r--r--platform/macos/app/TimeIntervalTransformer.h5
-rw-r--r--platform/macos/app/TimeIntervalTransformer.m53
-rw-r--r--platform/macos/app/ar.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/bg.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/ca.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/cs.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/da.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/de.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/es.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/fi.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/fr.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/gl.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/he.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/heatmap.json809
-rw-r--r--platform/macos/app/hu.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/ja.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/ko.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/lt.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/main.m5
-rw-r--r--platform/macos/app/nl.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/pl.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/pt-BR.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/pt-PT.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/resources/background.svg90
-rw-r--r--platform/macos/app/resources/circle.svg67
-rw-r--r--platform/macos/app/resources/fill-extrusion.svg125
-rw-r--r--platform/macos/app/resources/fill.svg68
-rw-r--r--platform/macos/app/resources/heatmap.svg72
-rw-r--r--platform/macos/app/resources/hillshade.svg87
-rw-r--r--platform/macos/app/resources/symbol.svg66
-rw-r--r--platform/macos/app/ru.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/sv.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/uk.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/vi.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/wms.json21
-rw-r--r--platform/macos/app/zh-Hans.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/zh-Hant.lproj/Localizable.strings0
-rw-r--r--platform/macos/docs/doc-README.md9
-rw-r--r--platform/macos/docs/guides/For Style Authors.md427
-rw-r--r--platform/macos/docs/guides/Info.plist Keys.md35
-rw-r--r--platform/macos/docs/guides/Migrating to Expressions.md267
-rw-r--r--platform/macos/docs/guides/Tile URL Templates.md98
-rw-r--r--platform/macos/docs/img/screenshot.jpgbin411181 -> 0 bytes
-rw-r--r--platform/macos/docs/pod-README.md98
-rw-r--r--platform/macos/jazzy.yml118
-rw-r--r--platform/macos/macos.cmake1
-rw-r--r--platform/macos/macos.xcodeproj/project.pbxproj2332
-rw-r--r--platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata7
-rw-r--r--platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme154
-rw-r--r--platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme111
-rw-r--r--platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme99
-rw-r--r--platform/macos/macos.xcworkspace/contents.xcworkspacedata10
-rw-r--r--platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist8
-rw-r--r--platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist25
-rwxr-xr-xplatform/macos/scripts/deploy-packages.sh144
-rwxr-xr-xplatform/macos/scripts/document.sh52
-rwxr-xr-xplatform/macos/scripts/metrics.sh7
-rwxr-xr-xplatform/macos/scripts/package.sh130
-rw-r--r--platform/macos/sdk/Base.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/Base.lproj/MGLAnnotationCallout.xib69
-rw-r--r--platform/macos/sdk/Info.plist28
-rw-r--r--platform/macos/sdk/ar.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/bg.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/ca.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/cs.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/da.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/de.lproj/Localizable.strings15
-rw-r--r--platform/macos/sdk/default_marker.pdfbin4354 -> 0 bytes
-rw-r--r--platform/macos/sdk/es.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/fi.lproj/Localizable.strings15
-rw-r--r--platform/macos/sdk/fr.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/gl.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/he.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/hu.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/ja.lproj/Localizable.strings15
-rw-r--r--platform/macos/sdk/lt.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/mapbox.pdfbin26280 -> 0 bytes
-rw-r--r--platform/macos/sdk/mapbox_helmet.pdf355
-rw-r--r--platform/macos/sdk/nl.lproj/Localizable.strings15
-rw-r--r--platform/macos/sdk/pl.lproj/Localizable.strings15
-rw-r--r--platform/macos/sdk/pt-BR.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/pt-PT.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/ru.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/sv.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/uk.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/vi.lproj/Localizable.strings27
-rw-r--r--platform/macos/sdk/zh-Hans.lproj/Localizable.strings15
-rw-r--r--platform/macos/sdk/zh-Hant.lproj/Localizable.strings27
-rw-r--r--platform/macos/src/MGLAnnotationImage.h65
-rw-r--r--platform/macos/src/MGLAnnotationImage.m63
-rw-r--r--platform/macos/src/MGLAnnotationImage_Private.h8
-rw-r--r--platform/macos/src/MGLAttributionButton.h25
-rw-r--r--platform/macos/src/MGLAttributionButton.mm55
-rw-r--r--platform/macos/src/MGLCompassCell.h5
-rw-r--r--platform/macos/src/MGLCompassCell.m34
-rw-r--r--platform/macos/src/MGLMapView+IBAdditions.h68
-rw-r--r--platform/macos/src/MGLMapView+IBAdditions.mm120
-rw-r--r--platform/macos/src/MGLMapView+Impl.h44
-rw-r--r--platform/macos/src/MGLMapView+Impl.mm101
-rw-r--r--platform/macos/src/MGLMapView+OpenGL.h45
-rw-r--r--platform/macos/src/MGLMapView+OpenGL.mm89
-rw-r--r--platform/macos/src/MGLMapView.h1247
-rw-r--r--platform/macos/src/MGLMapView.mm3081
-rw-r--r--platform/macos/src/MGLMapViewDelegate.h352
-rw-r--r--platform/macos/src/MGLMapView_Private.h62
-rw-r--r--platform/macos/src/MGLOpenGLLayer.h10
-rw-r--r--platform/macos/src/MGLOpenGLLayer.mm58
-rw-r--r--platform/macos/src/Mapbox.h71
-rw-r--r--platform/macos/src/NSColor+MGLAdditions.h28
-rw-r--r--platform/macos/src/NSColor+MGLAdditions.mm124
-rw-r--r--platform/macos/src/NSImage+MGLAdditions.h19
-rw-r--r--platform/macos/src/NSImage+MGLAdditions.mm49
-rw-r--r--platform/macos/src/NSProcessInfo+MGLAdditions.h11
-rw-r--r--platform/macos/src/NSProcessInfo+MGLAdditions.m10
-rw-r--r--platform/macos/test/Info.plist24
-rw-r--r--platform/macos/test/MGLAnnotationTests.m52
-rw-r--r--platform/macos/test/MGLAttributionButtonTests.m31
-rw-r--r--platform/macos/test/MGLMapViewDelegateIntegrationTests.swift63
853 files changed, 0 insertions, 306893 deletions
diff --git a/.gitmodules b/.gitmodules
index 93a163d230..22a5f02379 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
[submodule "mapbox-gl-js"]
path = mapbox-gl-js
url = https://github.com/mapbox/mapbox-gl-js.git
-[submodule "platform/ios/vendor/mapbox-events-ios"]
- path = platform/ios/vendor/mapbox-events-ios
- url = https://github.com/mapbox/mapbox-events-ios.git
[submodule "vendor/nunicode"]
path = vendor/nunicode
url = https://bitbucket.org/alekseyt/nunicode.git
@@ -55,9 +52,6 @@
[submodule "platform/android/vendor/mapbox-events-android"]
path = platform/android/vendor/mapbox-events-android
url = https://github.com/mapbox/mapbox-events-android.git
-[submodule "platform/darwin/docs/theme"]
- path = platform/darwin/docs/theme
- url = https://github.com/mapbox/jazzy-theme.git
[submodule "vendor/mapbox-base"]
path = vendor/mapbox-base
url = https://github.com/mapbox/mapbox-base.git
diff --git a/circle.yml b/circle.yml
index 4504d8ab32..a53b2c1a41 100644
--- a/circle.yml
+++ b/circle.yml
@@ -225,12 +225,6 @@ commands:
command: |
brew install cmake ccache glfw ninja pkgconfig qt chargepoint/xcparse/xcparse
brew cask install google-cloud-sdk
- - run:
- name: Code Generators macOS
- command: |
- platform/darwin/scripts/generate-style-code.js
- platform/darwin/scripts/update-examples.js
- git add -A && git diff --staged --exit-code | tee nitpick.patch
config:
parameters:
config_params:
diff --git a/platform/darwin/app/LimeGreenStyleLayer.h b/platform/darwin/app/LimeGreenStyleLayer.h
deleted file mode 100644
index 35480963a4..0000000000
--- a/platform/darwin/app/LimeGreenStyleLayer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-@interface LimeGreenStyleLayer : MGLOpenGLStyleLayer
-
-@end
diff --git a/platform/darwin/app/LimeGreenStyleLayer.m b/platform/darwin/app/LimeGreenStyleLayer.m
deleted file mode 100644
index 98e96381b6..0000000000
--- a/platform/darwin/app/LimeGreenStyleLayer.m
+++ /dev/null
@@ -1,58 +0,0 @@
-#import "LimeGreenStyleLayer.h"
-@import GLKit;
-
-@implementation LimeGreenStyleLayer {
- GLuint _program;
- GLuint _vertexShader;
- GLuint _fragmentShader;
- GLuint _buffer;
- GLuint _aPos;
-}
-
-- (void)didMoveToMapView:(MGLMapView *)mapView {
- static const GLchar *vertexShaderSource = "attribute vec2 a_pos; void main() { gl_Position = vec4(a_pos, 1, 1); }";
- static const GLchar *fragmentShaderSource = "void main() { gl_FragColor = vec4(0, 0.5, 0, 0.5); }";
-
- _program = glCreateProgram();
- _vertexShader = glCreateShader(GL_VERTEX_SHADER);
- _fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
-
- glShaderSource(_vertexShader, 1, &vertexShaderSource, NULL);
- glCompileShader(_vertexShader);
- glAttachShader(_program, _vertexShader);
- glShaderSource(_fragmentShader, 1, &fragmentShaderSource, NULL);
- glCompileShader(_fragmentShader);
- glAttachShader(_program, _fragmentShader);
- glLinkProgram(_program);
- _aPos = glGetAttribLocation(_program, "a_pos");
-
- GLfloat triangle[] = { 0, 0.5, 0.5, -0.5, -0.5, -0.5 };
- glGenBuffers(1, &_buffer);
- glBindBuffer(GL_ARRAY_BUFFER, _buffer);
- glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(GLfloat), triangle, GL_STATIC_DRAW);
-}
-
-- (void)drawInMapView:(MGLMapView *)mapView withContext:(MGLStyleLayerDrawingContext)context {
- glUseProgram(_program);
- glBindBuffer(GL_ARRAY_BUFFER, _buffer);
- glEnableVertexAttribArray(_aPos);
- glVertexAttribPointer(_aPos, 2, GL_FLOAT, GL_FALSE, 0, NULL);
- glDisable(GL_STENCIL_TEST);
- glDisable(GL_DEPTH_TEST);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
-}
-
-- (void)willMoveFromMapView:(MGLMapView *)mapView {
- if (!_program) {
- return;
- }
-
- glDeleteBuffers(1, &_buffer);
- glDetachShader(_program, _vertexShader);
- glDetachShader(_program, _fragmentShader);
- glDeleteShader(_vertexShader);
- glDeleteShader(_fragmentShader);
- glDeleteProgram(_program);
-}
-
-@end
diff --git a/platform/darwin/docs/guides/For Style Authors.md.ejs b/platform/darwin/docs/guides/For Style Authors.md.ejs
deleted file mode 100644
index 8df541d0f7..0000000000
--- a/platform/darwin/docs/guides/For Style Authors.md.ejs
+++ /dev/null
@@ -1,446 +0,0 @@
-<%
- const os = locals.os;
- const iOS = os === 'iOS';
- const macOS = os === 'macOS';
- const cocoaPrefix = iOS ? 'UI' : 'NS';
- const layers = locals.layers;
- const renamedProperties = locals.renamedProperties;
--%>
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-# Information for Style Authors
-
-A _style_ defines a map view’s content and appearance. If you’ve authored a
-style using
-[Mapbox Studio’s Styles editor](https://www.mapbox.com/studio/styles/) or as
-JSON in a text editor, you can use that style in this SDK and manipulate it
-afterwards in code. This document provides information you can use to ensure a
-seamless transition from Mapbox Studio to your application.
-
-<% if (iOS) { -%>
-## Designing for iOS
-<% } else { -%>
-## Designing for macOS
-<% } -%>
-
-When designing your style, consider the context in which your application shows
-the style. There are a number of considerations specific to <%- os %> that may
-not be obvious when designing your style in Mapbox Studio on the Web. A map view
-is essentially a graphical user interface element, so many of same issues in
-user interface design also apply when designing a map style.
-
-### Color
-
-Ensure sufficient contrast in your application’s user interface when your map
-style is present. Standard user interface elements such as toolbars, sidebars,
-and sheets often overlap the map view with a translucent, blurred background, so
-make sure the contents of these elements remain legible with the map view
-underneath.
-<% if (iOS) { -%>
-The user location annotation view, the attribution button, any buttons in
-callout views, and any items in the navigation bar are influenced by your
-application’s tint color, so choose a tint color that contrasts well with your
-map style.
-<% } -%>
-If you intend your style to be used in the dark, consider the impact that Night
-Shift may have on your style’s colors.
-
-### Typography and graphics
-
-<% if (iOS) { -%>
-Choose font and icon sizes appropriate to iOS devices. iPhones and iPads have
-smaller screens than the typical browser window in which you would use Mapbox
-Studio, especially when multitasking is enabled. Your user’s viewing distance
-may be shorter than on a desktop computer. Some of your users may use the Larger
-Dynamic Type and Accessibility Text features to increase the size of all text on
-the device. You can use the
-[runtime styling API](#manipulating-the-style-at-runtime) to adjust your style’s
- font and icon sizes accordingly.
-<% } -%>
-
-Design sprite images and choose font weights that look crisp on both
-standard-resolution displays and Retina displays. This SDK supports the same
-resolutions as <%- os %>.
-<% if (iOS) { -%>
-Standard-resolution displays are limited to older devices that your application
-may or may not support, depending on its minimum deployment target.
-<% } else { -%>
-Standard-resolution displays are often found on external monitors. Even with
-built-in screens, some of your users may use the Larger Text option in Display
-Preferences, which is essentially standard resolution, to make text easier to
-read.
-<% } -%>
-
-Icon and text labels should be legible regardless of the map’s orientation.
-<% if (iOS) { -%>
-By default, this SDK makes it easy for your users to rotate or tilt the map
-using multitouch gestures.
-<% } else { -%>
-By default, this SDK makes it easy for your users to rotate or tilt the map
-using multitouch trackpad gestures or keyboard shortcuts.
-<% } -%>
-If you do not intend your design to accommodate rotation and tilting, disable
-these gestures using the `MGLMapView.rotateEnabled` and
-`MGLMapView.pitchEnabled` properties, respectively, or the corresponding
-inspectables in Interface Builder.
-
-### Interactivity
-
-Pay attention to whether elements of your style appear to be interactive.
-<% if (iOS) { -%>
-A text label may look like a tappable button merely due to matching your
-application’s tint color or the default blue tint color.
-<% } else { -%>
-An icon with a shadow or shading effect may appear to be clickable.
-<% } -%>
-You can make an icon or text label interactive by installing a gesture
-recognizer and performing feature querying (e.g.,
-`-[MGLMapView visibleFeaturesAtPoint:]`) to get details about the selected
-feature.
-<% if (macOS) { -%>
-You can install cursor or tooltip tracking rectangles to indicate interactive
-features as an alternative to prominent hover effects.
-<% } -%>
-
-<% if (iOS) { -%>
-Make sure your users can easily distinguish any interactive elements from the
-surrounding map, such as pins, the user location annotation view, or a route
-line. Avoid relying on hover effects to indicate interactive elements. Leave
-enough room between interactive elements to accommodate imprecise tapping
-gestures.
-<% } else { -%>
-Make sure your users can easily distinguish any interactive elements from the
-surrounding map, such as pins or a route line. If your application supports
-printing, consider using the
-[runtime styling API](#manipulating-the-style-at-runtime) to optimize your style
-for ink economy before printing the map view.
-<% } -%>
-
-<% if (iOS) { -%>
-For more information about user interface design, consult Apple’s
-[_iOS Human Interface Guidelines_](https://developer.apple.com/ios/human-interface-guidelines/).
-To learn more about designing maps for mobile devices, see [Nathaniel Slaughter's blog post](https://www.mapbox.com/blog/designing-maps-for-mobile-devices/) on
-the subject.
-<% } else { -%>
-For more information about user interface design, consult Apple’s
-[_macOS Human Interface Guidelines_](https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/OSXHIGuidelines/).
-<% } -%>
-
-## Applying your style
-
-You set an `MGLMapView` object’s style either in code, by setting the
-`MGLMapView.styleURL` property, or in Interface Builder, by setting the “Style
-URL” inspectable. The URL must point to a local or remote style JSON file. The
-style JSON file format is defined by the
-[Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/). This
-SDK supports the functionality defined by version 8 of the specification unless
-otherwise noted in the
-[style specification documentation](https://www.mapbox.com/mapbox-gl-style-spec/).
-
-## Manipulating the style at runtime
-
-The _runtime styling API_ enables you to modify every aspect of a style
-dynamically as a user interacts with your application. The style itself is
-represented at runtime by an `MGLStyle` object, which provides access to various
-`MGLSource` and `MGLStyleLayer` objects that represent content sources and style
-layers, respectively.
-<% if (iOS) { -%>
-For more information about the capabilities exposed by the runtime styling API,
-see “[Runtime Styling](https://www.mapbox.com/ios-sdk/maps/overview/runtime-styling/)”.
-<% } -%>
-
-The names of runtime styling classes and properties on <%- os %> are generally
-consistent with the style specification and Mapbox Studio’s Styles editor. Any
-exceptions are listed in this document.
-
-To avoid conflicts with Objective-C keywords or Cocoa terminology, this SDK uses
-the following terms for concepts defined in the style specification:
-
-In the style specification | In the SDK
----------------------------|---------
-bounds | coordinate bounds
-filter | predicate
-function type | interpolation mode
-id | identifier
-image | style image
-layer | style layer
-property | attribute
-SDF icon | template image
-source | content source
-
-## Specifying the map’s content
-
-Each source defined by a style JSON file is represented at runtime by a content
-source object that you can use to initialize new style layers. The content
-source object is a member of one of the following subclasses of `MGLSource`:
-
-In style JSON | In the SDK
---------------|-----------
-`vector` | `MGLVectorTileSource`
-`raster` | `MGLRasterTileSource`
-`raster-dem` | `MGLRasterDEMSource`
-`geojson` | `MGLShapeSource`
-`image` | `MGLImageSource`
-
-`canvas` and `video` sources are not supported.
-
-### Tile sources
-
-Raster and vector tile sources may be defined in TileJSON configuration files.
-This SDK supports the properties defined in the style specification, which are a
-subset of the keys defined in version 2.1.0 of the
-[TileJSON](https://github.com/mapbox/tilejson-spec/tree/master/2.1.0)
-specification. As an alternative to authoring a custom TileJSON file, you may
-supply various tile source options when creating a raster or vector tile source.
-These options are detailed in the `MGLTileSourceOption` documentation:
-
-In style JSON | In TileJSON | In the SDK
---------------|---------------|-----------
-`url` | — | `configurationURL` parameter in `-[MGLTileSource initWithIdentifier:configurationURL:]`
-`tiles` | `tiles` | `tileURLTemplates` parameter in `-[MGLTileSource initWithIdentifier:tileURLTemplates:options:]`
-`minzoom` | `minzoom` | `MGLTileSourceOptionMinimumZoomLevel`
-`maxzoom` | `maxzoom` | `MGLTileSourceOptionMaximumZoomLevel`
-`bounds` | `bounds` | `MGLTileSourceOptionCoordinateBounds`
-`tileSize` | — | `MGLTileSourceOptionTileSize`
-`attribution` | `attribution` | `MGLTileSourceOptionAttributionHTMLString` (but consider specifying `MGLTileSourceOptionAttributionInfos` instead for improved security)
-`scheme` | `scheme` | `MGLTileSourceOptionTileCoordinateSystem`
-`encoding` | – | `MGLTileSourceOptionDEMEncoding`
-
-### Shape sources
-
-Shape sources also accept various options. These options are detailed in the
-`MGLShapeSourceOption` documentation:
-
-In style JSON | In the SDK
------------------|-----------
-`data` | `url` parameter in `-[MGLShapeSource initWithIdentifier:URL:options:]`
-`maxzoom` | `MGLShapeSourceOptionMaximumZoomLevel`
-`buffer` | `MGLShapeSourceOptionBuffer`
-`tolerance` | `MGLShapeSourceOptionSimplificationTolerance`
-`cluster` | `MGLShapeSourceOptionClustered`
-`clusterRadius` | `MGLShapeSourceOptionClusterRadius`
-`clusterMaxZoom` | `MGLShapeSourceOptionMaximumZoomLevelForClustering`
-`lineMetrics` | `MGLShapeSourceOptionLineDistanceMetrics`
-
-To create a shape source from local GeoJSON data, first
-[convert the GeoJSON data into a shape](working-with-geojson-data.html#converting-geojson-data-into-shape-objects),
-then use the `-[MGLShapeSource initWithIdentifier:shape:options:]` method.
-
-### Image sources
-
-Image sources accept a non-axis aligned quadrilateral as their geographic coordinates.
-These coordinates, in `MGLCoordinateQuad`, are described in counterclockwise order,
-in contrast to the clockwise order defined in the style specification.
-
-## Configuring the map content’s appearance
-
-Each layer defined by the style JSON file is represented at runtime by a style
-layer object, which you can use to refine the map’s appearance. The style layer
-object is a member of one of the following subclasses of `MGLStyleLayer`:
-
-In style JSON | In the SDK
---------------|-----------
-<% for (const layer of layers) { -%>
-`<%- layer.type %>` | `MGL<%- camelize(layer.type) %>StyleLayer`
-<% } -%>
-
-You configure layout and paint attributes by setting properties on these style
-layer objects. The property names generally correspond to the style JSON
-properties, except for the use of camelCase instead of kebab-case. Properties
-whose names differ from the style specification are listed below:
-<% for (const type in renamedProperties) { -%>
-<% if (renamedProperties.hasOwnProperty(type)) { -%>
-
-### <%- camelize(unhyphenate(type)) %> style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-<% for (const name in renamedProperties[type]) { -%>
-<% if (renamedProperties[type].hasOwnProperty(name)) { -%>
-`<%- originalPropertyName(renamedProperties[type][name]) %>` | `MGL<%- camelize(type) %>StyleLayer.<%- objCName(renamedProperties[type][name]) %>` | `MGL<%- camelize(type) %>StyleLayer.<%- objCGetter(renamedProperties[type][name]) %>`
-<% } -%>
-<% } -%>
-<% } -%>
-<% } -%>
-
-## Setting attribute values
-
-Each property representing a layout or paint attribute is set to an
-`NSExpression` object. `NSExpression` objects play the same role as
-[expressions in the Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions),
-but you create the former using a very different syntax. `NSExpression`’s format
-string syntax is reminiscent of a spreadsheet formula or an expression in a
-database query. See the
-“[Predicates and Expressions](predicates-and-expressions.html)” guide for an
-overview of the expression support in this SDK. This SDK no longer supports
-style functions; use expressions instead.
-
-### Constant values in expressions
-
-In contrast to the JSON type that the style specification defines for each
-layout or paint property, the style value object often contains a more specific
-Foundation or Cocoa type. General rules for attribute types are listed below.
-Pay close attention to the SDK documentation for the attribute you want to get
-or set.
-
-In style JSON | In Objective-C | In Swift
---------------|-----------------------|---------
-Color | `<%- cocoaPrefix %>Color` | `<%- cocoaPrefix %>Color`
-Enum | `NSString` | `String`
-String | `NSString` | `String`
-Boolean | `NSNumber.boolValue` | `NSNumber.boolValue`
-Number | `NSNumber.floatValue` | `NSNumber.floatValue`
-Array (`-dasharray`) | `NSArray<NSNumber>` | `[Float]`
-Array (`-font`) | `NSArray<NSString>` | `[String]`
-<% if (iOS) { -%>
-Array (`-offset`, `-translate`) | `NSValue.CGVectorValue` | `NSValue.cgVectorValue`
-Array (`-padding`) | `NSValue.UIEdgeInsetsValue` | `NSValue.uiEdgeInsetsValue`
-<% } else { -%>
-Array (`-offset`, `-translate`) | `NSValue` containing `CGVector` | `NSValue` containing `CGVector`
-Array (`-padding`) | `NSValue.edgeInsetsValue` | `NSValue.edgeInsetsValue`
-<% } -%>
-
-For padding attributes, note that the arguments to
-<% if (iOS) { -%>
-`UIEdgeInsetsMake()` in Objective-C and `UIEdgeInsets(top:left:bottom:right:)`
-in Swift
-<% } else { -%>
-`NSEdgeInsetsMake()` in Objective-C and `EdgeInsets(top:left:bottom:right:)` in
-Swift
-<% } -%>
-are specified in counterclockwise order, in contrast to the clockwise order
-defined by the style specification.
-
-<% if (macOS) { -%>
-Additionally, on macOS, a screen coordinate of (0, 0) is located at the
-lower-left corner of the screen. Therefore, a positive `CGVector.dy` means an
-offset or translation upward, while a negative `CGVector.dy` means an offset or
-translation downward. This is the reverse of how `CGVector` is interpreted on
-iOS.
-
-<% } -%>
-### Expression operators
-
-Many expression operators defined in the style specification have corresponding
-symbols to be used with the `+[NSExpression expressionWithFormat:]`,
-`+[NSExpression expressionForFunction:arguments:]`, or
-`+[NSExpression expressionForFunction:selectorName:arguments:]` method:
-
-In style specification | Method, function, or predicate type | Format string syntax
------------------------|-------------------------------------|---------------------
-`array` | |
-`boolean` | |
-`collator` | `NSComparisonPredicateOptions` | `'Québec' =[cd] 'QUEBEC'`
-`literal` | `+[NSExpression expressionForConstantValue:]` | `%@` representing `NSArray` or `NSDictionary`
-`number` | |
-`string` | |
-`to-boolean` | `boolValue` |
-`to-color` | | `CAST(var, '<%- cocoaPrefix %>Color')`
-`to-number` | `mgl_numberWithFallbackValues:` | `CAST(zipCode, 'NSNumber')`
-`to-string` | `stringValue` | `CAST(ele, 'NSString')`
-`typeof` | |
-`geometry-type` | `NSExpression.geometryTypeVariableExpression` | `$geometryType`
-`id` | `NSExpression.featureIdentifierVariableExpression` | `$featureIdentifier`
-`properties` | `NSExpression.featureAttributesVariableExpression` | `$featureAttributes`
-`at` | `objectFrom:withIndex:` | `array[n]`
-`get` | `+[NSExpression expressionForKeyPath:]` | Key path
-`has` | `mgl_does:have:` | `mgl_does:have:(self, 'key')`
-`length` | `count:` | `count({1, 2, 2, 3, 4, 7, 9})`
-`!` | `NSNotPredicateType` | `NOT (p0 OR … OR pn)`
-`!=` | `NSNotEqualToPredicateOperatorType` | `key != value`
-`<` | `NSLessThanPredicateOperatorType` | `key < value`
-`<=` | `NSLessThanOrEqualToPredicateOperatorType` | `key <= value`
-`==` | `NSEqualToPredicateOperatorType` | `key == value`
-`>` | `NSGreaterThanPredicateOperatorType` | `key > value`
-`>=` | `NSGreaterThanOrEqualToPredicateOperatorType` | `key >= value`
-`all` | `NSAndPredicateType` | `p0 AND … AND pn`
-`any` | `NSOrPredicateType` | `p0 OR … OR pn`
-`case` | `+[NSExpression expressionForConditional:trueExpression:falseExpression:]` or `MGL_IF` or `+[NSExpression mgl_expressionForConditional:trueExpression:falseExpresssion:]` | `TERNARY(1 = 2, YES, NO)` or `MGL_IF(1 = 2, YES, 2 = 2, YES, NO)`
-`coalesce` | `mgl_coalesce:` | `mgl_coalesce({x, y, z})`
-`match` | `MGL_MATCH` or `+[NSExpression mgl_expressionForMatchingExpression:inDictionary:defaultExpression:]` | `MGL_MATCH(x, 0, 'zero match', 1, 'one match', 'two match', 'default')`
-`interpolate` | `mgl_interpolate:withCurveType:parameters:stops:` or `+[NSExpression mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` |
-`step` | `mgl_step:from:stops:` or `+[NSExpression mgl_expressionForSteppingExpression:fromExpression:stops:]` |
-`let` | `mgl_expressionWithContext:` | `MGL_LET('ios', 11, 'macos', 10.13, $ios + $macos)`
-`var` | `+[NSExpression expressionForVariable:]` | `$variable`
-`concat` | `mgl_join:` or `-[NSExpression mgl_expressionByAppendingExpression:]` | `mgl_join({'Old', ' ', 'MacDonald'})`
-`downcase` | `lowercase:` | `lowercase('DOWNTOWN')`
-`upcase` | `uppercase:` | `uppercase('Elysian Fields')`
-<% if (macOS) { -%>
-`rgb` | `+[NSColor colorWithCalibratedRed:green:blue:alpha:]` |
-`rgba` | `+[NSColor colorWithCalibratedRed:green:blue:alpha:]` |
-<% } else { -%>
-`rgb` | `+[UIColor colorWithRed:green:blue:alpha:]` |
-`rgba` | `+[UIColor colorWithRed:green:blue:alpha:]` |
-<% } -%>
-`to-rgba` | | `CAST(noindex(var), 'NSArray')`
-`-` | `from:subtract:` | `2 - 1`
-`*` | `multiply:by:` | `1 * 2`
-`/` | `divide:by:` | `1 / 2`
-`%` | `modulus:by:` |
-`^` | `raise:toPower:` | `2 ** 2`
-`+` | `add:to:` | `1 + 2`
-`abs` | `abs:` | `abs(-1)`
-`acos` | `mgl_acos:` | `mgl_acos(1)`
-`asin` | `mgl_asin:` | `mgl_asin(0)`
-`atan` | `mgl_atan:` | `mgl_atan(20)`
-`ceil` | `ceiling:` | `ceiling(0.99999)`
-`cos` | `mgl_cos:` | `mgl_cos(0)`
-`e` | | `%@` representing `NSNumber` containing `M_E`
-`floor` | `floor:` | `floor(-0.99999)`
-`ln` | `ln:` | `ln(2)`
-`ln2` | | `%@` representing `NSNumber` containing `M_LN2`
-`log10` | `log:` | `log(1)`
-`log2` | `mgl_log2:` | `mgl_log2(1024)`
-`max` | `max:` | `max({1, 2, 2, 3, 4, 7, 9})`
-`min` | `min:` | `min({1, 2, 2, 3, 4, 7, 9})`
-`pi` | | `%@` representing `NSNumber` containing `M_PI`
-`round` | `mgl_round:` | `mgl_round(1.5)`
-`sin` | `mgl_sin:` | `mgl_sin(0)`
-`sqrt` | `sqrt:` | `sqrt(2)`
-`tan` | `mgl_tan:` | `mgl_tan(0)`
-`zoom` | `NSExpression.zoomLevelVariableExpression` | `$zoomLevel`
-`heatmap-density` | `NSExpression.heatmapDensityVariableExpression` | `$heatmapDensity`
-`line-progress` | `NSExpression.lineProgressVariableExpression` | `$lineProgress`
-`format` | `+[NSExpression mgl_expressionForAttributedExpressions:]` or `mgl_attributed:` | `mgl_attributed({x, y, z})`
-
-For operators that have no corresponding `NSExpression` symbol, use the
-`MGL_FUNCTION()` format string syntax.
-
-## Filtering sources
-
-You can filter a shape or vector tile source by setting the
-`MGLVectorStyleLayer.predicate` property to an `NSPredicate` object. Below is a
-table of style JSON operators and the corresponding operators used in the
-predicate format string:
-
-In style JSON | In the format string
---------------------------|---------------------
-`["has", key]` | `key != nil`
-`["!has", key]` | `key == nil`
-`["==", key, value]` | `key == value`
-`["!=", key, value]` | `key != value`
-`[">", key, value]` | `key > value`
-`[">=", key, value]` | `key >= value`
-`["<", key, value]` | `key < value`
-`["<=", key, value]` | `key <= value`
-`["in", key, v0, …, vn]` | `key IN {v0, …, vn}`
-`["!in", key, v0, …, vn]` | `NOT key IN {v0, …, vn}`
-`["all", f0, …, fn]` | `p0 AND … AND pn`
-`["any", f0, …, fn]` | `p0 OR … OR pn`
-`["none", f0, …, fn]` | `NOT (p0 OR … OR pn)`
-
-## Specifying the text format
-
-The following format attributes are defined as `NSString` constans that you
-can use to update the formatting of `MGLSymbolStyleLayer.text` property.
-
-In style JSON | In Objective-C | In Swift
---------------|-----------------------|---------
-`text-font` | `MGLFontNamesAttribute` | `.fontNamesAttribute`
-`font-scale` | `MGLFontScaleAttribute` | `.fontScaleAttribute`
-`text-color` | `MGLFontColorAttribute` | `.fontColorAttribute`
-
-See the “[Predicates and Expressions](predicates-and-expressions.html)” guide for
-a full description of the supported operators and operand types.
diff --git a/platform/darwin/docs/guides/Migrating to Expressions.md.ejs b/platform/darwin/docs/guides/Migrating to Expressions.md.ejs
deleted file mode 100644
index 3ea5b33d73..0000000000
--- a/platform/darwin/docs/guides/Migrating to Expressions.md.ejs
+++ /dev/null
@@ -1,212 +0,0 @@
-<%
- const os = locals.os;
- const iOS = os === 'iOS';
- const macOS = os === 'macOS';
- const cocoaPrefix = iOS ? 'UI' : 'NS';
- const guide = 'MigratingToExpressions';
--%>
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-
-# Migrating from Style Functions to Expressions
-
-[Runtime Styling](https://www.mapbox.com/ios-sdk/maps/overview/runtime-styling/) enables you to modify every aspect of the map’s appearance dynamically as a user interacts with your application. Developers can specify in advance how a layout or paint attribute will vary as the zoom level changes or how the appearance of individual features vary based on metadata provided by a content source.
-
-With Mapbox Maps SDK for <%- iOS ? 'iOS v4.0.0' : 'macOS v0.7.0' %>, style functions have been replaced with expressions. These provide even more tools for developers who want to style their maps dynamically. This guide outlines some tips for migrating from style functions to expressions, and offers an overview of some things that developers can do with expressions.
-
-An expression is represented at runtime by the `NSExpression` class. Expressions can be used to style paint and layout properties based on zoom level, data attributes, or a combination of the two.
-
-A constant expression can also be assigned to a style property. For example, the opacity of a fill style layer can be set to a constant value between 0 and 1.
-
-The documentation for each individual style layer property notes which non-constant expressions are enabled for that property. Style functions supported four interpolation modes: exponential, interval, categorical, and identity.
-
-This guide uses earthquake data from the [U.S. Geological Survey](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php). Under each interpolation mode, the style function implementation will be shown, followed by the current syntax.
-
-For more information about how to work with GeoJSON data in our <%- os %> SDK, please see our [working with GeoJSON data](working-with-geojson-data.html) guide. To learn more about supported expressions, see our ["Predicates and Expressions"](predicates-and-expressions.html) guide. The "Predicates and Expressions" guide also outlines Mapbox custom functions that can be used to dynamically style a map.
-
-## Stops
-Stops are dictionary keys that are associated with layer attribute values. Constant values no longer need to be wrapped as style values when they are values in a stops dictionary.
-
-
-Style function syntax:
-
-```swift
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-```
-
-Current syntax:
-<%- guideExample(guide, 'Stops', os) %>
-
-
-## Interpolation mode
-
-Style functions supported four interpolation modes: exponential/linear, interval, categorical, and identity. For more information about supported custom expressions, please see the "Predicates and Expressions" guide.
-
-### Linear
-
-`+[NSExpression(MGLAdditions) mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` takes the interpolation type as a parameter. If you previously used the default interpolation base, use the curve type `MGLExpressionInterpolationMode.linear`. See the [`mgl_interpolate:withCurveType:parameters:stops:`](predicates-and-expressions.html#code-mgl_interpolate-withcurvetype-parameters-stops-code) documentation for more details.
-
-The stops dictionary below, shows colors that continuously shift from yellow to orange to red to blue to white based on the attribute value.
-
-Style function syntax:
-
-```swift
-let url = URL(string: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson")!
-let symbolSource = MGLSource(identifier: "source")
-let symbolLayer = MGLSymbolStyleLayer(identifier: "place-city-sm", source: symbolSource)
-
-let source = MGLShapeSource(identifier: "earthquakes", url: url, options: nil)
-mapView.style?.addSource(source)
-
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-
-let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-layer.circleColor = MGLStyleValue(interpolationMode: .exponential,
- sourceStops: stops,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .green)])
-layer.circleRadius = MGLStyleValue(rawValue: 10)
-mapView.style?.insertLayer(layer, below: symbolLayer)
-```
-
-Current syntax:
-
-<%- guideExample(guide, 'Linear', os) %>
-
-### Exponential
-
-If you previously used an interpolation base greater than `0` (other than `1`), you can use `MGLExpressionInterpolationMode.exponential` as the curve type for `+[NSExpression(MGLAdditions) mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` or `'exponential'` as the curve type for [`mgl_interpolate:withCurveType:parameters:stops:`](predicates-and-expressions.html#code-mgl_interpolate-withcurvetype-parameters-stops-code). The `parameters` argument takes that interpolation base. This interpolates between values exponentially, creating an accelerated ramp effect.
-
-Here’s a visualization from Mapbox Studio (see [Mapbox Studio and iOS](https://www.mapbox.com/ios-sdk/maps/overview/mapbox-studio/)) comparing interpolation base values of `1.5` and `0.5` based on zoom. In order to convert camera style functions, use `$zoomLevel` or `MGL_FUNCTION('zoomLevel')` as the attribute key.
-
-<img src="img/data-driven-styling/exponential-function.png" height=344/>
-<img src="img/data-driven-styling/exponential-function-1.png" height=344/>
-
-The example below increases a layer’s `circleRadius` exponentially based on a map’s zoom level. The interpolation base is `1.5`.
-
-Style function syntax:
-
-```swift
-let stops = [
- 12: MGLStyleValue<NSNumber>(rawValue: 0.5),
- 14: MGLStyleValue(rawValue: 2),
- 18: MGLStyleValue(rawValue: 18),
-]
-
-layer.circleRadius = MGLStyleValue(interpolationMode: .exponential,
- cameraStops: stops,
- options: [.interpolationBase: 1.5])
-```
-
-Current syntax:
-
-<%- guideExample(guide, 'Exponential', os) %>
-
-### Interval
-
-Steps, or intervals, create a range using the keys from the stops dictionary. The range is from the given key to just less than the next key. The attribute values that fall into that range are then styled using the layout or paint value assigned to that key. You can use the `+[NSExpression(MGLAdditions) mgl_expressionForSteppingExpression:fromExpression:stops:]` method or the custom function [`mgl_step:from:stops:`](predicates-and-expressions.html#code-mgl_step-from-stops-code) for cases where you previously used interval interpolation mode. The first parameter takes the feature attribute name and the second parameter (`from:`) optionally takes the default or fallback value for that function. The final parameter takes a stops dictionary as an argument.
-
-When we use the stops dictionary given above with an `'mgl_step:from:stops:'`, we create ranges where earthquakes with a magnitude of 0 to just less than 2.5 would be yellow, 2.5 to just less than 5 would be orange, and so on.
-
-Style function syntax:
-
-```swift
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-
-layer.circleColor = MGLStyleValue(interpolationMode: .interval,
- sourceStops: stops,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .green)])
-````
-
-Current syntax:
-
-<%- guideExample(guide, 'Interval', os) %>
-
-### Categorical
-
-Categorical interpolation mode took a stops dictionary. If the value for a specified feature attribute name matched one in that stops dictionary, the style value for that attribute value would be used. Categorical style functions can now be replaced with `MGL_MATCH`.
-
-`MGL_MATCH` takes an initial condition, which in this case is an attribute key. This is followed by possible matches for that key and the value to assign to the layer property if there is a match. The final argument can be a default style value that is to be used if none of the specified values match.
-
-There are three main types of events in the USGS dataset: earthquakes, explosions, and quarry blasts. In this case, the color of the circle layer will be determined by the type of event, with a default value of blue to catch any events that do not fall into any of those categories.
-
-Style function syntax:
-
-```swift
-let categoricalStops = [
- "earthquake": MGLStyleValue<UIColor>(rawValue: .orange),
- "explosion": MGLStyleValue(rawValue: .red),
- "quarry blast": MGLStyleValue(rawValue: .yellow),
-]
-
-layer.circleColor = MGLStyleValue(interpolationMode: .categorical,
- sourceStops: categoricalStops,
- attributeName: "type",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .blue)])
-```
-
-Current syntax:
-<%- guideExample(guide, 'Categorical', os) %>
-
-If your use case does not require a default value, you can either apply a predicate to your layer prior to styling it, or use the format string `"valueForKeyPath:"`.
-
-### Identity
-
-Identity interpolation mode used the attribute’s value as the style layer property value. In this example, you might set the `circleRadius` to the earthquake’s magnitude. In order to use a feature attribute value to style a layer property, set the property value to `[NSExpression expressionForKeyPath:]`, which take the feature attribute name as an argument.
-
-Style function syntax:
-
-```swift
-layer.circleRadius = MGLStyleValue(interpolationMode: .identity,
- sourceStops: nil,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<NSNumber>(rawValue: 0)])
-```
-
-Current syntax:
-<%- guideExample(guide, 'Identity', os) %>
-
-![identity mode](img/data-driven-styling/identity.png)
-
-Some built-in functions can be applied to attribute values to style layer property values. To set the circle radius to three times the earthquake’s magnitude, create a `multiply:by:` function that takes the attribute value and the multiplier as arguments, or use a format string.
-
-<%- guideExample(guide, 'Multiply', os) %>
-
-![multiply magnitude](img/data-driven-styling/multiply.png)
-
-You can also cast attribute values in order to use them. One example is to cast an integer as an `NSString` and use it as a text value.
-
-<%- guideExample(guide, 'Cast', os) %>
-
-![cast a value](img/data-driven-styling/cast.png)
-
-### Constant Values
-
-For constant values that do not necessarily change based on camera or attribute values, use `[NSExpression expressionForConstantValue:]` (previously `[MGLStyleValue valueWithRawValue:]`).
-
-## Resources
-
-* [USGS Earthquake Feed](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php)
-* [For Style Authors](for-style-authors.html)
-* [Predicates and Expressions](predicates-and-expressions.html)
diff --git a/platform/darwin/docs/guides/Predicates and Expressions.md b/platform/darwin/docs/guides/Predicates and Expressions.md
deleted file mode 100644
index b2e01b94db..0000000000
--- a/platform/darwin/docs/guides/Predicates and Expressions.md
+++ /dev/null
@@ -1,950 +0,0 @@
-# Predicates and expressions
-
-Style layers use predicates and expressions to determine what to display and how
-to format it. _Predicates_ are represented by the same `NSPredicate` class that
-filters results from Core Data or items in an `NSArray` in Objective-C.
-Predicates are based on _expressions_, represented by the `NSExpression` class.
-Somewhat unusually, style layers also use expressions on their own.
-
-This document discusses the specific subset of the predicate and expression
-syntax supported by this SDK. For a more general introduction to predicates and
-expressions, consult the
-_[Predicate Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/AdditionalChapters/Introduction.html)_
-in Apple developer documentation. For additional detail on how this SDK has
-extended the `NSExpression` class, consult the [`NSExpression(MGLAdditions)`](./Categories/NSExpression(MGLAdditions).html)
-section of this documentation.
-
-## Using predicates to filter vector data
-
-Most style layer classes display `MGLFeature` objects that you can show or hide
-based on the feature’s attributes. Use the `MGLVectorStyleLayer.predicate`
-property to include only the features in the source layer that satisfy a
-condition that you define.
-
-### Operators
-
-The following comparison operators are supported:
-
-`NSPredicateOperatorType` | Format string syntax
-----------------------------------------------|---------------------
-`NSEqualToPredicateOperatorType` | `key = value`<br />`key == value`
-`NSGreaterThanOrEqualToPredicateOperatorType` | `key >= value`<br />`key => value`
-`NSLessThanOrEqualToPredicateOperatorType` | `key <= value`<br />`key =< value`
-`NSGreaterThanPredicateOperatorType` | `key > value`
-`NSLessThanPredicateOperatorType` | `key < value`
-`NSNotEqualToPredicateOperatorType` | `key != value`<br />`key <> value`
-`NSBetweenPredicateOperatorType` | `key BETWEEN { 32, 212 }`
-
-To test whether a feature has or lacks a specific attribute, compare the
-attribute to `NULL` or `NIL`. Predicates created using the
-`+[NSPredicate predicateWithValue:]` method are also supported. String
-operators and custom operators are not supported.
-
-The following compound operators are supported:
-
-`NSCompoundPredicateType` | Format string syntax
---------------------------|---------------------
-`NSAndPredicateType` | `predicate1 AND predicate2`<br />`predicate1 && predicate2`
-`NSOrPredicateType` | `predicate1 OR predicate2`<br /><code>predicate1 &vert;&vert; predicate2</code>
-`NSNotPredicateType` | `NOT predicate`<br />`!predicate`
-
-The following aggregate operators are supported:
-
-`NSPredicateOperatorType` | Format string syntax
-----------------------------------|---------------------
-`NSInPredicateOperatorType` | `key IN { 'iOS', 'macOS', 'tvOS', 'watchOS' }`
-`NSContainsPredicateOperatorType` | `{ 'iOS', 'macOS', 'tvOS', 'watchOS' } CONTAINS key`
-
-The following comparison predicate options are supported for comparison and
-aggregate operators that are used in the predicate:
-
-`NSComparisonPredicateOptions` | Format string syntax
-----------------------------------------|---------------------
-`NSCaseInsensitivePredicateOption` | `'QUEBEC' =[c] 'Quebec'`
-`NSDiacriticInsensitivePredicateOption` | `'Québec' =[d] 'Quebec'`
-
-Other comparison predicate options are unsupported, namely `l`
-(for locale sensitivity) and `n` (for normalization). A comparison is
-locale-sensitive as long as it is case- or diacritic-insensitive.
-
-### Operands
-
-Operands in predicates can be [variables](#variables), [key paths](#key-paths),
-or almost anything else that can appear
-[inside an expression](#using-expressions-to-configure-layout-and-paint-attributes).
-
-Automatic type casting is not performed. Therefore, a feature only matches a
-predicate if its value for the attribute in question is of the same type as the
-value specified in the predicate. Use the `CAST()` operator to convert a key
-path or variable into a matching type:
-
-* To cast a value to a number, use `CAST(key, 'NSNumber')`.
-* To cast a value to a string, use `CAST(key, 'NSString')`.
-* To cast a value to a color, use `CAST(key, 'UIColor')` on iOS and `CAST(key, 'NSColor')` on macOS.
-* To cast an `NSColor` or `UIColor` object to an array, use `CAST(noindex(color), 'NSArray')`.
-
-For details about the predicate format string syntax, consult the “Predicate
-Format String Syntax” chapter of the
-_[Predicate Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/AdditionalChapters/Introduction.html)_
-in Apple developer documentation.
-
-## Using expressions to configure layout and paint attributes
-
-An expression can contain subexpressions of various types. Each of the supported
-types of expressions is discussed below.
-
-### Constant values
-
-A constant value can be of any of the following types:
-
-In Objective-C | In Swift
-----------------------|---------
-`NSColor` (macOS)<br>`UIColor` (iOS) | `NSColor` (macOS)<br>`UIColor` (iOS)
-`NSString` | `String`
-`NSString` | `String`
-`NSNumber.boolValue` | `NSNumber.boolValue`
-`NSNumber.doubleValue` | `NSNumber.doubleValue`
-`NSArray<NSNumber>` | `[Float]`
-`NSArray<NSString>` | `[String]`
-`NSValue.CGVectorValue` (iOS)<br>`NSValue` containing `CGVector` (macOS) | `NSValue.cgVectorValue` (iOS)<br>`NSValue` containing `CGVector` (macOS)
-`NSValue.UIEdgeInsetsValue` (iOS)<br>`NSValue.edgeInsetsValue` (macOS) | `NSValue.uiEdgeInsetsValue` (iOS)<br>`NSValue.edgeInsetsValue` (macOS)
-
-For literal floating-point values, use `-[NSNumber numberWithDouble:]` instead
-of `-[NSNumber numberWithFloat:]` to avoid precision issues.
-
-### Key paths
-
-A key path expression refers to an attribute of the `MGLFeature` object being
-evaluated for display. For example, if a polygon’s `MGLFeature.attributes`
-dictionary contains the `floorCount` key, then the key path `floorCount` refers
-to the value of the `floorCount` attribute when evaluating that particular
-polygon.
-
-The following special attributes are also available on features that are produced
-as a result of clustering multiple point features together in a shape source:
-
-<table>
-<thead>
-<tr><th>Attribute</th><th>Type</th><th>Meaning</th></tr>
-</thead>
-<tbody>
-<tr>
- <td><code>cluster</code></td>
- <td>Bool</td>
- <td>True if the feature is a point cluster. If the attribute is false (or not present) then the feature should not be considered a cluster.</td>
-</tr>
-<tr>
- <td><code>cluster_id</code></td>
- <td>Number</td>
- <td>Identifier for the point cluster.</td>
-</tr>
-<tr>
- <td><code>point_count</code></td>
- <td>Number</td>
- <td>The number of point features in a given cluster.</td>
-</tr>
-</tbody>
-</table>
-
-Some characters may not be used directly as part of a key path in a format
-string. For example, if a feature’s attribute is named `ISO 3166-1:2006`, an
-expression format string of `lowercase(ISO 3166-1:2006)` or a predicate format
-string of `ISO 3166-1:2006 == 'US-OH'` would raise an exception. Instead, use a
-`%K` placeholder or the `+[NSExpression expressionForKeyPath:]` initializer:
-
-```objc
-[NSPredicate predicateWithFormat:@"%K == 'US-OH'", @"ISO 3166-1:2006"];
-[NSExpression expressionForFunction:@"lowercase:"
- arguments:@[[NSExpression expressionForKeyPath:@"ISO 3166-1:2006"]]]
-```
-
-```swift
-NSPredicate(format: "%K == 'US-OH'", "ISO 3166-1:2006")
-NSExpression(forFunction: "lowercase:",
- arguments: [NSExpression(forKeyPath: "ISO 3166-1:2006")])
-```
-
-### Functions
-
-Of the
-[functions predefined](https://developer.apple.com/documentation/foundation/nsexpression/1413747-init#discussion)
-by the
-[`+[NSExpression expressionForFunction:arguments:]` method](https://developer.apple.com/documentation/foundation/nsexpression/1413747-init),
-the following subset is supported in layer attribute values:
-
-Initializer parameter | Format string syntax
-----------------------|---------------------
-`average:` | `average({1, 2, 2, 3, 4, 7, 9})`
-`sum:` | `sum({1, 2, 2, 3, 4, 7, 9})`
-`count:` | `count({1, 2, 2, 3, 4, 7, 9})`
-`min:` | `min({1, 2, 2, 3, 4, 7, 9})`
-`max:` | `max({1, 2, 2, 3, 4, 7, 9})`
-`add:to:` | `1 + 2`
-`from:subtract:` | `2 - 1`
-`multiply:by:` | `1 * 2`
-`divide:by:` | `1 / 2`
-`modulus:by:` | `modulus:by:(1, 2)`
-`sqrt:` | `sqrt(2)`
-`log:` | `log(10)`
-`ln:` | `ln(2)`
-`raise:toPower:` | `2 ** 2`
-`exp:` | `exp(0)`
-`ceiling:` | `ceiling(0.99999)`
-`abs:` | `abs(-1)`
-`trunc:` | `trunc(6378.1370)`
-`floor:` | `floor(-0.99999)`
-`uppercase:` | `uppercase('Elysian Fields')`
-`lowercase:` | `lowercase('DOWNTOWN')`
-`noindex:` | `noindex(0 + 2 + c)`
-`length:` | `length('Wapakoneta')`
-`castObject:toType:` | `CAST(ele, 'NSString')`<br>`CAST(ele, 'NSNumber')`
-
-A number of [Mapbox-specific functions](#mapbox-specific-functions) are also
-available.
-
-The following predefined functions are **not** supported:
-
-Initializer parameter | Format string syntax
-----------------------|---------------------
-`median:` | `median({1, 2, 2, 3, 4, 7, 9})`
-`mode:` | `mode({1, 2, 2, 3, 4, 7, 9})`
-`stddev:` | `stddev({1, 2, 2, 3, 4, 7, 9})`
-`random` | `random()`
-`randomn:` | `randomn(10)`
-`now` | `now()`
-`bitwiseAnd:with:` | `bitwiseAnd:with:(5, 3)`
-`bitwiseOr:with:` | `bitwiseOr:with:(5, 3)`
-`bitwiseXor:with:` | `bitwiseXor:with:(5, 3)`
-`leftshift:by:` | `leftshift:by:(23, 1)`
-`rightshift:by:` | `rightshift:by:(23, 1)`
-`onesComplement:` | `onesComplement(255)`
-`distanceToLocation:fromLocation:` | `distanceToLocation:fromLocation:(there, here)`
-
-### Conditionals
-
-Conditionals are supported via the built-in
-`+[NSExpression expressionForConditional:trueExpression:falseExpression:]`
-method and `TERNARY()` operator. If you need to express multiple cases
-(“else-if”), you can either nest a conditional within a conditional or use the
-[`MGL_IF()`](#code-mgl_if-code) or [`MGL_MATCH()`](#code-mgl_match-code) function.
-
-### Aggregates
-
-Aggregate expressions can contain arrays of expressions. In some cases, it is
-possible to use the array itself instead of wrapping the array in an aggregate
-expression.
-
-### Variables
-
-The following variables are defined by this SDK for use with style layers:
-
-<table>
-<thead>
-<tr><th>Variable</th><th>Type</th><th>Meaning</th></tr>
-</thead>
-<tbody>
-<tr>
- <td><code>$featureIdentifier</code></td>
- <td>
- Any
- <a href="working-with-geojson-data.html#about-geojson-deserialization">GeoJSON data type</a>
- </td>
- <td>
- A value that uniquely identifies the feature in the containing source.
- This variable corresponds to the
- <code>NSExpression.featureIdentifierVariableExpression</code> property.
- </td>
-</tr>
-<tr>
- <td><code>$geometryType</code></td>
- <td>String</td>
- <td>
- The type of geometry represented by the feature. A feature’s type is one
- of the following strings:
- <ul>
- <li>
- <code>Point</code> for point features, corresponding to the
- <code>MGLPointAnnotation</code> class
- </li>
- <li>
- <code>LineString</code> for polyline features, corresponding to
- the <code>MGLPolyline</code> class
- </li>
- <li>
- <code>Polygon</code> for polygon features, corresponding to the
- <code>MGLPolygon</code> class
- </li>
- </ul>
- This variable corresponds to the
- <code>NSExpression.geometryTypeVariableExpression</code> property.
- </td>
-</tr>
-<tr>
- <td><code>$heatmapDensity</code></td>
- <td>Number</td>
- <td>
- The
- <a href="https://en.wikipedia.org/wiki/Kernel_density_estimation">kernel density estimation</a>
- of a screen point in a heatmap layer; in other words, a relative measure
- of how many data points are crowded around a particular pixel. This
- variable can only be used with the <code>heatmapColor</code> property.
- This variable corresponds to the
- <code>NSExpression.heatmapDensityVariableExpression</code> property.
- </td>
-</tr>
-<tr>
- <td><code>$zoomLevel</code></td>
- <td>Number</td>
- <td>
- The current zoom level. In style layout and paint properties, this
- variable may only appear as the target of a top-level interpolation or
- step expression. This variable corresponds to the
- <code>NSExpression.zoomLevelVariableExpression</code> property.
- </td>
-</tr>
-<tr>
- <td><code>$lineProgress</code></td>
- <td>Number</td>
- <td>
- A number that indicates the relative distance along a line at a given
- point along the line. This variable evaluates to 0 at the beginning of the
- line and 1 at the end of the line. It can only be used with the
- `MGLLineStyleLayer.lineGradient` property. It corresponds to the
- <code>NSExpression.lineProgressVariableExpression</code> property.
- </td>
-</tr>
-</tbody>
-</table>
-
-In addition to these variables, you can define your own variables and refer to
-them elsewhere in the expression. The syntax for defining a variable makes use
-of a [Mapbox-specific function](#mapbox-specific-functions) that takes an
-`NSDictionary` as an argument:
-
-```objc
-[NSExpression expressionWithFormat:@"MGL_LET('floorCount', 2, $floorCount + 1)"];
-```
-
-```swift
-NSExpression(format: "MGL_LET(floorCount, 2, $floorCount + 1)")
-```
-
-## Mapbox-specific functions
-
-For compatibility with the Mapbox Style Specification, the following functions
-are defined by this SDK. When setting a style layer property, you can call these
-functions just like the predefined functions above, using either the
-`+[NSExpression expressionForFunction:arguments:]` method or a convenient format
-string syntax:
-
-### `mgl_does:have:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_does:have:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_does:have:(SELF, '🧀🍔')</code> or <code>mgl_does:have:(%@, '🧀🍔')</code></dd>
-</dl>
-
-Returns a Boolean value indicating whether the dictionary has a value for the
-key or whether the evaluated object (`SELF`) has a value for the feature
-attribute. Compared to the [`mgl_has:`](#code-mgl_has-code) custom function,
-that function’s target is instead passed in as the first argument to this
-function. Both functions are equivalent to the syntax `key != NIL` or
-`%@[key] != NIL` but can be used outside of a predicate.
-
-### `mgl_interpolate:withCurveType:parameters:stops:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_interpolate:withCurveType:parameters:stops:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_interpolate:withCurveType:parameters:stops:(x, 'linear', nil, %@)</code></dd>
-</dl>
-
-Produces continuous, smooth results by interpolating between pairs of input and
-output values (“stops”). Compared to the
-[`mgl_interpolateWithCurveType:parameters:stops:`](#code-mgl_interpolatewithcurvetype-parameters-stops-code)
-custom function, the input expression (that function’s target) is instead passed
-in as the first argument to this function.
-
-### `mgl_step:from:stops:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_step:from:stops:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_step:from:stops:(x, 11, %@)</code></dd>
-</dl>
-
-Produces discrete, stepped results by evaluating a piecewise-constant function
-defined by pairs of input and output values ("stops"). Compared to the
-[`mgl_stepWithMinimum:stops:`](#code-mgl_stepwithminimum-stops-code) custom
-function, the input expression (that function’s target) is instead passed in as
-the first argument to this function.
-
-### `mgl_join:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_join:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_join({'Old', 'MacDonald'})</code></dd>
-</dl>
-
-Returns the result of concatenating together all the elements of an array in
-order. Compared to the
-[`stringByAppendingString:`](#code-stringbyappendingstring-code) custom
-function, this function takes only one argument, which is an aggregate
-expression containing the strings to concatenate.
-
-### `mgl_acos:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_acos:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_acos(1)</code></dd>
-</dl>
-
-Returns the arccosine of the number.
-
-This function corresponds to the
-[`acos`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-acos)
-operator in the Mapbox Style Specification.
-
-### `mgl_asin:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_asin:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_asin(0)</code></dd>
-</dl>
-
-Returns the arcsine of the number.
-
-This function corresponds to the
-[`asin`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-asin)
-operator in the Mapbox Style Specification.
-
-### `mgl_atan:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_atan:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_atan(20)</code></dd>
-</dl>
-
-Returns the arctangent of the number.
-
-This function corresponds to the
-[`atan`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-atan)
-operator in the Mapbox Style Specification.
-
-### `mgl_cos:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_cos:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_cos(0)</code></dd>
-</dl>
-
-Returns the cosine of the number.
-
-This function corresponds to the
-[`cos`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-cos)
-operator in the Mapbox Style Specification.
-
-### `mgl_log2:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_log2:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_log2(1024)</code></dd>
-</dl>
-
-Returns the base-2 logarithm of the number.
-
-This function corresponds to the
-[`log2`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-log2)
-operator in the Mapbox Style Specification.
-
-### `mgl_round:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_round:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_round(1.5)</code></dd>
-</dl>
-
-Returns the number rounded to the nearest integer. If the number is halfway
-between two integers, this function rounds it away from zero.
-
-This function corresponds to the
-[`round`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-round)
-operator in the Mapbox Style Specification.
-
-### `mgl_sin:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_sin:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_sin(0)</code></dd>
-</dl>
-
-Returns the sine of the number.
-
-This function corresponds to the
-[`sin`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-sin)
-operator in the Mapbox Style Specification.
-
-### `mgl_tan:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_tan:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_tan(0)</code></dd>
-</dl>
-
-Returns the tangent of the number.
-
-This function corresponds to the
-[`tan`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-tan)
-operator in the Mapbox Style Specification.
-
-### `mgl_coalesce:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_coalesce:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_coalesce({x, y, z})</code></dd>
-</dl>
-
-Returns the first non-`nil` value from an array of expressions.
-
-This function corresponds to the
-[`coalesce`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-coalesce)
-operator in the Mapbox Style Specification.
-
-### `mgl_attributed:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_attributed:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>mgl_attributed({x, y, z})</code></dd>
-</dl>
-
-Concatenates and returns the array of `MGLAttributedExpression` objects, for use
-with the `MGLSymbolStyleLayer.text` property.
-
-`MGLAttributedExpression.attributes` valid attributes.
-
- Key | Value Type
- --- | ---
- `MGLFontNamesAttribute` | An `NSExpression` evaluating to an `NSString` array.
- `MGLFontScaleAttribute` | An `NSExpression` evaluating to an `NSNumber` value.
- `MGLFontColorAttribute` | An `NSExpression` evaluating to an `UIColor` (iOS) or `NSColor` (macOS).
-
-This function corresponds to the
-[`format`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-types-format)
-operator in the Mapbox Style Specification.
-
-### `MGL_LET`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>MGL_LET:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>MGL_LET('age', uppercase('old'), 'name', uppercase('MacDonald'), mgl_join({$age, $name}))</code></dd>
-<dt>Arguments:</dt>
-<dd>
- Any number of variable names interspersed with their assigned
- <code>NSExpression</code> values, followed by an <code>NSExpression</code>
- that may contain references to those variables.
-</dd>
-</dl>
-
-Returns the result of evaluating an expression with the given variable values.
-Compared to the
-[`mgl_expressionWithContext:`](#code-mgl_expressionwithcontext-code) custom
-function, this function takes the variable names and values inline before the
-expression that contains references to those variables.
-
-### `MGL_MATCH`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>MGL_MATCH:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>MGL_MATCH(x, 0, 'zero match', 1, 'one match', 2, 'two match', 'default')</code></dd>
-<dt>Arguments:</dt>
-<dd>
- An input expression, then any number of argument pairs, followed by a default
- expression. Each argument pair consists of a constant value followed by an
- expression to produce as a result of matching that constant value.
- If the input value is an aggregate expression, then any of the constant values within
- that aggregate expression result in the following argument. This is shorthand for
- specifying an argument pair for each of the constant values within that aggregate
- expression. It is not possible to match the aggregate expression itself.
-</dd>
-</dl>
-
-Returns the result of matching the input expression against the given constant
-values.
-
-This function corresponds to the
-`+[NSExpression(MGLAdditions) mgl_expressionForMatchingExpression:inDictionary:defaultExpression:]`
-method and the
-[`match`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-match)
-operator in the Mapbox Style Specification.
-
-### `MGL_IF`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>MGL_IF:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>MGL_IF(1 = 2, YES, 2 = 2, YES, NO)</code></dd>
-<dt>Arguments:</dt>
-<dd>
- Alternating <code>NSPredicate</code> conditionals and resulting expressions,
- followed by a default expression.
-</dd>
-</dl>
-
-Returns the first expression that meets the condition; otherwise, the default
-value. Unlike
-`+[NSExpression expressionForConditional:trueExpression:falseExpression:]` or
-the `TERNARY()` syntax, this function can accept multiple “if else” conditions
-and is supported on iOS 8._x_ and macOS 10.10._x_; however, each conditional
-passed into this function must be wrapped in a constant expression.
-
-This function corresponds to the
-`+[NSExpression(MGLAdditions) mgl_expressionForConditional:trueExpression:falseExpresssion:]`
-method and the
-[`case`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-case)
-operator in the Mapbox Style Specification.
-
-### `MGL_FUNCTION`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>MGL_FUNCTION:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>MGL_FUNCTION('typeof', mystery)</code></dd>
-<dt>Arguments:</dt>
-<dd>
- Any arguments required by the expression operator.
-</dd>
-</dl>
-
-An expression exactly as defined by the
-[Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions).
-
-## Custom functions
-
-The following custom functions are also available with the
-`+[NSExpression expressionForFunction:selectorName:arguments:]` method or the
-`FUNCTION()` format string syntax.
-
-Some of these functions are defined as methods on their respective target
-classes, but you should not call them directly outside the context of an
-expression, because the result may differ from the evaluated expression’s result
-or may result in undefined behavior.
-
-The Mapbox Style Specification defines some operators for which no custom
-function is available. To use these operators in an `NSExpression`, call the
-[`MGL_FUNCTION()`](#code-mgl_function-code) function with the same arguments
-that the operator expects.
-
-### `boolValue`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>boolValue</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>FUNCTION(1, 'boolValue')</code></dd>
-<dt>Target:</dt>
-<dd>
- An <code>NSExpression</code> that evaluates to a number or string.
-</dd>
-<dt>Arguments:</dt>
-<dd>None.</dd>
-</dl>
-
-A Boolean representation of the target: <code>FALSE</code> when then input is an
-empty string, 0, <code>FALSE</code>, <code>NIL</code>, or <code>NaN</code>,
-otherwise <code>TRUE</code>.
-
-### `mgl_has:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_has:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>FUNCTION($featureAttributes, 'mgl_has:', '🧀🍔')</code></dd>
-<dt>Target:</dt>
-<dd>
- An <code>NSExpression</code> that evaluates to an <code>NSDictionary</code>
- or the evaluated object (<code>SELF</code>).
-</dd>
-<dt>Arguments:</dt>
-<dd>
- An <code>NSExpression</code> that evaluates to an <code>NSString</code>
- representing the key to look up in the dictionary or the feature attribute to
- look up in the evaluated object (see <code>MGLFeature.attributes</code>).
-</dd>
-</dl>
-
-<code>true</code> if the dictionary has a value for the key or if the evaluated
-object has a value for the feature attribute.
-
-This function corresponds to the
-[`has`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-has)
-operator in the Mapbox Style Specification. See also the
-[`mgl_does:have:`](#code-mgl_does-have-code) function, which is used on its own
-without the `FUNCTION()` operator. You can also check whether an object has an
-attribute by comparing the key path to `NIL`, for example `cheeseburger != NIL`
-or `burger.cheese != NIL`
-
-### `mgl_expressionWithContext:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_expressionWithContext:</code></dd>
-<dt>Format string syntax:</dt>
-<dd>
- <code>FUNCTION($ios + $macos, 'mgl_expressionWithContext:', %@)</code> with
- a dictionary containing <code>ios</code> and <code>macos</code> keys
-</dd>
-<dt>Target:</dt>
-<dd>
- An <code>NSExpression</code> that may contain references to the variables
- defined in the context dictionary.
-</dd>
-<dt>Arguments:</dt>
-<dd>
- An <code>NSDictionary</code> with <code>NSString</code>s as keys and
- <code>NSExpression</code>s as values. Each key is a variable name and each
- value is the variable’s value within the target expression.
-</dd>
-</dl>
-
-The target expression with variable subexpressions replaced with the values
-defined in the context dictionary.
-
-This function corresponds to the
-[`let`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-let)
-operator in the Mapbox Style Specification. See also the
-[`MGL_LET`](#code-mgl_let-code) function, which is used on its own without the
-`FUNCTION()` operator.
-
-### `mgl_interpolateWithCurveType:parameters:stops:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_interpolateWithCurveType:parameters:stops:</code></dd>
-<dt>Format string syntax:</dt>
-<dd>
- <code>FUNCTION($zoomLevel, 'mgl_interpolateWithCurveType:parameters:stops:', 'linear', NIL, %@)</code>
- with a dictionary containing zoom levels or other constant values as keys
-</dd>
-<dt>Target:</dt>
-<dd>
- An <code>NSExpression</code> that evaluates to a number and contains a
- variable or key path expression.
-</dd>
-<dt>Arguments:</dt>
-<dd>
- The first argument is one of the following strings denoting curve types:
- <code>linear</code>, <code>exponential</code>, or <code>cubic-bezier</code>.
-
- The second argument is an expression providing parameters for the curve:
-
- <ul>
- <li>If the curve type is <code>linear</code>, the argument is <code>NIL</code>.</li>
- <li>
- If the curve type is <code>exponential</code>, the argument is an
- expression that evaluates to a number, specifying the base of the
- exponential interpolation.
- </li>
- <li>
- If the curve type is <code>cubic-bezier</code>, the argument is an
- array or aggregate expression containing four expressions, each
- evaluating to a number. The four numbers are control points for the
- cubic Bézier curve.
- </li>
- </ul>
-
- The third argument is an <code>NSDictionary</code> object representing the
- interpolation’s stops, with numeric zoom levels as keys and expressions as
- values.
-</dd>
-</dl>
-
-A value interpolated along the continuous mathematical function defined by the
-arguments, with the target as the input to the function.
-
-The input expression is matched against the keys in the stop dictionary. The
-keys may be feature attribute values, zoom levels, or heatmap densities. The
-values may be constant values or `NSExpression` objects. For example, you can
-use a stop dictionary with the zoom levels 0, 10, and 20 as keys and the colors
-yellow, orange, and red as the values.
-
-This function corresponds to the
-`+[NSExpression(MGLAdditions) mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]`
-method and the
-[`interpolate`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-interpolate)
-operator in the Mapbox Style Specification. See also the
-[`mgl_interpolate:withCurveType:parameters:stops:`](#code-mgl_interpolate-withcurvetype-parameters-stops-code)
-function, which is used on its own without the `FUNCTION()` operator.
-
-### `mgl_numberWithFallbackValues:`
-
-<dl>
-<dt>Selector:</dt>
-<dd>
- <code>mgl_numberWithFallbackValues:</code>,
- <code>doubleValue</code>,
- <code>floatValue</code>, or
- <code>decimalValue</code>
-</dd>
-<dt>Format string syntax:</dt>
-<dd><code>FUNCTION(ele, 'mgl_numberWithFallbackValues:', 0)</code></dd>
-<dt>Target:</dt>
-<dd>
- An <code>NSExpression</code> that evaluates to a Boolean value, number, or
- string.
-</dd>
-<dt>Arguments:</dt>
-<dd>
- Zero or more <code>NSExpression</code>s, each evaluating to a Boolean value
- or string.
-</dd>
-</dl>
-
-A numeric representation of the target:
-
-* If the target is <code>NIL</code> or <code>FALSE</code>, the result is 0.
-* If the target is true, the result is 1.
- * If the target is a string, it is converted to a number as specified by the
- “[ToNumber Applied to the String Type](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type)”
- algorithm of the ECMAScript Language Specification.
- * If multiple values are provided, each one is evaluated in order until the
- first successful conversion is obtained.
-
-This function corresponds to the
-[`to-number`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-types-to-number)
-operator in the Mapbox Style Specification. You can also cast a value to a
-number by passing the value and the string `NSNumber` into the `CAST()`
-operator.
-
-### `mgl_stepWithMinimum:stops:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>mgl_stepWithMinimum:stops:</code></dd>
-<dt>Format string syntax:</dt>
-<dd>
- <code>FUNCTION($zoomLevel, 'mgl_stepWithMinimum:stops:', 0, %@)</code> with
- a dictionary with zoom levels or other constant values as keys
-</dd>
-<dt>Target:</dt>
-<dd>
- An <code>NSExpression</code> that evaluates to a number and contains a
- variable or key path expression.
-</dd>
-<dt>Arguments:</dt>
-<dd>
- The first argument is an expression that evaluates to a number, specifying
- the minimum value in case the target is less than any of the stops in the
- second argument.
-
- The second argument is an <code>NSDictionary</code> object representing the
- interpolation’s stops, with numeric zoom levels as keys and expressions as
- values.
-</dd>
-</dl>
-
-The output value of the stop whose key is just less than the evaluated target,
-or the minimum value if the target is less than the least of the stops’ keys.
-
-The input expression is matched against the keys in the stop dictionary. The
-keys may be feature attribute values, zoom levels, or heatmap densities. The
-values may be constant values or `NSExpression` objects. For example, you can
-use a stop dictionary with the zoom levels 0, 10, and 20 as keys and the colors
-yellow, orange, and red as the values.
-
-This function corresponds to the
-`+[NSExpression(MGLAdditions) mgl_expressionForSteppingExpression:fromExpression:stops:]`
-method and the
-[`step`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-step)
-operator in the Mapbox Style Specification.
-
-### `stringByAppendingString:`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>stringByAppendingString:</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>FUNCTION('Old', 'stringByAppendingString:', 'MacDonald')</code></dd>
-<dt>Target:</dt>
-<dd>An <code>NSExpression</code> that evaluates to a string.</dd>
-<dt>Arguments:</dt>
-<dd>One or more <code>NSExpression</code>s, each evaluating to a string.</dd>
-</dl>
-
-The target string with each of the argument strings appended in order.
-
-This function corresponds to the
-`-[NSExpression(MGLAdditions) mgl_expressionByAppendingExpression:]`
-method and is similar to the
-[`concat`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-concat)
-operator in the Mapbox Style Specification. See also the
-[`mgl_join:`](#code-mgl_join-code) function, which concatenates multiple
-expressions and is used on its own without the `FUNCTION()` operator.
-
-### `stringValue`
-
-<dl>
-<dt>Selector:</dt>
-<dd><code>stringValue</code></dd>
-<dt>Format string syntax:</dt>
-<dd><code>FUNCTION(ele, 'stringValue')</code></dd>
-<dt>Target:</dt>
-<dd>
- An <code>NSExpression</code> that evaluates to a Boolean value, number, or
- string.
-</dd>
-<dt>Arguments:</dt>
-<dd>None.</dd>
-</dl>
-
-A string representation of the target:
-
-* If the target is <code>NIL</code>, the result is the empty string.
-* If the target is a Boolean value, the result is the string `true` or `false`.
-* If the target is a number, it is converted to a string as specified by the
- “[NumberToString](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type)”
- algorithm of the ECMAScript Language Specification.
-* If the target is a color, it is converted to a string of the form
- `rgba(r,g,b,a)`, where <var>r</var>, <var>g</var>, and <var>b</var> are
- numerals ranging from 0 to 255 and <var>a</var> ranges from 0 to 1.
-* Otherwise, the target is converted to a string in the format specified by the
- [`JSON.stringify()`](https://tc39.github.io/ecma262/#sec-json.stringify)
- function of the ECMAScript Language Specification.
-
-This function corresponds to the
-[`to-string`](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-types-to-string)
-operator in the Mapbox Style Specification. You can also cast a value to a
-string by passing the value and the string `NSString` into the `CAST()`
-operator.
diff --git a/platform/darwin/docs/guides/Tile URL Templates.md.ejs b/platform/darwin/docs/guides/Tile URL Templates.md.ejs
deleted file mode 100644
index 2b1de65b42..0000000000
--- a/platform/darwin/docs/guides/Tile URL Templates.md.ejs
+++ /dev/null
@@ -1,109 +0,0 @@
-<%
- const os = locals.os;
- const iOS = os === 'iOS';
- //const macOS = os === 'macOS';
- //const cocoaPrefix = iOS ? 'UI' : 'NS';
--%>
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-# Tile URL Templates
-
-`MGLTileSource` objects, specifically `MGLRasterTileSource` and
-`MGLVectorTileSource` objects, can be created using an initializer that accepts
-an array of tile URL templates. Tile URL templates are strings that specify the
-URLs of the vector tiles or raster tile images to load. A template resembles an
-absolute URL, but with any number of placeholder strings that the source
-evaluates based on the tile it needs to load. For example:
-
-* `http://www.example.com/tiles/{z}/{x}/{y}.pbf` could be
- evaluated as `http://www.example.com/tiles/14/6/9.pbf`.
-* `http://www.example.com/tiles/{z}/{x}/{y}{ratio}.png` could be
- evaluated as `http://www.example.com/tiles/14/6/9@2x.png`.
-
-Tile URL templates are also used to define tilesets in TileJSON manifests or
-[`raster`](https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-raster-tiles)
-and
-[`vector`](https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-vector-tiles)
-sources in style JSON files. See the
-[TileJSON specification](https://github.com/mapbox/tilejson-spec/tree/master/2.2.0)
-for information about tile URL templates in the context of a TileJSON or style
-JSON file.
-
-Tile sources support the following placeholder strings in tile URL templates,
-all of which are optional:
-
-<table>
-<thead>
-<tr><th>Placeholder string</th><th>Description</th></tr>
-</thead>
-<tbody>
-<tr>
- <td><code>{x}</code></td>
- <td>The index of the tile along the map’s x axis according to Spherical
- Mercator projection. If the value is 0, the tile’s left edge corresponds
- to the 180th meridian west. If the value is 2<sup><var>z</var></sup>−1,
- the tile’s right edge corresponds to the 180th meridian east.</td>
-</tr>
-<tr>
- <td><code>{y}</code></td>
- <td>The index of the tile along the map’s y axis according to Spherical
- Mercator projection. If the value is 0, the tile’s tile edge corresponds
- to arctan(sinh(π)), or approximately 85.0511 degrees north. If the value
- is 2<sup><var>z</var></sup>−1, the tile’s bottom edge corresponds to
- −arctan(sinh(π)), or approximately 85.0511 degrees south. The y axis is
- inverted if the <code>options</code> parameter contains
- <code>MGLTileSourceOptionTileCoordinateSystem</code> with a value of
- <code>MGLTileCoordinateSystemTMS</code>.</td>
-</tr>
-<tr>
- <td><code>{z}</code></td>
- <td>The tile’s zoom level. At zoom level 0, each tile covers the entire
- world map; at zoom level 1, it covers ¼ of the world; at zoom level 2,
- <sup>1</sup>⁄<sub>16</sub> of the world, and so on. For tiles loaded by
- a <code>MGLRasterTileSource</code> object, whether the tile zoom level
- matches the map’s current zoom level depends on the value of the
- source’s tile size as specified in the
- <code>MGLTileSourceOptionTileSize</code> key of the <code>options</code>
- parameter.</td>
-</tr>
-<tr>
- <td><code>{bbox-epsg-3857}</code></td>
- <td>The tile’s bounding box, expressed as a comma-separated list of the
- tile’s western, southern, eastern, and northern extents according to
- Spherical Mercator (EPSG:3857) projection. The bounding box is typically
- used with map services conforming to the
- <a href="http://www.opengeospatial.org/standards/wms">Web Map Service</a>
- protocol.</td>
-</tr>
-<tr>
- <td><code>{quadkey}</code></td>
- <td>A quadkey indicating both the tile’s location and its zoom level. The
- quadkey is typically used with
- <a href="https://msdn.microsoft.com/en-us/library/bb259689.aspx">Bing Maps</a>.
- </td>
-</tr>
-<tr>
- <td><code>{ratio}</code></td>
- <td>A suffix indicating the resolution of the tile image. The suffix is the
- empty string for standard resolution displays and <code>@2x</code> for
-<% if (iOS) { -%>
- Retina displays, including displays for which <code>UIScreen.scale</code>
- is 3.
-<% } else { -%>
- Retina displays.
-<% } -%>
- </td>
-</tr>
-<tr>
- <td><code>{prefix}</code></td>
- <td>Two hexadecimal digits chosen such that each visible tile has a
- different prefix. The prefix is typically used for domain sharding.</td>
-</tr>
-</tbody>
-</table>
-
-For more information about the `{x}`, `{y}`, and `{z}` placeholder strings,
-consult the
-[OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames).
diff --git a/platform/darwin/docs/guides/Working with GeoJSON Data.md b/platform/darwin/docs/guides/Working with GeoJSON Data.md
deleted file mode 100644
index 269bb86039..0000000000
--- a/platform/darwin/docs/guides/Working with GeoJSON Data.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Working with GeoJSON Data
-
-This SDK offers several ways to work with [GeoJSON](http://geojson.org/) files.
-GeoJSON is a standard file format for representing geographic data.
-
-## Adding a GeoJSON file to the map
-
-You can use
-[Mapbox Studio’s Datasets editor](https://www.mapbox.com/studio/datasets/) to
-upload a GeoJSON file and include it in your custom map style. The GeoJSON data
-will be hosted on Mapbox servers. When a user loads your style, the SDK
-automatically loads the GeoJSON data for display.
-
-Alternatively, if you need to host the GeoJSON file elsewhere or bundle it with
-your application, you can use a GeoJSON file as the basis of an `MGLShapeSource`
-object. Pass the file’s URL into the
-`-[MGLShapeSource initWithIdentifier:URL:options:]` initializer and add the
-shape source to the map using the `-[MGLStyle addSource:]` method. The URL may
-be a local file URL, an HTTP URL, or an HTTPS URL.
-
-Once you’ve added the GeoJSON file to the map via an `MGLShapeSource` object,
-you can configure the appearance of its data and control what data is visible
-using `MGLStyleLayer` objects. You can also
-[access the data programmatically](#extracting-geojson-data-from-the-map).
-
-## Converting GeoJSON data into shape objects
-
-If you have GeoJSON data in the form of source code (also known as “GeoJSON
-text”), you can convert it into an `MGLShape`, `MGLFeature`, or
-`MGLShapeCollectionFeature` object that the `MGLShapeSource` class understands
-natively. First, create an `NSData` object out of the source code string or file
-contents, then pass that data object into the
-`+[MGLShape shapeWithData:encoding:error:]` method. Finally, you can pass the
-resulting shape or feature object into the
-`-[MGLShapeSource initWithIdentifier:shape:options:]` initializer and add it to
-the map, or you can use the object and its properties to power non-map-related
-functionality in your application.
-
-To include multiple shapes in the source, create and pass an `MGLShapeCollection` or
- `MGLShapeCollectionFeature` object to
- `-[MGLShapeSource initWithIdentifier:shape:options:]`. Alternatively, use the
- `-[MGLShapeSource initWithIdentifier:features:options:]` or
- `-[MGLShapeSource initWithIdentifier:shapes:options:]` method to create a shape source
- with an array. `-[MGLShapeSource initWithIdentifier:features:options:]` accepts only `MGLFeature`
- instances, such as `MGLPointFeature` objects, whose attributes you can use when
- applying a predicate to `MGLVectorStyleLayer` or configuring a style layer’s
- appearance.
-
-## Extracting GeoJSON data from the map
-
-Any `MGLShape`, `MGLFeature`, or `MGLShapeCollectionFeature` object has an
-`-[MGLShape geoJSONDataUsingEncoding:]` method that you can use to create a
-GeoJSON source code representation of the object. You can extract a feature
-object from the map using a method such as
-`-[MGLMapView visibleFeaturesAtPoint:]`.
-
-## About GeoJSON deserialization
-
-The process of converting GeoJSON text into `MGLShape`, `MGLFeature`, or
-`MGLShapeCollectionFeature` objects is known as “GeoJSON deserialization”.
-GeoJSON geometries, features, and feature collections are known in this SDK as
-shapes, features, and shape collection features, respectively.
-
-Each GeoJSON object type corresponds to a type provided by either this SDK or
-the Core Location framework:
-
-GeoJSON object type | SDK type
---------------------|---------
-`Position` (longitude, latitude) | `CLLocationCoordinate2D` (latitude, longitude)
-`Point` | `MGLPointAnnotation`
-`MultiPoint` | `MGLPointCollection`
-`LineString` | `MGLPolyline`
-`MultiLineString` | `MGLMultiPolyline`
-`Polygon` | `MGLPolygon`
-Linear ring | `MGLPolygon.coordinates`, `MGLPolygon.interiorPolygons`
-`MultiPolygon` | `MGLMultiPolygon`
-`GeometryCollection` | `MGLShapeCollection`
-`Feature` | `MGLFeature`
-`FeatureCollection` | `MGLShapeCollectionFeature`
-
-A `Feature` object in GeoJSON corresponds to an instance of an `MGLShape`
-subclass conforming to the `MGLFeature` protocol. There is a distinct
-`MGLFeature`-conforming class for each type of geometry that a GeoJSON feature
-can contain. This allows features to be used as raw shapes where convenient. For
-example, some features can be added to a map view as annotations. Note that
-identifiers and attributes will not be available for feature querying when a
-feature is used as an annotation.
-
-In contrast to the GeoJSON standard, it is possible for `MGLShape` subclasses
-other than `MGLPointAnnotation` to straddle the antimeridian.
-
-The following GeoJSON data types correspond straightforwardly to Foundation data
-types when they occur as feature identifiers or property values:
-
-GeoJSON data type | Objective-C representation | Swift representation
--------------------|----------------------------|---------------------
-`null` | `NSNull` | `NSNull`
-`true`, `false` | `NSNumber.boolValue` | `Bool`
-Integer | `NSNumber.unsignedLongLongValue`, `NSNumber.longLongValue` | `UInt64`, `Int64`
-Floating-point number | `NSNumber.doubleValue` | `Double`
-String | `NSString` | `String`
diff --git a/platform/darwin/docs/img/data-driven-styling/cast.png b/platform/darwin/docs/img/data-driven-styling/cast.png
deleted file mode 100644
index e5b40b4ffa..0000000000
--- a/platform/darwin/docs/img/data-driven-styling/cast.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/docs/img/data-driven-styling/exponential-function-1.png b/platform/darwin/docs/img/data-driven-styling/exponential-function-1.png
deleted file mode 100644
index 39a8a2a1e4..0000000000
--- a/platform/darwin/docs/img/data-driven-styling/exponential-function-1.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/docs/img/data-driven-styling/exponential-function.png b/platform/darwin/docs/img/data-driven-styling/exponential-function.png
deleted file mode 100644
index f9824fc5e4..0000000000
--- a/platform/darwin/docs/img/data-driven-styling/exponential-function.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/docs/img/data-driven-styling/identity.png b/platform/darwin/docs/img/data-driven-styling/identity.png
deleted file mode 100644
index 3355694ec9..0000000000
--- a/platform/darwin/docs/img/data-driven-styling/identity.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/docs/img/data-driven-styling/multiply.png b/platform/darwin/docs/img/data-driven-styling/multiply.png
deleted file mode 100644
index df42f243e1..0000000000
--- a/platform/darwin/docs/img/data-driven-styling/multiply.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/docs/theme b/platform/darwin/docs/theme
deleted file mode 160000
-Subproject 75b9170a8b9f85d64f94e3083f8204edce10302
diff --git a/platform/darwin/resources/Base.lproj/Foundation.strings b/platform/darwin/resources/Base.lproj/Foundation.strings
deleted file mode 100644
index f092bdab30..0000000000
--- a/platform/darwin/resources/Base.lproj/Foundation.strings
+++ /dev/null
@@ -1,306 +0,0 @@
-/* User-friendly error description */
-"ADD_FILE_CONTENTS_FAILED_DESC" = "Unable to add offline packs from the file at %@.";
-
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ o’clock";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ o’clock";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "east";
-
-/* East, short */
-"COMPASS_E_SHORT" = "E";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "east by north";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "EbN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "east by south";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "EbS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "east-northeast";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ENE";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "east-southeast";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ESE";
-
-/* North, long */
-"COMPASS_N_LONG" = "north";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "north by east";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NbE";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "north by west";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NbW";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "northeast";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NE";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "northeast by east";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEbE";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "northeast by north";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEbN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "north-northeast";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNE";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "north-northwest";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNW";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "northwest";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NW";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "northwest by north";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NWbN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "northwest by west";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NWbW";
-
-/* South, long */
-"COMPASS_S_LONG" = "south";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "south by east";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SbE";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "south by west";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SbW";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "southeast";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SE";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "southeast by east";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEbE";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "southeast by south";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEbS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "south-southeast";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSE";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "south-southwest";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSW";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "southwest";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SW";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "southwest by south";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SWbS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "southwest by west";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SWbW";
-
-/* West, long */
-"COMPASS_W_LONG" = "west";
-
-/* West, short */
-"COMPASS_W_SHORT" = "W";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "west by north";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "WbN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "west by south";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "WbS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "west-northwest";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "WNW";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "west-southwest";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "WSW";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d degree(s)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ and %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, and %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ east";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ east";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ by %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minute(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ north";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ north";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ south";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ south";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d second(s)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ west";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ west";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
-/* User-friendly error description; first placeholder is the source’s identifier */
-"REMOVE_SRC_FAIL_IN_USE_FMT" = "The source “%@” can’t be removed while it is in use.";
-
-/* User-friendly error description */
-"REMOVE_SRC_FAIL_MISMATCH_FMT" = "The source can’t be removed because its identifier, “%@”, belongs to a different source in this style.";
-
diff --git a/platform/darwin/resources/ar.lproj/Foundation.stringsdict b/platform/darwin/resources/ar.lproj/Foundation.stringsdict
deleted file mode 100644
index 1c1cbc6ecd..0000000000
--- a/platform/darwin/resources/ar.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>zero</key>
- <string>0 درجة</string>
- <key>one</key>
- <string>درجة واحدة</string>
- <key>two</key>
- <string>درجتان</string>
- <key>few</key>
- <string>%d درجات</string>
- <key>many</key>
- <string>%d درجة</string>
- <key>other</key>
- <string>%d درجة</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>zero</key>
- <string>أقل من دقيقة</string>
- <key>one</key>
- <string>دقيقة واحدة</string>
- <key>two</key>
- <string>دقيقتان</string>
- <key>few</key>
- <string>%d دقائق</string>
- <key>many</key>
- <string>%d دقيقة</string>
- <key>other</key>
- <string>%d دقيقة</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>zero</key>
- <string>أقل من ثانية</string>
- <key>one</key>
- <string>ثانية واحدة</string>
- <key>two</key>
- <string>ثانيتان</string>
- <key>few</key>
- <string>%d ثوان</string>
- <key>many</key>
- <string>%d ثانية</string>
- <key>other</key>
- <string>%d ثانية</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/bg.lproj/Foundation.strings b/platform/darwin/resources/bg.lproj/Foundation.strings
deleted file mode 100644
index 677e4de444..0000000000
--- a/platform/darwin/resources/bg.lproj/Foundation.strings
+++ /dev/null
@@ -1,296 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ часа";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ часа";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "изток";
-
-/* East, short */
-"COMPASS_E_SHORT" = "И";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "ийст-тен-уест";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "EbN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "ийст-тен-саут";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "EbS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "север-североизток";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ССИ";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "изток-югоизток";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ИЮИ";
-
-/* North, long */
-"COMPASS_N_LONG" = "север";
-
-/* North, short */
-"COMPASS_N_SHORT" = "С";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "норд-тен-ийст";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NbE";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "норд-тен-уест";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NbW";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "североизток";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "СИ";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "нордийст-тен-ийст";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEbE";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "нордийст-тен-норд";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEnN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "север-североизток";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "ССИ";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "север-северозапад";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "ССЗ";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "северозапад";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "СЗ";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "нордуест-тен-норд";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NWbN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "нордуест-тен-уест";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NWbW";
-
-/* South, long */
-"COMPASS_S_LONG" = "юг";
-
-/* South, short */
-"COMPASS_S_SHORT" = "Ю";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "саут-тен-ийст";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SbE";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "саут-тен-уест";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SbW";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "югоизток";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "ЮИ";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "саутийст-тен-ийст";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEbE";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "саутийст-тен-саут";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEbS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "юг-югоизток";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "ЮЮИ";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "юг-югозапад";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "ЮЮЗ";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "югозапад";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "ЮЗ";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "саутуест-тен-саут";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SWbS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "саутуест-тен-уест";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SWbW";
-
-/* West, long */
-"COMPASS_W_LONG" = "запад";
-
-/* West, short */
-"COMPASS_W_SHORT" = "З";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "уест-тен-норд";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "WbN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "уест-тен-саут";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "WbS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "запад-северозапад";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "ЗСЗ";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "запад-югозапад";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "ЗСЗ";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d градус(а)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ и %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@ и %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ изток";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ изток";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@И";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ на %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d минута(и)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ север";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ север";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@С";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ юг";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ юг";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@Ю";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d секунда(и)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ запад";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ запад";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@З";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
diff --git a/platform/darwin/resources/bg.lproj/Foundation.stringsdict b/platform/darwin/resources/bg.lproj/Foundation.stringsdict
deleted file mode 100644
index fcaf0a48c1..0000000000
--- a/platform/darwin/resources/bg.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d градус</string>
- <key>other</key>
- <string>%d градуса</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d минута</string>
- <key>other</key>
- <string>%d минути</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d секунда</string>
- <key>other</key>
- <string>%d секунди</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/ca.lproj/Foundation.strings b/platform/darwin/resources/ca.lproj/Foundation.strings
deleted file mode 100644
index 06bd2e8261..0000000000
--- a/platform/darwin/resources/ca.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "a les %@";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "a les %@";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "est";
-
-/* East, short */
-"COMPASS_E_SHORT" = "E";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "est per nord";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "EpN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "est per sud";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "EpS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "est-nord-est";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ENE";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "est-sud-est";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ESE";
-
-/* North, long */
-"COMPASS_N_LONG" = "nord";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "nord per est";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NpE";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "nord per oest";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NpO";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "nord-est";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NE";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "nord-est per est";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEpE";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "nord-est per nord";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEpN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "nord-nord-est";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNE";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "nord-nord-oest";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNO";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "nord-oest";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NO";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "nord-oest per nord";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NOpN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "nord-oest per oest";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NOpO";
-
-/* South, long */
-"COMPASS_S_LONG" = "sud";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "sud per est";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SpE";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "sud per oest";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SpO";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "sud-est";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SE";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "sud-est per est";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEpE";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "sud-est per sud";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEpS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "sud-sud-est";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSE";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "sud-sud-oest";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSO";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "sud-oest";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SO";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "sud-oest per sud";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SOpS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "sud-oest per oest";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SOpO";
-
-/* West, long */
-"COMPASS_W_LONG" = "oest";
-
-/* West, short */
-"COMPASS_W_SHORT" = "O";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "oest per nord";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "OpN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "oest per sud";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "OpS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "oest-nord-oest";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "ONO";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "oest-sud-oest";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "OSO";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d grau(s)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ i %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, i %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ est";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ est";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ per %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minut(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ nord";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ nord";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ sud";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ sud";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d segon(s)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ oest";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ oest";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@O";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/ca.lproj/Foundation.stringsdict b/platform/darwin/resources/ca.lproj/Foundation.stringsdict
deleted file mode 100644
index 8bacec946f..0000000000
--- a/platform/darwin/resources/ca.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d grau</string>
- <key>other</key>
- <string>%d graus</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minut</string>
- <key>other</key>
- <string>%d minuts</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d segon</string>
- <key>other</key>
- <string>%d segons</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/cs.lproj/Foundation.strings b/platform/darwin/resources/cs.lproj/Foundation.strings
deleted file mode 100644
index f092bdab30..0000000000
--- a/platform/darwin/resources/cs.lproj/Foundation.strings
+++ /dev/null
@@ -1,306 +0,0 @@
-/* User-friendly error description */
-"ADD_FILE_CONTENTS_FAILED_DESC" = "Unable to add offline packs from the file at %@.";
-
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ o’clock";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ o’clock";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "east";
-
-/* East, short */
-"COMPASS_E_SHORT" = "E";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "east by north";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "EbN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "east by south";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "EbS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "east-northeast";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ENE";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "east-southeast";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ESE";
-
-/* North, long */
-"COMPASS_N_LONG" = "north";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "north by east";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NbE";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "north by west";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NbW";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "northeast";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NE";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "northeast by east";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEbE";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "northeast by north";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEbN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "north-northeast";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNE";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "north-northwest";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNW";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "northwest";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NW";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "northwest by north";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NWbN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "northwest by west";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NWbW";
-
-/* South, long */
-"COMPASS_S_LONG" = "south";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "south by east";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SbE";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "south by west";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SbW";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "southeast";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SE";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "southeast by east";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEbE";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "southeast by south";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEbS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "south-southeast";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSE";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "south-southwest";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSW";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "southwest";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SW";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "southwest by south";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SWbS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "southwest by west";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SWbW";
-
-/* West, long */
-"COMPASS_W_LONG" = "west";
-
-/* West, short */
-"COMPASS_W_SHORT" = "W";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "west by north";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "WbN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "west by south";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "WbS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "west-northwest";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "WNW";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "west-southwest";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "WSW";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d degree(s)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ and %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, and %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ east";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ east";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ by %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minute(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ north";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ north";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ south";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ south";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d second(s)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ west";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ west";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
-/* User-friendly error description; first placeholder is the source’s identifier */
-"REMOVE_SRC_FAIL_IN_USE_FMT" = "The source “%@” can’t be removed while it is in use.";
-
-/* User-friendly error description */
-"REMOVE_SRC_FAIL_MISMATCH_FMT" = "The source can’t be removed because its identifier, “%@”, belongs to a different source in this style.";
-
diff --git a/platform/darwin/resources/cs.lproj/Foundation.stringsdict b/platform/darwin/resources/cs.lproj/Foundation.stringsdict
deleted file mode 100644
index 5f23fff93b..0000000000
--- a/platform/darwin/resources/cs.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d degree</string>
- <key>other</key>
- <string>%d degrees</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minute</string>
- <key>other</key>
- <string>%d minutes</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d second</string>
- <key>other</key>
- <string>%d seconds</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/da.lproj/Foundation.strings b/platform/darwin/resources/da.lproj/Foundation.strings
deleted file mode 100644
index d8d18f453c..0000000000
--- a/platform/darwin/resources/da.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ klokken";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ klokken";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "øst";
-
-/* East, short */
-"COMPASS_E_SHORT" = "Ø";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "øst via nord";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "ØvN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "øst via syd";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "ØvS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "øst-nordøst";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ØNØ";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "øst-sydøst";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ØSØ";
-
-/* North, long */
-"COMPASS_N_LONG" = "nord";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "nord via øst";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NvØ";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "nord via vest";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NvV";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "nordøst";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NØ";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "nordøst via øst";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NØvØ";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "nordøst via nord";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NØvN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "nord-nordøst";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNØ";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "nord-nordvest";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNV";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "nordvest";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NV";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "nordvest via nord";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NVvN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "nordvest via vest";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NVvW";
-
-/* South, long */
-"COMPASS_S_LONG" = "syd";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "syd via øst";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SvØ";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "syd via vest";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SvV";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "sydøst";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SØ";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "sydøst via øst";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SØvØ";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "sydøst via syd";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SØvS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "syd-sydøst";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSØ";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "syd-sydvest";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSV";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "sydvest";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SV";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "sydvest via syd";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SVvS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "sydvest via vest";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SVvV";
-
-/* West, long */
-"COMPASS_W_LONG" = "vest";
-
-/* West, short */
-"COMPASS_W_SHORT" = "V";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "vest via nord";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "VvN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "vest via syd";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "VvS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "vest-nordvest";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "VNV";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "vest-sydvest";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "VSV";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d grad(er)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ og %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, og %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ øst";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ øst";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@Ø";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ via %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minut(ter)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ nord";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ nord";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ syd";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ syd";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d sekunde(r)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ vest";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ vest";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@V";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/da.lproj/Foundation.stringsdict b/platform/darwin/resources/da.lproj/Foundation.stringsdict
deleted file mode 100644
index 17983b8aa8..0000000000
--- a/platform/darwin/resources/da.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d grad</string>
- <key>other</key>
- <string>%d grader</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minut</string>
- <key>other</key>
- <string>%d minutter</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d sekund</string>
- <key>other</key>
- <string>%d sekunder</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/de.lproj/Foundation.strings b/platform/darwin/resources/de.lproj/Foundation.strings
deleted file mode 100644
index 9c7242bb72..0000000000
--- a/platform/darwin/resources/de.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ Uhr";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ Uhr";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "Osten";
-
-/* East, short */
-"COMPASS_E_SHORT" = "O";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "Ost zu Nord";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "OzN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "Ost zu Süd";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "OzS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "Ostnordost";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ONO";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "Ostsüdost";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "OSO";
-
-/* North, long */
-"COMPASS_N_LONG" = "Nord";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "Nord zu Ost";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NzO";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "Nord zu West";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NzW";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "Nordost";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NO";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "Nordost zu Ost";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NOzO";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "Nordost zu Nord";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NOzN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "Nordnordost";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNO";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "Nordnordwest";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNW";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "Nordwest";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NW";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "Nordwest zu Nord";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NWzN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "Nordwest zu West";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NWzW";
-
-/* South, long */
-"COMPASS_S_LONG" = "Süd";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "Süd zu Ost";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SzO";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "Süd zu West";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SzW";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "Südost";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SO";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "Südost zu Ost";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SOzO";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "Südost zu Süd";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SOzS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "Südsüdost";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSO";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "Südsüdwest";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSW";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "Südwest";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SW";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "Südwest zu Süd";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SWzS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "Südwest zu West";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SWzW";
-
-/* West, long */
-"COMPASS_W_LONG" = "West";
-
-/* West, short */
-"COMPASS_W_SHORT" = "W";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "West zu Nord";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "WzN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "West zu Süd";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "WzS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "Westnordwest";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "WNW";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "Westsüdwest";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "WSW";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d Grad";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ und %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@ und %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ Ost";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ Ost";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@O";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ zu %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d Minute(n)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ Nord";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ Nord";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ Süd";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ Süd";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d Sekunde(n)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ West";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ West";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/de.lproj/Foundation.stringsdict b/platform/darwin/resources/de.lproj/Foundation.stringsdict
deleted file mode 100644
index fb9073fa96..0000000000
--- a/platform/darwin/resources/de.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d Grad</string>
- <key>other</key>
- <string>%d Grad</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d Minute</string>
- <key>other</key>
- <string>%d Minuten</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d Sekunde</string>
- <key>other</key>
- <string>%d Sekunden</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/en.lproj/Foundation.stringsdict b/platform/darwin/resources/en.lproj/Foundation.stringsdict
deleted file mode 100644
index 5f23fff93b..0000000000
--- a/platform/darwin/resources/en.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d degree</string>
- <key>other</key>
- <string>%d degrees</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minute</string>
- <key>other</key>
- <string>%d minutes</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d second</string>
- <key>other</key>
- <string>%d seconds</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/es.lproj/Foundation.strings b/platform/darwin/resources/es.lproj/Foundation.strings
deleted file mode 100644
index 760fb5d5c8..0000000000
--- a/platform/darwin/resources/es.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ en punto";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ en punto";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "este";
-
-/* East, short */
-"COMPASS_E_SHORT" = "E";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "este por el norte";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "EpN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "este por el sur";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "EpS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "estenordeste";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ENE";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "estesudeste";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ESE";
-
-/* North, long */
-"COMPASS_N_LONG" = "norte";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "norte por el este";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NpE";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "norte por el oeste";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NpO";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "nordeste";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NE";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "nordeste por el este";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEpE";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "nordeste por el norte";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEpN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "nornordeste";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNE";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "nornoroeste";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNO";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "noroeste";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NO";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "noroeste por el norte";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NOpN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "noroeste por el oeste";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NOpO";
-
-/* South, long */
-"COMPASS_S_LONG" = "sur";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "sur por el este";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SpE";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "sur por el oeste";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SpO";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "sudeste";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SE";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "sudeste por el este";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEpE";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "sudeste por el sur";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEpS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "sudsudeste";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSE";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "sudsudoeste";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSO";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "sudoeste";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SO";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "sudoeste por el sur";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SOpS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "sudoeste por el oeste";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SOpO";
-
-/* West, long */
-"COMPASS_W_LONG" = "oeste";
-
-/* West, short */
-"COMPASS_W_SHORT" = "O";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "oeste por el norte";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "OpN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "oeste por el sur";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "OpS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "oesnoroeste";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "ONO";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "oesudoeste";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "OSO";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d grado(s)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ y %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@ y %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ este";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ este";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ por %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minuto(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ norte";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ norte";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ sur";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ sur";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d segundo(s)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ oeste";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ oeste";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@O";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/es.lproj/Foundation.stringsdict b/platform/darwin/resources/es.lproj/Foundation.stringsdict
deleted file mode 100644
index 1c599f8bc1..0000000000
--- a/platform/darwin/resources/es.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d grado</string>
- <key>other</key>
- <string>%d grados</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minuto</string>
- <key>other</key>
- <string>%d minutos</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d segundo</string>
- <key>other</key>
- <string>%d segundos</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/fr.lproj/Foundation.strings b/platform/darwin/resources/fr.lproj/Foundation.strings
deleted file mode 100644
index 1926da6bb4..0000000000
--- a/platform/darwin/resources/fr.lproj/Foundation.strings
+++ /dev/null
@@ -1,303 +0,0 @@
-/* User-friendly error description */
-"ADD_FILE_CONTENTS_FAILED_DESC" = "Impossible d’ajouter le contenu hors ligne à partir du fichier %@.";
-
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ h";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ h";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@ h 00";
-
-/* East, long */
-"COMPASS_E_LONG" = "est";
-
-/* East, short */
-"COMPASS_E_SHORT" = "E";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "est par le nord";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "EpN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "est par le sud";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "EpS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "est-nord-est";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ENE";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "est-sud-est";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ESE";
-
-/* North, long */
-"COMPASS_N_LONG" = "nord";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "nord par l’est";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NpE";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "nord par l’ouest";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NpO";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "nord-est";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NE";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "nord-est par l’est";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEpE";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "nord-est par le nord";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEpN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "nord-nord-est";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNE";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "nord-nord-ouest";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNO";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "nord-ouest";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NO";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "nord-ouest par le nord";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NOpN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "nord-ouest par l’ouest";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NOpO";
-
-/* South, long */
-"COMPASS_S_LONG" = "sud";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "sud par l’est";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SpE";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "sud par l’ouest";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SpO";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "sud-est";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SE";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "sud-est par l’est";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEpE";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "sud-est par le sud";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEpS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "sud-sud-est";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSE";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "sud-sud-ouest";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSO";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "sud-ouest";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SO";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "sud-ouest par le sud";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SOpS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "sud-ouest par l’ouest";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SOpO";
-
-/* West, long */
-"COMPASS_W_LONG" = "ouest";
-
-/* West, short */
-"COMPASS_W_SHORT" = "O";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "ouest par le nord";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "OpN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "ouest par le sud";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "OpS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "ouest-nord-ouest";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "ONO";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "ouest-sud-ouest";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "OSO";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d degré(s)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ et %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@ et %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@ %2$@ %3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ est";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ est";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@, %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minute(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ nord";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ nord";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ sud";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ sud";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d seconde(s)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ ouest";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ ouest";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@O";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
-/* User-friendly error description */
-"REMOVE_SRC_FAIL_IN_USE_FMT" = "La source « %@ » est en cours d’utilisation, impossible de la supprimer.";
-
diff --git a/platform/darwin/resources/fr.lproj/Foundation.stringsdict b/platform/darwin/resources/fr.lproj/Foundation.stringsdict
deleted file mode 100644
index 82cb954df6..0000000000
--- a/platform/darwin/resources/fr.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d degré</string>
- <key>other</key>
- <string>%d degrés</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minute</string>
- <key>other</key>
- <string>%d minutes</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d seconde</string>
- <key>other</key>
- <string>%d secondes</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/gl.lproj/Foundation.strings b/platform/darwin/resources/gl.lproj/Foundation.strings
deleted file mode 100644
index fdd9502cbd..0000000000
--- a/platform/darwin/resources/gl.lproj/Foundation.strings
+++ /dev/null
@@ -1,306 +0,0 @@
-/* User-friendly error description */
-"ADD_FILE_CONTENTS_FAILED_DESC" = "Non se poden engadir paquetes sen conexión dende o ficheiro en %@.";
-
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ en punto";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ en punto";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "leste";
-
-/* East, short */
-"COMPASS_E_SHORT" = "L";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "leste polo norte";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "LpN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "leste polo sur";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "LpS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "leste-nordés";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "LNL";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "leste-sueste";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "LSL";
-
-/* North, long */
-"COMPASS_N_LONG" = "norte";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "norte polo leste";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NpL";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "norte polo oeste";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NpO";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "nordés";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NL";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "nordés polo leste";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NLpL";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "nordés polo norte";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NLpN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "norte-nordés";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNL";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "norte-noroeste";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNO";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "noroeste";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NO";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "noroeste polo norte";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NOpN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "noroeste polo oeste";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NOpO";
-
-/* South, long */
-"COMPASS_S_LONG" = "sur";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "sur polo leste";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SpL";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "sur polo oeste";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SpO";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "sueste";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SL";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "sueste polo leste";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SLpL";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "sueste polo sur";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SLpS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "sur-sueste";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSL";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "sur-suroeste";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSO";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "suroeste";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SO";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "suroeste polo sur";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SOpS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "suroeste polo oeste";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SOpO";
-
-/* West, long */
-"COMPASS_W_LONG" = "oeste";
-
-/* West, short */
-"COMPASS_W_SHORT" = "O";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "oeste polo norte";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "OpN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "oeste polo sur";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "OpS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "oeste-noroeste";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "ONO";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "oeste-suroeste";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "OSO";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d grao(s)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ e %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@ e %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ leste";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ leste";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@L";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ por %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minuto(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ norte";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ norte";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ sur";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ sur";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d segundo(s)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ oeste";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ oeste";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@O";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
-/* User-friendly error description; first placeholder is the source’s identifier */
-"REMOVE_SRC_FAIL_IN_USE_FMT" = "A fonte “%@” non se pode eliminar mentres está en uso.";
-
-/* User-friendly error description */
-"REMOVE_SRC_FAIL_MISMATCH_FMT" = "A fonte non se pode eliminar porque o seu identificador, “%@”, pertence a unha fonte diferente neste estilo.";
-
diff --git a/platform/darwin/resources/gl.lproj/Foundation.stringsdict b/platform/darwin/resources/gl.lproj/Foundation.stringsdict
deleted file mode 100644
index 324fc987d2..0000000000
--- a/platform/darwin/resources/gl.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d grao</string>
- <key>other</key>
- <string>%d graos</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minuto</string>
- <key>other</key>
- <string>%d minutos</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d segundo</string>
- <key>other</key>
- <string>%d segundos</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/he.lproj/Foundation.strings b/platform/darwin/resources/he.lproj/Foundation.strings
deleted file mode 100644
index 2f6e24d6e6..0000000000
--- a/platform/darwin/resources/he.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "שעה %@";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "שעה %@";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "מזרח";
-
-/* East, short */
-"COMPASS_E_SHORT" = "מז";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "east by north";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "EbN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "east by south";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "EbS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "מזרח-צפון מזרח";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "מז-צ-מז";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "מזרח-דרום מזרח";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "מז-ד-מז";
-
-/* North, long */
-"COMPASS_N_LONG" = "צפון";
-
-/* North, short */
-"COMPASS_N_SHORT" = "צ";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "north by east";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NbE";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "north by west";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NbW";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "צפון מזרח";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "צ-מז";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "northeast by east";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEbE";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "northeast by north";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEbN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "צפון-צפון מזרח";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "צ-צ-מז";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "צפון-צפון מערב";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "צ-צ-מע";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "צפון מערב";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "צ-מע";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "northwest by north";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NWbN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "northwest by west";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NWbW";
-
-/* South, long */
-"COMPASS_S_LONG" = "דרום";
-
-/* South, short */
-"COMPASS_S_SHORT" = "ד";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "south by east";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SbE";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "south by west";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SbW";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "דרום מזרח";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "ד-מז";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "southeast by east";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEbE";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "southeast by south";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEbS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "דרום-דרום מזרח";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "ד-ד-מז";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "דרום-דרום מערב";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "ד-ד-מע";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "דרום מערב";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "ד-מע";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "southwest by south";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SWbS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "southwest by west";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SWbW";
-
-/* West, long */
-"COMPASS_W_LONG" = "מערב";
-
-/* West, short */
-"COMPASS_W_SHORT" = "מע";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "west by north";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "WbN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "west by south";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "WbS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "מערב-צפון מערב";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "מע-צ-מע";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "מערב-דרום מערב";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "מע-ד-מע";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d מעלה(ות)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ ו %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, ו %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ מזרחה";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ מזרחה";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@מז";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ על %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d דקה(ות)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ צפונה";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ צפונה";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@צ";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ דרומה";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ דרומה";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@ד";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d שניה(ות)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ מערב";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ מערב";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@מע";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/hu.lproj/Foundation.stringsdict b/platform/darwin/resources/hu.lproj/Foundation.stringsdict
deleted file mode 100644
index a594100046..0000000000
--- a/platform/darwin/resources/hu.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d fok</string>
- <key>other</key>
- <string>%d fok</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d perc</string>
- <key>other</key>
- <string>%d perc</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d másodperc</string>
- <key>other</key>
- <string>%d másodperc</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/ja.lproj/Foundation.strings b/platform/darwin/resources/ja.lproj/Foundation.strings
deleted file mode 100644
index 3588f38e48..0000000000
--- a/platform/darwin/resources/ja.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@時方向";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@時方向";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "東";
-
-/* East, short */
-"COMPASS_E_SHORT" = "東";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "東微北";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "東微北";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "東微南";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "東微南";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "東北東";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "東北東";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "東南東";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "東南東";
-
-/* North, long */
-"COMPASS_N_LONG" = "北";
-
-/* North, short */
-"COMPASS_N_SHORT" = "北";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "北微東";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "北微東";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "北微西";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "北微西";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "東北";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "東北";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "東北微東";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "東北微東";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "東北微北";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "東北微北";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "北北東";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "北北東";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "北北西";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "北北西";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "西北";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "西北";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "西北微北";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "西北微北";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "西北微西";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "西北微西";
-
-/* South, long */
-"COMPASS_S_LONG" = "南";
-
-/* South, short */
-"COMPASS_S_SHORT" = "南";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "南微東";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "南微東";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "南微西";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "南微西";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "東南";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "東南";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "東南微東";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "東南微東";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "東南微南";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "東南微南";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "南南東";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "南南東";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "南南西";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "南南西";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "西南";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "西南";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "西南微南";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "西南微南";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "西南微西";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "西南微西";
-
-/* West, long */
-"COMPASS_W_LONG" = "西";
-
-/* West, short */
-"COMPASS_W_SHORT" = "西";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "西微北";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "西微北";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "西微南";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "西微南";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "西北西";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "西北西";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "西南西";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "西南西";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d度";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@度%2$@分";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@度%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%度2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@度%2$@分%3$@秒";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@度%2$@分%3$@秒";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%度2$@分%3$@秒";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "東%@";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "東%@";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@,%2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@,%2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@,%2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d分";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "北%@";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "北%@";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "南%@";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "南%@";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d秒";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "西%@";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "西%@";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/ko.lproj/Foundation.strings b/platform/darwin/resources/ko.lproj/Foundation.strings
deleted file mode 100644
index 68e6cf86fc..0000000000
--- a/platform/darwin/resources/ko.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ 시";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ 시";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "동쪽";
-
-/* East, short */
-"COMPASS_E_SHORT" = "동";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "동미북쪽";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "동미북";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "동미남쪽";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "동미남";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "동북동쪽";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "동북동";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "동남동쪽";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "동남동";
-
-/* North, long */
-"COMPASS_N_LONG" = "북쪽";
-
-/* North, short */
-"COMPASS_N_SHORT" = "북";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "북미동쪽";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "북미동";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "북미서쪽";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "북미서";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "북동쪽";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "북동";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "북동미동쪽";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "북동미동";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "북동미북쪽";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "북동미북";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "북북동쪽";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "북북동";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "북북서쪽";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "북북서";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "북서쪽";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "북서";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "북서미북쪽";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "북서미북";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "북서미서쪽";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "북서미서";
-
-/* South, long */
-"COMPASS_S_LONG" = "남쪽";
-
-/* South, short */
-"COMPASS_S_SHORT" = "남";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "남미동쪽";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "남미동";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "남미서";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "남미서";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "남동쪽";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "남동";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "남동미동쪽";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "남동미동";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "남동미남쪽";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "남동미남";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "남남동쪽";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "남남동";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "남남서쪽";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "남남서";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "남서쪽";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "남서";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "남서미남쪽";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "남서미남";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "남서미서쪽";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "남서미서";
-
-/* West, long */
-"COMPASS_W_LONG" = "서쪽";
-
-/* West, short */
-"COMPASS_W_SHORT" = "서";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "서미북쪽";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "서미북";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "서미남쪽";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "서미남";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "서북서쪽";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "서북서";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "서남서쪽";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "서남서";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d 도";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ 와 %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, 와 %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ 동쪽";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ 동쪽";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@동";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ by %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d 분";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ 북쪽";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ 북쪽";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@북";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ 남쪽";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ 남쪽";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@남";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d 초";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ 서쪽";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ 서쪽";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@서";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "오픈스트리트맵";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "오픈스트리트맵";
-
diff --git a/platform/darwin/resources/ko.lproj/Foundation.stringsdict b/platform/darwin/resources/ko.lproj/Foundation.stringsdict
deleted file mode 100644
index 56d26aa949..0000000000
--- a/platform/darwin/resources/ko.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>%d 도</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>%d 분</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>%d 초</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/lt.lproj/Foundation.strings b/platform/darwin/resources/lt.lproj/Foundation.strings
deleted file mode 100644
index 2bd0baa210..0000000000
--- a/platform/darwin/resources/lt.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "Laikas: %@";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "Laikas: %@";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "rytai";
-
-/* East, short */
-"COMPASS_E_SHORT" = "R";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "rytai į šiaurę";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "RįŠ";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "rytai į pietus";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "RįP";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "rytai - šiaurės rytai";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "R-ŠR";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "rytai - pietryčiai";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "R-PR";
-
-/* North, long */
-"COMPASS_N_LONG" = "šiaurė";
-
-/* North, short */
-"COMPASS_N_SHORT" = "Š";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "šiaurė į rytus";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "ŠįR";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "šiaurė į vakarus";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "ŠįV";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "šiaurės rytai";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "ŠR";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "šiaurės rytai į rytus";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "ŠRįR";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "šiaurės rytai į šiaurę";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "ŠRįŠ";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "šiaurė - šiaurės rytai";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "ŠŠR";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "šiaurė - šiaurės vakarai";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "ŠŠV";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "šiaurės vakarai";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "ŠV";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "šiaurės vakarai į šiaurę";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "ŠVįŠ";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "šiaurės vakarai į vakarus";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "ŠVįV";
-
-/* South, long */
-"COMPASS_S_LONG" = "pietūs";
-
-/* South, short */
-"COMPASS_S_SHORT" = "P";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "pietūs į rytus";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "PįR";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "pietūs į vakarus";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "PįV";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "pietryčiai";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "PR";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "pietryčiai į rytus";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "PRįR";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "pietryčiai į pietus";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "PRįP";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "pietūs - pietryčiai";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "PPR";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "pietūs - pietvakariai";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "PPV";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "pietvakariai";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "PV";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "pietvakariai į pietus";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "PVįP";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "pietvakariai į vakarus";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "PVįV";
-
-/* West, long */
-"COMPASS_W_LONG" = "vakarai";
-
-/* West, short */
-"COMPASS_W_SHORT" = "V";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "vakarai į šiaurę";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "VįŠ";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "vakarai į pietus";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "VįP";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "vakarai - šiaurės vakarai";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "VŠV";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "vakarai - pietvakariai";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "VPV";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d laipsniai(-ių)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ ir %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@ ir %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ ritų ilgumos";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ į rytus";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@R";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@, %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minutė(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ šiaurės platumos";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ į šiaurę";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@Š";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ pietų platumos";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ į pietus";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@P";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d sekundės(-ių)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ vakarų ilgumos";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ į vakarus";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@V";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/lt.lproj/Foundation.stringsdict b/platform/darwin/resources/lt.lproj/Foundation.stringsdict
deleted file mode 100644
index 4ab9d4a8bf..0000000000
--- a/platform/darwin/resources/lt.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d laipsniai</string>
- <key>few</key>
- <string>%d laipsniai</string>
- <key>other</key>
- <string>%d laipsnių</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minutė</string>
- <key>few</key>
- <string>%d minutės</string>
- <key>other</key>
- <string>%d minučių</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d sekundė</string>
- <key>few</key>
- <string>%d sekundės</string>
- <key>other</key>
- <string>%d sekundžių</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/pl.lproj/Foundation.stringsdict b/platform/darwin/resources/pl.lproj/Foundation.stringsdict
deleted file mode 100644
index 5a4f208562..0000000000
--- a/platform/darwin/resources/pl.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d stopień</string>
- <key>few</key>
- <string>%d stopnie</string>
- <key>many</key>
- <string>%d stopni</string>
- <key>other</key>
- <string>%d stopnia</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minuta</string>
- <key>few</key>
- <string>%d minuty</string>
- <key>many</key>
- <string>%d minut</string>
- <key>other</key>
- <string>%d minuty</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d sekunda</string>
- <key>few</key>
- <string>%d sekundy</string>
- <key>many</key>
- <string>%d sekund</string>
- <key>other</key>
- <string>%d sekundy</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/pt-BR.lproj/Foundation.strings b/platform/darwin/resources/pt-BR.lproj/Foundation.strings
deleted file mode 100644
index 331b61dd77..0000000000
--- a/platform/darwin/resources/pt-BR.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "São %@ horas";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "São %@ horas";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "leste";
-
-/* East, short */
-"COMPASS_E_SHORT" = "L";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "lest pelo norte";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "LpN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "leste pelo sul";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "LpS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "lés-nordeste";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ENE";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "lés-sudeste";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ESE";
-
-/* North, long */
-"COMPASS_N_LONG" = "norte";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "norte pelo leste";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NpL";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "norte pelo oeste";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NpO";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "nordeste";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NE";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "nordeste pelo leste";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NEpL";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "nordeste pelo norte";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NEpN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "nor-nordeste";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNE";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "nor-noroeste";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNO";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "noroeste";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NO";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "noroeste pelo norte";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NOpN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "noroeste pelo oeste";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NOpO";
-
-/* South, long */
-"COMPASS_S_LONG" = "sul";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "sul pelo leste";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "SpL";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "sul pelo oeste";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "SbO";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "sudeste";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SE";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "sudeste pelo leste";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SEpL";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "sudeste pelo sul";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SEpS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "sul-sudeste";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSE";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "su-sudoeste";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSO";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "sudoeste";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SO";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "sudoeste pelo sul";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SOpS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "sudoeste pelo oeste";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SOpO";
-
-/* West, long */
-"COMPASS_W_LONG" = "oeste";
-
-/* West, short */
-"COMPASS_W_SHORT" = "O";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "oeste pelo norte";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "OpN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "oeste pelo sul";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "OpS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "oés-noroeste";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "ONO";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "oés-sudoeste";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "OSO";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d grau(s)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ e %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, e %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ leste";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ leste";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@L";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ por %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minuto(s)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ norte";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ norte";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ sul";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ sul";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d segundo(s)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ oeste";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ oeste";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@O";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict b/platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict
deleted file mode 100644
index e99e86d98d..0000000000
--- a/platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d grau</string>
- <key>other</key>
- <string>%d graus</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minuto</string>
- <key>other</key>
- <string>%d minutos</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d segundo</string>
- <key>other</key>
- <string>%d segundos</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict b/platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict
deleted file mode 100644
index e99e86d98d..0000000000
--- a/platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d grau</string>
- <key>other</key>
- <string>%d graus</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minuto</string>
- <key>other</key>
- <string>%d minutos</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d segundo</string>
- <key>other</key>
- <string>%d segundos</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/ru.lproj/Foundation.strings b/platform/darwin/resources/ru.lproj/Foundation.strings
deleted file mode 100644
index 4842496377..0000000000
--- a/platform/darwin/resources/ru.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ часов";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ час.";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "восток";
-
-/* East, short */
-"COMPASS_E_SHORT" = "В";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "северо-восток";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "СВ";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "юго-восток";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "ЮВ";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "восток-северо-восток";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ВСВ";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "юго-юго-восток";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ЮЮВ";
-
-/* North, long */
-"COMPASS_N_LONG" = "север";
-
-/* North, short */
-"COMPASS_N_SHORT" = "С";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "северо-восток";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "СВ";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "северо-запад";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "СЗ";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "северо-восток";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "СВ";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "восток-северо-восток";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "ВСВ";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "северо-северо-восток";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "ССВ";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "северо-северо-восток";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "ССВ";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "северо-северо-запад";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "ССЗ";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "северо-запад";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "СЗ";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "северо-северо-запад";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "ССЗ";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "запад-северо-запад";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "ЗСЗ";
-
-/* South, long */
-"COMPASS_S_LONG" = "юг";
-
-/* South, short */
-"COMPASS_S_SHORT" = "Ю";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "юго-восток";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "ЮВ";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "юго-запад";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "ЮЗ";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "юго-восток";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "ЮВ";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "восток-юго-восток";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "ВЮВ";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "юго-юго-восток";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "ЮЮВ";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "юго-юго-восток";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "ЮЮВ";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "юго-юго-запад";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "ЮЮЗ";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "юго-запад";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "ЮЗ";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "юго-юго-запад";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "ЮЮЗ";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "восток-юго-восток";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "ВЮВ";
-
-/* West, long */
-"COMPASS_W_LONG" = "запад";
-
-/* West, short */
-"COMPASS_W_SHORT" = "З";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "северо-запад";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "СЗ";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "юго-запад";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "ЮГ";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "запад-северо-запад";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "ЗСЗ";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "запад-юго-запад";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "ЗЮЗ";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d градус(ов)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ и %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, и %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@восточной долготы";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@восточной долготы";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@,%2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d минут(а)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@северной широты";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@северной широты";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@южной широты";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@южной широты";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d секунд(а)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@западной долготы";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@западной долготы";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/ru.lproj/Foundation.stringsdict b/platform/darwin/resources/ru.lproj/Foundation.stringsdict
deleted file mode 100644
index 337cea0164..0000000000
--- a/platform/darwin/resources/ru.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d градус</string>
- <key>few</key>
- <string>%d градуса</string>
- <key>many</key>
- <string>%d градусов</string>
- <key>other</key>
- <string>%d градуса</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d минута</string>
- <key>few</key>
- <string>%d минуты</string>
- <key>many</key>
- <string>%d минут</string>
- <key>other</key>
- <string>%d минуты</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d секунда</string>
- <key>few</key>
- <string>%d секунды</string>
- <key>many</key>
- <string>%d секунд</string>
- <key>other</key>
- <string>%d секунды</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/sv.lproj/Foundation.strings b/platform/darwin/resources/sv.lproj/Foundation.strings
deleted file mode 100644
index e3e7f931a8..0000000000
--- a/platform/darwin/resources/sv.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "Öst";
-
-/* East, short */
-"COMPASS_E_SHORT" = "O";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "Ost till Nord";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "OtN";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "Ost till Syd";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "OtS";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "Ostnordost";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ONO";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "Ostsydost";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "OSO";
-
-/* North, long */
-"COMPASS_N_LONG" = "Nord";
-
-/* North, short */
-"COMPASS_N_SHORT" = "N";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "Nord till Ost";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "NtO";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "Nord till Väst";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "NtV";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "Nordost";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "NO";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "Nordost till ost";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "NOtO";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "Nordost till nord";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "NOtN";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "Nordnordost";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "NNO";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "Nordnordväst";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "NNV";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "Nordväst";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "NV";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "Nordväst till nord";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "NVtN";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "Nordväst till väst";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "NVtV";
-
-/* South, long */
-"COMPASS_S_LONG" = "Syd";
-
-/* South, short */
-"COMPASS_S_SHORT" = "S";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "Syd till ost";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "StO";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "Syd till väst";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "StV";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "Sydost";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "SO";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "Sydost till ost";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "SOtO";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "Sydost till syd";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "SOtS";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "Sydsydost";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "SSO";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "Sydsydväst";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "SSV";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "Sydväst";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "SV";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "Sydväst till syd";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "SVtS";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "Sydväst till väst";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "SVtV";
-
-/* West, long */
-"COMPASS_W_LONG" = "Väst";
-
-/* West, short */
-"COMPASS_W_SHORT" = "V";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "Väst till nord";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "VtN";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "Väst till syd";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "VtS";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "Västnordväst";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "VNV";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "Västsydväst";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "VSV";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d grad(er)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ och %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@ och %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ Öst";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ Öst";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@O";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ till %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d minut(er)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%dm";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%dm";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ Nord";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ Nord";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ Syd";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ Syd";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d sekund(er)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%ds";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%ds";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ Väst";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ Väst";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/sv.lproj/Foundation.stringsdict b/platform/darwin/resources/sv.lproj/Foundation.stringsdict
deleted file mode 100644
index e438ca02bf..0000000000
--- a/platform/darwin/resources/sv.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d grad</string>
- <key>other</key>
- <string>%d grader</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d minut</string>
- <key>other</key>
- <string>%d minuter</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d sekund</string>
- <key>other</key>
- <string>%d sekunder</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/uk.lproj/Foundation.strings b/platform/darwin/resources/uk.lproj/Foundation.strings
deleted file mode 100644
index ded065c564..0000000000
--- a/platform/darwin/resources/uk.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@год.";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@г.";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "схід";
-
-/* East, short */
-"COMPASS_E_SHORT" = "Сх";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "північний схід";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "ПнСх";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "південний схід";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "ПдСх";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "схід - північний схід";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "Сх-ПнСх";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "схід - південний схід";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "Сх-ПдСх";
-
-/* North, long */
-"COMPASS_N_LONG" = "північ";
-
-/* North, short */
-"COMPASS_N_SHORT" = "Пн";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "північний схід";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "ПнСх";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "північний захід";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "ПнЗх";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "північний схід";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "ПнСх";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "північний схід - схід";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "ПнСх-Сх";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "північний счхід - північ";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "ПнСх-Пн";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "північ - північний схід";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "Пн-ПнСх";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "північ - північний захід";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "Пн-ПнЗх";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "північний захід";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "ПнЗх";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "північний захід - північ";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "ПнЗх-Пн";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "північний захід - захід";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "ПнЗх-Зх";
-
-/* South, long */
-"COMPASS_S_LONG" = "південь";
-
-/* South, short */
-"COMPASS_S_SHORT" = "Пд";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "південний схід";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "ПдСх";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "південний захід";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "ПдЗх";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "південний схід";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "ПдСх";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "південний схід - схід";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "ПдСх-Сх";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "південний схід - південь";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "ПдСх-Пд";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "південь - південний схід";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "Пд-ПдСх";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "південь - південний захід";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "Пд-ПдЗх";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "південний захід";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "ПдЗх";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "південний захід - південь";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "ПдЗх-Пд";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "південний захід - захід";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "ПдЗх-Зх";
-
-/* West, long */
-"COMPASS_W_LONG" = "захід";
-
-/* West, short */
-"COMPASS_W_SHORT" = "Зх";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "північний захід";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "ПнЗх";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "південний захід";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "ПдЗх";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "захід - північний захід";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "Зх-ПнЗх";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "захід - південний захід";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "Зх-ПдЗх";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d градус(ів)";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ та %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, та %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ східної довготи";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ східної довготи";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@Сх";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@, %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d хвилин(а)";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ північної широти";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ північної широти";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@Пн";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ південної широти";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ південної широти";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@Пд";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d секунд(а)";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ західної довготи";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ західної довготи";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@Зх";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/uk.lproj/Foundation.stringsdict b/platform/darwin/resources/uk.lproj/Foundation.stringsdict
deleted file mode 100644
index fdad193d4d..0000000000
--- a/platform/darwin/resources/uk.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d градус</string>
- <key>few</key>
- <string>%d градуси</string>
- <key>other</key>
- <string>%d градусів</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d хвилина</string>
- <key>few</key>
- <string>%d хвилини</string>
- <key>other</key>
- <string>%d хвилин</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%d секунда</string>
- <key>few</key>
- <string>%d секунди</string>
- <key>other</key>
- <string>%d секунд</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/vi.lproj/Foundation.strings b/platform/darwin/resources/vi.lproj/Foundation.strings
deleted file mode 100644
index d6b161585c..0000000000
--- a/platform/darwin/resources/vi.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@ giờ";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@ giờ";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "đông";
-
-/* East, short */
-"COMPASS_E_SHORT" = "Đ";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "đông về bắc";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "ĐvB";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "đông về nam";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "ĐvN";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "đông đông bắc";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "ĐĐB";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "đông đông nam";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "ĐĐN";
-
-/* North, long */
-"COMPASS_N_LONG" = "bắc";
-
-/* North, short */
-"COMPASS_N_SHORT" = "B";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "bắc về đông";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "BvĐ";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "bắc về tây";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "BvT";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "đông bắc";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "ĐB";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "đông bắc về đông";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "ĐBvĐ";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "đông bắc về bắc";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "ĐBvB";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "bắc đông bắc";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "BĐB";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "bắc tây bắc";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "BTB";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "tây bắc";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "TB";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "tây bắc về bắc";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "TBvB";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "tây bắc về tây";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "TBvT";
-
-/* South, long */
-"COMPASS_S_LONG" = "nam";
-
-/* South, short */
-"COMPASS_S_SHORT" = "N";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "nam về đông";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "NvĐ";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "nam về tây";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "NvT";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "đông nam";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "ĐN";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "đông nam về đông";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "ĐNvĐ";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "đông nam về nam";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "ĐNvN";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "nam đông nam";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "NĐN";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "nam tây nam";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "NTN";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "tây nam";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "TN";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "tây nam về nam";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "TNvN";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "tây nam về tây";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "TNvT";
-
-/* West, long */
-"COMPASS_W_LONG" = "tây";
-
-/* West, short */
-"COMPASS_W_SHORT" = "T";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "tây về bắc";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "TvB";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "tây về nam";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "TvN";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "tây tây bắc";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "TTB";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "tây tây nam";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "TTN";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d độ";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@ %2$@";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@, %2$@, %3$@";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@%2$@%3$@";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%2$@%3$@";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "%@ kinh độ đông";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "%@ đông";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@Đ";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@ và %2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@, %2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@, %2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d phút";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "%@ vĩ độ bắc";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "%@ bắc";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "%@ vĩ độ nam";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "%@ nam";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@N";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d giây";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "%@ kinh độ tây";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "%@ tây";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@T";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/vi.lproj/Foundation.stringsdict b/platform/darwin/resources/vi.lproj/Foundation.stringsdict
deleted file mode 100644
index d85707f7ff..0000000000
--- a/platform/darwin/resources/vi.lproj/Foundation.stringsdict
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>COORD_DEG_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@degrees@</string>
- <key>degrees</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>%d độ</string>
- </dict>
- </dict>
- <key>COORD_MIN_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@minutes@</string>
- <key>minutes</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>%d phút</string>
- </dict>
- </dict>
- <key>COORD_SEC_LONG</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@seconds@</string>
- <key>seconds</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>%d giây</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/darwin/resources/zh-Hans.lproj/Foundation.strings b/platform/darwin/resources/zh-Hans.lproj/Foundation.strings
deleted file mode 100644
index 0c57a70d8a..0000000000
--- a/platform/darwin/resources/zh-Hans.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@点";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@点";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "东";
-
-/* East, short */
-"COMPASS_E_SHORT" = "东";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "东微北";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "东微北";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "东微南";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "东微南";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "东北偏东";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "东北偏东";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "东南偏东";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "东南偏东";
-
-/* North, long */
-"COMPASS_N_LONG" = "北";
-
-/* North, short */
-"COMPASS_N_SHORT" = "北";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "北微东";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "北微东";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "北微西";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "北微西";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "东北";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "东北";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "东北微东";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "东北微东";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "东北微北";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "东北微北";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "东北偏北";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "东北偏北";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "西北偏北";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "西北偏北";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "西北";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "西北";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "西北微北";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "西北微北";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "西北微西";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "西北微西";
-
-/* South, long */
-"COMPASS_S_LONG" = "南";
-
-/* South, short */
-"COMPASS_S_SHORT" = "南";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "南微东";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "南微东";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "南微西";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "南微西";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "东南";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "东南";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "东南微东";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "东南微东";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "东南微南";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "东南微南";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "东南偏南";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "东南偏南";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "西南偏南";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "西南偏南";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "西南";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "西南";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "西南偏南";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "西南偏南";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "西南偏西";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "西南偏西";
-
-/* West, long */
-"COMPASS_W_LONG" = "西";
-
-/* West, short */
-"COMPASS_W_SHORT" = "西";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "西微北";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "西微北";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "西微南";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "西微南";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "西北偏西";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "西北偏西";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "西南偏西";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "西南偏西";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d度";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@度%2$@分";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@度%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%度2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@度%2$@分%3$@秒";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@度%2$@分%3$@秒";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%度2$@分%3$@秒";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "东经%@";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "东经%@";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@,%2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@,%2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@,%2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d分";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "北纬%@";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "北纬%@";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "南纬%@";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "南纬%@";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d秒";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "西经%@";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "西经%@";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/resources/zh-Hant.lproj/Foundation.strings b/platform/darwin/resources/zh-Hant.lproj/Foundation.strings
deleted file mode 100644
index 7946dcf7cd..0000000000
--- a/platform/darwin/resources/zh-Hant.lproj/Foundation.strings
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Clock position format, long: {hours} o’clock */
-"CLOCK_FMT_LONG" = "%@點";
-
-/* Clock position format, medium: {hours} o’clock */
-"CLOCK_FMT_MEDIUM" = "%@點";
-
-/* Clock position format, short: {hours}:00 */
-"CLOCK_FMT_SHORT" = "%@:00";
-
-/* East, long */
-"COMPASS_E_LONG" = "東";
-
-/* East, short */
-"COMPASS_E_SHORT" = "東";
-
-/* East by north, long */
-"COMPASS_EbN_LONG" = "東微北";
-
-/* East by north, short */
-"COMPASS_EbN_SHORT" = "東微北";
-
-/* East by south, long */
-"COMPASS_EbS_LONG" = "東微南";
-
-/* East by south, short */
-"COMPASS_EbS_SHORT" = "東微南";
-
-/* East-northeast, long */
-"COMPASS_ENE_LONG" = "東北東";
-
-/* East-northeast, short */
-"COMPASS_ENE_SHORT" = "東北東";
-
-/* East-southeast, long */
-"COMPASS_ESE_LONG" = "東南東";
-
-/* East-southeast, short */
-"COMPASS_ESE_SHORT" = "東南東";
-
-/* North, long */
-"COMPASS_N_LONG" = "北";
-
-/* North, short */
-"COMPASS_N_SHORT" = "北";
-
-/* North by east, long */
-"COMPASS_NbE_LONG" = "北微東";
-
-/* North by east, short */
-"COMPASS_NbE_SHORT" = "北微東";
-
-/* North by west, long */
-"COMPASS_NbW_LONG" = "北微西";
-
-/* North by west, short */
-"COMPASS_NbW_SHORT" = "北微西";
-
-/* Northeast, long */
-"COMPASS_NE_LONG" = "東北";
-
-/* Northeast, short */
-"COMPASS_NE_SHORT" = "東北";
-
-/* Northeast by east, long */
-"COMPASS_NEbE_LONG" = "東北微東";
-
-/* Northeast by east, short */
-"COMPASS_NEbE_SHORT" = "東北微東";
-
-/* Northeast by north, long */
-"COMPASS_NEbN_LONG" = "東北微北";
-
-/* Northeast by north, short */
-"COMPASS_NEbN_SHORT" = "東北微北";
-
-/* North-northeast, long */
-"COMPASS_NNE_LONG" = "北北東";
-
-/* North-northeast, short */
-"COMPASS_NNE_SHORT" = "北北東";
-
-/* North-northwest, long */
-"COMPASS_NNW_LONG" = "北北西";
-
-/* North-northwest, short */
-"COMPASS_NNW_SHORT" = "北北西";
-
-/* Northwest, long */
-"COMPASS_NW_LONG" = "西北";
-
-/* Northwest, short */
-"COMPASS_NW_SHORT" = "西北";
-
-/* Northwest by north, long */
-"COMPASS_NWbN_LONG" = "西北微北";
-
-/* Northwest by north, short */
-"COMPASS_NWbN_SHORT" = "西北微北";
-
-/* Northwest by west, long */
-"COMPASS_NWbW_LONG" = "西北微西";
-
-/* Northwest by west, short */
-"COMPASS_NWbW_SHORT" = "西北微西";
-
-/* South, long */
-"COMPASS_S_LONG" = "南";
-
-/* South, short */
-"COMPASS_S_SHORT" = "南";
-
-/* South by east, long */
-"COMPASS_SbE_LONG" = "南微東";
-
-/* South by east, short */
-"COMPASS_SbE_SHORT" = "南微東";
-
-/* South by west, long */
-"COMPASS_SbW_LONG" = "南微西";
-
-/* South by west, short */
-"COMPASS_SbW_SHORT" = "南微西";
-
-/* Southeast, long */
-"COMPASS_SE_LONG" = "東南";
-
-/* Southeast, short */
-"COMPASS_SE_SHORT" = "東南";
-
-/* Southeast by east, long */
-"COMPASS_SEbE_LONG" = "東南微東";
-
-/* Southeast by east, short */
-"COMPASS_SEbE_SHORT" = "東南微東";
-
-/* Southeast by south, long */
-"COMPASS_SEbS_LONG" = "東南微南";
-
-/* Southeast by south, short */
-"COMPASS_SEbS_SHORT" = "東南微南";
-
-/* South-southeast, long */
-"COMPASS_SSE_LONG" = "南南東";
-
-/* South-southeast, short */
-"COMPASS_SSE_SHORT" = "南南東";
-
-/* South-southwest, long */
-"COMPASS_SSW_LONG" = "南南西";
-
-/* South-southwest, short */
-"COMPASS_SSW_SHORT" = "南南西";
-
-/* Southwest, long */
-"COMPASS_SW_LONG" = "西南";
-
-/* Southwest, short */
-"COMPASS_SW_SHORT" = "西南";
-
-/* Southwest by south, long */
-"COMPASS_SWbS_LONG" = "西南微南";
-
-/* Southwest by south, short */
-"COMPASS_SWbS_SHORT" = "西南微南";
-
-/* Southwest by west, long */
-"COMPASS_SWbW_LONG" = "西南微西";
-
-/* Southwest by west, short */
-"COMPASS_SWbW_SHORT" = "西南微西";
-
-/* West, long */
-"COMPASS_W_LONG" = "西";
-
-/* West, short */
-"COMPASS_W_SHORT" = "西";
-
-/* West by north, long */
-"COMPASS_WbN_LONG" = "西微北";
-
-/* West by north, short */
-"COMPASS_WbN_SHORT" = "西微北";
-
-/* West by south, long */
-"COMPASS_WbS_LONG" = "西微南";
-
-/* West by south, short */
-"COMPASS_WbS_SHORT" = "西微南";
-
-/* West-northwest, long */
-"COMPASS_WNW_LONG" = "西北西";
-
-/* West-northwest, short */
-"COMPASS_WNW_SHORT" = "西北西";
-
-/* West-southwest, long */
-"COMPASS_WSW_LONG" = "西南西";
-
-/* West-southwest, short */
-"COMPASS_WSW_SHORT" = "西南西";
-
-/* Degrees format, long */
-"COORD_DEG_LONG" = "%d度";
-
-/* Degrees format, medium: {degrees} */
-"COORD_DEG_MEDIUM" = "%d°";
-
-/* Degrees format, short: {degrees} */
-"COORD_DEG_SHORT" = "%d°";
-
-/* Coordinate format, long: {degrees}{minutes} */
-"COORD_DM_LONG" = "%1$@度%2$@分";
-
-/* Coordinate format, medium: {degrees}{minutes} */
-"COORD_DM_MEDIUM" = "%1$@度%2$@";
-
-/* Coordinate format, short: {degrees}{minutes} */
-"COORD_DM_SHORT" = "%1$@%度2$@";
-
-/* Coordinate format, long: {degrees}{minutes}{seconds} */
-"COORD_DMS_LONG" = "%1$@度%2$@分%3$@秒";
-
-/* Coordinate format, medium: {degrees}{minutes}{seconds} */
-"COORD_DMS_MEDIUM" = "%1$@度%2$@分%3$@秒";
-
-/* Coordinate format, short: {degrees}{minutes}{seconds} */
-"COORD_DMS_SHORT" = "%1$@%度2$@分%3$@秒";
-
-/* East longitude format, long: {longitude} */
-"COORD_E_LONG" = "東經%@";
-
-/* East longitude format, medium: {longitude} */
-"COORD_E_MEDIUM" = "東經%@";
-
-/* East longitude format, short: {longitude} */
-"COORD_E_SHORT" = "%@E";
-
-/* Coordinate pair format, long: {latitude}, {longitude} */
-"COORD_FMT_LONG" = "%1$@,%2$@";
-
-/* Coordinate pair format, medium: {latitude}, {longitude} */
-"COORD_FMT_MEDIUM" = "%1$@,%2$@";
-
-/* Coordinate pair format, short: {latitude}, {longitude} */
-"COORD_FMT_SHORT" = "%1$@,%2$@";
-
-/* Minutes format, long */
-"COORD_MIN_LONG" = "%d分";
-
-/* Minutes format, medium: {minutes} */
-"COORD_MIN_MEDIUM" = "%d′";
-
-/* Minutes format, short: {minutes} */
-"COORD_MIN_SHORT" = "%d′";
-
-/* North latitude format, long: {latitude} */
-"COORD_N_LONG" = "北緯%@";
-
-/* North latitude format, medium: {latitude} */
-"COORD_N_MEDIUM" = "北緯%@";
-
-/* North latitude format, short: {latitude} */
-"COORD_N_SHORT" = "%@N";
-
-/* South latitude format, long: {latitude} */
-"COORD_S_LONG" = "南緯%@";
-
-/* South latitude format, medium: {latitude} */
-"COORD_S_MEDIUM" = "南緯%@";
-
-/* South latitude format, short: {latitude} */
-"COORD_S_SHORT" = "%@S";
-
-/* Seconds format, long */
-"COORD_SEC_LONG" = "%d秒";
-
-/* Seconds format, medium: {seconds} */
-"COORD_SEC_MEDIUM" = "%d″";
-
-/* Seconds format, short: {seconds} */
-"COORD_SEC_SHORT" = "%d″";
-
-/* West longitude format, long: {longitude} */
-"COORD_W_LONG" = "西經%@";
-
-/* West longitude format, medium: {longitude} */
-"COORD_W_MEDIUM" = "西經%@";
-
-/* West longitude format, short: {longitude} */
-"COORD_W_SHORT" = "%@W";
-
-/* OpenStreetMap full name attribution */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/darwin/scripts/check-public-symbols.js b/platform/darwin/scripts/check-public-symbols.js
deleted file mode 100755
index a2045f81ec..0000000000
--- a/platform/darwin/scripts/check-public-symbols.js
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-const fs = require('fs');
-const path = require('path');
-const execFileSync = require('child_process').execFileSync;
-const _ = require('lodash');
-
-const keyword = /\bMGL_EXPORT\b/;
-
-let scanned = [];
-
-function hasMissingSymbols(os) {
- let missing = false;
- let sdk = os === 'iOS' ? 'iphonesimulator' : 'macosx';
- let sysroot = execFileSync('xcrun', ['--show-sdk-path', '--sdk', sdk]).toString().trim();
- let umbrellaPath = `platform/${os.toLowerCase()}/src/Mapbox.h`;
- let docArgs = ['doc', '--objc', umbrellaPath, '--',
- '-x', 'objective-c', '-I', 'platform/darwin/src/', '-isysroot', sysroot];
- let docStr = execFileSync('sourcekitten', docArgs, { maxBuffer: Infinity }).toString().trim();
- let docJson = JSON.parse(docStr);
- _.forEach(docJson, function (result) {
- _.forEach(result, function (structure, path) {
- // Prevent multiple scans of the same file.
- if (scanned.indexOf(path) >= 0) return;
- scanned.push(path);
-
- const src = fs.readFileSync(path, 'utf8').split('\n');
- _.forEach(structure['key.substructure'], function (substructure) {
- switch (substructure['key.kind']) {
- case 'sourcekitten.source.lang.objc.decl.class':
- if (!(keyword.test(src[substructure['key.doc.line'] - 1]) || keyword.test(src[substructure['key.doc.line'] - 2]))) {
- console.warn(`- missing symbol export for class ${substructure['key.name']} in ${path}:${substructure['key.doc.line']}:${substructure['key.doc.column']}`);
- missing = true;
- }
- break;
- case 'sourcekitten.source.lang.objc.decl.constant':
- if (!keyword.test(src[substructure['key.doc.line'] - 1])) {
- console.warn(`- missing symbol export for constant ${substructure['key.name']} in ${path}:${substructure['key.doc.line']}:${substructure['key.doc.column']}`);
- missing = true;
- }
- break;
- }
- });
- });
- });
-
- return missing;
-}
-
-function ensureSourceKittenIsInstalled() {
- try {
- execFileSync('which', ['sourcekitten']);
- } catch (e) {
- console.log(`Installing SourceKitten via Homebrew…`);
- execFileSync('brew', ['install', 'sourcekitten']);
- }
-}
-
-if (process.argv.length < 3) {
- console.warn(`Usage: ${path.relative(process.cwd(), process.argv[1])} [macOS|iOS] ...`);
- process.exit(1);
-}
-
-ensureSourceKittenIsInstalled();
-
-let missing = false;
-for (var i = 2; i < process.argv.length; i++) {
- let os = process.argv[i];
- if (os == 'iOS' || os == 'macOS') {
- missing |= hasMissingSymbols(os);
- } else {
- console.warn(`Argument must be one of iOS or macOS`);
- process.exit(1);
- }
-}
-
-if (missing) {
- process.exit(1);
-} else {
- console.warn(`All symbols are correctly exported.`);
-}
diff --git a/platform/darwin/scripts/generate-style-code.js b/platform/darwin/scripts/generate-style-code.js
deleted file mode 100755
index bd5adb9685..0000000000
--- a/platform/darwin/scripts/generate-style-code.js
+++ /dev/null
@@ -1,925 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-
-const fs = require('fs');
-const ejs = require('ejs');
-const _ = require('lodash');
-const colorParser = require('csscolorparser');
-const assert = require('assert');
-
-require('../../../scripts/style-code');
-
-const cocoaConventions = require('./style-spec-cocoa-conventions-v8.json');
-const prefix = 'MGL';
-const suffix = 'StyleLayer';
-
-let spec = _.merge(require('../../../scripts/style-spec'), require('./style-spec-overrides-v8.json'));
-
-// FIXME: https://github.com/mapbox/mapbox-gl-native/issues/15008
-delete spec.layout_circle["circle-sort-key"]
-delete spec.layout_line["line-sort-key"]
-delete spec.layout_fill["fill-sort-key"]
-
-class ConventionOverride {
- constructor(val) {
- if (typeof val === 'string') {
- this.name_ = val;
- this.enumName_ = null;
- } else if (val instanceof Object) {
- this.name_ = val.name;
- this.enumName_ = val.enumName;
- } else {
- assert(false);
- }
- }
-
- set name(name_) { this.name_ = name_; }
- get name() { return this.name_; }
- get enumName() { return this.enumName_ || this.name_; }
-}
-
-// Rename properties and keep `original` for use with setters and getters
-_.forOwn(cocoaConventions, function (properties, kind) {
- _.forOwn(properties, function (newConvention, oldName) {
- let conventionOverride = new ConventionOverride(newConvention);
- let property = spec[kind][oldName];
- if (conventionOverride.name.startsWith('is-')) {
- property.getter = conventionOverride.name;
- conventionOverride.name = conventionOverride.name.substr(3);
- }
-
- // Override enum name based on style-spec-cocoa-conventions-v8.json
- property.enumName = conventionOverride.enumName;
-
- if (conventionOverride.name !== oldName) {
- property.original = oldName;
- delete spec[kind][oldName];
- spec[kind][conventionOverride.name] = property;
- }
-
- // Update cross-references to this property in other properties'
- // documentation and requirements.
- let renameCrossReferences = function (property, name) {
- property.doc = property.doc.replace(new RegExp('`' + oldName + '`', 'g'), '`' + conventionOverride.name + '`');
- let requires = property.requires || [];
- for (let i = 0; i < requires.length; i++) {
- if (requires[i] === oldName) {
- property.requires[i] = conventionOverride.name;
- }
- if (typeof requires[i] !== 'string') {
- _.forOwn(requires[i], function (values, name, require) {
- if (name === oldName) {
- require[conventionOverride.name] = values;
- delete require[name];
- }
- });
- }
- }
- };
- _.forOwn(spec[kind.replace(/^layout_/, 'paint_')], renameCrossReferences);
- _.forOwn(spec[kind.replace(/^paint_/, 'layout_')], renameCrossReferences);
- })
-});
-
-String.prototype.wrap = function (cols, indent) {
- let wrapRe = new RegExp(`(.{1,${cols - indent}})(?: +|\n|$)`, "gm");
- return this.replace(wrapRe, "$1\n").replace(/\s+$/, "").indent(indent);
-};
-
-String.prototype.indent = function (cols) {
- return this.replace(/^|\n/g, "$&" + " ".repeat(cols));
-};
-
-global.camelize = function (str) {
- return str.replace(/(?:^|-)(.)/g, function (_, x) {
- return x.toUpperCase();
- });
-};
-
-global.camelizeWithLeadingLowercase = function (str) {
- return str.replace(/-(.)/g, function (_, x) {
- return x.toUpperCase();
- });
-};
-
-// Returns true only if property is an enum or if it is an array
-// property with uniquely defined enum.
-global.definesEnum = function(property, allProperties) {
- if (property.type === "enum") {
- return true;
- }
-
- if (property.type === 'array' && property.value === 'enum') {
- const uniqueArrayEnum = (prop, enums) => {
- if (prop.value !== 'enum') return false;
- const enumsEqual = (val1, val2) => val1.length === val1.length && val1.every((val, i) => val === val2[i]);
- return enums.filter(e => enumsEqual(Object.keys(prop.values).sort(), Object.keys(e.values).sort())).length == 0;
- };
-
- const allEnumProperties = _(allProperties).filter({'type': 'enum'}).value();
- const uniqueArrayEnumProperties = _(allProperties).filter({'type': 'array'}).filter(prop => uniqueArrayEnum(prop, allEnumProperties)).value();
- return _(uniqueArrayEnumProperties).filter({'name': property.name}).value().length != 0;
- }
-
- return false;
-}
-
-global.objCName = function (property) {
- return camelizeWithLeadingLowercase(property.name);
-};
-
-global.objCGetter = function (property) {
- return camelizeWithLeadingLowercase(property.getter || property.name);
-};
-
-global.objCType = function (layerType, propertyName) {
- return `${prefix}${camelize(propertyName)}`;
-};
-
-global.arrayType = function (property) {
- return property.type === 'array' ? originalPropertyName(property).split('-').pop() : false;
-};
-
-global.testImplementation = function (property, layerType, isFunction) {
- let helperMsg = testHelperMessage(property, layerType, isFunction);
- return `layer.${objCName(property)} = [MGLRuntimeStylingHelper ${helperMsg}];`;
-};
-
-global.objCTestValue = function (property, layerType, arraysAsStructs, indent) {
- let propertyName = originalPropertyName(property);
- switch (property.type) {
- case 'boolean':
- return property.default ? '@"false"' : '@"true"';
- case 'number':
- return '@"1"';
- case 'formatted':
- // Special 'string' case to handle constant expression text-field that automatically
- // converts Formatted back to string.
- return layerType === 'string' ?
- `@"'${_.startCase(propertyName)}'"` :
- `@"${_.startCase(propertyName)}"`;
- case 'resolvedImage':
- return layerType === 'string' ?
- `@"${_.startCase(propertyName)}"` :
- `@"MGL_FUNCTION('image', '${_.startCase(propertyName)}')"`;
- case 'string':
- return `@"'${_.startCase(propertyName)}'"`;
- case 'enum':
- return `@"'${_.last(_.keys(property.values))}'"`;
- case 'color':
- return '@"%@", [MGLColor redColor]';
- case 'array':
- switch (arrayType(property)) {
- case 'dasharray':
- return '@"{1, 2}"';
- case 'font':
- return `@"{'${_.startCase(propertyName)}', '${_.startCase(_.reverse(propertyName.split('')).join(''))}'}"`;
- case 'padding': {
- if (arraysAsStructs) {
- let iosValue = '[NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(1, 1, 1, 1)]'.indent(indent * 4);
- let macosValue = '[NSValue valueWithEdgeInsets:NSEdgeInsetsMake(1, 1, 1, 1)]'.indent(indent * 4);
- return `@"%@",\n#if TARGET_OS_IPHONE\n${iosValue}\n#else\n${macosValue}\n#endif\n${''.indent((indent - 1) * 4)}`;
- }
- return '@"{1, 1, 1, 1}"';
- }
- case 'offset':
- case 'translate': {
- if (arraysAsStructs) {
- let iosValue = '[NSValue valueWithCGVector:CGVectorMake(1, 1)]'.indent(indent * 4);
- let macosValue = '[NSValue valueWithMGLVector:CGVectorMake(1, -1)]'.indent(indent * 4);
- return `@"%@",\n#if TARGET_OS_IPHONE\n${iosValue}\n#else\n${macosValue}\n#endif\n${''.indent((indent - 1) * 4)}`;
- }
- return '@"{1, 1}"';
- }
- case 'anchor':
- return `@"{'top','bottom'}"`;
- case 'mode':
- return `@"{'horizontal','vertical'}"`;
- default:
- throw new Error(`unknown array type for ${property.name}`);
- }
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-};
-
-global.mbglTestValue = function (property, layerType) {
- let propertyName = originalPropertyName(property);
- switch (property.type) {
- case 'boolean':
- return property.default ? 'false' : 'true';
- case 'number':
- return '1.0';
- case 'formatted':
- case 'string':
- case 'resolvedImage':
- return `"${_.startCase(propertyName)}"`;
- case 'enum': {
- let type = camelize(originalPropertyName(property));
- if (/-translate-anchor$/.test(originalPropertyName(property))) {
- type = 'TranslateAnchor';
- }
- if (/-(rotation|pitch)-alignment$/.test(originalPropertyName(property))) {
- type = 'Alignment';
- }
- if (/^(text|icon)-anchor$/.test(originalPropertyName(property))) {
- type = 'SymbolAnchor'
- }
- let value = camelize(_.last(_.keys(property.values)));
- if (property['light-property']) {
- return `mbgl::style::Light${type}Type::${value}`;
- }
- return `mbgl::style::${type}Type::${value}`;
- }
- case 'color':
- return '{ 1, 0, 0, 1 }';
- case 'array':
- switch (arrayType(property)) {
- case 'dasharray':
- return '{1, 2}';
- case 'font':
- return `{ "${_.startCase(propertyName)}", "${_.startCase(_.reverse(propertyName.split('')).join(''))}" }`;
- case 'padding':
- return '{ 1, 1, 1, 1 }';
- case 'offset':
- case 'translate':
- return '{ 1, 1 }';
- case 'anchor':
- return '{ mbgl::style::SymbolAnchorType::Top, mbgl::style::SymbolAnchorType::Bottom }';
- case 'mode':
- return '{ mbgl::style::TextWritingModeType::Horizontal, mbgl::style::TextWritingModeType::Vertical }';
- default:
- throw new Error(`unknown array type for ${property.name}`);
- }
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-};
-
-global.mbglExpressionTestValue = function (property, layerType) {
- let propertyName = originalPropertyName(property);
- switch (property.type) {
- case 'enum':
- return `"${_.last(_.keys(property.values))}"`;
- case 'color':
- return 'mbgl::Color(1, 0, 0, 1)';
- case 'array':
- switch (arrayType(property)) {
- case 'anchor':
- return `{"top", "bottom"}`;
- case 'mode':
- return `{"horizontal", "vertical"}`;
- default:
- break;
- }
- default:
- return global.mbglTestValue(property, layerType);
- }
-};
-
-global.testGetterImplementation = function (property, layerType, isFunction) {
- let helperMsg = testHelperMessage(property, layerType, isFunction);
- let value = `[MGLRuntimeStylingHelper ${helperMsg}]`;
- if (property.type === 'enum') {
- if (isFunction) {
- return `XCTAssertEqualObjects(gLayer.${objCName(property)}, ${value});`;
- }
- return `XCTAssert([gLayer.${objCName(property)} isKindOfClass:[MGLConstantStyleValue class]]);
- XCTAssertEqualObjects(gLayer.${objCName(property)}, ${value});`;
- }
- return `XCTAssertEqualObjects(gLayer.${objCName(property)}, ${value});`;
-};
-
-global.testHelperMessage = function (property, layerType, isFunction) {
- let fnSuffix = isFunction ? 'Function' : '';
- switch (property.type) {
- case 'boolean':
- return 'testBool' + fnSuffix;
- case 'number':
- return 'testNumber' + fnSuffix;
- case 'formatted':
- case 'string':
- case 'resolvedImage':
- return 'testString' + fnSuffix;
- case 'enum':
- let objCType = global.objCType(layerType, property.name);
- let objCEnum = `${objCType}${camelize(Object.keys(property.values)[Object.keys(property.values).length-1])}`;
- return `testEnum${fnSuffix}:${objCEnum} type:@encode(${objCType})`;
- case 'color':
- return 'testColor' + fnSuffix;
- case 'array':
- switch (arrayType(property)) {
- case 'dasharray':
- return 'testDashArray' + fnSuffix;
- case 'font':
- return 'testFont' + fnSuffix;
- case 'padding':
- return 'testPadding' + fnSuffix;
- case 'offset':
- case 'translate':
- return 'testOffset' + fnSuffix;
- default:
- throw new Error(`unknown array type for ${property.name}`);
- }
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-};
-
-global.propertyDoc = function (propertyName, property, layerType, kind) {
- // Match references to other property names & values.
- // Requires the format 'When `foo` is set to `bar`,'.
- let doc = property.doc.replace(/`([^`]+?)` is set to `([^`]+?)`(?: or `([^`]+?)`)?/g, function (m, peerPropertyName, propertyValue, secondPropertyValue, offset, str) {
- let otherProperty = camelizeWithLeadingLowercase(peerPropertyName);
- let otherValue = objCType(layerType, peerPropertyName) + camelize(propertyValue);
- if (property.type == 'array' && kind == 'light') {
- otherValue = propertyValue;
- }
- const firstPropertyValue = '`' + `${otherProperty}` + '` is set to `' + `${otherValue}` + '`';
- if (secondPropertyValue) {
- return firstPropertyValue + ' or `' +
- objCType(layerType, peerPropertyName) + camelize(secondPropertyValue) +
- '`';
- } else {
- return firstPropertyValue;
- }
- });
- // Match references to our own property values.
- // Requires the format 'is equivalent to `bar`'.
- doc = doc.replace(/is equivalent to `(.+?)`/g, function(m, propertyValue, offset, str) {
- propertyValue = objCType(layerType, propertyName) + camelize(propertyValue);
- return 'is equivalent to `' + propertyValue + '`';
- });
- // Format everything else: our property name & its possible values.
- // Requires symbols to be surrounded by backticks.
- doc = doc.replace(/`(.+?)`/g, function (m, symbol, offset, str) {
- if (kind === 'enum') {
- let layoutProperties = spec[`layout_${layerType}`] || [];
- let paintProperties = spec[`paint_${layerType}`] || [];
- if (symbol in layoutProperties || symbol in paintProperties) {
- return '`MGL' + camelize(layerType) + 'StyleLayer.' + camelizeWithLeadingLowercase(symbol) + '`';
- }
- }
- if ('values' in property && Object.keys(property.values).indexOf(symbol) !== -1) {
- let objCType = global.objCType(layerType, property.name);
- return '`' + `${objCType}${camelize(symbol)}` + '`';
- }
- if (str.substr(offset - 4, 3) !== 'CSS') {
- symbol = camelizeWithLeadingLowercase(symbol);
- }
- return '`' + symbol + '`';
- });
- // Format references to units.
- if ('units' in property) {
- if (!property.units.match(/s$/)) {
- property.units += 's';
- }
- doc += `\n\nThis property is measured in ${property.units}.`;
- }
- doc = doc.replace(/(p)ixel/gi, '$1oint').replace(/(\d)px\b/g, '$1pt');
- if (kind !== 'enum') {
- if ('default' in property) {
- doc += `\n\nThe default value of this property is ${propertyDefault(property, layerType)}.`;
- if (!property.required && kind != 'light') {
- doc += ' Set this property to `nil` to reset it to the default value.';
- }
- }
- if ('requires' in property) {
- doc += '\n\n' + propertyReqs(property, spec[`${kind}_${layerType}`], layerType);
- }
- if ('original' in property) {
- let anchor;
- switch (kind) {
- case 'layout':
- anchor = `layout-${layerType}-${property.original}`;
- break;
- case 'paint':
- anchor = `paint-${property.original}`;
- break;
- }
- doc += `\n\nThis attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#${anchor}"><code>${property.original}</code></a> layout property in the Mapbox Style Specification.`;
- }
- doc += '\n\nYou can set this property to an expression containing any of the following:\n\n';
- doc += `* Constant ${describeType(property)} values`;
- if ('minimum' in property) {
- if ('maximum' in property) {
- doc += ` between ${formatNumber(property.minimum)} and ${formatNumber(property.maximum)} inclusive`;
- } else {
- doc += ` no less than ${formatNumber(property.minimum)}`;
- }
- } else if ('maximum' in property) {
- doc += ` no greater than ${formatNumber(property.maximum)}`;
- }
- doc += '\n';
- if (property.type === 'enum') {
- doc += '* Any of the following constant string values:\n';
- doc += Object.keys(property.values).map(value => ' * `' + value + '`: ' + property.values[value].doc).join('\n') + '\n';
- } else if (property.type === 'array' && property.value === 'enum') {
- doc += '* Constant array, in which each element is any of the following constant string values:\n';
- doc += Object.keys(property.values).map(value => ' * `' + value + '`: ' + property.values[value].doc).join('\n') + '\n';
- }
- if (property.type === 'formatted') {
- doc += '* Formatted expressions.\n';
- }
- doc += '* Predefined functions, including mathematical and string operators\n' +
- '* Conditional expressions\n' +
- '* Variable assignments and references to assigned variables\n';
- const inputVariable = property.expression && property['property-type'] === 'color-ramp' ?
- '$' + camelizeWithLeadingLowercase(property.expression.parameters[0]) : '$zoomLevel';
- if (isDataDriven(property)) {
- doc += `* Interpolation and step functions applied to the \`${inputVariable}\` variable and/or feature attributes\n`;
- } else if (property.expression && property.expression.interpolated) {
- doc += `* Interpolation and step functions applied to the \`${inputVariable}\` variable\n\n` +
- 'This property does not support applying interpolation or step functions to feature attributes.';
- } else {
- doc += `* Step functions applied to the \`${inputVariable}\` variable\n\n` +
- `This property does not support applying interpolation functions to the \`${inputVariable}\` variable or applying interpolation or step functions to feature attributes.`;
- }
- }
- return doc;
-};
-
-global.propertyExample = function (property) {
- return property.examples;
-};
-
-global.isDataDriven = function (property) {
- return property['property-type'] === 'data-driven' || property['property-type'] === 'cross-faded-data-driven';
-};
-
-global.propertyReqs = function (property, propertiesByName, type) {
- return 'This property is only applied to the style if ' + property.requires.map(function (req) {
- if (typeof req === 'string') {
- return '`' + camelizeWithLeadingLowercase(req) + '` is non-`nil`';
- } else if ('!' in req) {
- return '`' + camelizeWithLeadingLowercase(req['!']) + '` is set to `nil`';
- } else {
- let name = Object.keys(req)[0];
- if (name === 'source')
- return 'the data source requirements are met';
- return '`' + camelizeWithLeadingLowercase(name) + '` is set to an expression that evaluates to ' + describeValue(req[name], propertiesByName[name], type);
- }
- }).join(', and ') + '. Otherwise, it is ignored.';
-};
-
-global.parseColor = function (str) {
- let color = colorParser.parseCSSColor(str);
- return {
- r: color[0] / 255,
- g: color[1] / 255,
- b: color[2] / 255,
- a: color[3],
- };
-};
-
-global.describeType = function (property) {
- switch (property.type) {
- case 'boolean':
- return 'Boolean';
- case 'number':
- return 'numeric';
- case 'formatted':
- case 'string':
- case 'resolvedImage':
- return 'string';
- case 'enum':
- return '`MGL' + camelize(property.name) + '`';
- case 'color':
- return '`UIColor`';
- case 'array':
- switch (arrayType(property)) {
- case 'padding':
- return '`UIEdgeInsets`';
- case 'offset':
- case 'translate':
- return '`CGVector`';
- case 'position':
- return '`MGLSphericalPosition`';
- case 'anchor':
- return '`MGLTextAnchor` array';
- case 'mode':
- return '`MGLTextWritingMode` array';
- default:
- return 'array';
- }
- break;
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-}
-
-global.describeValue = function (value, property, layerType) {
- if (Array.isArray(value) && property.type !== 'array' && property.type !== 'enum') {
- switch (value[0]) {
- case 'interpolate': {
- let curveType = value[1][0];
- let minimum = describeValue(value[3 + value.length % 2], property, layerType);
- let maximum = describeValue(_.last(value), property, layerType);
- return `${curveType.match(/^[aeiou]/i) ? 'an' : 'a'} ${curveType} interpolation expression ranging from ${minimum} to ${maximum}`;
- }
- default:
- throw new Error(`No description available for ${value[0]} expression in ${property.name} of ${layerType}.`);
- }
- }
-
- switch (property.type) {
- case 'boolean':
- return value ? '`YES`' : '`NO`';
- case 'number':
- return 'the float ' + '`' + formatNumber(value) + '`';
- case 'formatted':
- case 'string':
- case 'resolvedImage':
- if (value === '') {
- return 'the empty string';
- }
- return 'the string `' + value + '`';
- case 'enum':
- let displayValue;
- if (Array.isArray(value)) {
- let separator = (value.length === 2) ? ' ' : ', ';
- displayValue = value.map((possibleValue, i) => {
- let conjunction = '';
- if (value.length === 2 && i === 0) conjunction = 'either ';
- if (i === value.length - 1) conjunction = 'or ';
- let objCType = global.objCType(layerType, property.name);
- return `${conjunction}\`${objCType}${camelize(possibleValue)}\``;
- }).join(separator);
- } else {
- displayValue = `\`${value}\``;
- }
- return displayValue;
- case 'color':
- let color = parseColor(value);
- if (!color) {
- throw new Error(`unrecognized color format in default value of ${property.name}`);
- }
- if (color.r === 0 && color.g === 0 && color.b === 0 && color.a === 0) {
- return '`UIColor.clearColor`';
- }
- if (color.r === 0 && color.g === 0 && color.b === 0 && color.a === 1) {
- return '`UIColor.blackColor`';
- }
- if (color.r === 1 && color.g === 1 && color.b === 1 && color.a === 1) {
- return '`UIColor.whiteColor`';
- }
- return 'a `UIColor`' + ` object whose RGB value is ${formatNumber(color.r)}, ${formatNumber(color.g)}, ${formatNumber(color.b)} and whose alpha value is ${formatNumber(color.a)}`;
- case 'array':
- let units = property.units || '';
- if (units) {
- units = ` ${units}`.replace(/pixel/, 'point');
- }
- switch (arrayType(property)) {
- case 'padding':
- if (value[0] === 0 && value[1] === 0 && value[2] === 0 && value[3] === 0) {
- return 'an `NSValue` object containing `UIEdgeInsetsZero`';
- }
- return 'an `NSValue` object containing a `UIEdgeInsets` struct set to' + ` ${formatNumber(value[0])}${units} on the top, ${formatNumber(value[3])}${units} on the left, ${formatNumber(value[2])}${units} on the bottom, and ${formatNumber(value[1])}${units} on the right`;
- case 'offset':
- case 'translate':
- return 'an `NSValue` object containing a `CGVector` struct set to' + ` ${formatNumber(value[0])}${units} rightward and ${formatNumber(value[1])}${units} downward`;
- case 'position':
- return 'an `MGLSphericalPosition` struct set to' + ` ${formatNumber(value[0])} radial, ${formatNumber(value[1])} azimuthal and ${formatNumber(value[2])} polar`;
- default:
- return 'the array `' + value.join('`, `') + '`';
- }
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-};
-
-global.formatNumber = function (num) {
- return num.toLocaleString().replace('-', '\u2212');
-}
-
-global.propertyDefault = function (property, layerType) {
- if (property.name === 'heatmap-color') {
- return 'an expression that evaluates to a rainbow color scale from blue to red';
- } else {
- return 'an expression that evaluates to ' + describeValue(property.default, property, layerType);
- }
-};
-
-global.originalPropertyName = function (property) {
- return property.original || property.name;
-};
-
-global.enumName = function (property) {
- return property.enumName || property.name;
-};
-
-global.propertyType = function (property) {
- switch (property.type) {
- case 'boolean':
- return 'NSNumber *';
- case 'number':
- return 'NSNumber *';
- case 'formatted':
- case 'string':
- case 'resolvedImage':
- return 'NSString *';
- case 'enum':
- return 'NSValue *';
- case 'color':
- return 'MGLColor *';
- case 'array':
- switch (arrayType(property)) {
- case 'dasharray':
- return 'NSArray<NSNumber *> *';
- case 'font':
- return 'NSArray<NSString *> *';
- case 'padding':
- case 'position':
- case 'offset':
- case 'translate':
- return 'NSValue *';
- case 'anchor':
- case 'mode':
- return 'NSArray<NSValue *> *';
- default:
- throw new Error(`unknown array type for ${property.name}`);
- }
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-};
-
-global.isInterpolatable = function (property) {
- const type = property.type === 'array' ? property.value : property.type;
- return type !== 'boolean' &&
- type !== 'enum' &&
- type !== 'string' &&
- type !== 'resolvedImage' &&
- type !== 'formatted';
-};
-
-global.valueTransformerArguments = function (property) {
- let objCType = propertyType(property);
- switch (property.type) {
- case 'boolean':
- return ['bool', objCType];
- case 'number':
- return ['float', objCType];
- case 'formatted':
- return ['mbgl::style::expression::Formatted', objCType];
- case 'resolvedImage':
- return ['mbgl::style::expression::Image', objCType];
- case 'string':
- return ['std::string', objCType];
- case 'enum':
- return [mbglType(property), 'NSValue *', mbglType(property), `MGL${camelize(property.name)}`];
- case 'color':
- return ['mbgl::Color', objCType];
- case 'array':
- switch (arrayType(property)) {
- case 'dasharray':
- return ['std::vector<float>', objCType, 'float'];
- case 'font':
- return ['std::vector<std::string>', objCType, 'std::string'];
- case 'padding':
- return ['std::array<float, 4>', objCType];
- case 'position':
- return ['mbgl::style::Position', objCType];
- case 'offset':
- case 'translate':
- return ['std::array<float, 2>', objCType];
- case 'anchor':
- return ['std::vector<mbgl::style::SymbolAnchorType>', objCType, 'mbgl::style::SymbolAnchorType', 'MGLTextAnchor'];
- case 'mode':
- return ['std::vector<mbgl::style::TextWritingModeType>', objCType, 'mbgl::style::TextWritingModeType', 'MGLTextWritingMode'];
- default:
- throw new Error(`unknown array type for ${property.name}`);
- }
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-};
-
-global.mbglType = function(property) {
- switch (property.type) {
- case 'boolean':
- return 'bool';
- case 'number':
- return 'float';
- case 'formatted':
- return 'mbgl::style::expression::Formatted';
- case 'resolvedImage':
- return 'mbgl::style::expression::Image';
- case 'string':
- return 'std::string';
- case 'enum': {
- let type = camelize(originalPropertyName(property));
- if (property['light-property']) {
- return `mbgl::style::Light${type}Type`;
- }
- if (/-translate-anchor$/.test(originalPropertyName(property))) {
- type = 'TranslateAnchor';
- }
- if (/-(rotation|pitch)-alignment$/.test(originalPropertyName(property))) {
- type = 'Alignment';
- }
- if (/^(text|icon)-anchor$/.test(originalPropertyName(property))) {
- type = 'SymbolAnchor'
- }
- return `mbgl::style::${type}Type`;
- }
- case 'color':
- return 'mbgl::Color';
- case 'array':
- switch (arrayType(property)) {
- case 'dasharray':
- return 'std::vector<float>';
- case 'font':
- return 'std::vector<std::string>';
- case 'padding':
- return 'std::array<float, 4>';
- case 'offset':
- case 'translate':
- return 'std::array<float, 2>';
- case 'position':
- return 'mbgl::style::Position';
- case 'anchor':
- return 'std::vector<mbgl::style::SymbolAnchorType>';
- case 'mode':
- return 'std::vector<mbgl::style::TextWritingModeType>';
- default:
- throw new Error(`unknown array type for ${property.name}`);
- }
- default:
- throw new Error(`unknown type for ${property.name}`);
- }
-};
-
-global.initLayer = function (layerType) {
- if (layerType == "background") {
- return `_layer = new mbgl::style::${camelize(layerType)}Layer(identifier.UTF8String);`
- } else {
- return `_layer = new mbgl::style::${camelize(layerType)}Layer(identifier.UTF8String, source.identifier.UTF8String);`
- }
-};
-
-global.setSourceLayer = function() {
- return `_layer->setSourceLayer(sourceLayer.UTF8String);`
-};
-
-const lightProperties = Object.keys(spec['light']).reduce((memo, name) => {
- var property = spec['light'][name];
- property.name = name;
- property['light-property'] = true;
- memo.push(property);
- return memo;
-}, []);
-
-const lightDoc = spec['light-cocoa-doc'];
-const lightType = 'light';
-
-const layerH = ejs.compile(fs.readFileSync('platform/darwin/src/MGLStyleLayer.h.ejs', 'utf8'), { strict: true });
-const layerPrivateH = ejs.compile(fs.readFileSync('platform/darwin/src/MGLStyleLayer_Private.h.ejs', 'utf8'), { strict: true });
-const layerM = ejs.compile(fs.readFileSync('platform/darwin/src/MGLStyleLayer.mm.ejs', 'utf8'), { strict: true});
-const testLayers = ejs.compile(fs.readFileSync('platform/darwin/test/MGLStyleLayerTests.mm.ejs', 'utf8'), { strict: true});
-const forStyleAuthorsMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/For Style Authors.md.ejs', 'utf8'), { strict: true });
-const ddsGuideMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Migrating to Expressions.md.ejs', 'utf8'), { strict: true });
-const templatesMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Tile URL Templates.md.ejs', 'utf8'), { strict: true });
-
-const lightH = ejs.compile(fs.readFileSync('platform/darwin/src/MGLLight.h.ejs', 'utf8'), {strict: true});
-const lightM = ejs.compile(fs.readFileSync('platform/darwin/src/MGLLight.mm.ejs', 'utf8'), {strict: true});
-const testLight = ejs.compile(fs.readFileSync('platform/darwin/test/MGLLightTest.mm.ejs', 'utf8'), { strict: true});
-writeIfModified(`platform/darwin/src/MGLLight.h`, duplicatePlatformDecls(lightH({ properties: lightProperties, doc: lightDoc, type: lightType })));
-writeIfModified(`platform/darwin/src/MGLLight.mm`, lightM({ properties: lightProperties, doc: lightDoc, type: lightType }));
-writeIfModified(`platform/darwin/test/MGLLightTest.mm`, testLight({ properties: lightProperties, doc: lightDoc, type: lightType }));
-
-
-const layers = _(spec.layer.type.values).map((value, layerType) => {
- const layoutProperties = Object.keys(spec[`layout_${layerType}`]).reduce((memo, name) => {
- if (name !== 'visibility') {
- spec[`layout_${layerType}`][name].name = name;
- memo.push(spec[`layout_${layerType}`][name]);
- }
- return memo;
- }, []);
-
- const paintProperties = Object.keys(spec[`paint_${layerType}`]).reduce((memo, name) => {
- spec[`paint_${layerType}`][name].name = name;
- memo.push(spec[`paint_${layerType}`][name]);
- return memo;
- }, []);
-
- return {
- doc: spec.layer.type.values[layerType].doc,
- examples: spec.layer.type.values[layerType].examples,
- type: layerType,
- layoutProperties: _.sortBy(layoutProperties, ['name']),
- paintProperties: _.sortBy(paintProperties, ['name']),
- };
-}).sortBy(['type']).value();
-
-function duplicatePlatformDecls(src) {
- // Look for a documentation comment that contains “MGLColor” or “UIColor”
- // and the subsequent function, method, or property declaration. Try not to
- // match greedily.
- return src.replace(/(\/\*\*(?:\*[^\/]|[^*])*?\b(?:MGL|NS|UI)Color\b[\s\S]*?\*\/)(\s*.+?;)/g,
- (match, comment, decl) => {
- let macosComment = comment.replace(/\b(?:MGL|UI)Color\b/g, 'NSColor')
- // Use the correct indefinite article.
- .replace(/\ba(\s+`?NSColor)\b/gi, 'an$1');
- let iosDecl = decl.replace(/\bMGLColor\b/g, 'UIColor');
- let macosDecl = decl.replace(/\b(?:MGL|UI)Color\b/g, 'NSColor');
- return `\
-#if TARGET_OS_IPHONE
-${comment}${iosDecl}
-#else
-${macosComment}${macosDecl}
-#endif`;
- })
- // Do the same for CGVector-typed properties.
- .replace(/(\/\*\*(?:\*[^\/]|[^*])*?\b(?:CGVector|UIEdgeInsets(?:Zero)?)\b[\s\S]*?\*\/)(\s*.+?;)/g,
- (match, comment, decl) => {
- let macosComment = comment.replace(/\bdownward\b/g, 'upward')
- .replace(/\bUI(EdgeInsets(?:Zero)?)\b/g, 'NS$1');
- return `\
-#if TARGET_OS_IPHONE
-${comment}${decl}
-#else
-${macosComment}${decl}
-#endif`;
- });
-}
-
-var renamedPropertiesByLayerType = {};
-
-for (var layer of layers) {
- layer.properties = _.concat(layer.layoutProperties, layer.paintProperties);
- let enumProperties = _.filter(layer.properties, prop => definesEnum(prop, layer.properties));
- if (enumProperties.length) {
- layer.enumProperties = enumProperties;
- }
-
- let renamedProperties = {};
- _.assign(renamedProperties, _.filter(layer.properties, prop => 'original' in prop || 'getter' in prop));
- if (!_.isEmpty(renamedProperties)) {
- renamedPropertiesByLayerType[layer.type] = renamedProperties;
- }
-
- writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.h`, duplicatePlatformDecls(layerH(layer)));
- writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}_Private.h`, duplicatePlatformDecls(layerPrivateH(layer)));
- writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.mm`, layerM(layer));
- writeIfModified(`platform/darwin/test/${prefix}${camelize(layer.type)}${suffix}Tests.mm`, testLayers(layer));
-}
-
-// Extract examples for guides from unit tests.
-let examplesSrc = fs.readFileSync('platform/darwin/test/MGLDocumentationGuideTests.swift', 'utf8');
-const exampleRegex = /func test([\w$]+)\s*\(\)\s*\{[^]*?\n([ \t]+)\/\/#-example-code\n([^]+?)\n\2\/\/#-end-example-code\n/gm;
-
-let examples = {};
-let match;
-while ((match = exampleRegex.exec(examplesSrc)) !== null) {
- let testMethodName = match[1],
- indentation = match[2],
- exampleCode = match[3];
-
- // Trim leading whitespace from the example code.
- exampleCode = exampleCode.replace(new RegExp('^' + indentation, 'gm'), '');
-
- examples[testMethodName] = exampleCode;
-}
-
-global.guideExample = function (guide, exampleId, os) {
- // Get the contents of the test method whose name matches the symbol path.
- let testMethodName = `${guide}$${exampleId}`;
- let example = examples[testMethodName];
- if (!example) {
- console.error(`MGLDocumentationExampleTests.test${testMethodName}() not found.`);
- process.exit(1);
- }
-
- // Resolve conditional compilation blocks.
- example = example.replace(/^(\s*)#if\s+os\((iOS|macOS)\)\n([^]*?)(?:^\1#else\n([^]*?))?^\1#endif\b\n?/gm,
- function (m, indentation, ifOs, ifCase, elseCase) {
- return (os === ifOs ? ifCase : elseCase).replace(new RegExp('^ ', 'gm'), '');
- }).replace(/\n$/, '');
-
- return '```swift\n' + example + '\n```';
-};
-
-writeIfModified(`platform/ios/docs/guides/For Style Authors.md`, forStyleAuthorsMD({
- os: 'iOS',
- renamedProperties: renamedPropertiesByLayerType,
- layers: layers,
-}));
-writeIfModified(`platform/macos/docs/guides/For Style Authors.md`, forStyleAuthorsMD({
- os: 'macOS',
- renamedProperties: renamedPropertiesByLayerType,
- layers: layers,
-}));
-writeIfModified(`platform/ios/docs/guides/Migrating to Expressions.md`, ddsGuideMD({
- os: 'iOS',
-}));
-writeIfModified(`platform/macos/docs/guides/Migrating to Expressions.md`, ddsGuideMD({
- os: 'macOS',
-}));
-writeIfModified(`platform/ios/docs/guides/Tile URL Templates.md`, templatesMD({
- os: 'iOS',
-}));
-writeIfModified(`platform/macos/docs/guides/Tile URL Templates.md`, templatesMD({
- os: 'macOS',
-}));
diff --git a/platform/darwin/scripts/style-spec-cocoa-conventions-v8.json b/platform/darwin/scripts/style-spec-cocoa-conventions-v8.json
deleted file mode 100644
index c781879bc5..0000000000
--- a/platform/darwin/scripts/style-spec-cocoa-conventions-v8.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "layout_symbol": {
- "icon-allow-overlap": "icon-allows-overlap",
- "icon-image": "icon-image-name",
- "icon-ignore-placement": "icon-ignores-placement",
- "icon-keep-upright": "keeps-icon-upright",
- "icon-optional": "is-icon-optional",
- "icon-rotate": "icon-rotation",
- "icon-size": "icon-scale",
- "symbol-avoid-edges": "symbol-avoids-edges",
- "text-allow-overlap": "text-allows-overlap",
- "text-field": "text",
- "text-font": "text-font-names",
- "text-ignore-placement": "text-ignores-placement",
- "text-justify": "text-justification",
- "text-keep-upright": "keeps-text-upright",
- "text-max-angle": "maximum-text-angle",
- "text-max-width": "maximum-text-width",
- "text-optional": "is-text-optional",
- "text-rotate": "text-rotation",
- "text-size": "text-font-size",
- "text-writing-mode": {"name": "text-writing-modes", "enumName": "text-writing-mode"}
- },
- "paint_circle": {
- "circle-pitch-scale": "circle-scale-alignment",
- "circle-translate": "circle-translation",
- "circle-translate-anchor": "circle-translation-anchor"
- },
- "paint_fill": {
- "fill-antialias": "is-fill-antialiased",
- "fill-translate": "fill-translation",
- "fill-translate-anchor": "fill-translation-anchor"
- },
- "paint_fill-extrusion": {
- "fill-extrusion-translate": "fill-extrusion-translation",
- "fill-extrusion-translate-anchor": "fill-extrusion-translation-anchor",
- "fill-extrusion-vertical-gradient": "fill-extrusion-has-vertical-gradient"
- },
- "paint_raster": {
- "raster-brightness-min": "minimum-raster-brightness",
- "raster-brightness-max": "maximum-raster-brightness",
- "raster-hue-rotate": "raster-hue-rotation",
- "raster-resampling": "raster-resampling-mode"
- },
- "paint_line": {
- "line-dasharray": "line-dash-pattern",
- "line-translate": "line-translation",
- "line-translate-anchor": "line-translation-anchor"
- },
- "paint_symbol": {
- "icon-translate": "icon-translation",
- "icon-translate-anchor": "icon-translation-anchor",
- "text-translate": "text-translation",
- "text-translate-anchor": "text-translation-anchor"
- }
-} \ No newline at end of file
diff --git a/platform/darwin/scripts/style-spec-overrides-v8.json b/platform/darwin/scripts/style-spec-overrides-v8.json
deleted file mode 100644
index 0ba2b77dc5..0000000000
--- a/platform/darwin/scripts/style-spec-overrides-v8.json
+++ /dev/null
@@ -1,148 +0,0 @@
-{
- "light-cocoa-doc": "An `MGLLight` object represents the light source for extruded geometries in `MGLStyle`.\n\n### Example\n```swift\n```\n\n#### Related examples\nSee the <a href=\"https://docs.mapbox.com/ios/maps/examples/light-example/\">Adjust light of 3D buildings</a> to learn how to create and modify the light source for 3D geometries.",
- "light": {
- "position": {
- "doc": "Position of the `MGLLight` source relative to lit (extruded) geometries, in a `MGLSphericalPosition` struct [radial coordinate, azimuthal angle, polar angle] where radial indicates the distance from the center of the base of an object to its light, azimuthal indicates the position of the light relative to 0° (0° when `MGLLight.anchor` is set to `MGLLightAnchorViewport` corresponds to the top of the viewport, or 0° when `MGLLight.anchor` is set to `MGLLightAnchorMap` corresponds to due north, and degrees proceed clockwise), and polar indicates the height of the light (from 0°, directly above, to 180°, directly below).",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/light-example/\">Adjust light of 3D buildings</a> example to learn how to create and modify the position of value of an `MGLLight` object for 3D geometries."
- }
- },
- "layer": {
- "type": {
- "values": {
- "fill": {
- "doc": "An `MGLFillStyleLayer` is a style layer that renders one or more filled (and optionally stroked) polygons on the map.\n\nUse a fill style layer to configure the visual appearance of polygon or multipolygon features. These features can come from vector tiles loaded by an `MGLVectorTileSource` object, or they can be `MGLPolygon`, `MGLPolygonFeature`, `MGLMultiPolygon`, or `MGLMultiPolygonFeature` instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/select-layer/\">Select a feature within a layer</a> example to learn how to use a `TERNARY` expression to modify the `fillOpacity` of an `MGLFillStyleLayer` object. See the <a href=\"https://docs.mapbox.com/ios/maps/examples/fill-pattern/\">Add a pattern to a polygon</a> example to learn how to use an image to add pattern to the features styled by a `MGLFillStyleLayer`."
- },
- "fill-extrusion": {
- "doc": "An `MGLFillExtrusionStyleLayer` is a style layer that renders one or more 3D extruded polygons on the map.\n\nUse a fill-extrusion style layer to configure the visual appearance of polygon or multipolygon features. These features can come from vector tiles loaded by an `MGLVectorTileSource` object, or they can be `MGLPolygon`, `MGLPolygonFeature`, `MGLMultiPolygon`, or `MGLMultiPolygonFeature` instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/extrusions/\">Display 3D buildings</a> example to learn how to add and style 3D layers on a map."
- },
- "line": {
- "doc": "An `MGLLineStyleLayer` is a style layer that renders one or more stroked polylines on the map.\n\nUse a line style layer to configure the visual appearance of polyline or multipolyline features. These features can come from vector tiles loaded by an `MGLVectorTileSource` object, or they can be `MGLPolyline`, `MGLPolylineFeature`, `MGLMultiPolyline`, or `MGLMultiPolylineFeature` instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/shape-collection/\">Add multiple shapes from a single shape source</a> example to learn how to add a line to your map using this style layer. See the <a href=\"https://docs.mapbox.com/ios/maps/examples/runtime-add-line/\">Add a line style layer from GeoJSON</a> example to learn how to add and style line data to an `MGLMapView` object at runtime."
- },
- "symbol": {
- "doc": "An `MGLSymbolStyleLayer` is a style layer that renders icon and text labels at points or along lines on the map.\n\nUse a symbol style layer to configure the visual appearance of feature labels. These features can come from vector tiles loaded by an `MGLVectorTileSource` object, or they can be `MGLShape` or `MGLFeature` instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/\">Dynamically style interactive points</a> and <a href=\"https://docs.mapbox.com/ios/maps/examples/clustering-with-images/\">Use images to cluster point data</a> examples learn how to style data on your map using this layer."
- },
- "circle": {
- "doc": "An `MGLCircleStyleLayer` is a style layer that renders one or more filled circles on the map.\n\nUse a circle style layer to configure the visual appearance of point or point collection features. These features can come from vector tiles loaded by an `MGLVectorTileSource` object, or they can be `MGLPointAnnotation`, `MGLPointFeature`, `MGLPointCollection`, or `MGLPointCollectionFeature` instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.\n\nA circle style layer renders circles whose radii are measured in screen units. To display circles on the map whose radii correspond to real-world distances, use many-sided regular polygons and configure their appearance using an `MGLFillStyleLayer` object.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/dds-circle-layer/\">Data-driven circles</a>, <a href=\"https://docs.mapbox.com/ios/maps/examples/shape-collection/\">Add multiple shapes from a single shape source</a>, and <a href=\"https://docs.mapbox.com/ios/maps/examples/clustering/\">Cluster point data</a> examples to learn how to add circles to your map using this style layer."
- },
- "heatmap": {
- "doc": "An `MGLHeatmapStyleLayer` is a style layer that renders a <a href=\"https://en.wikipedia.org/wiki/Heat_map\">heatmap</a>.\n\nA heatmap visualizes the spatial distribution of a large, dense set of point data, using color to avoid cluttering the map with individual points at low zoom levels. The points are weighted by an attribute you specify. Use a heatmap style layer in conjunction with point or point collection features. These features can come from vector tiles loaded by an `MGLVectorTileSource` object, or they can be `MGLPointAnnotation`, `MGLPointFeature`, `MGLPointCollection`, or `MGLPointCollectionFeature` instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.\n\nConsider accompanying a heatmap style layer with an `MGLCircleStyleLayer` or `MGLSymbolStyleLayer` at high zoom levels. If you are unsure whether the point data in an `MGLShapeSource` is dense enough to warrant a heatmap, you can alternatively cluster the source using the `MGLShapeSourceOptionClustered` option and render the data using an `MGLCircleStyleLayer` or `MGLSymbolStyleLayer`.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/heatmap-example/\">Create a heatmap layer</a> example to learn how to add this style layer to your map."
- },
- "raster": {
- "doc": "An `MGLRasterStyleLayer` is a style layer that renders georeferenced raster imagery on the map, especially raster tiles.\n\nUse a raster style layer to configure the color parameters of raster tiles loaded by an `MGLRasterTileSource` object or raster images loaded by an `MGLImageSource` object. For example, you could use a raster style layer to render <a href=\"https://www.mapbox.com/satellite/\">Mapbox Satellite</a> imagery, a <a href=\"https://docs.mapbox.com/help/glossary/tileset/#raster-tilesets\">raster tile set</a> uploaded to Mapbox Studio, or a raster map authored in <a href=\"https://tilemill-project.github.io/tilemill/\">TileMill</a>, the classic Mapbox Editor, or Mapbox Studio Classic.\n\nRaster images may also be used as icons or patterns in a style layer. To register an image for use as an icon or pattern, use the `-[MGLStyle setImage:forName:]` method. To configure a point annotation’s image, use the `MGLAnnotationImage` class.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/image-source/\">Add an image</a> and <a href=\"https://docs.mapbox.com/ios/maps/examples/source-custom-raster/\">Add raster imagery</a> examples to learn how to add imagery with this style layer."
- },
- "hillshade": {
- "doc": "An `MGLHillshadeStyleLayer` is a style layer that renders raster <a href=\"https://en.wikipedia.org/wiki/Digital_elevation_model\">digital elevation model</a> (DEM) tiles on the map.\n\nUse a hillshade style layer to configure the color parameters of raster tiles loaded by an `MGLRasterDEMSource` object. For example, you could use a hillshade style layer to render <a href=\"https://docs.mapbox.com/help/troubleshooting/access-elevation-data/#mapbox-terrain-rgb\">Mapbox Terrain-RGB</a> data.\n\nTo display posterized hillshading based on vector shapes, as with the <a href=\"https://www.mapbox.com/vector-tiles/mapbox-terrain/\">Mapbox Terrain</a> source, use an `MGLVectorTileSource` object in conjunction with several `MGLFillStyleLayer` objects."
- },
- "background": {
- "doc": "An `MGLBackgroundStyleLayer` is a style layer that covers the entire map. Use a background style layer to configure a color or pattern to show below all other map content. If the style’s other layers use the Mapbox Streets source, the background style layer is responsible for drawing land, whereas the oceans and other bodies of water are drawn by `MGLFillStyleLayer` objects.\n\nA background style layer is typically the bottommost layer in a style, because it covers the entire map and can occlude any layers below it. You can therefore access it by getting the last item in the `MGLStyle.layers` array.\n\nIf the background style layer is transparent or omitted from the style, any portion of the map view that does not show another style layer is transparent."
- }
- }
- }
- },
- "layout_symbol": {
- "symbol-z-order": {
- "values": {
- "viewport-y": {
- "doc": "Specify this z order if symbols’ appearance relies on lower features overlapping higher features. For example, symbols with a pin-like appearance would require this z order."
- },
- "source": {
- "doc": "Specify this z order if the order in which features appear in the source is significant."
- }
- }
- },
- "icon-text-fit-padding": {
- "doc": "Size of the additional area added to dimensions determined by `icon-text-fit`."
- },
- "icon-offset": {
- "doc": "Offset distance of icon from its anchor."
- },
- "icon-image": {
- "doc": "Name of a style image to use for drawing an image background.\n\nUse the `+[MGLStyle setImage:forName:]` method to associate an image with a name that you can set this property to.\n\nWithin a constant string value, a feature attribute name enclosed in curly braces (e.g., `{token}`) is replaced with the value of the named attribute. Tokens inside non-constant expressions are ignored; instead, use `mgl_join:` and key path expressions.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/clustering-with-images/\">Use images to cluster point data</a> example to learn how to dynamically set your icons with an expression."
- },
- "text-field": {
- "doc": "Value to use for a text label.\n\nWithin a constant string value, a feature attribute name enclosed in curly braces (e.g., `{token}`) is replaced with the value of the named attribute. Tokens inside non-constant expressions are ignored; instead, use `mgl_join:` and key path expressions.",
- "examples": "See the <a href=\"https://docs.mapbox.com/ios/maps/examples/clustering/\">Cluster point data</a> and <a href=\"https://docs.mapbox.com/ios/maps/examples/clustering-with-images/\">Use images to cluster point data</a> to learn how to use an expression to set this attribute to the number of markers within a cluster."
- },
- "text-font": {
- "doc": "An array of font face names used to display the text.\n\nEach font name must be included in the `{fontstack}` portion of the JSON stylesheet’s <a href=\"https://www.mapbox.com/mapbox-gl-style-spec/#glyphs\"><code>glyphs</code></a> property. You can register a custom font when designing the style in Mapbox Studio. Fonts installed on the system are not used.\n\nThe first font named in the array is applied to the text. For each character in the text, if the first font lacks a glyph for the character, the next font is applied as a fallback, and so on."
- },
- "text-offset": {
- "doc": "Offset distance of text from its anchor."
- },
- "text-transform": {
- "doc": "Specifies how to capitalize text."
- }
- },
- "paint_background": {
- "background-pattern": {
- "doc": "Name of image in style images to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512)."
- }
- },
- "paint_fill": {
- "fill-pattern": {
- "doc": "Name of image in style images to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512)."
- }
- },
- "paint_fill-extrusion": {
- "fill-extrusion-pattern": {
- "doc": "Name of image in style images to use for drawing image fill-extrusions. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512)."
- },
- "fill-extrusion-translate": {
- "doc": "The geometry's offset."
- },
- "fill-extrusion-color": {
- "doc": "The base color of this layer. The extrusion's surfaces will be shaded differently based on this color in combination with the `light` settings. If this color is specified with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacityco."
- }
- },
- "paint_heatmap": {
- "heatmap-color": {
- "doc": "The color of each screen point based on its density value in a heatmap. This property is normally set to an interpolation or step expression with the `$heatmapDensity` value as its input."
- }
- },
- "paint_line": {
- "line-gradient": {
- "doc": "The color gradient with which the line will be drawn. This property only has an effect on lines defined by an `MGLShapeSource` whose `MGLShapeSourceOptionLineDistanceMetrics` option is set to `YES`."
- },
- "line-pattern": {
- "doc": "Name of image in style images to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512)."
- },
- "line-translate": {
- "doc": "The geometry's offset."
- }
- },
- "paint_circle": {
- "circle-translate": {
- "doc": "The geometry's offset."
- }
- },
- "paint_fill": {
- "fill-translate": {
- "doc": "The geometry's offset."
- },
- "fill-color": {
- "doc": "The color of the filled part of this layer."
- }
- },
- "paint_symbol": {
- "icon-color": {
- "doc": "The tint color to apply to the icon. The `icon-image-name` property must be set to a template image."
- },
- "icon-halo-color": {
- "doc": "The color of the icon’s halo. The `icon-image-name` property must be set to a template image."
- },
- "icon-translate": {
- "doc": "Distance that the icon's anchor is moved from its original placement."
- },
- "text-translate": {
- "doc": "Distance that the text's anchor is moved from its original placement."
- }
- }
-}
diff --git a/platform/darwin/scripts/update-examples.js b/platform/darwin/scripts/update-examples.js
deleted file mode 100755
index 885b26248c..0000000000
--- a/platform/darwin/scripts/update-examples.js
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-
-const fs = require('fs');
-const execFileSync = require('child_process').execFileSync;
-const _ = require('lodash');
-
-require('../../../scripts/style-code');
-
-const examplesSrc = fs.readFileSync('platform/darwin/test/MGLDocumentationExampleTests.swift', 'utf8');
-
-// Regex extracts the following block
-// /** Front matter to describe the example. **/
-// func testMGLClass$member() {
-// ...
-// // #-example-code
-// let sampleCode: String?
-// // #-end-example-code
-// ...
-// }
-//
-// into the following regex groups:
-// 1 (test method name): "MGLClass" or "MGLClass$member" or "MGLClass$initWithArg_anotherArg_"
-// 2 (indentation): " "
-// 3 (sample code): "let sampleCode: String?"
-const exampleRegex = /func test([\w$]+)\s*\(\)\s*\{[^]*?\n([ \t]+)\/\/#-example-code\n([^]+?)\n\2\/\/#-end-example-code\n/gm;
-
-/**
- * Returns the given source with example code inserted into the documentation
- * comment for the symbol at the given one-based line.
- *
- * @param {String} src Source code to insert the example code into.
- * @param {Number} line One-based line number of the symbol being documented.
- * @param {String} exampleCode Example code to insert.
- * @returns {String} `src` with `exampleCode` inserted just above `line`.
- */
-function completeSymbolInSource(src, line, exampleCode) {
- // Split the file contents right before the symbol declaration (but after its documentation comment).
- let srcUpToSymbol = src.split('\n', line - 1).join('\n');
- let srcFromSymbol = src.substr(srcUpToSymbol.length);
-
- // Match the documentation comment block that is not followed by the beginning or end of a declaration.
- let commentMatch = srcUpToSymbol.match(/\/\*\*\s*(?:[^*]|\*(?!\/))+?\s*\*\/[^;{}]*?$/);
-
- // Replace the Swift code block with the test method’s contents.
- let completedComment = commentMatch[0].replace(/^([ \t]*)```swift\n[^]*?```/m, function (m, indentation) {
- // Apply the original indentation to each line.
- return ('```swift\n' + exampleCode + '\n```').replace(/^/gm, indentation);
- });
-
- // Splice the modified comment into the overall file contents.
- srcUpToSymbol = (srcUpToSymbol.substr(0, commentMatch.index) + completedComment +
- srcUpToSymbol.substr(commentMatch.index + commentMatch[0].length));
- return srcUpToSymbol + srcFromSymbol;
-}
-
-let examples = {};
-let match;
-while ((match = exampleRegex.exec(examplesSrc)) !== null) {
- let testMethodName = match[1],
- indentation = match[2],
- exampleCode = match[3];
-
- // Trim leading whitespace from the example code.
- exampleCode = exampleCode.replace(new RegExp('^' + indentation, 'gm'), '');
-
- examples[testMethodName] = exampleCode;
-}
-
-function completeExamples(os) {
- console.log(`Installing ${os} SDK examples…`);
-
- let sdk = os === 'iOS' ? 'iphonesimulator' : 'macosx';
- let sysroot = execFileSync('xcrun', ['--show-sdk-path', '--sdk', sdk]).toString().trim();
- let umbrellaPath = `platform/${os.toLowerCase()}/src/Mapbox.h`;
- let docArgs = ['doc', '--objc', umbrellaPath, '--',
- '-x', 'objective-c', '-I', 'platform/darwin/src/', '-isysroot', sysroot];
- let docStr = execFileSync('sourcekitten', docArgs, { maxBuffer: Infinity }).toString().trim();
- let docJson = JSON.parse(docStr);
- _.forEach(docJson, function (result) {
- _.forEach(result, function (structure, path) {
- let src;
- let newSrc;
- // Recursively search for code blocks in documentation comments and populate
- // them with example code from the test methods. Find and replace the code
- // blocks in reverse to keep the SourceKitten line numbers accurate.
- _.forEachRight(structure['key.substructure'], function completeSubstructure(substructure, idx, substructures, symbolPath) {
- if (!symbolPath) {
- symbolPath = [substructure['key.name']];
- }
- _.forEachRight(substructure['key.substructure'], function (substructure, idx, substructures) {
- completeSubstructure(substructure, idx, substructures, _.concat(symbolPath, substructure['key.name']));
- });
-
- let comment = substructure['key.doc.comment'];
- if (!comment || !comment.match(/^(?:\s*)```swift\n/m)) {
- return;
- }
-
- // Lazily read in the existing file.
- if (!src) {
- newSrc = src = fs.readFileSync(path, 'utf8');
- }
-
- // Get the contents of the test method whose name matches the symbol path.
- let testMethodName = symbolPath.join('$').replace(/\$[+-]/, '$').replace(/:/g, '_');
- let example = examples[testMethodName];
- if (!example) {
- console.error(`MGLDocumentationExampleTests.test${testMethodName}() not found.`);
- process.exit(1);
- }
-
- // Resolve conditional compilation blocks.
- example = example.replace(/^(\s*)#if\s+os\((iOS|macOS)\)\n([^]*?)(?:^\1#else\n([^]*?))?^\1#endif\b\n?/gm,
- function (m, indentation, ifOs, ifCase, elseCase) {
- return (os === ifOs ? ifCase : elseCase).replace(new RegExp('^ ', 'gm'), '');
- }).replace(/\n$/, '');
-
- // Insert the test method contents into the documentation comment just
- // above the substructure.
- let startLine = substructure['key.parsed_scope.start'];
- newSrc = completeSymbolInSource(newSrc, startLine, example);
- });
-
- if (!src) {
- return;
- }
-
- // Write out the modified file contents.
- writeIfModified(path, newSrc)
- });
- });
-}
-
-function ensureSourceKittenIsInstalled() {
- try {
- execFileSync('which', ['sourcekitten']);
- } catch (e) {
- console.log(`Installing SourceKitten via Homebrew…`);
- execFileSync('brew', ['install', 'sourcekitten']);
- }
-}
-
-ensureSourceKittenIsInstalled();
-
-// Where a particular comment is part of both SDKs, prefer the iOS example.
-completeExamples('macOS');
-completeExamples('iOS');
diff --git a/platform/darwin/src/MGLAccountManager.h b/platform/darwin/src/MGLAccountManager.h
deleted file mode 100644
index d1983a4ddc..0000000000
--- a/platform/darwin/src/MGLAccountManager.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLAccountManager` object provides a global way to set a Mapbox API access
- token.
- */
-MGL_EXPORT
-@interface MGLAccountManager : NSObject
-
-#pragma mark Authorizing Access
-
-/**
- The
- <a href="https://docs.mapbox.com/help/glossary/access-token/">Mapbox access token</a>
- used by all instances of `MGLMapView` in the current application.
-
- Mapbox-hosted vector tiles and styles require an API access token, which you
- can obtain from the
- <a href="https://www.mapbox.com/studio/account/tokens/">Mapbox account page</a>.
- Access tokens associate requests to Mapbox’s vector tile and style APIs with
- your Mapbox account. They also deter other developers from using your styles
- without your permission.
-
- Setting this property to a value of `nil` has no effect.
-
- @note You must set the access token before attempting to load any Mapbox-hosted
- style. Therefore, you should generally set it before creating an instance of
- `MGLMapView`. The recommended way to set an access token is to add an entry
- to your application’s Info.plist file with the key `MGLMapboxAccessToken`
- and the type `String`. Alternatively, you may call this method from your
- application delegate’s `-applicationDidFinishLaunching:` method.
- */
-@property (class, assign, nullable) NSString *accessToken;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLAccountManager.m b/platform/darwin/src/MGLAccountManager.m
deleted file mode 100644
index c37195967a..0000000000
--- a/platform/darwin/src/MGLAccountManager.m
+++ /dev/null
@@ -1,112 +0,0 @@
-#import "MGLAccountManager_Private.h"
-#import "NSBundle+MGLAdditions.h"
-
-#if TARGET_OS_OSX
-#import "NSProcessInfo+MGLAdditions.h"
-#endif
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MGLMapboxEvents.h"
-#import "MBXSKUToken.h"
-
-static NSString * const MGLAccountManagerExternalClassName = @"MBXAccounts";
-static NSString * const MGLAccountManagerExternalMethodName = @"skuToken";
-#endif
-
-NSString * const MGLMapboxAccountTypeKey = @"MGLMapboxAccountType";
-
-@interface MGLAccountManager ()
-
-@property (atomic) NSString *accessToken;
-@property (nonatomic) NSURL *apiBaseURL;
-
-@end
-
-@implementation MGLAccountManager
-
-#pragma mark - Internal
-
-+ (void)load {
- // Read the initial configuration from Info.plist.
- NSString *accessToken = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLMapboxAccessToken"];
- if (accessToken.length) {
- self.accessToken = accessToken;
- }
-
- NSString *apiBaseURL = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLMapboxAPIBaseURL"];
-
- // If apiBaseURL is not a valid URL, [NSURL URLWithString:] will be `nil`.
- if (apiBaseURL.length && [NSURL URLWithString:apiBaseURL]) {
- [self setAPIBaseURL:[NSURL URLWithString:apiBaseURL]];
- }
-}
-
-+ (instancetype)sharedManager {
-#if TARGET_OS_OSX
- if (NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent) {
- return nil;
- }
-#endif
-
- static dispatch_once_t onceToken;
- static MGLAccountManager *_sharedManager;
- void (^setupBlock)(void) = ^{
- dispatch_once(&onceToken, ^{
- _sharedManager = [[self alloc] init];
- });
- };
- if (![[NSThread currentThread] isMainThread]) {
- dispatch_sync(dispatch_get_main_queue(), ^{
- setupBlock();
- });
- } else {
- setupBlock();
- }
- return _sharedManager;
-}
-
-+ (void)setAccessToken:(NSString *)accessToken {
- accessToken = [accessToken stringByTrimmingCharactersInSet:
- [NSCharacterSet whitespaceAndNewlineCharacterSet]];
- if (!accessToken.length) {
- return;
- }
-
- [MGLAccountManager sharedManager].accessToken = accessToken;
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- dispatch_async(dispatch_get_main_queue(), ^{
- [MGLMapboxEvents setupWithAccessToken:accessToken];
- });
-#endif
-}
-
-+ (NSString *)accessToken {
- return [MGLAccountManager sharedManager].accessToken;
-}
-
-+ (void)setAPIBaseURL:(NSURL *)apiBaseURL {
- [MGLAccountManager sharedManager].apiBaseURL = apiBaseURL;
-}
-
-+ (NSURL *)apiBaseURL {
- return [MGLAccountManager sharedManager].apiBaseURL;
-}
-
-#pragma mark - SKU Tokens
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-
-+ (NSString *)skuToken {
- Class mbx = NSClassFromString(MGLAccountManagerExternalClassName);
-
- if ([mbx respondsToSelector:NSSelectorFromString(MGLAccountManagerExternalMethodName)]) {
- return (NSString *)[mbx valueForKeyPath:MGLAccountManagerExternalMethodName];
- }
-
- return MBXSKUToken.skuToken;
-}
-
-#endif
-
-@end
diff --git a/platform/darwin/src/MGLAccountManager_Private.h b/platform/darwin/src/MGLAccountManager_Private.h
deleted file mode 100644
index 4bf7963182..0000000000
--- a/platform/darwin/src/MGLAccountManager_Private.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#import "MGLAccountManager.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// NSUserDefaults key that controls developer account type
-FOUNDATION_EXTERN NSString * const MGLMapboxAccountTypeKey;
-
-@interface MGLAccountManager (Private)
-
-/// Returns the shared instance of the `MGLAccountManager` class.
-@property (class, nonatomic, readonly) MGLAccountManager *sharedManager;
-
-/// The current global access token.
-@property (atomic, nullable) NSString *accessToken;
-
-/// The API base URL that is used to access Mapbox resources. The default base URL is `https://api.mapbox.com`. If `nil`, the Mapbox default base API URL is in use.
-@property (atomic, readwrite, nullable) NSURL *apiBaseURL;
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-/// The current global SKU.
-@property (class, atomic, readonly) NSString *skuToken;
-#endif
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLAnnotation.h b/platform/darwin/src/MGLAnnotation.h
deleted file mode 100644
index a8ac1e7e50..0000000000
--- a/platform/darwin/src/MGLAnnotation.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-#import <TargetConditionals.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLAnnotation` protocol is used to provide annotation-related information
- to a map view. To use this protocol, you adopt it in any custom objects that
- store or represent annotation data. Each object then serves as the source of
- information about a single map annotation and provides critical information,
- such as the annotation’s location on the map. Annotation objects do not provide
- the visual representation of the annotation but typically coordinate (in
- conjunction with the map view’s delegate) the creation of an appropriate
- objects to handle the display.
-
- An object that adopts this protocol must implement the `coordinate` property.
- The other methods of this protocol are optional.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-models/">
- Annotation models</a> and <a href="https://docs.mapbox.com/ios/maps/examples/annotation-views/">
- Annotation views</a> examples to learn how to add objects that follow the
- `MGLAnnotation` protocol.
- */
-@protocol MGLAnnotation <NSObject>
-
-#pragma mark Position Attributes
-
-/**
- The center point (specified as a map coordinate) of the annotation. (required)
- (read-only)
- */
-@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
-
-@optional
-
-#pragma mark Title Attributes
-
-/**
- The string containing the annotation’s title.
-
- Although this property is optional, if you support the selection of annotations
- in your map view, you are expected to provide this property. This string is
- displayed in the callout for the associated annotation.
- */
-@property (nonatomic, readonly, copy, nullable) NSString *title;
-
-/**
- The string containing the annotation’s subtitle.
-
- This string is displayed in the callout for the associated annotation.
- */
-@property (nonatomic, readonly, copy, nullable) NSString *subtitle;
-
-#if !TARGET_OS_IPHONE
-
-/** The string containing the annotation’s tooltip. */
-@property (nonatomic, readonly, copy, nullable) NSString *toolTip;
-
-#endif
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLAttributedExpression.h b/platform/darwin/src/MGLAttributedExpression.h
deleted file mode 100644
index ea298c7a44..0000000000
--- a/platform/darwin/src/MGLAttributedExpression.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** Options for `MGLAttributedExpression.attributes`. */
-typedef NSString * MGLAttributedExpressionKey NS_TYPED_ENUM;
-
-/** The font name string array expression used to format the text. */
-FOUNDATION_EXTERN MGL_EXPORT MGLAttributedExpressionKey const MGLFontNamesAttribute;
-
-/** The font scale number expression relative to `MGLSymbolStyleLayer.textFontSize` used to format the text. */
-FOUNDATION_EXTERN MGL_EXPORT MGLAttributedExpressionKey const MGLFontScaleAttribute;
-
-/** The font color expression used to format the text. */
-FOUNDATION_EXTERN MGL_EXPORT MGLAttributedExpressionKey const MGLFontColorAttribute;
-
-/**
- An `MGLAttributedExpression` object associates text formatting attibutes (such as font size or
- font names) to an `NSExpression`.
-
- ### Example
- ```swift
- let redColor = UIColor.red
- let expression = NSExpression(forConstantValue: "Foo")
- let attributes: [MGLAttributedExpressionKey: NSExpression] = [.fontNamesAttribute : NSExpression(forConstantValue: ["DIN Offc Pro Italic",
- "Arial Unicode MS Regular"]),
- .fontScaleAttribute: NSExpression(forConstantValue: 1.2),
- .fontColorAttribute: NSExpression(forConstantValue: redColor)]
- let attributedExpression = MGLAttributedExpression(expression, attributes:attributes)
- ```
-
- */
-MGL_EXPORT
-@interface MGLAttributedExpression : NSObject
-
-/**
- The expression content of the receiver as `NSExpression`.
- */
-@property (strong, nonatomic) NSExpression *expression;
-
-#if TARGET_OS_IPHONE
-/**
- The formatting attributes dictionary.
- Key | Value Type
- --- | ---
- `MGLFontNamesAttribute` | An `NSExpression` evaluating to an `NSString` array.
- `MGLFontScaleAttribute` | An `NSExpression` evaluating to an `NSNumber` value.
- `MGLFontColorAttribute` | An `NSExpression` evaluating to an `UIColor`.
-
- */
-@property (strong, nonatomic, readonly) NSDictionary<MGLAttributedExpressionKey, NSExpression *> *attributes;
-#else
-/**
- The formatting attributes dictionary.
- Key | Value Type
- --- | ---
- `MGLFontNamesAttribute` | An `NSExpression` evaluating to an `NSString` array.
- `MGLFontScaleAttribute` | An `NSExpression` evaluating to an `NSNumber` value.
- `MGLFontColorAttribute` | An `NSExpression` evaluating to an `NSColor` on macos.
- */
-@property (strong, nonatomic, readonly) NSDictionary<MGLAttributedExpressionKey, NSExpression *> *attributes;
-#endif
-
-
-/**
- Returns an `MGLAttributedExpression` object initialized with an expression and no attribute information.
- */
-- (instancetype)initWithExpression:(NSExpression *)expression;
-
-/**
- Returns an `MGLAttributedExpression` object initialized with an expression and text format attributes.
- */
-- (instancetype)initWithExpression:(NSExpression *)expression attributes:(nonnull NSDictionary <MGLAttributedExpressionKey, NSExpression *> *)attrs;
-
-/**
- Creates an `MGLAttributedExpression` object initialized with an expression and the format attributes for font names and font size.
- */
-+ (instancetype)attributedExpression:(NSExpression *)expression fontNames:(nullable NSArray<NSString*> *)fontNames fontScale:(nullable NSNumber *)fontScale;
-
-/**
- Creates an `MGLAttributedExpression` object initialized with an expression and the format attributes dictionary.
- */
-+ (instancetype)attributedExpression:(NSExpression *)expression attributes:(nonnull NSDictionary <MGLAttributedExpressionKey, NSExpression *> *)attrs;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLAttributedExpression.m b/platform/darwin/src/MGLAttributedExpression.m
deleted file mode 100644
index a34480a957..0000000000
--- a/platform/darwin/src/MGLAttributedExpression.m
+++ /dev/null
@@ -1,68 +0,0 @@
-#import "MGLAttributedExpression.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-const MGLAttributedExpressionKey MGLFontNamesAttribute = @"text-font";
-const MGLAttributedExpressionKey MGLFontScaleAttribute = @"font-scale";
-const MGLAttributedExpressionKey MGLFontColorAttribute = @"text-color";
-
-@implementation MGLAttributedExpression
-
-- (instancetype)initWithExpression:(NSExpression *)expression {
- self = [self initWithExpression:expression attributes:@{}];
- return self;
-}
-
-+ (instancetype)attributedExpression:(NSExpression *)expression fontNames:(nullable NSArray<NSString *> *)fontNames fontScale:(nullable NSNumber *)fontScale {
- MGLAttributedExpression *attributedExpression;
-
- NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
-
- if (fontNames && fontNames.count > 0) {
- attrs[MGLFontNamesAttribute] = [NSExpression expressionForConstantValue:fontNames];
- }
-
- if (fontScale) {
- attrs[MGLFontScaleAttribute] = [NSExpression expressionForConstantValue:fontScale];
- }
-
- attributedExpression = [[self alloc] initWithExpression:expression attributes:attrs];
- return attributedExpression;
-}
-
-+ (instancetype)attributedExpression:(NSExpression *)expression attributes:(nonnull NSDictionary<MGLAttributedExpressionKey, NSExpression *> *)attrs {
- MGLAttributedExpression *attributedExpression;
-
- attributedExpression = [[self alloc] initWithExpression:expression attributes:attrs];
-
- return attributedExpression;
-}
-
-- (instancetype)initWithExpression:(NSExpression *)expression attributes:(nonnull NSDictionary<MGLAttributedExpressionKey, NSExpression *> *)attrs {
- if (self = [super init])
- {
- MGLLogInfo(@"Starting %@ initialization.", NSStringFromClass([self class]));
- _expression = expression;
- _attributes = attrs;
-
- MGLLogInfo(@"Finalizing %@ initialization.", NSStringFromClass([self class]));
- }
- return self;
-}
-
-- (BOOL)isEqual:(id)object {
- BOOL result = NO;
-
- if ([object isKindOfClass:[self class]]) {
- MGLAttributedExpression *otherObject = object;
- result = [self.expression isEqual:otherObject.expression] &&
- [_attributes isEqual:otherObject.attributes];
- }
-
- return result;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"MGLAttributedExpression<Expression: %@ Attributes: %@>", self.expression, self.attributes];
-}
-
-@end
diff --git a/platform/darwin/src/MGLAttributionInfo.h b/platform/darwin/src/MGLAttributionInfo.h
deleted file mode 100644
index 1de37c3b24..0000000000
--- a/platform/darwin/src/MGLAttributionInfo.h
+++ /dev/null
@@ -1,94 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreGraphics/CoreGraphics.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The attribution info is represented in the longest format available.
- */
-typedef NS_ENUM(NSUInteger, MGLAttributionInfoStyle) {
- /**
- Specifies a short attribution info style.
- */
- MGLAttributionInfoStyleShort = 1,
- /**
- Specifies a medium attribution info style.
- */
- MGLAttributionInfoStyleMedium,
- /**
- Specifies a long attribution info style.
- */
- MGLAttributionInfoStyleLong
-};
-
-/**
- Information about an attribution statement, usually a copyright or trademark
- statement, associated with a map content source.
- */
-MGL_EXPORT
-@interface MGLAttributionInfo : NSObject
-
-/**
- Returns an initialized attribution info object with the given title and URL.
-
- @param title The attribution statement’s title.
- @param URL A URL to more information about the entity named in the attribution.
- @return An initialized attribution info object.
- */
-- (instancetype)initWithTitle:(NSAttributedString *)title URL:(nullable NSURL *)URL;
-
-/**
- The attribution statement’s attributed title text.
- */
-@property (nonatomic) NSAttributedString *title;
-
-/**
- The URL to more information about the entity named in the attribution.
-
- If this property is set, the attribution statement should be displayed as a
- hyperlink or action button. Otherwise, if it is `nil`, the attribution
- statement should be displayed as plain text.
- */
-@property (nonatomic, nullable) NSURL *URL;
-
-/**
- A Boolean value indicating whether the attribution statement is a shortcut to a
- feedback tool.
-
- If this property is set, the statement should be treated as a way for the user
- to provide feedback rather than an attribution statement.
- */
-@property (nonatomic, getter=isFeedbackLink) BOOL feedbackLink;
-
-/**
- Returns a copy of the `URL` property modified to account for the given center
- coordinate and zoom level.
-
- @param centerCoordinate The map’s center coordinate.
- @param zoomLevel The map’s zoom level. See the `MGLMapView.zoomLevel` property
- for more information.
- @return A modified URL containing a fragment that points to the specified
- viewport. If the `feedbackLink` property is set to `NO`, this method returns
- `nil`.
- */
-- (nullable NSURL *)feedbackURLAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel;
-
-/**
- Returns a copy of the current `title` formatted accordingly to `style`.
-
- Example: If the `style` property is set to `MGLAttributionInfoStyleShort` and the
- `title` property is set to `OpenStreetMap`, then this method returns `OSM`.
-
- @param style The attribution info style.
-
- @return The `NSAttributedString` styled title.
- */
-- (NSAttributedString *)titleWithStyle:(MGLAttributionInfoStyle)style;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLAttributionInfo.mm b/platform/darwin/src/MGLAttributionInfo.mm
deleted file mode 100644
index 17d159f660..0000000000
--- a/platform/darwin/src/MGLAttributionInfo.mm
+++ /dev/null
@@ -1,279 +0,0 @@
-#import "MGLAttributionInfo_Private.h"
-
-#if TARGET_OS_IPHONE
- #import <UIKit/UIKit.h>
-#else
- #import <Cocoa/Cocoa.h>
-#endif
-
-#import "MGLAccountManager.h"
-#import "MGLMapCamera.h"
-#import "NSArray+MGLAdditions.h"
-#import "NSBundle+MGLAdditions.h"
-#import "NSString+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#include <string>
-
-@implementation MGLAttributionInfo
-
-+ (NSArray<MGLAttributionInfo *> *)attributionInfosFromHTMLString:(nullable NSString *)htmlString fontSize:(CGFloat)fontSize linkColor:(nullable MGLColor *)linkColor {
- if (!htmlString) {
- return @[];
- }
-
- NSDictionary *options = @{
- NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
- NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding),
- };
- // Apply a bogus, easily detectable style rule to any feedback link, since
- // NSAttributedString doesn’t preserve the class attribute.
- NSMutableString *css = [NSMutableString stringWithString:
- @"html { font-family: -apple-system, -apple-system-font, sans-serif; }"
- @".mapbox-improve-map { -webkit-text-stroke-width: 1000px; }"];
- if (fontSize) {
- NSString *sizeRule = [NSString stringWithFormat:@"font-size: %.1fpx;", fontSize];
-#if !TARGET_OS_IPHONE
- if (fontSize == [NSFont systemFontSizeForControlSize:NSMiniControlSize]) {
- sizeRule = @"font: -webkit-mini-control";
- } else if (fontSize == [NSFont systemFontSizeForControlSize:NSSmallControlSize]) {
- sizeRule = @"font: -webkit-small-control";
- } else if (fontSize == [NSFont systemFontSizeForControlSize:NSRegularControlSize]) {
- sizeRule = @"font: -webkit-control";
- }
-#endif
- [css appendFormat:@"html { %@ }", sizeRule];
- }
- if (linkColor) {
- CGFloat red;
- CGFloat green;
- CGFloat blue;
- CGFloat alpha;
-#if !TARGET_OS_IPHONE
- // CSS uses the sRGB color space.
- if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) {
- linkColor = [linkColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
- } else {
- linkColor = [linkColor colorUsingColorSpace:[NSColorSpace sRGBColorSpace]];
- }
-#endif
- [linkColor getRed:&red green:&green blue:&blue alpha:&alpha];
- [css appendFormat:
- @"a:link { color: rgba(%f%%, %f%%, %f%%, %f); }",
- red * 100, green * 100, blue * 100, alpha];
- }
- NSString *styledHTML = [NSString stringWithFormat:@"<style type='text/css'>%@</style>%@", css, htmlString];
- NSData *htmlData = [styledHTML dataUsingEncoding:NSUTF8StringEncoding];
-
-#if TARGET_OS_IPHONE
- __block NSMutableAttributedString *attributedString;
- dispatch_block_t initialization = ^{
- // This initializer should be called from a global or main queue. https://developer.apple.com/documentation/foundation/nsattributedstring/1524613-initwithdata
- attributedString = [[NSMutableAttributedString alloc] initWithData:htmlData
- options:options
- documentAttributes:nil
- error:NULL];
- };
-
- if (![[NSThread currentThread] isMainThread]) {
- dispatch_sync(dispatch_get_main_queue(), initialization);
- } else {
- initialization();
- }
-#else
- NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithHTML:htmlData
- options:options
- documentAttributes:nil];
-#endif
-
- NSMutableArray *infos = [NSMutableArray array];
- [attributedString enumerateAttribute:NSLinkAttributeName
- inRange:attributedString.mgl_wholeRange
- options:0
- usingBlock:
- ^(id _Nullable value, NSRange range, BOOL * _Nonnull stop) {
- MGLCAssert(!value || [value isKindOfClass:[NSURL class]], @"If present, URL attribute must be an NSURL.");
-
- // Detect feedback links by the bogus style rule applied above.
- NSNumber *strokeWidth = [attributedString attribute:NSStrokeWidthAttributeName
- atIndex:range.location
- effectiveRange:NULL];
- BOOL isFeedbackLink = NO;
- if ([strokeWidth floatValue] > 100) {
- isFeedbackLink = YES;
- [attributedString removeAttribute:NSStrokeWidthAttributeName range:range];
- }
-
- // Omit whitespace-only strings.
- NSAttributedString *title = [[attributedString attributedSubstringFromRange:range]
- mgl_attributedStringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
- if (!title.length) {
- return;
- }
-
- // Remove the link, because it forces the text to be blue on macOS 10.12
- // and above.
- NSMutableAttributedString *unlinkedTitle = [title mutableCopy];
- [unlinkedTitle removeAttribute:NSLinkAttributeName range:unlinkedTitle.mgl_wholeRange];
-
- MGLAttributionInfo *info = [[MGLAttributionInfo alloc] initWithTitle:unlinkedTitle URL:value];
- info.feedbackLink = isFeedbackLink;
- [infos addObject:info];
- }];
- return infos;
-}
-
-+ (NSAttributedString *)attributedStringForAttributionInfos:(NSArray<MGLAttributionInfo *> *)attributionInfos {
- NSMutableArray *titles = [NSMutableArray arrayWithCapacity:attributionInfos.count];
- for (MGLAttributionInfo *info in attributionInfos) {
- NSMutableAttributedString *title = info.title.mutableCopy;
- if (info.URL) {
- [title addAttribute:NSLinkAttributeName value:info.URL range:title.mgl_wholeRange];
- }
- [titles addObject:title];
- }
- return [titles mgl_attributedComponentsJoinedByString:@" "];
-}
-
-- (instancetype)initWithTitle:(NSAttributedString *)title URL:(NSURL *)URL {
- if (self = [super init]) {
- _title = title;
- _URL = URL;
- }
- return self;
-}
-
-- (id)copyWithZone:(nullable NSZone *)zone
-{
- MGLAttributionInfo *info = [[[self class] allocWithZone:zone] initWithTitle:_title
- URL:_URL];
- info.feedbackLink = _feedbackLink;
-
- return info;
-}
-
-- (nullable NSURL *)feedbackURLAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel {
- return [self feedbackURLForStyleURL:nil atCenterCoordinate:centerCoordinate zoomLevel:zoomLevel direction:0 pitch:0];
-}
-
-- (nullable NSURL *)feedbackURLForStyleURL:(nullable NSURL *)styleURL atCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel direction:(CLLocationDirection)direction pitch:(CGFloat)pitch {
- if (!self.feedbackLink) {
- return nil;
- }
-
- NSURLComponents *components = [NSURLComponents componentsWithString:@"https://apps.mapbox.com/feedback/"];
- components.fragment = [NSString stringWithFormat:@"/%.5f/%.5f/%.2f/%.1f/%i",
- centerCoordinate.longitude, centerCoordinate.latitude, zoomLevel,
- direction, (int)round(pitch)];
-
- NSURLQueryItem *referrerQueryItem = [NSURLQueryItem queryItemWithName:@"referrer"
- value:[NSBundle mgl_applicationBundleIdentifier]];
- NSMutableArray<NSURLQueryItem *> *queryItems = [NSMutableArray arrayWithObject:referrerQueryItem];
- if ([styleURL.scheme isEqualToString:@"mapbox"] && [styleURL.host isEqualToString:@"styles"]) {
- NSArray<NSString *> *stylePathComponents = styleURL.pathComponents;
- if (stylePathComponents.count >= 3) {
- [queryItems addObjectsFromArray:@[
- [NSURLQueryItem queryItemWithName:@"owner" value:stylePathComponents[1]],
- [NSURLQueryItem queryItemWithName:@"id" value:stylePathComponents[2]],
- [NSURLQueryItem queryItemWithName:@"access_token" value:[MGLAccountManager accessToken]],
- [NSURLQueryItem queryItemWithName:@"map_sdk_version" value:[NSBundle mgl_frameworkInfoDictionary][@"MGLSemanticVersionString"]],
- ]];
- }
- }
- components.queryItems = queryItems;
-
- return components.URL;
-}
-
-- (NSAttributedString *)titleWithStyle:(MGLAttributionInfoStyle)style
-{
- NSString *openStreetMap = NSLocalizedStringWithDefaultValue(@"OSM_FULL_NAME", @"Foundation", nil, @"OpenStreetMap", @"OpenStreetMap full name attribution");
- NSString *OSM = NSLocalizedStringWithDefaultValue(@"OSM_SHORT_NAME", @"Foundation", nil, @"OSM", @"OpenStreetMap short name attribution");
-
- NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithAttributedString:self.title];
- [title removeAttribute:NSUnderlineStyleAttributeName range:NSMakeRange(0, [title.string length])];
-
- BOOL isAbbreviated = (style == MGLAttributionInfoStyleShort);
-
- if ([title.string rangeOfString:@"OpenStreetMap"].location != NSNotFound) {
- [title.mutableString replaceOccurrencesOfString:@"OpenStreetMap" withString:isAbbreviated ? OSM : openStreetMap
- options:NSCaseInsensitiveSearch
- range:NSMakeRange(0, [title.mutableString length])];
- }
-
- return title;
-}
-
-- (BOOL)isEqual:(id)object {
- return [object isKindOfClass:[self class]] && [[object title] isEqual:self.title] && [[object URL] isEqual:self.URL];
-}
-
-- (NSUInteger)hash {
- return self.title.hash + self.URL.hash;
-}
-
-/**
- Returns whether the given attribution info object overlaps with the receiver by
- its plain text title.
-
- @return `NSOrderedAscending` if the given object is a superset of the receiver,
- `NSOrderedDescending` if it is a subset of the receiver, or `NSOrderedSame`
- if there is no overlap.
- */
-- (NSComparisonResult)subsetCompare:(MGLAttributionInfo *)otherInfo {
- NSString *title = self.title.string;
- NSString *otherTitle = otherInfo.title.string;
- if ([title containsString:otherTitle]) {
- return NSOrderedDescending;
- }
- if ([otherTitle containsString:title]) {
- return NSOrderedAscending;
- }
- return NSOrderedSame;
-}
-
-@end
-
-@implementation NSMutableArray (MGLAttributionInfoAdditions)
-
-- (void)growArrayByAddingAttributionInfo:(MGLAttributionInfo *)info {
- __block BOOL didInsertInfo = NO;
- __block BOOL shouldAddInfo = YES;
- [self enumerateObjectsUsingBlock:^(MGLAttributionInfo * _Nonnull existingInfo, NSUInteger idx, BOOL * _Nonnull stop) {
- switch ([info subsetCompare:existingInfo]) {
- case NSOrderedDescending:
- // The existing info object is a subset of the one we’re adding.
- // Replace the existing object the first time we find a subset;
- // remove the existing object every time after that.
- if (didInsertInfo) {
- [self removeObjectAtIndex:idx];
- } else {
- [self replaceObjectAtIndex:idx withObject:info];
- didInsertInfo = YES;
- }
- break;
-
- case NSOrderedAscending:
- // The info object we’re adding is a subset of the existing one.
- // Don’t add the object and stop looking.
- shouldAddInfo = NO;
- *stop = YES;
- break;
-
- default:
- break;
- }
- }];
- if (shouldAddInfo && !didInsertInfo) {
- // No overlapping infos were found, so append the info object.
- [self addObject:info];
- }
-}
-
-- (void)growArrayByAddingAttributionInfosFromArray:(NSArray<MGLAttributionInfo *> *)infos {
- for (MGLAttributionInfo *info in infos) {
- [self growArrayByAddingAttributionInfo:info];
- }
-}
-
-@end
diff --git a/platform/darwin/src/MGLAttributionInfo_Private.h b/platform/darwin/src/MGLAttributionInfo_Private.h
deleted file mode 100644
index 85c9ed796f..0000000000
--- a/platform/darwin/src/MGLAttributionInfo_Private.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreGraphics/CoreGraphics.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLAttributionInfo.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLAttributionInfo (Private)
-
-/**
- Parses and returns the attribution infos contained in the given HTML source
- code string.
-
- @param htmlString The HTML source code to parse.
- @param fontSize The default text size in points.
- @param linkColor The default link color.
- */
-+ (NSArray<MGLAttributionInfo *> *)attributionInfosFromHTMLString:(nullable NSString *)htmlString fontSize:(CGFloat)fontSize linkColor:(nullable MGLColor *)linkColor;
-
-+ (NSAttributedString *)attributedStringForAttributionInfos:(NSArray<MGLAttributionInfo *> *)attributionInfos;
-
-/**
- Returns a copy of the `URL` property modified to account for the given style
- URL, center coordinate, and zoom level.
-
- @param styleURL The map’s style URL.
- @param centerCoordinate The map’s center coordinate.
- @param zoomLevel The map’s zoom level. See the `MGLMapView.zoomLevel` property
- for more information.
- @param direction The heading of the map, measured in degrees clockwise from
- true north.
- @param pitch Pitch toward the horizon measured in degrees, with 0 degrees
- resulting in a two-dimensional map.
- @return A modified URL containing a fragment that points to the specified
- viewport. If the `feedbackLink` property is set to `NO`, this method returns
- `nil`.
- */
-- (nullable NSURL *)feedbackURLForStyleURL:(nullable NSURL *)styleURL atCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel direction:(CLLocationDirection)direction pitch:(CGFloat)pitch;
-
-@end
-
-@interface NSMutableArray (MGLAttributionInfoAdditions)
-
-/**
- Adds the given attribution info object to the receiver as long as it isn’t
- redundant to any object already in the receiver. Any existing object that is
- redundant to the given object is replaced by the given object.
-
- @param info The info object to add to the receiver.
- */
-- (void)growArrayByAddingAttributionInfo:(MGLAttributionInfo *)info;
-
-/**
- Adds each of the given attribution info objects to the receiver as long as it
- isn’t redundant to any object already in the receiver. Any existing object that
- is redundant to the given object is replaced by the given object.
-
- @param infos An array of info objects to add to the receiver.
- */
-- (void)growArrayByAddingAttributionInfosFromArray:(NSArray<MGLAttributionInfo *> *)infos;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLBackgroundStyleLayer.h b/platform/darwin/src/MGLBackgroundStyleLayer.h
deleted file mode 100644
index 31755c8bad..0000000000
--- a/platform/darwin/src/MGLBackgroundStyleLayer.h
+++ /dev/null
@@ -1,149 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `MGLBackgroundStyleLayer` is a style layer that covers the entire map. Use a
- background style layer to configure a color or pattern to show below all other
- map content. If the style’s other layers use the Mapbox Streets source, the
- background style layer is responsible for drawing land, whereas the oceans and
- other bodies of water are drawn by `MGLFillStyleLayer` objects.
-
- A background style layer is typically the bottommost layer in a style, because
- it covers the entire map and can occlude any layers below it. You can therefore
- access it by getting the last item in the `MGLStyle.layers` array.
-
- If the background style layer is transparent or omitted from the style, any
- portion of the map view that does not show another style layer is transparent.
- */
-MGL_EXPORT
-@interface MGLBackgroundStyleLayer : MGLStyleLayer
-
-/**
-Returns a background style layer initialized with an identifier.
-
-After initializing and configuring the style layer, add it to a map view’s
-style using the `-[MGLStyle addLayer:]` or
-`-[MGLStyle insertLayer:belowLayer:]` method.
-
-@param identifier A string that uniquely identifies the source in the style to
-which it is added.
-*/
-- (instancetype)initWithIdentifier:(NSString *)identifier;
-
-#pragma mark - Accessing the Paint Attributes
-
-#if TARGET_OS_IPHONE
-/**
- The color with which the background will be drawn.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `backgroundPattern` is set to
- `nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *backgroundColor;
-#else
-/**
- The color with which the background will be drawn.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `backgroundPattern` is set to
- `nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *backgroundColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `backgroundColor` property.
-
- This property corresponds to the `background-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition backgroundColorTransition;
-
-/**
- The opacity at which the background will be drawn.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *backgroundOpacity;
-
-/**
- The transition affecting any changes to this layer’s `backgroundOpacity` property.
-
- This property corresponds to the `background-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition backgroundOpacityTransition;
-
-/**
- Name of image in style images to use for drawing an image background. For
- seamless patterns, image width and height must be a factor of two (2, 4, 8,
- ..., 512).
-
- You can set this property to an expression containing any of the following:
-
- * Constant string values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *backgroundPattern;
-
-/**
- The transition affecting any changes to this layer’s `backgroundPattern` property.
-
- This property corresponds to the `background-pattern-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition backgroundPatternTransition;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLBackgroundStyleLayer.mm b/platform/darwin/src/MGLBackgroundStyleLayer.mm
deleted file mode 100644
index 053e05c5c4..0000000000
--- a/platform/darwin/src/MGLBackgroundStyleLayer.mm
+++ /dev/null
@@ -1,146 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLBackgroundStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLBackgroundStyleLayer_Private.h"
-
-#include <mbgl/style/layers/background_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-@interface MGLBackgroundStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::BackgroundLayer *rawLayer;
-
-@end
-
-@implementation MGLBackgroundStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@", NSStringFromClass([self class]), identifier);
- auto layer = std::make_unique<mbgl::style::BackgroundLayer>(identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::BackgroundLayer *)rawLayer
-{
- return (mbgl::style::BackgroundLayer *)super.rawLayer;
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setBackgroundColor:(NSExpression *)backgroundColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting backgroundColor: %@", backgroundColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(backgroundColor, false);
- self.rawLayer->setBackgroundColor(mbglValue);
-}
-
-- (NSExpression *)backgroundColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getBackgroundColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultBackgroundColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setBackgroundColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting backgroundColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setBackgroundColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)backgroundColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getBackgroundColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setBackgroundOpacity:(NSExpression *)backgroundOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting backgroundOpacity: %@", backgroundOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(backgroundOpacity, false);
- self.rawLayer->setBackgroundOpacity(mbglValue);
-}
-
-- (NSExpression *)backgroundOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getBackgroundOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultBackgroundOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setBackgroundOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting backgroundOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setBackgroundOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)backgroundOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getBackgroundOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setBackgroundPattern:(NSExpression *)backgroundPattern {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting backgroundPattern: %@", backgroundPattern);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::expression::Image>>(backgroundPattern, false);
- self.rawLayer->setBackgroundPattern(mbglValue);
-}
-
-- (NSExpression *)backgroundPattern {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getBackgroundPattern();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultBackgroundPattern();
- }
- return MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toExpression(propertyValue);
-}
-
-- (void)setBackgroundPatternTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting backgroundPatternTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setBackgroundPatternTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)backgroundPatternTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getBackgroundPatternTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* BackgroundStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLBackgroundStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLBackgroundStyleLayer_Private.h b/platform/darwin/src/MGLBackgroundStyleLayer_Private.h
deleted file mode 100644
index b50a681b41..0000000000
--- a/platform/darwin/src/MGLBackgroundStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/background_layer_factory.hpp>
-
-namespace mbgl {
-
-class BackgroundStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::BackgroundLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLCircleStyleLayer.h b/platform/darwin/src/MGLCircleStyleLayer.h
deleted file mode 100644
index e2b043a729..0000000000
--- a/platform/darwin/src/MGLCircleStyleLayer.h
+++ /dev/null
@@ -1,540 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLVectorStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Orientation of circle when map is pitched.
-
- Values of this type are used in the `MGLCircleStyleLayer.circlePitchAlignment`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLCirclePitchAlignment) {
- /**
- The circle is aligned to the plane of the map.
- */
- MGLCirclePitchAlignmentMap,
- /**
- The circle is aligned to the plane of the viewport.
- */
- MGLCirclePitchAlignmentViewport,
-};
-
-/**
- Controls the scaling behavior of the circle when the map is pitched.
-
- Values of this type are used in the `MGLCircleStyleLayer.circleScaleAlignment`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLCircleScaleAlignment) {
- /**
- Circles are scaled according to their apparent distance to the camera.
- */
- MGLCircleScaleAlignmentMap,
- /**
- Circles are not scaled.
- */
- MGLCircleScaleAlignmentViewport,
-};
-
-/**
- Controls the frame of reference for `MGLCircleStyleLayer.circleTranslation`.
-
- Values of this type are used in the `MGLCircleStyleLayer.circleTranslationAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLCircleTranslationAnchor) {
- /**
- The circle is translated relative to the map.
- */
- MGLCircleTranslationAnchorMap,
- /**
- The circle is translated relative to the viewport.
- */
- MGLCircleTranslationAnchorViewport,
-};
-
-/**
- An `MGLCircleStyleLayer` is a style layer that renders one or more filled
- circles on the map.
-
- Use a circle style layer to configure the visual appearance of point or point
- collection features. These features can come from vector tiles loaded by an
- `MGLVectorTileSource` object, or they can be `MGLPointAnnotation`,
- `MGLPointFeature`, `MGLPointCollection`, or `MGLPointCollectionFeature`
- instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.
-
- A circle style layer renders circles whose radii are measured in screen units.
- To display circles on the map whose radii correspond to real-world distances,
- use many-sided regular polygons and configure their appearance using an
- `MGLFillStyleLayer` object.
-
- You can access an existing circle style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new circle style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/dds-circle-layer/">Data-driven
- circles</a>, <a
- href="https://docs.mapbox.com/ios/maps/examples/shape-collection/">Add multiple
- shapes from a single shape source</a>, and <a
- href="https://docs.mapbox.com/ios/maps/examples/clustering/">Cluster point
- data</a> examples to learn how to add circles to your map using this style
- layer.
-
- ### Example
-
- ```swift
- let layer = MGLCircleStyleLayer(identifier: "circles", source: population)
- layer.sourceLayerIdentifier = "population"
- layer.circleColor = NSExpression(forConstantValue: UIColor.green)
- layer.circleRadius = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.75, %@)",
- [12: 2,
- 22: 180])
- layer.circleOpacity = NSExpression(forConstantValue: 0.7)
- layer.predicate = NSPredicate(format: "%K == %@", "marital-status", "married")
- mapView.style?.addLayer(layer)
- ```
- */
-MGL_EXPORT
-@interface MGLCircleStyleLayer : MGLVectorStyleLayer
-
-/**
- Returns a circle style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Paint Attributes
-
-/**
- Amount to blur the circle. 1 blurs the circle such that only the centerpoint is
- full opacity.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleBlur;
-
-/**
- The transition affecting any changes to this layer’s `circleBlur` property.
-
- This property corresponds to the `circle-blur-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleBlurTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The fill color of the circle.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleColor;
-#else
-/**
- The fill color of the circle.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `circleColor` property.
-
- This property corresponds to the `circle-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleColorTransition;
-
-/**
- The opacity at which the circle will be drawn.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleOpacity;
-
-/**
- The transition affecting any changes to this layer’s `circleOpacity` property.
-
- This property corresponds to the `circle-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleOpacityTransition;
-
-/**
- Orientation of circle when map is pitched.
-
- The default value of this property is an expression that evaluates to
- `viewport`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLCirclePitchAlignment` values
- * Any of the following constant string values:
- * `map`: The circle is aligned to the plane of the map.
- * `viewport`: The circle is aligned to the plane of the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *circlePitchAlignment;
-
-/**
- Circle radius.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `5`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleRadius;
-
-/**
- The transition affecting any changes to this layer’s `circleRadius` property.
-
- This property corresponds to the `circle-radius-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleRadiusTransition;
-
-/**
- Controls the scaling behavior of the circle when the map is pitched.
-
- The default value of this property is an expression that evaluates to `map`.
- Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-circle-pitch-scale"><code>circle-pitch-scale</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLCircleScaleAlignment` values
- * Any of the following constant string values:
- * `map`: Circles are scaled according to their apparent distance to the
- camera.
- * `viewport`: Circles are not scaled.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *circleScaleAlignment;
-
-@property (nonatomic, null_resettable) NSExpression *circlePitchScale __attribute__((unavailable("Use circleScaleAlignment instead.")));
-
-#if TARGET_OS_IPHONE
-/**
- The stroke color of the circle.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleStrokeColor;
-#else
-/**
- The stroke color of the circle.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleStrokeColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `circleStrokeColor` property.
-
- This property corresponds to the `circle-stroke-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleStrokeColorTransition;
-
-/**
- The opacity of the circle's stroke.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleStrokeOpacity;
-
-/**
- The transition affecting any changes to this layer’s `circleStrokeOpacity` property.
-
- This property corresponds to the `circle-stroke-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleStrokeOpacityTransition;
-
-/**
- The width of the circle's stroke. Strokes are placed outside of the
- `circleRadius`.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *circleStrokeWidth;
-
-/**
- The transition affecting any changes to this layer’s `circleStrokeWidth` property.
-
- This property corresponds to the `circle-stroke-width-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleStrokeWidthTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points downward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-circle-translate"><code>circle-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *circleTranslation;
-#else
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points upward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-circle-translate"><code>circle-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *circleTranslation;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `circleTranslation` property.
-
- This property corresponds to the `circle-translate-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition circleTranslationTransition;
-
-@property (nonatomic, null_resettable) NSExpression *circleTranslate __attribute__((unavailable("Use circleTranslation instead.")));
-
-/**
- Controls the frame of reference for `circleTranslation`.
-
- The default value of this property is an expression that evaluates to `map`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `circleTranslation` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-circle-translate-anchor"><code>circle-translate-anchor</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLCircleTranslationAnchor` values
- * Any of the following constant string values:
- * `map`: The circle is translated relative to the map.
- * `viewport`: The circle is translated relative to the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *circleTranslationAnchor;
-
-@property (nonatomic, null_resettable) NSExpression *circleTranslateAnchor __attribute__((unavailable("Use circleTranslationAnchor instead.")));
-
-@end
-
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGLCircleStyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGLCircleStyleLayerAdditions)
-
-#pragma mark Working with Circle Style Layer Attribute Values
-
-/**
- Creates a new value object containing the given `MGLCirclePitchAlignment` enumeration.
-
- @param circlePitchAlignment The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLCirclePitchAlignment:(MGLCirclePitchAlignment)circlePitchAlignment;
-
-/**
- The `MGLCirclePitchAlignment` enumeration representation of the value.
- */
-@property (readonly) MGLCirclePitchAlignment MGLCirclePitchAlignmentValue;
-
-/**
- Creates a new value object containing the given `MGLCircleScaleAlignment` enumeration.
-
- @param circleScaleAlignment The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLCircleScaleAlignment:(MGLCircleScaleAlignment)circleScaleAlignment;
-
-/**
- The `MGLCircleScaleAlignment` enumeration representation of the value.
- */
-@property (readonly) MGLCircleScaleAlignment MGLCircleScaleAlignmentValue;
-
-/**
- Creates a new value object containing the given `MGLCircleTranslationAnchor` enumeration.
-
- @param circleTranslationAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLCircleTranslationAnchor:(MGLCircleTranslationAnchor)circleTranslationAnchor;
-
-/**
- The `MGLCircleTranslationAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLCircleTranslationAnchor MGLCircleTranslationAnchorValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLCircleStyleLayer.mm b/platform/darwin/src/MGLCircleStyleLayer.mm
deleted file mode 100644
index 6f82d85ce1..0000000000
--- a/platform/darwin/src/MGLCircleStyleLayer.mm
+++ /dev/null
@@ -1,477 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLCircleStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLCircleStyleLayer_Private.h"
-
-#include <mbgl/style/layers/circle_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLCirclePitchAlignment, {
- { MGLCirclePitchAlignmentMap, "map" },
- { MGLCirclePitchAlignmentViewport, "viewport" },
- });
-
- MBGL_DEFINE_ENUM(MGLCircleScaleAlignment, {
- { MGLCircleScaleAlignmentMap, "map" },
- { MGLCircleScaleAlignmentViewport, "viewport" },
- });
-
- MBGL_DEFINE_ENUM(MGLCircleTranslationAnchor, {
- { MGLCircleTranslationAnchorMap, "map" },
- { MGLCircleTranslationAnchorViewport, "viewport" },
- });
-
-}
-
-@interface MGLCircleStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::CircleLayer *rawLayer;
-
-@end
-
-@implementation MGLCircleStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::CircleLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::CircleLayer *)rawLayer
-{
- return (mbgl::style::CircleLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-- (NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- auto layerID = self.rawLayer->getSourceLayer();
- return layerID.empty() ? nil : @(layerID.c_str());
-}
-
-- (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting sourceLayerIdentifier: %@", sourceLayerIdentifier);
-
- self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: "");
-}
-
-- (void)setPredicate:(NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting predicate: %@", predicate);
-
- self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::Filter());
-}
-
-- (NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
-
- return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()];
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setCircleBlur:(NSExpression *)circleBlur {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleBlur: %@", circleBlur);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(circleBlur, true);
- self.rawLayer->setCircleBlur(mbglValue);
-}
-
-- (NSExpression *)circleBlur {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleBlur();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleBlur();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setCircleBlurTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleBlurTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleBlurTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleBlurTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleBlurTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCircleColor:(NSExpression *)circleColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleColor: %@", circleColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(circleColor, true);
- self.rawLayer->setCircleColor(mbglValue);
-}
-
-- (NSExpression *)circleColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setCircleColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCircleOpacity:(NSExpression *)circleOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleOpacity: %@", circleOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(circleOpacity, true);
- self.rawLayer->setCircleOpacity(mbglValue);
-}
-
-- (NSExpression *)circleOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setCircleOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCirclePitchAlignment:(NSExpression *)circlePitchAlignment {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circlePitchAlignment: %@", circlePitchAlignment);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLCirclePitchAlignment>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::AlignmentType>>(circlePitchAlignment, false);
- self.rawLayer->setCirclePitchAlignment(mbglValue);
-}
-
-- (NSExpression *)circlePitchAlignment {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCirclePitchAlignment();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCirclePitchAlignment();
- }
- return MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLCirclePitchAlignment>().toExpression(propertyValue);
-}
-
-- (void)setCircleRadius:(NSExpression *)circleRadius {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleRadius: %@", circleRadius);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(circleRadius, true);
- self.rawLayer->setCircleRadius(mbglValue);
-}
-
-- (NSExpression *)circleRadius {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleRadius();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleRadius();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setCircleRadiusTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleRadiusTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleRadiusTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleRadiusTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleRadiusTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCircleScaleAlignment:(NSExpression *)circleScaleAlignment {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleScaleAlignment: %@", circleScaleAlignment);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::CirclePitchScaleType, NSValue *, mbgl::style::CirclePitchScaleType, MGLCircleScaleAlignment>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::CirclePitchScaleType>>(circleScaleAlignment, false);
- self.rawLayer->setCirclePitchScale(mbglValue);
-}
-
-- (NSExpression *)circleScaleAlignment {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCirclePitchScale();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCirclePitchScale();
- }
- return MGLStyleValueTransformer<mbgl::style::CirclePitchScaleType, NSValue *, mbgl::style::CirclePitchScaleType, MGLCircleScaleAlignment>().toExpression(propertyValue);
-}
-
-- (void)setCirclePitchScale:(NSExpression *)circlePitchScale {
-}
-
-- (NSExpression *)circlePitchScale {
- return self.circleScaleAlignment;
-}
-
-- (void)setCircleStrokeColor:(NSExpression *)circleStrokeColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleStrokeColor: %@", circleStrokeColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(circleStrokeColor, true);
- self.rawLayer->setCircleStrokeColor(mbglValue);
-}
-
-- (NSExpression *)circleStrokeColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleStrokeColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleStrokeColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setCircleStrokeColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleStrokeColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleStrokeColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleStrokeColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleStrokeColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCircleStrokeOpacity:(NSExpression *)circleStrokeOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleStrokeOpacity: %@", circleStrokeOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(circleStrokeOpacity, true);
- self.rawLayer->setCircleStrokeOpacity(mbglValue);
-}
-
-- (NSExpression *)circleStrokeOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleStrokeOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleStrokeOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setCircleStrokeOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleStrokeOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleStrokeOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleStrokeOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleStrokeOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCircleStrokeWidth:(NSExpression *)circleStrokeWidth {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleStrokeWidth: %@", circleStrokeWidth);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(circleStrokeWidth, true);
- self.rawLayer->setCircleStrokeWidth(mbglValue);
-}
-
-- (NSExpression *)circleStrokeWidth {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleStrokeWidth();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleStrokeWidth();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setCircleStrokeWidthTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleStrokeWidthTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleStrokeWidthTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleStrokeWidthTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleStrokeWidthTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCircleTranslation:(NSExpression *)circleTranslation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleTranslation: %@", circleTranslation);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(circleTranslation, false);
- self.rawLayer->setCircleTranslate(mbglValue);
-}
-
-- (NSExpression *)circleTranslation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleTranslate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleTranslate();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setCircleTranslationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleTranslationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setCircleTranslateTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)circleTranslationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleTranslateTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setCircleTranslate:(NSExpression *)circleTranslate {
-}
-
-- (NSExpression *)circleTranslate {
- return self.circleTranslation;
-}
-
-- (void)setCircleTranslationAnchor:(NSExpression *)circleTranslationAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting circleTranslationAnchor: %@", circleTranslationAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLCircleTranslationAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType>>(circleTranslationAnchor, false);
- self.rawLayer->setCircleTranslateAnchor(mbglValue);
-}
-
-- (NSExpression *)circleTranslationAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getCircleTranslateAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultCircleTranslateAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLCircleTranslationAnchor>().toExpression(propertyValue);
-}
-
-- (void)setCircleTranslateAnchor:(NSExpression *)circleTranslateAnchor {
-}
-
-- (NSExpression *)circleTranslateAnchor {
- return self.circleTranslationAnchor;
-}
-
-@end
-
-@implementation NSValue (MGLCircleStyleLayerAdditions)
-
-+ (NSValue *)valueWithMGLCirclePitchAlignment:(MGLCirclePitchAlignment)circlePitchAlignment {
- return [NSValue value:&circlePitchAlignment withObjCType:@encode(MGLCirclePitchAlignment)];
-}
-
-- (MGLCirclePitchAlignment)MGLCirclePitchAlignmentValue {
- MGLCirclePitchAlignment circlePitchAlignment;
- [self getValue:&circlePitchAlignment];
- return circlePitchAlignment;
-}
-
-+ (NSValue *)valueWithMGLCircleScaleAlignment:(MGLCircleScaleAlignment)circleScaleAlignment {
- return [NSValue value:&circleScaleAlignment withObjCType:@encode(MGLCircleScaleAlignment)];
-}
-
-- (MGLCircleScaleAlignment)MGLCircleScaleAlignmentValue {
- MGLCircleScaleAlignment circleScaleAlignment;
- [self getValue:&circleScaleAlignment];
- return circleScaleAlignment;
-}
-
-+ (NSValue *)valueWithMGLCircleTranslationAnchor:(MGLCircleTranslationAnchor)circleTranslationAnchor {
- return [NSValue value:&circleTranslationAnchor withObjCType:@encode(MGLCircleTranslationAnchor)];
-}
-
-- (MGLCircleTranslationAnchor)MGLCircleTranslationAnchorValue {
- MGLCircleTranslationAnchor circleTranslationAnchor;
- [self getValue:&circleTranslationAnchor];
- return circleTranslationAnchor;
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* CircleStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLCircleStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLCircleStyleLayer_Private.h b/platform/darwin/src/MGLCircleStyleLayer_Private.h
deleted file mode 100644
index 788de6274f..0000000000
--- a/platform/darwin/src/MGLCircleStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/circle_layer_factory.hpp>
-
-namespace mbgl {
-
-class CircleStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::CircleLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLClockDirectionFormatter.h b/platform/darwin/src/MGLClockDirectionFormatter.h
deleted file mode 100644
index 86a9452846..0000000000
--- a/platform/darwin/src/MGLClockDirectionFormatter.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLClockDirectionFormatter` class provides properly formatted descriptions
- of headings relative to the user, known as <i>clock positions</i>. For
- example, a value of `90` may be formatted as “3 o’clock”, depending on the
- locale.
-
- Use this class to create localized heading strings when displaying directions
- relative to the user’s current location and heading. To format a direction
- irrespective of the user’s orientation, use `MGLCompassDirectionFormatter`
- instead.
- */
-MGL_EXPORT
-@interface MGLClockDirectionFormatter : NSFormatter
-
-/**
- The unit style used by this formatter.
-
- This property defaults to `NSFormattingUnitStyleMedium`.
- */
-@property (nonatomic) NSFormattingUnitStyle unitStyle;
-
-/**
- Returns a clock position string for the provided value.
-
- @param direction The heading, measured in degrees, where 0° means “straight
- ahead” and 90° means “directly to your right”.
- @return The clock position string appropriately formatted for the receiver’s
- locale.
- */
-- (NSString *)stringFromDirection:(CLLocationDirection)direction;
-
-/**
- This method is not supported for the `MGLDirectionFormatter` class.
- */
-- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLClockDirectionFormatter.m b/platform/darwin/src/MGLClockDirectionFormatter.m
deleted file mode 100644
index 922a1db9a2..0000000000
--- a/platform/darwin/src/MGLClockDirectionFormatter.m
+++ /dev/null
@@ -1,60 +0,0 @@
-#import "MGLClockDirectionFormatter.h"
-
-#import "NSBundle+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#define wrap(value, min, max) \
- (fmod((fmod((value - min), (max - min)) + (max - min)), (max - min)) + min)
-
-@implementation MGLClockDirectionFormatter {
- NSNumberFormatter *_numberFormatter;
-}
-
-- (instancetype)init {
- if (self = [super init]) {
- _unitStyle = NSFormattingUnitStyleMedium;
- _numberFormatter = [[NSNumberFormatter alloc] init];
- _numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
- }
- return self;
-}
-
-- (NSString *)stringFromDirection:(CLLocationDirection)direction {
- NSInteger hour = round(wrap(direction, 0, 360) / 360 * 12);
- if (hour == 0) {
- hour = 12;
- }
- NSString *format;
- switch (self.unitStyle) {
- case NSFormattingUnitStyleShort:
- format = NSLocalizedStringWithDefaultValue(@"CLOCK_FMT_SHORT", @"Foundation", nil, @"%@:00", @"Clock position format, short: {hours}:00");
- break;
-
- case NSFormattingUnitStyleMedium:
- format = NSLocalizedStringWithDefaultValue(@"CLOCK_FMT_MEDIUM", @"Foundation", nil, @"%@ o’clock", @"Clock position format, medium: {hours} o’clock");
-
- break;
-
- case NSFormattingUnitStyleLong:
- format = NSLocalizedStringWithDefaultValue(@"CLOCK_FMT_LONG", @"Foundation", nil, @"%@ o’clock", @"Clock position format, long: {hours} o’clock");
- break;
-
- default:
- break;
- }
- return [NSString stringWithFormat:format, [_numberFormatter stringFromNumber:@(hour)]];
-}
-
-- (nullable NSString *)stringForObjectValue:(id)obj {
- if (![obj isKindOfClass:[NSValue class]]) {
- return nil;
- }
- return [self stringFromDirection:[obj doubleValue]];
-}
-
-- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error {
- MGLAssert(NO, @"-getObjectValue:forString:errorDescription: has not been implemented");
- return NO;
-}
-
-@end
diff --git a/platform/darwin/src/MGLCluster.h b/platform/darwin/src/MGLCluster.h
deleted file mode 100644
index 2b99119b26..0000000000
--- a/platform/darwin/src/MGLCluster.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#import "MGLFoundation.h"
-
-@protocol MGLFeature;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `NSUInteger` constant used to indicate an invalid cluster identifier.
- This indicates a missing cluster feature.
- */
-FOUNDATION_EXTERN MGL_EXPORT const NSUInteger MGLClusterIdentifierInvalid;
-
-/**
- A protocol that feature subclasses (i.e. those already conforming to
- the `MGLFeature` protocol) conform to if they represent clusters.
-
- Currently the only class that conforms to `MGLCluster` is
- `MGLPointFeatureCluster` (a subclass of `MGLPointFeature`).
-
- To check if a feature is a cluster, check conformity to `MGLCluster`, for
- example:
-
- ```swift
- let shape = try! MGLShape(data: clusterShapeData, encoding: String.Encoding.utf8.rawValue)
-
- guard let pointFeature = shape as? MGLPointFeature else {
- throw ExampleError.unexpectedFeatureType
- }
-
- // Check for cluster conformance
- guard let cluster = pointFeature as? MGLCluster else {
- throw ExampleError.featureIsNotACluster
- }
-
- // Currently the only supported class that conforms to `MGLCluster` is
- // `MGLPointFeatureCluster`
- guard cluster is MGLPointFeatureCluster else {
- throw ExampleError.unexpectedFeatureType
- }
- ```
- */
-MGL_EXPORT
-@protocol MGLCluster <MGLFeature>
-
-/** The identifier for the cluster. */
-@property (nonatomic, readonly) NSUInteger clusterIdentifier;
-
-/** The number of points within this cluster */
-@property (nonatomic, readonly) NSUInteger clusterPointCount;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLCompassDirectionFormatter.h b/platform/darwin/src/MGLCompassDirectionFormatter.h
deleted file mode 100644
index b4a3087509..0000000000
--- a/platform/darwin/src/MGLCompassDirectionFormatter.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLCompassDirectionFormatter` class provides properly formatted
- descriptions of absolute headings. For example, a value of `90` may be
- formatted as “east”, depending on the locale.
-
- Use this class to create localized heading strings when displaying directions
- irrespective of the user’s current location. To format a direction relative to
- the user’s current location, use `MGLClockDirectionFormatter` instead.
- */
-MGL_EXPORT
-@interface MGLCompassDirectionFormatter : NSFormatter
-
-/**
- The unit style used by this formatter.
-
- This property defaults to `NSFormattingUnitStyleMedium`.
- */
-@property (nonatomic) NSFormattingUnitStyle unitStyle;
-
-/**
- Returns a heading string for the provided value.
-
- @param direction The heading, measured in degrees, where 0° means “due north”
- and 90° means “due east”.
- @return The heading string appropriately formatted for the formatter’s locale.
- */
-- (NSString *)stringFromDirection:(CLLocationDirection)direction;
-
-/**
- This method is not supported for the `MGLDirectionFormatter` class.
- */
-- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLCompassDirectionFormatter.m b/platform/darwin/src/MGLCompassDirectionFormatter.m
deleted file mode 100644
index 99de32b777..0000000000
--- a/platform/darwin/src/MGLCompassDirectionFormatter.m
+++ /dev/null
@@ -1,125 +0,0 @@
-#import "MGLCompassDirectionFormatter.h"
-
-#import "NSBundle+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#define wrap(value, min, max) \
- (fmod((fmod((value - min), (max - min)) + (max - min)), (max - min)) + min)
-
-@implementation MGLCompassDirectionFormatter
-
-- (instancetype)init {
- if (self = [super init]) {
- _unitStyle = NSFormattingUnitStyleMedium;
- }
- return self;
-}
-
-- (NSString *)stringFromDirection:(CLLocationDirection)direction {
- static NSArray<NSString *> *shortStrings;
- static NSArray<NSString *> *longStrings;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- shortStrings = @[
- NSLocalizedStringWithDefaultValue(@"COMPASS_N_SHORT", @"Foundation", nil, @"N", @"North, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NbE_SHORT", @"Foundation", nil, @"NbE", @"North by east, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NNE_SHORT", @"Foundation", nil, @"NNE", @"North-northeast, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NEbN_SHORT", @"Foundation", nil, @"NEbN", @"Northeast by north, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NE_SHORT", @"Foundation", nil, @"NE", @"Northeast, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NEbE_SHORT", @"Foundation", nil, @"NEbE", @"Northeast by east, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_ENE_SHORT", @"Foundation", nil, @"ENE", @"East-northeast, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_EbN_SHORT", @"Foundation", nil, @"EbN", @"East by north, short"),
-
- NSLocalizedStringWithDefaultValue(@"COMPASS_E_SHORT", @"Foundation", nil, @"E", @"East, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_EbS_SHORT", @"Foundation", nil, @"EbS", @"East by south, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_ESE_SHORT", @"Foundation", nil, @"ESE", @"East-southeast, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SEbE_SHORT", @"Foundation", nil, @"SEbE", @"Southeast by east, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SE_SHORT", @"Foundation", nil, @"SE", @"Southeast, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SEbS_SHORT", @"Foundation", nil, @"SEbS", @"Southeast by south, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SSE_SHORT", @"Foundation", nil, @"SSE", @"South-southeast, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SbE_SHORT", @"Foundation", nil, @"SbE", @"South by east, short"),
-
- NSLocalizedStringWithDefaultValue(@"COMPASS_S_SHORT", @"Foundation", nil, @"S", @"South, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SbW_SHORT", @"Foundation", nil, @"SbW", @"South by west, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SSW_SHORT", @"Foundation", nil, @"SSW", @"South-southwest, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SWbS_SHORT", @"Foundation", nil, @"SWbS", @"Southwest by south, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SW_SHORT", @"Foundation", nil, @"SW", @"Southwest, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SWbW_SHORT", @"Foundation", nil, @"SWbW", @"Southwest by west, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WSW_SHORT", @"Foundation", nil, @"WSW", @"West-southwest, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WbS_SHORT", @"Foundation", nil, @"WbS", @"West by south, short"),
-
- NSLocalizedStringWithDefaultValue(@"COMPASS_W_SHORT", @"Foundation", nil, @"W", @"West, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WbN_SHORT", @"Foundation", nil, @"WbN", @"West by north, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WNW_SHORT", @"Foundation", nil, @"WNW", @"West-northwest, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NWbW_SHORT", @"Foundation", nil, @"NWbW", @"Northwest by west, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NW_SHORT", @"Foundation", nil, @"NW", @"Northwest, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NWbN_SHORT", @"Foundation", nil, @"NWbN", @"Northwest by north, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NNW_SHORT", @"Foundation", nil, @"NNW", @"North-northwest, short"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NbW_SHORT", @"Foundation", nil, @"NbW", @"North by west, short"),
- ];
-
- longStrings = @[
- NSLocalizedStringWithDefaultValue(@"COMPASS_N_LONG", @"Foundation", nil, @"north", @"North, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NbE_LONG", @"Foundation", nil, @"north by east", @"North by east, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NNE_LONG", @"Foundation", nil, @"north-northeast", @"North-northeast, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NEbN_LONG", @"Foundation", nil, @"northeast by north", @"Northeast by north, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NE_LONG", @"Foundation", nil, @"northeast", @"Northeast, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NEbE_LONG", @"Foundation", nil, @"northeast by east", @"Northeast by east, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_ENE_LONG", @"Foundation", nil, @"east-northeast", @"East-northeast, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_EbN_LONG", @"Foundation", nil, @"east by north", @"East by north, long"),
-
- NSLocalizedStringWithDefaultValue(@"COMPASS_E_LONG", @"Foundation", nil, @"east", @"East, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_EbS_LONG", @"Foundation", nil, @"east by south", @"East by south, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_ESE_LONG", @"Foundation", nil, @"east-southeast", @"East-southeast, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SEbE_LONG", @"Foundation", nil, @"southeast by east", @"Southeast by east, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SE_LONG", @"Foundation", nil, @"southeast", @"Southeast, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SEbS_LONG", @"Foundation", nil, @"southeast by south", @"Southeast by south, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SSE_LONG", @"Foundation", nil, @"south-southeast", @"South-southeast, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SbE_LONG", @"Foundation", nil, @"south by east", @"South by east, long"),
-
- NSLocalizedStringWithDefaultValue(@"COMPASS_S_LONG", @"Foundation", nil, @"south", @"South, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SbW_LONG", @"Foundation", nil, @"south by west", @"South by west, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SSW_LONG", @"Foundation", nil, @"south-southwest", @"South-southwest, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SWbS_LONG", @"Foundation", nil, @"southwest by south", @"Southwest by south, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SW_LONG", @"Foundation", nil, @"southwest", @"Southwest, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_SWbW_LONG", @"Foundation", nil, @"southwest by west", @"Southwest by west, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WSW_LONG", @"Foundation", nil, @"west-southwest", @"West-southwest, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WbS_LONG", @"Foundation", nil, @"west by south", @"West by south, long"),
-
- NSLocalizedStringWithDefaultValue(@"COMPASS_W_LONG", @"Foundation", nil, @"west", @"West, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WbN_LONG", @"Foundation", nil, @"west by north", @"West by north, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_WNW_LONG", @"Foundation", nil, @"west-northwest", @"West-northwest, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NWbW_LONG", @"Foundation", nil, @"northwest by west", @"Northwest by west, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NW_LONG", @"Foundation", nil, @"northwest", @"Northwest, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NWbN_LONG", @"Foundation", nil, @"northwest by north", @"Northwest by north, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NNW_LONG", @"Foundation", nil, @"north-northwest", @"North-northwest, long"),
- NSLocalizedStringWithDefaultValue(@"COMPASS_NbW_LONG", @"Foundation", nil, @"north by west", @"North by west, long"),
- ];
-
- MGLAssert(shortStrings.count == longStrings.count, @"Long and short compass direction string arrays must have the same size.");
- });
-
- NSInteger cardinalPoint = wrap(round(wrap(direction, 0, 360) / 360 * shortStrings.count), 0, shortStrings.count);
- switch (self.unitStyle) {
- case NSFormattingUnitStyleShort:
- return shortStrings[cardinalPoint];
-
- case NSFormattingUnitStyleMedium:
- case NSFormattingUnitStyleLong:
- return longStrings[cardinalPoint];
- }
-}
-
-- (nullable NSString *)stringForObjectValue:(id)obj {
- if (![obj isKindOfClass:[NSValue class]]) {
- return nil;
- }
- return [self stringFromDirection:[obj doubleValue]];
-}
-
-- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error {
- MGLAssert(NO, @"-getObjectValue:forString:errorDescription: has not been implemented");
- return NO;
-}
-
-@end
diff --git a/platform/darwin/src/MGLComputedShapeSource.h b/platform/darwin/src/MGLComputedShapeSource.h
deleted file mode 100644
index 84dc4801a7..0000000000
--- a/platform/darwin/src/MGLComputedShapeSource.h
+++ /dev/null
@@ -1,167 +0,0 @@
-#import "MGLFoundation.h"
-#import "MGLGeometry.h"
-#import "MGLTypes.h"
-#import "MGLShapeSource.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLFeature;
-
-/**
- An `NSNumber` object containing a Boolean value; specifies whether the shape of
- an `MGLComputedShapeSource` should be wrapped to accomodate coordinates with
- longitudes beyond −180 and 180. The default value is `NO`.
-
- Setting this option to `YES` affects rendering performance.
-
- This option is used with the `MGLComputedShapeSource` class; it is ignored when
- creating an `MGLShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionWrapsCoordinates;
-
-/**
- An `NSNumber` object containing a Boolean value; specifies whether the shape of
- an `MGLComputedShapeSource` should be clipped at the edge of each tile. The
- default value is `NO`.
-
- Setting this option to `YES` affects rendering performance. Use this option to
- clip `MGLPolyline`s and `MGLPolygon`s at tile boundaries without artifacts.
-
- This option is used with the `MGLComputedShapeSource` class; it is ignored when
- creating an `MGLShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionClipsCoordinates;
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLInvalidDatasourceException;
-
-/**
- Data source for `MGLComputedShapeSource`. This protocol defines two optional methods for fetching
- data, one based on tile coordinates, and one based on a bounding box. Classes that implement this
- protocol must implement one, and only one of the methods. Methods on this protocol will not be
- called on main thread, they will be called on the caller's `requestQueue`.
- */
-@protocol MGLComputedShapeSourceDataSource <NSObject>
-
-@optional
-/**
- Fetch features for a tile. This method will not be invoked on the main queue, it
- will be invoked on the caller's `requestQueue`.
- @param x Tile X coordinate.
- @param y Tile Y coordinate.
- @param zoomLevel Tile zoom level.
- */
-- (NSArray<MGLShape <MGLFeature> *>*)featuresInTileAtX:(NSUInteger)x y:(NSUInteger)y zoomLevel:(NSUInteger)zoomLevel;
-
-/**
- Fetch features for a tile. This method will not be invoked on the main queue, it
- will be invoked on the caller's `requestQueue`.
- @param bounds The bounds to fetch data for.
- @param zoomLevel Tile zoom level.
- */
-- (NSArray<MGLShape <MGLFeature> *>*)featuresInCoordinateBounds:(MGLCoordinateBounds)bounds zoomLevel:(NSUInteger)zoomLevel;
-
-@end
-
-/**
- `MGLComputedShapeSource` is a map content source that supplies vector shapes,
- one tile at a time, to be shown on the map on demand. You implement a class
- conforming to the `MGLComputedShapeSourceDataSource` protocol that returns
- instances of `MGLShape` or `MGLFeature`, then add a computed shape source to an
- `MGLStyle` object along with an `MGLVectorStyleLayer` object. The vector style
- layer defines the appearance of any content supplied by the computed shape
- source.
-
- `MGLComputedShapeSource` is similar to `MGLShapeSource` but is optimized for
- data sets that change dynamically or are too large to fit completely in memory.
- It is also useful for data that is divided into tiles in a format other than
- <a href="https://www.mapbox.com/vector-tiles/">Mapbox Vector Tiles</a>. For
- <a href="http://geojson.org/">GeoJSON</a> data, use the `MGLShapeSource` class.
- For static tiles or Mapbox Vector Tiles, use the `MGLVectorTileSource` class.
-
- You can add and remove sources dynamically using methods such as
- `-[MGLStyle addSource:]` and `-[MGLStyle sourceWithIdentifier:]`. This class
- cannot be represented in a style JSON file; you must add it ot the style at
- runtime.
- */
-MGL_EXPORT
-@interface MGLComputedShapeSource : MGLSource
-
-/**
- Returns a custom shape data source initialized with an identifier, and a
- dictionary of options for the source according to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson">style
- specification</a>.
-
- This class supports the following options:
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`,
- `MGLShapeSourceOptionSimplificationTolerance`,
- `MGLShapeSourceOptionWrapsCoordinates`, and
- `MGLShapeSourceOptionClipsCoordinates`. Shapes provided by a computed
- shape source cannot be clustered.
-
- @param identifier A string that uniquely identifies the source.
- @param options An `NSDictionary` of options for this source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options NS_DESIGNATED_INITIALIZER;
-
-/**
- Returns a custom shape data source initialized with an identifier, data source, and a
- dictionary of options for the source according to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson">style
- specification</a>.
-
- This class supports the following options:
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`,
- `MGLShapeSourceOptionSimplificationTolerance`,
- `MGLShapeSourceOptionWrapsCoordinates`, and
- `MGLShapeSourceOptionClipsCoordinates`. Shapes provided by a computed shape
- source cannot be clustered.
-
- @param identifier A string that uniquely identifies the source.
- @param options An `NSDictionary` of options for this source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier dataSource:(id<MGLComputedShapeSourceDataSource>)dataSource options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options;
-
-/**
- Invalidates all the features and properties intersecting with or contained in
- the specified bounds. New fetch requests will immediately be invoked on the
- `MGLComputedShapeSourceDataSource`.
- @param bounds Coordinate bounds to invalidate.
- */
-- (void) invalidateBounds:(MGLCoordinateBounds)bounds;
-
-/**
- Invalidates all the feautres and properties of a given tile. A new fetch request
- will immediately be invoked on the `MGLComputedShapeSourceDataSource`.
- @param x Tile X coordinate.
- @param y Tile Y coordinate.
- @param zoomLevel Tile zoom level.
- */
-- (void) invalidateTileAtX:(NSUInteger)x y:(NSUInteger)y zoomLevel:(NSUInteger)zoomLevel;
-
-/**
- Set a new set of features for a tile. This method can be invkoed from background threads.
- For best performance, use this method only to update tiles that have already been requested
- through `MGLComputedShapeSourceDataSource.`
- @param features Features for the tile.
- @param x Tile X coordinate.
- @param y Tile Y coordinate.
- @param zoomLevel Tile zoom level.
- */
-- (void) setFeatures:(NSArray<MGLShape <MGLFeature> *>*)features inTileAtX:(NSUInteger)x y:(NSUInteger)y zoomLevel:(NSUInteger)zoomLevel;
-
-/**
- An object that implements the `MGLComputedShapeSourceDataSource` protocol that will be queried for tile data.
- */
-@property (nonatomic, weak, nullable) id<MGLComputedShapeSourceDataSource> dataSource;
-
-/**
- A queue that calls to the data source will be made on.
- */
-@property (nonatomic, readonly) NSOperationQueue *requestQueue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLComputedShapeSource.mm b/platform/darwin/src/MGLComputedShapeSource.mm
deleted file mode 100644
index ceb83b3740..0000000000
--- a/platform/darwin/src/MGLComputedShapeSource.mm
+++ /dev/null
@@ -1,249 +0,0 @@
-#import "MGLComputedShapeSource_Private.h"
-
-#import "MGLMapView_Private.h"
-#import "MGLSource_Private.h"
-#import "MGLShape_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLShapeCollection.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/style/sources/custom_geometry_source.hpp>
-#include <mbgl/tile/tile_id.hpp>
-#include <mbgl/util/geojson.hpp>
-
-const MGLExceptionName MGLInvalidDatasourceException = @"MGLInvalidDatasourceException";
-
-const MGLShapeSourceOption MGLShapeSourceOptionWrapsCoordinates = @"MGLShapeSourceOptionWrapsCoordinates";
-const MGLShapeSourceOption MGLShapeSourceOptionClipsCoordinates = @"MGLShapeSourceOptionClipsCoordinates";
-
-mbgl::style::CustomGeometrySource::Options MBGLCustomGeometrySourceOptionsFromDictionary(NSDictionary<MGLShapeSourceOption, id> *options) {
- mbgl::style::CustomGeometrySource::Options sourceOptions;
-
- if (NSNumber *value = options[MGLShapeSourceOptionMinimumZoomLevel]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionMinimumZoomLevel must be an NSNumber."];
- }
- sourceOptions.zoomRange.min = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionMaximumZoomLevel]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionMaximumZoomLevel must be an NSNumber."];
- }
- sourceOptions.zoomRange.max = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionBuffer]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionBuffer must be an NSNumber."];
- }
- sourceOptions.tileOptions.buffer = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionSimplificationTolerance]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionSimplificationTolerance must be an NSNumber."];
- }
- sourceOptions.tileOptions.tolerance = value.doubleValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionWrapsCoordinates]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionWrapsCoordinates must be an NSNumber."];
- }
- sourceOptions.tileOptions.wrap = value.boolValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionClipsCoordinates]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClipsCoordinates must be an NSNumber."];
- }
- sourceOptions.tileOptions.clip = value.boolValue;
- }
-
- return sourceOptions;
-}
-
-@interface MGLComputedShapeSource () {
- std::unique_ptr<mbgl::style::CustomGeometrySource> _pendingSource;
-}
-
-@property (nonatomic, readwrite) NSDictionary *options;
-@property (nonatomic, assign) BOOL dataSourceImplementsFeaturesForTile;
-@property (nonatomic, assign) BOOL dataSourceImplementsFeaturesForBounds;
-
-@end
-
-@interface MGLComputedShapeSourceFetchOperation : NSOperation
-
-@property (nonatomic, readonly) uint8_t z;
-@property (nonatomic, readonly) uint32_t x;
-@property (nonatomic, readonly) uint32_t y;
-@property (nonatomic, assign) BOOL dataSourceImplementsFeaturesForTile;
-@property (nonatomic, assign) BOOL dataSourceImplementsFeaturesForBounds;
-@property (nonatomic, weak, nullable) id<MGLComputedShapeSourceDataSource> dataSource;
-@property (nonatomic, nullable) mbgl::style::CustomGeometrySource *rawSource;
-
-- (instancetype)initForSource:(MGLComputedShapeSource*)source tile:(const mbgl::CanonicalTileID&)tileId;
-
-@end
-
-@implementation MGLComputedShapeSourceFetchOperation
-
-- (instancetype)initForSource:(MGLComputedShapeSource*)source tile:(const mbgl::CanonicalTileID&)tileID {
- self = [super init];
- _z = tileID.z;
- _x = tileID.x;
- _y = tileID.y;
- _dataSourceImplementsFeaturesForTile = source.dataSourceImplementsFeaturesForTile;
- _dataSourceImplementsFeaturesForBounds = source.dataSourceImplementsFeaturesForBounds;
- _dataSource = source.dataSource;
- mbgl::style::CustomGeometrySource *rawSource = static_cast<mbgl::style::CustomGeometrySource *>(source.rawSource);
- _rawSource = rawSource;
- return self;
-}
-
-- (void)main {
- if ([self isCancelled]) {
- return;
- }
-
- NSArray<MGLShape <MGLFeature> *> *data;
- if(!self.dataSource) {
- data = nil;
- } else if(self.dataSourceImplementsFeaturesForTile) {
- data = [self.dataSource featuresInTileAtX:self.x
- y:self.y
- zoomLevel:self.z];
- } else {
- mbgl::CanonicalTileID tileID = mbgl::CanonicalTileID(self.z, self.x, self.y);
- mbgl::LatLngBounds tileBounds = mbgl::LatLngBounds(tileID);
- data = [self.dataSource featuresInCoordinateBounds:MGLCoordinateBoundsFromLatLngBounds(tileBounds)
- zoomLevel:self.z];
- }
-
- if(![self isCancelled]) {
- mbgl::FeatureCollection featureCollection;
- featureCollection.reserve(data.count);
- for (MGLShape <MGLFeature> * feature in data) {
- if ([feature isMemberOfClass:[MGLShapeCollection class]]) {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSLog(@"MGLShapeCollection initialized with MGLFeatures will not retain attributes."
- @"Use MGLShapeCollectionFeature to retain attributes instead."
- @"This will be logged only once.");
- });
- }
- mbgl::GeoJSONFeature geoJsonObject = [feature geoJSONObject].get<mbgl::GeoJSONFeature>();
- featureCollection.push_back(geoJsonObject);
- }
- const auto geojson = mbgl::GeoJSON{featureCollection};
- if(![self isCancelled] && self.rawSource) {
- self.rawSource->setTileData(mbgl::CanonicalTileID(self.z, self.x, self.y), geojson);
- }
- }
-}
-
-- (void)cancel {
- [super cancel];
- self.rawSource = NULL;
-}
-
-@end
-
-@implementation MGLComputedShapeSource
-
-- (instancetype)initWithIdentifier:(NSString *)identifier options:(NSDictionary<MGLShapeSourceOption, id> *)options {
- NSOperationQueue *requestQueue = [[NSOperationQueue alloc] init];
- requestQueue.name = [NSString stringWithFormat:@"mgl.MGLComputedShapeSource.%@", identifier];
- requestQueue.qualityOfService = NSQualityOfServiceUtility;
- requestQueue.maxConcurrentOperationCount = 4;
-
- auto sourceOptions = MBGLCustomGeometrySourceOptionsFromDictionary(options);
- sourceOptions.fetchTileFunction = ^void(const mbgl::CanonicalTileID& tileID) {
- NSOperation *operation = [[MGLComputedShapeSourceFetchOperation alloc] initForSource:self tile:tileID];
- [requestQueue addOperation:operation];
- };
-
- sourceOptions.cancelTileFunction = ^void(const mbgl::CanonicalTileID& tileID) {
- for (MGLComputedShapeSourceFetchOperation *operation in requestQueue.operations) {
- if (operation.x == tileID.x && operation.y == tileID.y && operation.z == tileID.z) {
- [operation cancel];
- }
- }
- };
-
- auto source = std::make_unique<mbgl::style::CustomGeometrySource>(identifier.UTF8String, sourceOptions);
-
- if (self = [super initWithPendingSource:std::move(source)]) {
- _requestQueue = requestQueue;
- }
- return self;
-}
-
-- (instancetype)initWithIdentifier:(NSString *)identifier dataSource:(id<MGLComputedShapeSourceDataSource>)dataSource options:(NSDictionary<MGLShapeSourceOption, id> *)options {
- if (self = [self initWithIdentifier:identifier options:options]) {
- [self setDataSource:dataSource];
- }
- return self;
-}
-
-- (void)dealloc {
- [self.requestQueue cancelAllOperations];
-}
-
-- (void)setFeatures:(NSArray<MGLShape <MGLFeature> *>*)features inTileAtX:(NSUInteger)x y:(NSUInteger)y zoomLevel:(NSUInteger)zoomLevel {
- MGLAssertStyleSourceIsValid();
- mbgl::CanonicalTileID tileID = mbgl::CanonicalTileID((uint8_t)zoomLevel, (uint32_t)x, (uint32_t)y);
- mbgl::FeatureCollection featureCollection;
- featureCollection.reserve(features.count);
- for (MGLShape <MGLFeature> * feature in features) {
- mbgl::GeoJSONFeature geoJsonObject = [feature geoJSONObject].get<mbgl::GeoJSONFeature>();
- featureCollection.push_back(geoJsonObject);
- if ([feature isMemberOfClass:[MGLShapeCollection class]]) {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSLog(@"MGLShapeCollection initialized with MGLFeatures will not retain attributes."
- @"Use MGLShapeCollectionFeature to retain attributes instead."
- @"This will be logged only once.");
- });
- }
- }
- const auto geojson = mbgl::GeoJSON{featureCollection};
- static_cast<mbgl::style::CustomGeometrySource *>(self.rawSource)->setTileData(tileID, geojson);
-}
-
-- (void)setDataSource:(id<MGLComputedShapeSourceDataSource>)dataSource {
- [self.requestQueue cancelAllOperations];
- // Check which method the datasource implements, to avoid having to check for each tile
- self.dataSourceImplementsFeaturesForTile = [dataSource respondsToSelector:@selector(featuresInTileAtX:y:zoomLevel:)];
- self.dataSourceImplementsFeaturesForBounds = [dataSource respondsToSelector:@selector(featuresInCoordinateBounds:zoomLevel:)];
-
- if (!self.dataSourceImplementsFeaturesForBounds && !self.dataSourceImplementsFeaturesForTile) {
- [NSException raise:MGLInvalidDatasourceException
- format:@"Datasource does not implement any MGLComputedShapeSourceDataSource methods"];
- } else if (self.dataSourceImplementsFeaturesForBounds && self.dataSourceImplementsFeaturesForTile) {
- [NSException raise:MGLInvalidDatasourceException
- format:@"Datasource implements multiple MGLComputedShapeSourceDataSource methods"];
- }
-
- _dataSource = dataSource;
-}
-
-- (void) invalidateBounds:(MGLCoordinateBounds)bounds {
- MGLAssertStyleSourceIsValid();
- ((mbgl::style::CustomGeometrySource *)self.rawSource)->invalidateRegion(MGLLatLngBoundsFromCoordinateBounds(bounds));
-}
-
-- (void) invalidateTileAtX:(NSUInteger)x y:(NSUInteger)y zoomLevel:(NSUInteger)z {
- MGLAssertStyleSourceIsValid();
- ((mbgl::style::CustomGeometrySource *)self.rawSource)->invalidateTile(mbgl::CanonicalTileID(z, (unsigned int)x, (unsigned int)y));
-}
-
-@end
diff --git a/platform/darwin/src/MGLComputedShapeSource_Private.h b/platform/darwin/src/MGLComputedShapeSource_Private.h
deleted file mode 100644
index ec075e4bd7..0000000000
--- a/platform/darwin/src/MGLComputedShapeSource_Private.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-#import "MGLComputedShapeSource.h"
-
-#include <mbgl/style/sources/custom_geometry_source.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-MGL_EXPORT
-mbgl::style::CustomGeometrySource::Options MBGLCustomGeometrySourceOptionsFromDictionary(NSDictionary<MGLShapeSourceOption, id> *options);
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLConversion.h b/platform/darwin/src/MGLConversion.h
deleted file mode 100644
index 3f7ffdd0c1..0000000000
--- a/platform/darwin/src/MGLConversion.h
+++ /dev/null
@@ -1,159 +0,0 @@
-#include <mbgl/style/conversion_impl.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-namespace mbgl {
-namespace style {
-namespace conversion {
-
-// A wrapper class for `id`, so as not to confuse ARC.
-class Holder {
-public:
- Holder(const id v) : value(v) {}
- const id value;
-};
-
-template <>
-class ConversionTraits<Holder> {
-public:
- static bool isUndefined(const Holder& holder) {
- const id value = holder.value;
- return !value || value == [NSNull null];
- }
-
- static bool isArray(const Holder& holder) {
- const id value = holder.value;
- return [value isKindOfClass:[NSArray class]];
- }
-
- static bool isObject(const Holder& holder) {
- const id value = holder.value;
- return [value isKindOfClass:[NSDictionary class]];
- }
-
- static std::size_t arrayLength(const Holder& holder) {
- const id value = holder.value;
- NSCAssert([value isKindOfClass:[NSArray class]], @"Value must be an NSArray for getLength().");
- NSArray *array = value;
- auto length = [array count];
- NSCAssert(length <= std::numeric_limits<size_t>::max(), @"Array length out of bounds.");
- return length;
- }
-
- static Holder arrayMember(const Holder& holder, std::size_t i) {
- const id value = holder.value;
- NSCAssert([value isKindOfClass:[NSArray class]], @"Value must be an NSArray for get(int).");
- NSCAssert(i < NSUIntegerMax, @"Index must be less than NSUIntegerMax");
- return {[value objectAtIndex: i]};
- }
-
- static optional<Holder> objectMember(const Holder& holder, const char *key) {
- const id value = holder.value;
- NSCAssert([value isKindOfClass:[NSDictionary class]], @"Value must be an NSDictionary for get(string).");
- NSObject *member = [value objectForKey: @(key)];
- if (member && member != [NSNull null]) {
- return {member};
- } else {
- return {};
- }
- }
-
-// Compiler is wrong about `Fn` parameter missing a nullability specifier.
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wnullability-completeness"
- template <class Fn>
- static optional<Error> eachMember(const Holder& holder, Fn&& visit) {
-#pragma clang diagnostic pop
- [holder.value enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- auto result = visit(std::string(static_cast<const char *>([key UTF8String])), obj);
- if (result) {
- *stop = YES;
- }
- }];
- return {};
- }
-
- static optional<bool> toBool(const Holder& holder) {
- const id value = holder.value;
- if (_isBool(value)) {
- return ((NSNumber *)value).boolValue;
- } else {
- return {};
- }
- }
-
- static optional<float> toNumber(const Holder& holder) {
- const id value = holder.value;
- if (_isNumber(value)) {
- return ((NSNumber *)value).floatValue;
- } else {
- return {};
- }
- }
-
- static optional<double> toDouble(const Holder& holder) {
- const id value = holder.value;
- if (_isNumber(value)) {
- return ((NSNumber *)value).doubleValue;
- } else {
- return {};
- }
- }
-
- static optional<std::string> toString(const Holder& holder) {
- const id value = holder.value;
- if (_isString(value)) {
- return std::string(static_cast<const char *>([value UTF8String]));
- } else {
- return {};
- }
- }
-
- static optional<mbgl::Value> toValue(const Holder& holder) {
- const id value = holder.value;
- if (isUndefined(value)) {
- return {};
- } else if (_isBool(value)) {
- return { *toBool(holder) };
- } else if ( _isString(value)) {
- return { *toString(holder) };
- } else if (_isNumber(value)) {
- return { *toDouble(holder) };
- } else {
- return {};
- }
- }
-
- static optional<GeoJSON> toGeoJSON(const Holder&, Error& error) {
- error = { "toGeoJSON not implemented" };
- return {};
- }
-
-private:
- static bool _isBool(const id value) {
- if (![value isKindOfClass:[NSNumber class]]) return false;
- // char: 32-bit boolean
- // BOOL: 64-bit boolean
- NSNumber *number = value;
- return ((strcmp([number objCType], @encode(char)) == 0) ||
- (strcmp([number objCType], @encode(BOOL)) == 0));
- }
-
- static bool _isNumber(const id value) {
- return [value isKindOfClass:[NSNumber class]] && !_isBool(value);
- }
-
- static bool _isString(const id value) {
- return [value isKindOfClass:[NSString class]];
- }
-};
-
-inline Convertible makeConvertible(const id value) {
- return Convertible(Holder(value));
-}
-
-} // namespace conversion
-} // namespace style
-} // namespace mbgl
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLCoordinateFormatter.h b/platform/darwin/src/MGLCoordinateFormatter.h
deleted file mode 100644
index 63f0de8f19..0000000000
--- a/platform/darwin/src/MGLCoordinateFormatter.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLCoordinateFormatter` class provides properly formatted descriptions of
- geographic coordinate pairs. Use this class to create localized coordinate
- strings when displaying location information to users.
- */
-MGL_EXPORT
-@interface MGLCoordinateFormatter : NSFormatter
-
-/**
- Determines whether the output may contain minutes of arc when nonzero.
-
- The default value of this property is `YES`, causing the receiver to include
- minutes of arc in its output. If `allowsSeconds` is `YES`, this property is
- ignored and the output always includes minutes of arc.
- */
-@property (nonatomic) BOOL allowsMinutes;
-
-/**
- Determines whether the output may contain seconds of arc when nonzero.
-
- The default value of this property is `YES`, causing the receiver to include
- seconds of arc in its output.
- */
-@property (nonatomic) BOOL allowsSeconds;
-
-/**
- The unit style used by this formatter.
-
- The default value of this property is `NSFormattingUnitStyleMedium`.
- */
-@property (nonatomic) NSFormattingUnitStyle unitStyle;
-
-/**
- Returns a coordinate string for the provided value.
-
- @param coordinate The coordinate’s value.
- @return The coordinate string appropriately formatted for the formatter’s
- locale.
- */
-- (NSString *)stringFromCoordinate:(CLLocationCoordinate2D)coordinate;
-
-/**
- This method is not supported for the `MGLCoordinateFormatter` class.
- */
-- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLCoordinateFormatter.m b/platform/darwin/src/MGLCoordinateFormatter.m
deleted file mode 100644
index aba34e470d..0000000000
--- a/platform/darwin/src/MGLCoordinateFormatter.m
+++ /dev/null
@@ -1,127 +0,0 @@
-#import "MGLCoordinateFormatter.h"
-
-#import "NSBundle+MGLAdditions.h"
-#import "NSValue+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-@implementation MGLCoordinateFormatter
-
-- (instancetype)init {
- if (self = [super init]) {
- _allowsMinutes = YES;
- _allowsSeconds = YES;
- _unitStyle = NSFormattingUnitStyleMedium;
- }
- return self;
-}
-
-- (NSString *)stringFromCoordinate:(CLLocationCoordinate2D)coordinate {
- NSString *positiveLatitudeFormat;
- NSString *negativeLatitudeFormat;
- NSString *positiveLongitudeFormat;
- NSString *negativeLongitudeFormat;
- NSString *stringFormat;
- switch (self.unitStyle) {
- case NSFormattingUnitStyleShort:
- positiveLatitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_N_SHORT", @"Foundation", nil, @"%@N", @"North latitude format, short: {latitude}");
- negativeLatitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_S_SHORT", @"Foundation", nil, @"%@S", @"South latitude format, short: {latitude}");
- positiveLongitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_E_SHORT", @"Foundation", nil, @"%@E", @"East longitude format, short: {longitude}");
- negativeLongitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_W_SHORT", @"Foundation", nil, @"%@W", @"West longitude format, short: {longitude}");
- stringFormat = NSLocalizedStringWithDefaultValue(@"COORD_FMT_SHORT", @"Foundation", nil, @"%@, %@", @"Coordinate pair format, short: {latitude}, {longitude}");
- break;
-
- case NSFormattingUnitStyleMedium:
- positiveLatitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_N_MEDIUM", @"Foundation", nil, @"%@ north", @"North latitude format, medium: {latitude}");
- negativeLatitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_S_MEDIUM", @"Foundation", nil, @"%@ south", @"South latitude format, medium: {latitude}");
- positiveLongitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_E_MEDIUM", @"Foundation", nil, @"%@ east", @"East longitude format, medium: {longitude}");
- negativeLongitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_W_MEDIUM", @"Foundation", nil, @"%@ west", @"West longitude format, medium: {longitude}");
- stringFormat = NSLocalizedStringWithDefaultValue(@"COORD_FMT_MEDIUM", @"Foundation", nil, @"%@, %@", @"Coordinate pair format, medium: {latitude}, {longitude}");
- break;
-
- case NSFormattingUnitStyleLong:
- positiveLatitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_N_LONG", @"Foundation", nil, @"%@ north", @"North latitude format, long: {latitude}");
- negativeLatitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_S_LONG", @"Foundation", nil, @"%@ south", @"South latitude format, long: {latitude}");
- positiveLongitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_E_LONG", @"Foundation", nil, @"%@ east", @"East longitude format, long: {longitude}");
- negativeLongitudeFormat = NSLocalizedStringWithDefaultValue(@"COORD_W_LONG", @"Foundation", nil, @"%@ west", @"West longitude format, long: {longitude}");
- stringFormat = NSLocalizedStringWithDefaultValue(@"COORD_FMT_LONG", @"Foundation", nil, @"%@ by %@", @"Coordinate pair format, long: {latitude}, {longitude}");
- break;
- }
- NSString *latitudeString = [self stringFromLocationDegrees:coordinate.latitude
- positiveFormat:positiveLatitudeFormat
- negativeFormat:negativeLatitudeFormat];
- NSString *longitudeString = [self stringFromLocationDegrees:coordinate.longitude
- positiveFormat:positiveLongitudeFormat
- negativeFormat:negativeLongitudeFormat];
- return [NSString stringWithFormat:stringFormat, latitudeString, longitudeString];
-}
-
-- (NSString *)stringFromLocationDegrees:(CLLocationDegrees)degrees positiveFormat:(NSString *)positiveFormat negativeFormat:(NSString *)negativeFormat {
- CLLocationDegrees minutes = (fabs(degrees) - floor(fabs(degrees))) * 60;
- CLLocationDegrees seconds = (minutes - floor(minutes)) * 60;
-
- NSString *degreesFormat;
- NSString *minutesFormat;
- NSString *secondsFormat;
- NSString *degreesMinutesFormat;
- NSString *degreesMinutesSecondsFormat;
- switch (self.unitStyle) {
- case NSFormattingUnitStyleShort:
- degreesFormat = NSLocalizedStringWithDefaultValue(@"COORD_DEG_SHORT", @"Foundation", nil, @"%d°", @"Degrees format, short: {degrees}");
- minutesFormat = NSLocalizedStringWithDefaultValue(@"COORD_MIN_SHORT", @"Foundation", nil, @"%d′", @"Minutes format, short: {minutes}");
- secondsFormat = NSLocalizedStringWithDefaultValue(@"COORD_SEC_SHORT", @"Foundation", nil, @"%d″", @"Seconds format, short: {seconds}");
- degreesMinutesFormat = NSLocalizedStringWithDefaultValue(@"COORD_DM_SHORT", @"Foundation", nil, @"%@%@", @"Coordinate format, short: {degrees}{minutes}");
- degreesMinutesSecondsFormat = NSLocalizedStringWithDefaultValue(@"COORD_DMS_SHORT", @"Foundation", nil, @"%@%@%@", @"Coordinate format, short: {degrees}{minutes}{seconds}");
- break;
-
- case NSFormattingUnitStyleMedium:
- degreesFormat = NSLocalizedStringWithDefaultValue(@"COORD_DEG_MEDIUM", @"Foundation", nil, @"%d°", @"Degrees format, medium: {degrees}");
- minutesFormat = NSLocalizedStringWithDefaultValue(@"COORD_MIN_MEDIUM", @"Foundation", nil, @"%d′", @"Minutes format, medium: {minutes}");
- secondsFormat = NSLocalizedStringWithDefaultValue(@"COORD_SEC_MEDIUM", @"Foundation", nil, @"%d″", @"Seconds format, medium: {seconds}");
- degreesMinutesFormat = NSLocalizedStringWithDefaultValue(@"COORD_DM_MEDIUM", @"Foundation", nil, @"%@%@", @"Coordinate format, medium: {degrees}{minutes}");
- degreesMinutesSecondsFormat = NSLocalizedStringWithDefaultValue(@"COORD_DMS_MEDIUM", @"Foundation", nil, @"%@%@%@", @"Coordinate format, medium: {degrees}{minutes}{seconds}");
- break;
-
- case NSFormattingUnitStyleLong:
- degreesFormat = NSLocalizedStringWithDefaultValue(@"COORD_DEG_LONG", @"Foundation", nil, @"%d degree(s)", @"Degrees format, long");
- minutesFormat = NSLocalizedStringWithDefaultValue(@"COORD_MIN_LONG", @"Foundation", nil, @"%d minute(s)", @"Minutes format, long");
- secondsFormat = NSLocalizedStringWithDefaultValue(@"COORD_SEC_LONG", @"Foundation", nil, @"%d second(s)", @"Seconds format, long");
- degreesMinutesFormat = NSLocalizedStringWithDefaultValue(@"COORD_DM_LONG", @"Foundation", nil, @"%@ and %@", @"Coordinate format, long: {degrees}{minutes}");
- degreesMinutesSecondsFormat = NSLocalizedStringWithDefaultValue(@"COORD_DMS_LONG", @"Foundation", nil, @"%@, %@, and %@", @"Coordinate format, long: {degrees}{minutes}{seconds}");
- break;
- }
-
- NSString *degreesString = [NSString stringWithFormat:degreesFormat, (int)floor(fabs(degrees))];
-
- NSString *string;
- if (trunc(seconds) > 0 && self.allowsSeconds) {
- NSString *minutesString = [NSString stringWithFormat:minutesFormat, (int)floor(minutes)];
- NSString *secondsString = [NSString stringWithFormat:secondsFormat, (int)round(seconds)];
- string = [NSString stringWithFormat:degreesMinutesSecondsFormat,
- degreesString, minutesString, secondsString];
- } else if (trunc(minutes) > 0 && self.allowsMinutes) {
- NSString *minutesString = [NSString stringWithFormat:minutesFormat, (int)round(minutes)];
- string = [NSString stringWithFormat:degreesMinutesFormat,
- degreesString, minutesString];
- } else {
- string = [NSString stringWithFormat:degreesFormat, (int)round(fabs(degrees))];
- }
-
- if (degrees == 0) {
- return string;
- }
- return [NSString stringWithFormat:degrees > 0 ? positiveFormat : negativeFormat, string];
-}
-
-- (nullable NSString *)stringForObjectValue:(id)obj {
- if (![obj isKindOfClass:[NSValue class]]) {
- return nil;
- }
- return [self stringFromCoordinate:[obj MGLCoordinateValue]];
-}
-
-- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error {
- MGLAssert(NO, @"-getObjectValue:forString:errorDescription: has not been implemented");
- return NO;
-}
-
-@end
diff --git a/platform/darwin/src/MGLDistanceFormatter.h b/platform/darwin/src/MGLDistanceFormatter.h
deleted file mode 100644
index 46aad9a940..0000000000
--- a/platform/darwin/src/MGLDistanceFormatter.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- `MGLDistanceFormatter` implements a formatter object meant to be used for
- geographic distances. The user’s current locale will be used by default
- but it can be overriden by changing the locale property of the numberFormatter.
- */
-MGL_EXPORT
-@interface MGLDistanceFormatter : NSLengthFormatter
-
-/**
- Returns a localized formatted string for the provided distance.
-
- @param distance The distance, measured in meters.
- @return A localized formatted distance string including units.
- */
-- (NSString *)stringFromDistance:(CLLocationDistance)distance;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLDistanceFormatter.m b/platform/darwin/src/MGLDistanceFormatter.m
deleted file mode 100644
index a7a2f9c9e1..0000000000
--- a/platform/darwin/src/MGLDistanceFormatter.m
+++ /dev/null
@@ -1,35 +0,0 @@
-#import "MGLDistanceFormatter.h"
-
-@interface MGLDistanceFormatter()
-@end
-
-@implementation MGLDistanceFormatter
-
-static const CLLocationDistance METERS_PER_MILE = 1609.344;
-static const double YARDS_PER_MILE = 1760.0;
-static const double FEET_PER_MILE = YARDS_PER_MILE * 3.0;
-
-- (NSString *)stringFromDistance:(CLLocationDistance)distance {
- double miles = distance / METERS_PER_MILE;
- double feet = miles * FEET_PER_MILE;
-
- NSLengthFormatterUnit unit = NSLengthFormatterUnitMillimeter;
- [self unitStringFromMeters:distance usedUnit:&unit];
-
- self.numberFormatter.roundingIncrement = @0.25;
-
- if (unit == NSLengthFormatterUnitYard) {
- if (miles > 0.2) {
- unit = NSLengthFormatterUnitMile;
- return [self stringFromValue:miles unit:unit];
- } else {
- unit = NSLengthFormatterUnitFoot;
- self.numberFormatter.roundingIncrement = @1;
- return [self stringFromValue:feet unit:unit];
- }
- } else {
- return [self stringFromMeters:distance];
- }
-}
-
-@end
diff --git a/platform/darwin/src/MGLFeature.h b/platform/darwin/src/MGLFeature.h
deleted file mode 100644
index 3f3526102e..0000000000
--- a/platform/darwin/src/MGLFeature.h
+++ /dev/null
@@ -1,300 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLPolyline.h"
-#import "MGLPolygon.h"
-#import "MGLPointAnnotation.h"
-#import "MGLPointCollection.h"
-#import "MGLShapeCollection.h"
-#import "MGLCluster.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLFeature` protocol is used to provide details about geographic features
- contained in an `MGLShapeSource` or `MGLVectorTileSource` object. Each concrete
- subclass of `MGLShape` in turn has a subclass that conforms to this protocol. A
- feature object associates a shape with an optional identifier and attributes.
-
- You can add custom data to display on the map by creating feature objects and
- adding them to an `MGLShapeSource` using the
- `-[MGLShapeSource initWithIdentifier:shape:options:]` method or
- `MGLShapeSource.shape` property.
-
- In addition to adding data to the map, you can also extract data from the map:
- `-[MGLMapView visibleFeaturesAtPoint:]` and related methods return feature
- objects that correspond to features in the source. This enables you to inspect
- the properties of features in vector tiles loaded by `MGLVectorTileSource`
- objects. You also reuse these feature objects as overlay annotations.
-
- While it is possible to add `MGLFeature`-conforming objects to the map as
- annotations using `-[MGLMapView addAnnotations:]` and related methods, doing so
- has trade-offs:
-
- - Features added as annotations will not have `identifier` or `attributes`
- properties when used with feature querying.
-
- - Features added as annotations become interactive. Taps and selection can be
- handled in `-[MGLMapViewDelegate mapView:didSelectAnnotation:]`.
- */
-@protocol MGLFeature <MGLAnnotation>
-
-/**
- An object that uniquely identifies the feature in its containing content
- source.
-
- You can configure an `MGLVectorStyleLayer` object to include or exclude a
- specific feature in an `MGLShapeSource` or `MGLVectorTileSource`. In the
- `MGLVectorStyleLayer.predicate` property, compare the special `$id` attribute
- to the feature’s identifier.
-
- In vector tiles loaded by `MGLVectorTileSource` objects, the identifier
- corresponds to the
- <a href="https://github.com/mapbox/vector-tile-spec/tree/master/2.1#42-features">feature identifier</a>
- (`id`). If the source does not specify the feature’s identifier, the value of
- this property is `nil`. If specified, the identifier may be an integer,
- floating-point number, or string. These data types are mapped to instances of
- the following Foundation classes:
-
- <table>
- <thead>
- <tr><th>In the tile source</th><th>This property</th></tr>
- </thead>
- <tbody>
- <tr><td>Integer</td> <td><code>NSNumber</code> (use the <code>unsignedLongLongValue</code> or <code>longLongValue</code> property)</td></tr>
- <tr><td>Floating-point number</td> <td><code>NSNumber</code> (use the <code>doubleValue</code> property)</td></tr>
- <tr><td>String</td> <td><code>NSString</code></td></tr>
- </tbody>
- </table>
-
- For details about the identifiers used in most Mapbox-provided styles, consult
- the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets</a>
- layer reference.
-
- The identifier should be set before adding the feature to an `MGLShapeSource`
- object; setting it afterwards has no effect on the map’s contents. While it is
- possible to change this value on feature instances obtained from
- `-[MGLMapView visibleFeaturesAtPoint:]` and related methods, doing so likewise
- has no effect on the map’s contents.
- */
-@property (nonatomic, copy, nullable) id identifier;
-
-/**
- A dictionary of attributes for this feature.
-
- You can configure an `MGLVectorStyleLayer` object to include or exclude a
- specific feature in an `MGLShapeSource` or `MGLVectorTileSource`. In the
- `MGLVectorStyleLayer.predicate` property, compare a key of the attribute
- dictionary to the value you want to include. For example, if you want an
- `MGLLineStyleLayer` object to display only important features, you might assign
- a value above 50 to the important features’ `importance` attribute, then set
- `MGLVectorStyleLayer.predicate` to an `NSPredicate` with the format
- `importance > 50`.
-
- You can also configure many layout and paint attributes of an `MGLStyleLayer`
- object to match the value of an attribute in this dictionary whenever it
- renders this feature. For example, if you display features in an
- `MGLShapeSource` using an `MGLCircleStyleLayer`, you can assign a `halfway`
- attribute to each of the source’s features, then set
- `MGLCircleStyleLayer.circleRadius` to an expression for the key path `halfway`.
-
- The `MGLSymbolStyleLayer.text` and `MGLSymbolStyleLayer.iconImageName`
- properties allow you to use attributes yet another way. For example, to label
- features in an `MGLShapeSource` object by their names, you can assign a `name`
- attribute to each of the source’s features, then set
- `MGLSymbolStyleLayer.text` to an expression for the constant string value
- `{name}`. See the
- <a href="../predicates-and-expressions.html">Predicates and Expressions</a>
- guide for more information about expressions.
-
- In vector tiles loaded by `MGLVectorTileSource` objects, the keys and values of
- each feature’s attribute dictionary are determined by the source. Each
- attribute name is a string, while each attribute value may be a null value,
- Boolean value, integer, floating-point number, or string. These data types are
- mapped to instances of the following Foundation classes:
-
- <table>
- <thead>
- <tr><th>In the tile source</th><th>In this dictionary</th></tr>
- </thead>
- <tbody>
- <tr><td>Null</td> <td><code>NSNull</code></td></tr>
- <tr><td>Boolean</td> <td><code>NSNumber</code> (use the <code>boolValue</code> property)</td></tr>
- <tr><td>Integer</td> <td><code>NSNumber</code> (use the <code>unsignedLongLongValue</code> or <code>longLongValue</code> property)</td></tr>
- <tr><td>Floating-point number</td> <td><code>NSNumber</code> (use the <code>doubleValue</code> property)</td></tr>
- <tr><td>String</td> <td><code>NSString</code></td></tr>
- </tbody>
- </table>
-
- For details about the attribute names and values found in Mapbox-provided
- vector tile sources, consult the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets</a>
- and
- <a href="https://www.mapbox.com/vector-tiles/mapbox-terrain/">Mapbox Terrain</a>
- layer references.
-
- When adding a feature to an `MGLShapeSource`, use the same Foundation types
- listed above for each attribute value. In addition to the Foundation types, you
- may also set an attribute to an `NSColor` (macOS) or `UIColor` (iOS), which
- will be converted into its
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#types-color">CSS string representation</a>
- when the feature is added to an `MGLShapeSource`. This can be convenient when
- using the attribute to supply a value for a color-typed layout or paint
- attribute via a key path expression.
-
- Note that while it is possible to change this value on feature
- instances obtained from `-[MGLMapView visibleFeaturesAtPoint:]` and related
- methods, there will be no effect on the map. Setting this value can be useful
- when the feature instance is used to initialize an `MGLShapeSource` and that
- source is added to the map and styled.
- */
-@property (nonatomic, copy) NSDictionary<NSString *, id> *attributes;
-
-/**
- Returns the feature attribute for the given attribute name.
-
- See the `attributes` property’s documentation for details on keys and values
- associated with this method.
- */
-- (nullable id)attributeForKey:(NSString *)key;
-
-/**
- Returns a dictionary that can be serialized as a GeoJSON Feature representation
- of an instance of an `MGLFeature` subclass.
-
- The dictionary includes a `geometry` key corresponding to the receiver’s
- underlying geometry data, a `properties` key corresponding to the receiver’s
- `attributes` property, and an `id` key corresponding to the receiver’s
- `identifier` property.
- */
-- (NSDictionary<NSString *, id> *)geoJSONDictionary;
-
-@end
-
-/**
- An `MGLEmptyFeature` object associates an empty shape with an optional
- identifier and attributes.
- */
-MGL_EXPORT
-@interface MGLEmptyFeature : MGLShape <MGLFeature>
-@end
-
-/**
- An `MGLPointFeature` object associates a point shape with an optional
- identifier and attributes.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/">
- Dynamically style interactive points</a> example to learn how to initialize
- `MGLPointFeature` objects and add them to your map.
- */
-MGL_EXPORT
-@interface MGLPointFeature : MGLPointAnnotation <MGLFeature>
-@end
-
-/**
- An `MGLPointFeatureCluster` object associates a point shape (with an optional
- identifier and attributes) and represents a point cluster.
-
- @see `MGLCluster`
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">
- Clustering point data</a> example to learn how to initialize
- clusters and add them to your map.
- */
-MGL_EXPORT
-@interface MGLPointFeatureCluster : MGLPointFeature <MGLCluster>
-@end
-
-/**
- An `MGLPolylineFeature` object associates a polyline shape with an optional
- identifier and attributes.
-
- A polyline feature is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.4">LineString</a>
- feature in GeoJSON.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/line-geojson/">
- Add a line annotation from GeoJSON</a> example to learn how to initialize an
- `MGLPolylineFeature` and add it to an `MGLMapView` object.
- */
-MGL_EXPORT
-@interface MGLPolylineFeature : MGLPolyline <MGLFeature>
-@end
-
-/**
- An `MGLPolygonFeature` object associates a polygon shape with an optional
- identifier and attributes.
- */
-MGL_EXPORT
-@interface MGLPolygonFeature : MGLPolygon <MGLFeature>
-@end
-
-/**
- An `MGLPointCollectionFeature` object associates a point collection with an
- optional identifier and attributes.
-
- A point collection feature is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.3">MultiPoint</a>
- feature in GeoJSON.
- */
-MGL_EXPORT
-@interface MGLPointCollectionFeature : MGLPointCollection <MGLFeature>
-@end
-
-// https://github.com/mapbox/mapbox-gl-native/issues/7473
-@compatibility_alias MGLMultiPointFeature MGLPointCollectionFeature;
-
-/**
- An `MGLMultiPolylineFeature` object associates a multipolyline shape with an
- optional identifier and attributes.
-
- A multipolyline feature is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.5">MultiLineString</a>
- feature in GeoJSON.
- */
-MGL_EXPORT
-@interface MGLMultiPolylineFeature : MGLMultiPolyline <MGLFeature>
-@end
-
-/**
- An `MGLMultiPolygonFeature` object associates a multipolygon shape with an
- optional identifier and attributes.
- */
-MGL_EXPORT
-@interface MGLMultiPolygonFeature : MGLMultiPolygon <MGLFeature>
-@end
-
-/**
- An `MGLShapeCollectionFeature` object associates a shape collection with an
- optional identifier and attributes.
-
- `MGLShapeCollectionFeature` is most commonly used to add multiple shapes to a
- single `MGLShapeSource`. Configure the appearance of an `MGLSource`’s shape
- collection collectively using an `MGLSymbolStyleLayer` object, or use multiple
- instances of `MGLCircleStyleLayer`, `MGLFillStyleLayer`, and
- `MGLLineStyleLayer` to configure the appearance of each kind of shape inside
- the collection.
-
- A shape collection feature is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.3">feature collection</a>
- in GeoJSON.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/shape-collection/">
- Add multiple shapes from a single shape source</a> example to learn how to
- add shape data to your map using an `MGLShapeCollectionFeature` object.
- */
-MGL_EXPORT
-@interface MGLShapeCollectionFeature : MGLShapeCollection <MGLFeature>
-
-@property (nonatomic, copy, readonly) NSArray<MGLShape<MGLFeature> *> *shapes;
-
-+ (instancetype)shapeCollectionWithShapes:(NSArray<MGLShape<MGLFeature> *> *)shapes;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLFeature.mm b/platform/darwin/src/MGLFeature.mm
deleted file mode 100644
index df6b1bffea..0000000000
--- a/platform/darwin/src/MGLFeature.mm
+++ /dev/null
@@ -1,542 +0,0 @@
-#import "MGLFoundation_Private.h"
-#import "MGLFeature_Private.h"
-#import "MGLCluster.h"
-
-#import "MGLPointAnnotation.h"
-#import "MGLPolyline.h"
-#import "MGLPolygon.h"
-#import "MGLValueEvaluator.h"
-
-#import "MGLShape_Private.h"
-#import "MGLPointCollection_Private.h"
-#import "MGLPolyline_Private.h"
-#import "MGLPolygon_Private.h"
-
-#import "NSDictionary+MGLAdditions.h"
-#import "NSArray+MGLAdditions.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <mbgl/util/geometry.hpp>
-#import <mbgl/style/conversion/geojson.hpp>
-#import <mapbox/feature.hpp>
-
-// Cluster constants
-static NSString * const MGLClusterIdentifierKey = @"cluster_id";
-static NSString * const MGLClusterCountKey = @"point_count";
-const NSUInteger MGLClusterIdentifierInvalid = NSUIntegerMax;
-
-@interface MGLEmptyFeature ()
-@end
-
-@implementation MGLEmptyFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- MGLLogDebug(@"Retrieving attributeForKey: %@", key);
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return mbglFeature({[self geometryObject]}, identifier, self.attributes);
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@, attributes = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.identifier ? [NSString stringWithFormat:@"\"%@\"", self.identifier] : self.identifier,
- self.attributes.count ? self.attributes : @"none"];
-}
-
-@end
-
-@interface MGLPointFeature ()
-@end
-
-@implementation MGLPointFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- MGLLogDebug(@"Retrieving attributeForKey: %@", key);
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return mbglFeature({[self geometryObject]}, identifier, self.attributes);
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@, coordinate = %f, %f, attributes = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.identifier ? [NSString stringWithFormat:@"\"%@\"", self.identifier] : self.identifier,
- self.coordinate.latitude, self.coordinate.longitude,
- self.attributes.count ? self.attributes : @"none"];
-}
-
-@end
-
-@implementation MGLPointFeatureCluster
-
-- (NSUInteger)clusterIdentifier {
- NSNumber *clusterNumber = MGL_OBJC_DYNAMIC_CAST([self attributeForKey:MGLClusterIdentifierKey], NSNumber);
- MGLAssert(clusterNumber, @"Clusters should have a cluster_id");
-
- if (!clusterNumber) {
- return MGLClusterIdentifierInvalid;
- }
-
- NSUInteger clusterIdentifier = [clusterNumber unsignedIntegerValue];
- MGLAssert(clusterIdentifier <= UINT32_MAX, @"Cluster identifiers are 32bit");
-
- return clusterIdentifier;
-}
-
-- (NSUInteger)clusterPointCount {
- NSNumber *count = MGL_OBJC_DYNAMIC_CAST([self attributeForKey:MGLClusterCountKey], NSNumber);
- MGLAssert(count, @"Clusters should have a point_count");
-
- return [count unsignedIntegerValue];
-}
-@end
-
-
-@interface MGLPolylineFeature ()
-@end
-
-@implementation MGLPolylineFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- MGLLogDebug(@"Retrieving attributeForKey: %@", key);
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return mbglFeature({[self geometryObject]}, identifier, self.attributes);
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@, count = %lu, bounds = %@, attributes = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.identifier ? [NSString stringWithFormat:@"\"%@\"", self.identifier] : self.identifier,
- (unsigned long)[self pointCount],
- MGLStringFromCoordinateBounds(self.overlayBounds),
- self.attributes.count ? self.attributes : @"none"];
-}
-
-@end
-
-@interface MGLPolygonFeature ()
-@end
-
-@implementation MGLPolygonFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- MGLLogDebug(@"Retrieving attributeForKey: %@", key);
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return mbglFeature({[self geometryObject]}, identifier, self.attributes);
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@, count = %lu, bounds = %@, attributes = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.identifier ? [NSString stringWithFormat:@"\"%@\"", self.identifier] : self.identifier,
- (unsigned long)[self pointCount],
- MGLStringFromCoordinateBounds(self.overlayBounds),
- self.attributes.count ? self.attributes : @"none"];
-}
-
-@end
-
-@interface MGLPointCollectionFeature ()
-@end
-
-@implementation MGLPointCollectionFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- MGLLogDebug(@"Retrieving attributeForKey: %@", key);
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return mbglFeature({[self geometryObject]}, identifier, self.attributes);
-}
-
-@end
-
-@interface MGLMultiPolylineFeature ()
-@end
-
-@implementation MGLMultiPolylineFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- MGLLogDebug(@"Retrieving attributeForKey: %@", key);
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return mbglFeature({[self geometryObject]}, identifier, self.attributes);
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@, count = %lu, bounds = %@, attributes = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.identifier ? [NSString stringWithFormat:@"\"%@\"", self.identifier] : self.identifier,
- (unsigned long)self.polylines.count,
- MGLStringFromCoordinateBounds(self.overlayBounds),
- self.attributes.count ? self.attributes : @"none"];
-}
-
-@end
-
-@interface MGLMultiPolygonFeature ()
-@end
-
-@implementation MGLMultiPolygonFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- MGLLogDebug(@"Retrieving attributeForKey: %@", key);
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return mbglFeature({[self geometryObject]}, identifier, self.attributes);
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@, count = %lu, bounds = %@, attributes = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.identifier ? [NSString stringWithFormat:@"\"%@\"", self.identifier] : self.identifier,
- (unsigned long)self.polygons.count,
- MGLStringFromCoordinateBounds(self.overlayBounds),
- self.attributes.count ? self.attributes : @"none"];
-}
-
-@end
-
-@interface MGLShapeCollectionFeature ()
-@end
-
-@implementation MGLShapeCollectionFeature
-
-@synthesize identifier;
-@synthesize attributes = _attributes;
-
-@dynamic shapes;
-
-+ (instancetype)shapeCollectionWithShapes:(NSArray<MGLShape<MGLFeature> *> *)shapes {
- return [super shapeCollectionWithShapes:shapes];
-}
-
-MGL_DEFINE_FEATURE_INIT_WITH_CODER();
-MGL_DEFINE_FEATURE_ENCODE();
-MGL_DEFINE_FEATURE_IS_EQUAL();
-MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER();
-
-- (id)attributeForKey:(NSString *)key {
- return self.attributes[key];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return NSDictionaryFeatureForGeometry([super geoJSONDictionary], self.attributes, self.identifier);
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- mbgl::FeatureCollection featureCollection;
- featureCollection.reserve(self.shapes.count);
- for (MGLShape <MGLFeature> *feature in self.shapes) {
- auto geoJSONObject = feature.geoJSONObject;
- MGLAssert(geoJSONObject.is<mbgl::GeoJSONFeature>(), @"Feature collection must only contain features.");
- featureCollection.push_back(geoJSONObject.get<mbgl::GeoJSONFeature>());
- }
- return featureCollection;
-}
-
-@end
-
-/**
- Transforms an `mbgl::geometry::geometry` type into an instance of the
- corresponding Objective-C geometry class.
- */
-template <typename T>
-class GeometryEvaluator {
-private:
- const mbgl::PropertyMap *shared_properties;
-
-public:
- GeometryEvaluator(const mbgl::PropertyMap *properties = nullptr):
- shared_properties(properties)
- {}
-
- MGLShape <MGLFeature> * operator()(const mbgl::EmptyGeometry &) const {
- MGLEmptyFeature *feature = [[MGLEmptyFeature alloc] init];
- return feature;
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::Point<T> &geometry) const {
- Class pointFeatureClass = [MGLPointFeature class];
-
- // If we're dealing with a cluster, we should change the class type.
- // This could be generic and build the subclass at runtime if it turns
- // out we need to support more than point clusters.
- if (shared_properties) {
- auto clusterIt = shared_properties->find("cluster");
- if (clusterIt != shared_properties->end()) {
- auto clusterValue = clusterIt->second;
- if (clusterValue.template is<bool>()) {
- if (clusterValue.template get<bool>()) {
- pointFeatureClass = [MGLPointFeatureCluster class];
- }
- }
- }
- }
-
- MGLPointFeature *feature = [[pointFeatureClass alloc] init];
- feature.coordinate = toLocationCoordinate2D(geometry);
- return feature;
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::LineString<T> &geometry) const {
- std::vector<CLLocationCoordinate2D> coordinates = toLocationCoordinates2D(geometry);
- return [MGLPolylineFeature polylineWithCoordinates:&coordinates[0] count:coordinates.size()];
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::Polygon<T> &geometry) const {
- return toShape<MGLPolygonFeature>(geometry);
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::MultiPoint<T> &geometry) const {
- std::vector<CLLocationCoordinate2D> coordinates = toLocationCoordinates2D(geometry);
- return [[MGLPointCollectionFeature alloc] initWithCoordinates:&coordinates[0] count:coordinates.size()];
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::MultiLineString<T> &geometry) const {
- NSMutableArray *polylines = [NSMutableArray arrayWithCapacity:geometry.size()];
- for (auto &lineString : geometry) {
- std::vector<CLLocationCoordinate2D> coordinates = toLocationCoordinates2D(lineString);
- MGLPolyline *polyline = [MGLPolyline polylineWithCoordinates:&coordinates[0] count:coordinates.size()];
- [polylines addObject:polyline];
- }
-
- return [MGLMultiPolylineFeature multiPolylineWithPolylines:polylines];
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::MultiPolygon<T> &geometry) const {
- NSMutableArray *polygons = [NSMutableArray arrayWithCapacity:geometry.size()];
- for (auto &polygon : geometry) {
- [polygons addObject:toShape(polygon)];
- }
-
- return [MGLMultiPolygonFeature multiPolygonWithPolygons:polygons];
- }
-
- MGLShape <MGLFeature> * operator()(const mapbox::geometry::geometry_collection<T> &collection) const {
- NSMutableArray *shapes = [NSMutableArray arrayWithCapacity:collection.size()];
- for (auto &geometry : collection) {
- // This is very much like the transformation that happens in MGLFeaturesFromMBGLFeatures(), but these are raw geometries with no associated feature IDs or attributes.
- MGLShape <MGLFeature> *shape = mapbox::geometry::geometry<T>::visit(geometry, *this);
- [shapes addObject:shape];
- }
- return [MGLShapeCollectionFeature shapeCollectionWithShapes:shapes];
- }
-
-private:
- static CLLocationCoordinate2D toLocationCoordinate2D(const mbgl::Point<T> &point) {
- return CLLocationCoordinate2DMake(point.y, point.x);
- }
-
- static std::vector<CLLocationCoordinate2D> toLocationCoordinates2D(const std::vector<mbgl::Point<T>> &points) {
- std::vector<CLLocationCoordinate2D> coordinates;
- coordinates.reserve(points.size());
- std::transform(points.begin(), points.end(), std::back_inserter(coordinates), toLocationCoordinate2D);
- return coordinates;
- }
-
- template<typename U = MGLPolygon>
- static U *toShape(const mbgl::Polygon<T> &geometry) {
- auto &linearRing = geometry.front();
- std::vector<CLLocationCoordinate2D> coordinates = toLocationCoordinates2D(linearRing);
- NSMutableArray *innerPolygons;
- if (geometry.size() > 1) {
- innerPolygons = [NSMutableArray arrayWithCapacity:geometry.size() - 1];
- for (auto iter = geometry.begin() + 1; iter != geometry.end(); iter++) {
- auto &innerRing = *iter;
- std::vector<CLLocationCoordinate2D> innerCoordinates = toLocationCoordinates2D(innerRing);
- MGLPolygon *innerPolygon = [MGLPolygon polygonWithCoordinates:&innerCoordinates[0] count:innerCoordinates.size()];
- [innerPolygons addObject:innerPolygon];
- }
- }
-
- return [U polygonWithCoordinates:&coordinates[0] count:coordinates.size() interiorPolygons:innerPolygons];
- }
-};
-
-template <typename T>
-class GeoJSONEvaluator {
-public:
- MGLShape <MGLFeature> * operator()(const mbgl::Geometry<T> &geometry) const {
- GeometryEvaluator<T> evaluator;
- MGLShape <MGLFeature> *shape = mapbox::geometry::geometry<T>::visit(geometry, evaluator);
- return shape;
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::GeoJSONFeature &feature) const {
- MGLShape <MGLFeature> *shape = (MGLShape <MGLFeature> *)MGLFeatureFromMBGLFeature(feature);
- return shape;
- }
-
- MGLShape <MGLFeature> * operator()(const mbgl::FeatureCollection &collection) const {
- NSMutableArray *shapes = [NSMutableArray arrayWithCapacity:collection.size()];
- for (const auto &feature : collection) {
- [shapes addObject:MGLFeatureFromMBGLFeature(feature)];
- }
- return [MGLShapeCollectionFeature shapeCollectionWithShapes:shapes];
- }
-};
-
-NSArray<MGLShape <MGLFeature> *> *MGLFeaturesFromMBGLFeatures(const std::vector<mbgl::Feature> &features) {
- NSMutableArray *shapes = [NSMutableArray arrayWithCapacity:features.size()];
- for (const auto &feature : features) {
- [shapes addObject:MGLFeatureFromMBGLFeature(static_cast<mbgl::GeoJSONFeature>(feature))];
- }
- return shapes;
-}
-
-NSArray<MGLShape <MGLFeature> *> *MGLFeaturesFromMBGLFeatures(const std::vector<mbgl::GeoJSONFeature> &features) {
- NSMutableArray *shapes = [NSMutableArray arrayWithCapacity:features.size()];
- for (const auto &feature : features) {
- [shapes addObject:MGLFeatureFromMBGLFeature(feature)];
- }
- return shapes;
-}
-
-id <MGLFeature> MGLFeatureFromMBGLFeature(const mbgl::GeoJSONFeature &feature) {
- NSMutableDictionary *attributes = [NSMutableDictionary dictionaryWithCapacity:feature.properties.size()];
- for (auto &pair : feature.properties) {
- auto &value = pair.second;
- ValueEvaluator evaluator;
- attributes[@(pair.first.c_str())] = mbgl::Value::visit(value, evaluator);
- }
- GeometryEvaluator<double> evaluator(&feature.properties);
- MGLShape <MGLFeature> *shape = mapbox::geometry::geometry<double>::visit(feature.geometry, evaluator);
- if (!feature.id.is<mapbox::feature::null_value_t>()) {
- shape.identifier = mbgl::FeatureIdentifier::visit(feature.id, ValueEvaluator());
- }
- shape.attributes = attributes;
-
- return shape;
-}
-
-MGLShape* MGLShapeFromGeoJSON(const mapbox::geojson::geojson &geojson) {
- GeoJSONEvaluator<double> evaluator;
- MGLShape *shape = mapbox::geojson::geojson::visit(geojson, evaluator);
- return shape;
-}
-
-mbgl::GeoJSONFeature mbglFeature(mbgl::GeoJSONFeature feature, id identifier, NSDictionary *attributes)
-{
- if (identifier) {
- NSExpression *identifierExpression = [NSExpression expressionForConstantValue:identifier];
- feature.id = [identifierExpression mgl_featureIdentifier];
- }
- feature.properties = [attributes mgl_propertyMap];
- return feature;
-}
-
-NSDictionary<NSString *, id> *NSDictionaryFeatureForGeometry(NSDictionary *geometry, NSDictionary *attributes, id identifier) {
- NSMutableDictionary *feature = [@{@"type": @"Feature",
- @"properties": attributes,
- @"geometry": geometry} mutableCopy];
- feature[@"id"] = identifier;
- return [feature copy];
-}
diff --git a/platform/darwin/src/MGLFeature_Private.h b/platform/darwin/src/MGLFeature_Private.h
deleted file mode 100644
index 599633dd31..0000000000
--- a/platform/darwin/src/MGLFeature_Private.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#import "MGLFoundation.h"
-#import "MGLFeature.h"
-#import "MGLShape.h"
-
-#import <mbgl/util/geo.hpp>
-#import <mbgl/util/feature.hpp>
-#import <mbgl/style/conversion/geojson.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Returns an array of `MGLFeature` objects converted from the given vector of
- vector tile features.
- */
-MGL_EXPORT
-NSArray<MGLShape <MGLFeature> *> *MGLFeaturesFromMBGLFeatures(const std::vector<mbgl::Feature> &features);
-
-/**
- Returns an array of `MGLFeature` objects converted from the given vector of
- vector tile features.
- */
-MGL_EXPORT
-NSArray<MGLShape <MGLFeature> *> *MGLFeaturesFromMBGLFeatures(const std::vector<mbgl::GeoJSONFeature> &features);
-
-/**
- Returns an `MGLFeature` object converted from the given mbgl::GeoJSONFeature
- */
-MGL_EXPORT
-id <MGLFeature> MGLFeatureFromMBGLFeature(const mbgl::GeoJSONFeature &feature);
-
-/**
- Returns an `MGLShape` representing the given geojson. The shape can be
- a feature, a collection of features, or a geometry.
- */
-MGLShape* MGLShapeFromGeoJSON(const mapbox::geojson::geojson &geojson);
-
-/**
- Takes an `mbgl::GeoJSONFeature` object, an identifer, and attributes dictionary and
- returns the feature object with converted `mbgl::FeatureIdentifier` and
- `mbgl::PropertyMap` properties.
- */
-mbgl::GeoJSONFeature mbglFeature(mbgl::GeoJSONFeature feature, id identifier, NSDictionary * attributes);
-
-/**
- Returns an `NSDictionary` representation of an `MGLFeature`.
- */
-NSDictionary<NSString *, id> *NSDictionaryFeatureForGeometry(NSDictionary *geometry, NSDictionary *attributes, id identifier);
-
-NS_ASSUME_NONNULL_END
-
-#define MGL_DEFINE_FEATURE_INIT_WITH_CODER() \
- - (instancetype)initWithCoder:(NSCoder *)decoder { \
- if (self = [super initWithCoder:decoder]) { \
- NSSet<Class> *identifierClasses = [NSSet setWithArray:@[[NSString class], [NSNumber class]]]; \
- identifier = [decoder decodeObjectOfClasses:identifierClasses forKey:@"identifier"]; \
- _attributes = [decoder decodeObjectOfClass:[NSDictionary class] forKey:@"attributes"]; \
- } \
- return self; \
- }
-
-#define MGL_DEFINE_FEATURE_ENCODE() \
- - (void)encodeWithCoder:(NSCoder *)coder { \
- [super encodeWithCoder:coder]; \
- [coder encodeObject:identifier forKey:@"identifier"]; \
- [coder encodeObject:_attributes forKey:@"attributes"]; \
- }
-
-#define MGL_DEFINE_FEATURE_IS_EQUAL() \
- - (BOOL)isEqual:(id)other { \
- if (other == self) return YES; \
- if (![other isKindOfClass:[self class]]) return NO; \
- __typeof(self) otherFeature = other; \
- return [super isEqual:other] && [self geoJSONObject] == [otherFeature geoJSONObject]; \
- } \
- - (NSUInteger)hash { \
- return [super hash] + [[self geoJSONDictionary] hash]; \
- }
-
-#define MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER() \
- - (NSDictionary *) attributes { \
- if (!_attributes) { \
- return @{}; \
- } \
- return _attributes; \
- }
diff --git a/platform/darwin/src/MGLFillExtrusionStyleLayer.h b/platform/darwin/src/MGLFillExtrusionStyleLayer.h
deleted file mode 100644
index adb215c413..0000000000
--- a/platform/darwin/src/MGLFillExtrusionStyleLayer.h
+++ /dev/null
@@ -1,388 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLVectorStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Controls the frame of reference for
- `MGLFillExtrusionStyleLayer.fillExtrusionTranslation`.
-
- Values of this type are used in the `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLFillExtrusionTranslationAnchor) {
- /**
- The fill extrusion is translated relative to the map.
- */
- MGLFillExtrusionTranslationAnchorMap,
- /**
- The fill extrusion is translated relative to the viewport.
- */
- MGLFillExtrusionTranslationAnchorViewport,
-};
-
-/**
- An `MGLFillExtrusionStyleLayer` is a style layer that renders one or more 3D
- extruded polygons on the map.
-
- Use a fill-extrusion style layer to configure the visual appearance of polygon
- or multipolygon features. These features can come from vector tiles loaded by
- an `MGLVectorTileSource` object, or they can be `MGLPolygon`,
- `MGLPolygonFeature`, `MGLMultiPolygon`, or `MGLMultiPolygonFeature` instances
- in an `MGLShapeSource` or `MGLComputedShapeSource` object.
-
- You can access an existing fill-extrusion style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new fill-extrusion style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/extrusions/">Display
- 3D buildings</a> example to learn how to add and style 3D layers on a map.
-
- ### Example
-
- ```swift
- let layer = MGLFillExtrusionStyleLayer(identifier: "buildings", source: buildings)
- layer.sourceLayerIdentifier = "building"
- layer.fillExtrusionHeight = NSExpression(forKeyPath: "height")
- layer.fillExtrusionBase = NSExpression(forKeyPath: "min_height")
- layer.predicate = NSPredicate(format: "extrude == 'true'")
- mapView.style?.addLayer(layer)
- ```
- */
-MGL_EXPORT
-@interface MGLFillExtrusionStyleLayer : MGLVectorStyleLayer
-
-/**
- Returns a fill-extrusion style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Paint Attributes
-
-/**
- The height with which to extrude the base of this layer. Must be less than or
- equal to `fillExtrusionHeight`.
-
- This property is measured in meters.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `fillExtrusionHeight` is
- non-`nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionBase;
-
-/**
- The transition affecting any changes to this layer’s `fillExtrusionBase` property.
-
- This property corresponds to the `fill-extrusion-base-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillExtrusionBaseTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The base color of this layer. The extrusion's surfaces will be shaded
- differently based on this color in combination with the `light` settings. If
- this color is specified with an alpha component, the alpha component will be
- ignored; use `fillExtrusionOpacity` to set layer opacityco.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `fillExtrusionPattern` is set to
- `nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionColor;
-#else
-/**
- The base color of this layer. The extrusion's surfaces will be shaded
- differently based on this color in combination with the `light` settings. If
- this color is specified with an alpha component, the alpha component will be
- ignored; use `fillExtrusionOpacity` to set layer opacityco.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `fillExtrusionPattern` is set to
- `nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `fillExtrusionColor` property.
-
- This property corresponds to the `fill-extrusion-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillExtrusionColorTransition;
-
-/**
- Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If
- true, sides will be shaded slightly darker farther down.
-
- The default value of this property is an expression that evaluates to `YES`.
- Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-extrusion-vertical-gradient"><code>fill-extrusion-vertical-gradient</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionHasVerticalGradient;
-
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionVerticalGradient __attribute__((unavailable("Use fillExtrusionHasVerticalGradient instead.")));
-
-/**
- The height with which to extrude this layer.
-
- This property is measured in meters.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionHeight;
-
-/**
- The transition affecting any changes to this layer’s `fillExtrusionHeight` property.
-
- This property corresponds to the `fill-extrusion-height-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillExtrusionHeightTransition;
-
-/**
- The opacity of the entire fill extrusion layer. This is rendered on a
- per-layer, not per-feature, basis, and data-driven styling is not available.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionOpacity;
-
-/**
- The transition affecting any changes to this layer’s `fillExtrusionOpacity` property.
-
- This property corresponds to the `fill-extrusion-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillExtrusionOpacityTransition;
-
-/**
- Name of image in style images to use for drawing image fill-extrusions. For
- seamless patterns, image width and height must be a factor of two (2, 4, 8,
- ..., 512).
-
- You can set this property to an expression containing any of the following:
-
- * Constant string values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionPattern;
-
-/**
- The transition affecting any changes to this layer’s `fillExtrusionPattern` property.
-
- This property corresponds to the `fill-extrusion-pattern-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillExtrusionPatternTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points downward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-extrusion-translate"><code>fill-extrusion-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionTranslation;
-#else
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points upward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-extrusion-translate"><code>fill-extrusion-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionTranslation;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `fillExtrusionTranslation` property.
-
- This property corresponds to the `fill-extrusion-translate-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillExtrusionTranslationTransition;
-
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionTranslate __attribute__((unavailable("Use fillExtrusionTranslation instead.")));
-
-/**
- Controls the frame of reference for `fillExtrusionTranslation`.
-
- The default value of this property is an expression that evaluates to `map`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `fillExtrusionTranslation` is
- non-`nil`. Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-extrusion-translate-anchor"><code>fill-extrusion-translate-anchor</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLFillExtrusionTranslationAnchor` values
- * Any of the following constant string values:
- * `map`: The fill extrusion is translated relative to the map.
- * `viewport`: The fill extrusion is translated relative to the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionTranslationAnchor;
-
-@property (nonatomic, null_resettable) NSExpression *fillExtrusionTranslateAnchor __attribute__((unavailable("Use fillExtrusionTranslationAnchor instead.")));
-
-@end
-
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGLFillExtrusionStyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGLFillExtrusionStyleLayerAdditions)
-
-#pragma mark Working with Fill extrusion Style Layer Attribute Values
-
-/**
- Creates a new value object containing the given `MGLFillExtrusionTranslationAnchor` enumeration.
-
- @param fillExtrusionTranslationAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLFillExtrusionTranslationAnchor:(MGLFillExtrusionTranslationAnchor)fillExtrusionTranslationAnchor;
-
-/**
- The `MGLFillExtrusionTranslationAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLFillExtrusionTranslationAnchor MGLFillExtrusionTranslationAnchorValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLFillExtrusionStyleLayer.mm b/platform/darwin/src/MGLFillExtrusionStyleLayer.mm
deleted file mode 100644
index ed6cd58460..0000000000
--- a/platform/darwin/src/MGLFillExtrusionStyleLayer.mm
+++ /dev/null
@@ -1,363 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLFillExtrusionStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLFillExtrusionStyleLayer_Private.h"
-
-#include <mbgl/style/layers/fill_extrusion_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLFillExtrusionTranslationAnchor, {
- { MGLFillExtrusionTranslationAnchorMap, "map" },
- { MGLFillExtrusionTranslationAnchorViewport, "viewport" },
- });
-
-}
-
-@interface MGLFillExtrusionStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::FillExtrusionLayer *rawLayer;
-
-@end
-
-@implementation MGLFillExtrusionStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::FillExtrusionLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::FillExtrusionLayer *)rawLayer
-{
- return (mbgl::style::FillExtrusionLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-- (NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- auto layerID = self.rawLayer->getSourceLayer();
- return layerID.empty() ? nil : @(layerID.c_str());
-}
-
-- (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting sourceLayerIdentifier: %@", sourceLayerIdentifier);
-
- self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: "");
-}
-
-- (void)setPredicate:(NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting predicate: %@", predicate);
-
- self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::Filter());
-}
-
-- (NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
-
- return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()];
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setFillExtrusionBase:(NSExpression *)fillExtrusionBase {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionBase: %@", fillExtrusionBase);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(fillExtrusionBase, true);
- self.rawLayer->setFillExtrusionBase(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionBase {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionBase();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionBase();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionBaseTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionBaseTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillExtrusionBaseTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillExtrusionBaseTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillExtrusionBaseTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillExtrusionColor:(NSExpression *)fillExtrusionColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionColor: %@", fillExtrusionColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(fillExtrusionColor, true);
- self.rawLayer->setFillExtrusionColor(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillExtrusionColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillExtrusionColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillExtrusionColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillExtrusionHasVerticalGradient:(NSExpression *)fillExtrusionHasVerticalGradient {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionHasVerticalGradient: %@", fillExtrusionHasVerticalGradient);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(fillExtrusionHasVerticalGradient, false);
- self.rawLayer->setFillExtrusionVerticalGradient(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionHasVerticalGradient {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionVerticalGradient();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionVerticalGradient();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionVerticalGradient:(NSExpression *)fillExtrusionVerticalGradient {
-}
-
-- (NSExpression *)fillExtrusionVerticalGradient {
- return self.fillExtrusionHasVerticalGradient;
-}
-
-- (void)setFillExtrusionHeight:(NSExpression *)fillExtrusionHeight {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionHeight: %@", fillExtrusionHeight);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(fillExtrusionHeight, true);
- self.rawLayer->setFillExtrusionHeight(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionHeight {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionHeight();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionHeight();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionHeightTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionHeightTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillExtrusionHeightTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillExtrusionHeightTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillExtrusionHeightTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillExtrusionOpacity:(NSExpression *)fillExtrusionOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionOpacity: %@", fillExtrusionOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(fillExtrusionOpacity, false);
- self.rawLayer->setFillExtrusionOpacity(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillExtrusionOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillExtrusionOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillExtrusionOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillExtrusionPattern:(NSExpression *)fillExtrusionPattern {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionPattern: %@", fillExtrusionPattern);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::expression::Image>>(fillExtrusionPattern, true);
- self.rawLayer->setFillExtrusionPattern(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionPattern {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionPattern();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionPattern();
- }
- return MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionPatternTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionPatternTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillExtrusionPatternTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillExtrusionPatternTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillExtrusionPatternTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillExtrusionTranslation:(NSExpression *)fillExtrusionTranslation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionTranslation: %@", fillExtrusionTranslation);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(fillExtrusionTranslation, false);
- self.rawLayer->setFillExtrusionTranslate(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionTranslation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionTranslate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionTranslate();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionTranslationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionTranslationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillExtrusionTranslateTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillExtrusionTranslationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillExtrusionTranslateTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillExtrusionTranslate:(NSExpression *)fillExtrusionTranslate {
-}
-
-- (NSExpression *)fillExtrusionTranslate {
- return self.fillExtrusionTranslation;
-}
-
-- (void)setFillExtrusionTranslationAnchor:(NSExpression *)fillExtrusionTranslationAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillExtrusionTranslationAnchor: %@", fillExtrusionTranslationAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLFillExtrusionTranslationAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType>>(fillExtrusionTranslationAnchor, false);
- self.rawLayer->setFillExtrusionTranslateAnchor(mbglValue);
-}
-
-- (NSExpression *)fillExtrusionTranslationAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillExtrusionTranslateAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillExtrusionTranslateAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLFillExtrusionTranslationAnchor>().toExpression(propertyValue);
-}
-
-- (void)setFillExtrusionTranslateAnchor:(NSExpression *)fillExtrusionTranslateAnchor {
-}
-
-- (NSExpression *)fillExtrusionTranslateAnchor {
- return self.fillExtrusionTranslationAnchor;
-}
-
-@end
-
-@implementation NSValue (MGLFillExtrusionStyleLayerAdditions)
-
-+ (NSValue *)valueWithMGLFillExtrusionTranslationAnchor:(MGLFillExtrusionTranslationAnchor)fillExtrusionTranslationAnchor {
- return [NSValue value:&fillExtrusionTranslationAnchor withObjCType:@encode(MGLFillExtrusionTranslationAnchor)];
-}
-
-- (MGLFillExtrusionTranslationAnchor)MGLFillExtrusionTranslationAnchorValue {
- MGLFillExtrusionTranslationAnchor fillExtrusionTranslationAnchor;
- [self getValue:&fillExtrusionTranslationAnchor];
- return fillExtrusionTranslationAnchor;
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* FillExtrusionStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLFillExtrusionStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLFillExtrusionStyleLayer_Private.h b/platform/darwin/src/MGLFillExtrusionStyleLayer_Private.h
deleted file mode 100644
index 2525b044af..0000000000
--- a/platform/darwin/src/MGLFillExtrusionStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/fill_extrusion_layer_factory.hpp>
-
-namespace mbgl {
-
-class FillExtrusionStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::FillExtrusionLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLFillStyleLayer.h b/platform/darwin/src/MGLFillStyleLayer.h
deleted file mode 100644
index b6f0e9bd06..0000000000
--- a/platform/darwin/src/MGLFillStyleLayer.h
+++ /dev/null
@@ -1,371 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLVectorStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Controls the frame of reference for `MGLFillStyleLayer.fillTranslation`.
-
- Values of this type are used in the `MGLFillStyleLayer.fillTranslationAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLFillTranslationAnchor) {
- /**
- The fill is translated relative to the map.
- */
- MGLFillTranslationAnchorMap,
- /**
- The fill is translated relative to the viewport.
- */
- MGLFillTranslationAnchorViewport,
-};
-
-/**
- An `MGLFillStyleLayer` is a style layer that renders one or more filled (and
- optionally stroked) polygons on the map.
-
- Use a fill style layer to configure the visual appearance of polygon or
- multipolygon features. These features can come from vector tiles loaded by an
- `MGLVectorTileSource` object, or they can be `MGLPolygon`, `MGLPolygonFeature`,
- `MGLMultiPolygon`, or `MGLMultiPolygonFeature` instances in an `MGLShapeSource`
- or `MGLComputedShapeSource` object.
-
- You can access an existing fill style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new fill style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/select-layer/">Select a feature
- within a layer</a> example to learn how to use a `TERNARY` expression to modify
- the `fillOpacity` of an `MGLFillStyleLayer` object. See the <a
- href="https://docs.mapbox.com/ios/maps/examples/fill-pattern/">Add a pattern to
- a polygon</a> example to learn how to use an image to add pattern to the
- features styled by a `MGLFillStyleLayer`.
-
- ### Example
-
- ```swift
- let layer = MGLFillStyleLayer(identifier: "parks", source: parks)
- layer.sourceLayerIdentifier = "parks"
- layer.fillColor = NSExpression(forConstantValue: UIColor.green)
- layer.predicate = NSPredicate(format: "type == %@", "national-park")
- mapView.style?.addLayer(layer)
- ```
- */
-MGL_EXPORT
-@interface MGLFillStyleLayer : MGLVectorStyleLayer
-
-/**
- Returns a fill style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Paint Attributes
-
-/**
- Whether or not the fill should be antialiased.
-
- The default value of this property is an expression that evaluates to `YES`.
- Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-antialias"><code>fill-antialias</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable, getter=isFillAntialiased) NSExpression *fillAntialiased;
-
-@property (nonatomic, null_resettable) NSExpression *fillAntialias __attribute__((unavailable("Use fillAntialiased instead.")));
-
-#if TARGET_OS_IPHONE
-/**
- The color of the filled part of this layer.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `fillPattern` is set to `nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillColor;
-#else
-/**
- The color of the filled part of this layer.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `fillPattern` is set to `nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `fillColor` property.
-
- This property corresponds to the `fill-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillColorTransition;
-
-/**
- The opacity of the entire fill layer. In contrast to the `fillColor`, this
- value will also affect the 1pt stroke around the fill, if the stroke is used.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillOpacity;
-
-/**
- The transition affecting any changes to this layer’s `fillOpacity` property.
-
- This property corresponds to the `fill-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillOpacityTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The outline color of the fill. Matches the value of `fillColor` if unspecified.
-
- This property is only applied to the style if `fillPattern` is set to `nil`,
- and `fillAntialiased` is set to an expression that evaluates to `YES`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillOutlineColor;
-#else
-/**
- The outline color of the fill. Matches the value of `fillColor` if unspecified.
-
- This property is only applied to the style if `fillPattern` is set to `nil`,
- and `fillAntialiased` is set to an expression that evaluates to `YES`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillOutlineColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `fillOutlineColor` property.
-
- This property corresponds to the `fill-outline-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillOutlineColorTransition;
-
-/**
- Name of image in sprite to use for drawing image fills. For seamless patterns,
- image width and height must be a factor of two (2, 4, 8, ..., 512). Note that
- zoom-dependent expressions will be evaluated only at integer zoom levels.
-
- You can set this property to an expression containing any of the following:
-
- * Constant string values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *fillPattern;
-
-/**
- The transition affecting any changes to this layer’s `fillPattern` property.
-
- This property corresponds to the `fill-pattern-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillPatternTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points downward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-translate"><code>fill-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillTranslation;
-#else
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points upward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-translate"><code>fill-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillTranslation;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `fillTranslation` property.
-
- This property corresponds to the `fill-translate-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition fillTranslationTransition;
-
-@property (nonatomic, null_resettable) NSExpression *fillTranslate __attribute__((unavailable("Use fillTranslation instead.")));
-
-/**
- Controls the frame of reference for `fillTranslation`.
-
- The default value of this property is an expression that evaluates to `map`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `fillTranslation` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-translate-anchor"><code>fill-translate-anchor</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLFillTranslationAnchor` values
- * Any of the following constant string values:
- * `map`: The fill is translated relative to the map.
- * `viewport`: The fill is translated relative to the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *fillTranslationAnchor;
-
-@property (nonatomic, null_resettable) NSExpression *fillTranslateAnchor __attribute__((unavailable("Use fillTranslationAnchor instead.")));
-
-@end
-
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGLFillStyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGLFillStyleLayerAdditions)
-
-#pragma mark Working with Fill Style Layer Attribute Values
-
-/**
- Creates a new value object containing the given `MGLFillTranslationAnchor` enumeration.
-
- @param fillTranslationAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLFillTranslationAnchor:(MGLFillTranslationAnchor)fillTranslationAnchor;
-
-/**
- The `MGLFillTranslationAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLFillTranslationAnchor MGLFillTranslationAnchorValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLFillStyleLayer.mm b/platform/darwin/src/MGLFillStyleLayer.mm
deleted file mode 100644
index d8c5516f3a..0000000000
--- a/platform/darwin/src/MGLFillStyleLayer.mm
+++ /dev/null
@@ -1,330 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLFillStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLFillStyleLayer_Private.h"
-
-#include <mbgl/style/layers/fill_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLFillTranslationAnchor, {
- { MGLFillTranslationAnchorMap, "map" },
- { MGLFillTranslationAnchorViewport, "viewport" },
- });
-
-}
-
-@interface MGLFillStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::FillLayer *rawLayer;
-
-@end
-
-@implementation MGLFillStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::FillLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::FillLayer *)rawLayer
-{
- return (mbgl::style::FillLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-- (NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- auto layerID = self.rawLayer->getSourceLayer();
- return layerID.empty() ? nil : @(layerID.c_str());
-}
-
-- (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting sourceLayerIdentifier: %@", sourceLayerIdentifier);
-
- self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: "");
-}
-
-- (void)setPredicate:(NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting predicate: %@", predicate);
-
- self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::Filter());
-}
-
-- (NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
-
- return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()];
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setFillAntialiased:(NSExpression *)fillAntialiased {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillAntialiased: %@", fillAntialiased);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(fillAntialiased, false);
- self.rawLayer->setFillAntialias(mbglValue);
-}
-
-- (NSExpression *)isFillAntialiased {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillAntialias();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillAntialias();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setFillAntialias:(NSExpression *)fillAntialias {
-}
-
-- (NSExpression *)fillAntialias {
- return self.isFillAntialiased;
-}
-
-- (void)setFillColor:(NSExpression *)fillColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillColor: %@", fillColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(fillColor, true);
- self.rawLayer->setFillColor(mbglValue);
-}
-
-- (NSExpression *)fillColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setFillColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillOpacity:(NSExpression *)fillOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillOpacity: %@", fillOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(fillOpacity, true);
- self.rawLayer->setFillOpacity(mbglValue);
-}
-
-- (NSExpression *)fillOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setFillOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillOutlineColor:(NSExpression *)fillOutlineColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillOutlineColor: %@", fillOutlineColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(fillOutlineColor, true);
- self.rawLayer->setFillOutlineColor(mbglValue);
-}
-
-- (NSExpression *)fillOutlineColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillOutlineColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillOutlineColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setFillOutlineColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillOutlineColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillOutlineColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillOutlineColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillOutlineColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillPattern:(NSExpression *)fillPattern {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillPattern: %@", fillPattern);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::expression::Image>>(fillPattern, true);
- self.rawLayer->setFillPattern(mbglValue);
-}
-
-- (NSExpression *)fillPattern {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillPattern();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillPattern();
- }
- return MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toExpression(propertyValue);
-}
-
-- (void)setFillPatternTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillPatternTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillPatternTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillPatternTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillPatternTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillTranslation:(NSExpression *)fillTranslation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillTranslation: %@", fillTranslation);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(fillTranslation, false);
- self.rawLayer->setFillTranslate(mbglValue);
-}
-
-- (NSExpression *)fillTranslation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillTranslate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillTranslate();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setFillTranslationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillTranslationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setFillTranslateTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)fillTranslationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getFillTranslateTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setFillTranslate:(NSExpression *)fillTranslate {
-}
-
-- (NSExpression *)fillTranslate {
- return self.fillTranslation;
-}
-
-- (void)setFillTranslationAnchor:(NSExpression *)fillTranslationAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting fillTranslationAnchor: %@", fillTranslationAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLFillTranslationAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType>>(fillTranslationAnchor, false);
- self.rawLayer->setFillTranslateAnchor(mbglValue);
-}
-
-- (NSExpression *)fillTranslationAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getFillTranslateAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultFillTranslateAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLFillTranslationAnchor>().toExpression(propertyValue);
-}
-
-- (void)setFillTranslateAnchor:(NSExpression *)fillTranslateAnchor {
-}
-
-- (NSExpression *)fillTranslateAnchor {
- return self.fillTranslationAnchor;
-}
-
-@end
-
-@implementation NSValue (MGLFillStyleLayerAdditions)
-
-+ (NSValue *)valueWithMGLFillTranslationAnchor:(MGLFillTranslationAnchor)fillTranslationAnchor {
- return [NSValue value:&fillTranslationAnchor withObjCType:@encode(MGLFillTranslationAnchor)];
-}
-
-- (MGLFillTranslationAnchor)MGLFillTranslationAnchorValue {
- MGLFillTranslationAnchor fillTranslationAnchor;
- [self getValue:&fillTranslationAnchor];
- return fillTranslationAnchor;
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* FillStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLFillStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLFillStyleLayer_Private.h b/platform/darwin/src/MGLFillStyleLayer_Private.h
deleted file mode 100644
index 01f8b16f32..0000000000
--- a/platform/darwin/src/MGLFillStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/fill_layer_factory.hpp>
-
-namespace mbgl {
-
-class FillStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::FillLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLForegroundStyleLayer.h b/platform/darwin/src/MGLForegroundStyleLayer.h
deleted file mode 100644
index 7e05023ef1..0000000000
--- a/platform/darwin/src/MGLForegroundStyleLayer.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLSource;
-
-/**
- `MGLForegroundStyleLayer` is an abstract superclass for style layers whose
- content is defined by an `MGLSource` object.
-
- Create instances of `MGLRasterStyleLayer`, `MGLHillshadeStyleLayer`, and the
- concrete subclasses of `MGLVectorStyleLayer` in order to use
- `MGLForegroundStyleLayer`'s methods. Do not create instances of
- `MGLForegroundStyleLayer` directly, and do not create your own subclasses of
- this class.
- */
-MGL_EXPORT
-@interface MGLForegroundStyleLayer : MGLStyleLayer
-
-#pragma mark Initializing a Style Layer
-
-- (instancetype)init __attribute__((unavailable("Use -init methods of concrete subclasses instead.")));
-
-#pragma mark Specifying a Style Layer’s Content
-
-/**
- Identifier of the source from which the receiver obtains the data to style.
- */
-@property (nonatomic, readonly, nullable) NSString *sourceIdentifier;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLForegroundStyleLayer.mm b/platform/darwin/src/MGLForegroundStyleLayer.mm
deleted file mode 100644
index eaa5e83e59..0000000000
--- a/platform/darwin/src/MGLForegroundStyleLayer.mm
+++ /dev/null
@@ -1,26 +0,0 @@
-#import "MGLForegroundStyleLayer.h"
-#import "MGLStyleLayer_Private.h"
-
-@implementation MGLForegroundStyleLayer
-
-- (NSString *)sourceIdentifier {
- [NSException raise:MGLAbstractClassException
- format:@"MGLForegroundStyleLayer is an abstract class"];
- return nil;
-}
-
-- (NSString *)description {
- if (self.rawLayer) {
- return [NSString stringWithFormat:
- @"<%@: %p; identifier = %@; sourceIdentifier = %@; visible = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier,
- self.sourceIdentifier, self.visible ? @"YES" : @"NO"];
- }
- else {
- return [NSString stringWithFormat:
- @"<%@: %p; identifier = %@; sourceIdentifier = <unknown>; visible = NO>",
- NSStringFromClass([self class]), (void *)self, self.identifier];
- }
-}
-
-@end
diff --git a/platform/darwin/src/MGLFoundation.h b/platform/darwin/src/MGLFoundation.h
deleted file mode 100644
index 3400c63979..0000000000
--- a/platform/darwin/src/MGLFoundation.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#pragma once
-
-#import <Foundation/Foundation.h>
-
-#define MGL_EXPORT __attribute__((visibility ("default")))
diff --git a/platform/darwin/src/MGLFoundation.mm b/platform/darwin/src/MGLFoundation.mm
deleted file mode 100644
index 5cda1dced3..0000000000
--- a/platform/darwin/src/MGLFoundation.mm
+++ /dev/null
@@ -1,6 +0,0 @@
-#import "MGLFoundation_Private.h"
-
-/// Initializes the run loop shim that lives on the main thread.
-void MGLInitializeRunLoop() {
- static mbgl::util::RunLoop runLoop;
-}
diff --git a/platform/darwin/src/MGLFoundation_Private.h b/platform/darwin/src/MGLFoundation_Private.h
deleted file mode 100644
index db81bde3de..0000000000
--- a/platform/darwin/src/MGLFoundation_Private.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#import "MGLFoundation.h"
-
-#include <mbgl/util/run_loop.hpp>
-
-void MGLInitializeRunLoop();
-
-/* Using a compound statement (GNU Extension, supported by clang) */
-#define MGL_OBJC_DYNAMIC_CAST(object, type) \
- ({ \
- __typeof__( object ) temp##__LINE__ = (object); \
- (type *)([temp##__LINE__ isKindOfClass:[type class]] ? temp##__LINE__ : nil); \
- })
-
-#define MGL_OBJC_DYNAMIC_CAST_AS_PROTOCOL(object, proto) \
- ({ \
- __typeof__( object ) temp##__LINE__ = (object); \
- (id< proto >)([temp##__LINE__ conformsToProtocol:@protocol( proto )] ? temp##__LINE__ : nil); \
- })
-
diff --git a/platform/darwin/src/MGLGeometry.h b/platform/darwin/src/MGLGeometry.h
deleted file mode 100644
index 397cf2a112..0000000000
--- a/platform/darwin/src/MGLGeometry.h
+++ /dev/null
@@ -1,243 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-#import <CoreGraphics/CoreGraphics.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** Defines the area spanned by an `MGLCoordinateBounds`. */
-typedef struct __attribute__((objc_boxable)) MGLCoordinateSpan {
- /** Latitudes spanned by an `MGLCoordinateBounds`. */
- CLLocationDegrees latitudeDelta;
- /** Longitudes spanned by an `MGLCoordinateBounds`. */
- CLLocationDegrees longitudeDelta;
-} MGLCoordinateSpan;
-
-/* Defines a point on the map in Mercator projection for a specific zoom level. */
-typedef struct __attribute__((objc_boxable)) MGLMapPoint {
- /** X coordinate representing a longitude in Mercator projection. */
- CGFloat x;
- /** Y coordinate representing a latitide in Mercator projection. */
- CGFloat y;
- /** Zoom level at which the X and Y coordinates are valid. */
- CGFloat zoomLevel;
-} MGLMapPoint;
-
-/* Defines a 4x4 matrix. */
-typedef struct MGLMatrix4 {
- double m00, m01, m02, m03;
- double m10, m11, m12, m13;
- double m20, m21, m22, m23;
- double m30, m31, m32, m33;
-} MGLMatrix4;
-
-/**
- Creates a new `MGLCoordinateSpan` from the given latitudinal and longitudinal
- deltas.
- */
-NS_INLINE MGLCoordinateSpan MGLCoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta) {
- MGLCoordinateSpan span;
- span.latitudeDelta = latitudeDelta;
- span.longitudeDelta = longitudeDelta;
- return span;
-}
-
-/**
- Creates a new `MGLMapPoint` from the given X and Y coordinates, and zoom level.
- */
-NS_INLINE MGLMapPoint MGLMapPointMake(CGFloat x, CGFloat y, CGFloat zoomLevel) {
- MGLMapPoint point;
- point.x = x;
- point.y = y;
- point.zoomLevel = zoomLevel;
- return point;
-}
-
-/**
- Returns `YES` if the two coordinate spans represent the same latitudinal change
- and the same longitudinal change.
- */
-NS_INLINE BOOL MGLCoordinateSpanEqualToCoordinateSpan(MGLCoordinateSpan span1, MGLCoordinateSpan span2) {
- return (span1.latitudeDelta == span2.latitudeDelta &&
- span1.longitudeDelta == span2.longitudeDelta);
-}
-
-/** An area of zero width and zero height. */
-FOUNDATION_EXTERN MGL_EXPORT const MGLCoordinateSpan MGLCoordinateSpanZero;
-
-/** A rectangular area as measured on a two-dimensional map projection. */
-typedef struct __attribute__((objc_boxable)) MGLCoordinateBounds {
- /** Coordinate at the southwest corner. */
- CLLocationCoordinate2D sw;
- /** Coordinate at the northeast corner. */
- CLLocationCoordinate2D ne;
-} MGLCoordinateBounds;
-
-/**
- A quadrilateral area as measured on a two-dimensional map projection.
- `MGLCoordinateQuad` differs from `MGLCoordinateBounds` in that it allows
- representation of non-axis aligned bounds and non-rectangular quadrilaterals.
- The coordinates are described in counter clockwise order from top left.
- */
-typedef struct MGLCoordinateQuad {
- /** Coordinate at the top left corner. */
- CLLocationCoordinate2D topLeft;
- /** Coordinate at the bottom left corner. */
- CLLocationCoordinate2D bottomLeft;
- /** Coordinate at the bottom right corner. */
- CLLocationCoordinate2D bottomRight;
- /** Coordinate at the top right corner. */
- CLLocationCoordinate2D topRight;
-} MGLCoordinateQuad;
-
-
-/**
- Creates a new `MGLCoordinateBounds` structure from the given southwest and
- northeast coordinates.
- */
-NS_INLINE MGLCoordinateBounds MGLCoordinateBoundsMake(CLLocationCoordinate2D sw, CLLocationCoordinate2D ne) {
- MGLCoordinateBounds bounds;
- bounds.sw = sw;
- bounds.ne = ne;
- return bounds;
-}
-
-/**
- Creates a new `MGLCoordinateQuad` structure from the given top left,
- bottom left, bottom right, and top right coordinates.
- */
-NS_INLINE MGLCoordinateQuad MGLCoordinateQuadMake(CLLocationCoordinate2D topLeft, CLLocationCoordinate2D bottomLeft, CLLocationCoordinate2D bottomRight, CLLocationCoordinate2D topRight) {
- MGLCoordinateQuad quad;
- quad.topLeft = topLeft;
- quad.bottomLeft = bottomLeft;
- quad.bottomRight = bottomRight;
- quad.topRight = topRight;
- return quad;
-}
-
-/**
- Creates a new `MGLCoordinateQuad` structure from the given `MGLCoordinateBounds`.
- The returned quad uses the bounds' northeast coordinate as the top right, and the
- southwest coordinate at the bottom left.
- */
-NS_INLINE MGLCoordinateQuad MGLCoordinateQuadFromCoordinateBounds(MGLCoordinateBounds bounds) {
- MGLCoordinateQuad quad;
- quad.topLeft = CLLocationCoordinate2DMake(bounds.ne.latitude, bounds.sw.longitude);
- quad.bottomLeft = bounds.sw;
- quad.bottomRight = CLLocationCoordinate2DMake(bounds.sw.latitude, bounds.ne.longitude);
- quad.topRight = bounds.ne;
- return quad;
-}
-
-/** Returns `YES` if the two coordinate bounds are equal to each other. */
-NS_INLINE BOOL MGLCoordinateBoundsEqualToCoordinateBounds(MGLCoordinateBounds bounds1, MGLCoordinateBounds bounds2) {
- return (bounds1.sw.latitude == bounds2.sw.latitude &&
- bounds1.sw.longitude == bounds2.sw.longitude &&
- bounds1.ne.latitude == bounds2.ne.latitude &&
- bounds1.ne.longitude == bounds2.ne.longitude);
-}
-
-/** Returns `YES` if the two coordinate bounds intersect. */
-NS_INLINE BOOL MGLCoordinateBoundsIntersectsCoordinateBounds(MGLCoordinateBounds bounds1, MGLCoordinateBounds bounds2) {
- return (bounds1.ne.latitude > bounds2.sw.latitude &&
- bounds1.sw.latitude < bounds2.ne.latitude &&
- bounds1.ne.longitude > bounds2.sw.longitude &&
- bounds1.sw.longitude < bounds2.ne.longitude);
-}
-
-/**
- Returns `YES` if the coordinate is within the coordinate bounds.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/constraining-gestures/">
- Restrict map panning to an area</a> example to learn how to use
- `MGLCoordinateInCoordinateBounds` to determine if a point is within, or
- intersects, a given bounding box.
- */
-NS_INLINE BOOL MGLCoordinateInCoordinateBounds(CLLocationCoordinate2D coordinate, MGLCoordinateBounds bounds) {
- return (coordinate.latitude >= bounds.sw.latitude &&
- coordinate.latitude <= bounds.ne.latitude &&
- coordinate.longitude >= bounds.sw.longitude &&
- coordinate.longitude <= bounds.ne.longitude);
-}
-
-/** Returns the area spanned by the coordinate bounds. */
-NS_INLINE MGLCoordinateSpan MGLCoordinateBoundsGetCoordinateSpan(MGLCoordinateBounds bounds) {
- return MGLCoordinateSpanMake(bounds.ne.latitude - bounds.sw.latitude,
- bounds.ne.longitude - bounds.sw.longitude);
-}
-
-/**
- Returns a coordinate bounds with southwest and northeast coordinates that are
- offset from those of the source bounds.
- */
-NS_INLINE MGLCoordinateBounds MGLCoordinateBoundsOffset(MGLCoordinateBounds bounds, MGLCoordinateSpan offset) {
- MGLCoordinateBounds offsetBounds = bounds;
- offsetBounds.sw.latitude += offset.latitudeDelta;
- offsetBounds.sw.longitude += offset.longitudeDelta;
- offsetBounds.ne.latitude += offset.latitudeDelta;
- offsetBounds.ne.longitude += offset.longitudeDelta;
- return offsetBounds;
-}
-
-/**
- Returns `YES` if the coordinate bounds covers no area.
-
- @note A bounds may be empty but have a non-zero coordinate span (e.g., when its
- northeast point lies due north of its southwest point).
- */
-NS_INLINE BOOL MGLCoordinateBoundsIsEmpty(MGLCoordinateBounds bounds) {
- MGLCoordinateSpan span = MGLCoordinateBoundsGetCoordinateSpan(bounds);
- return span.latitudeDelta == 0 || span.longitudeDelta == 0;
-}
-
-/** Returns a formatted string for the given coordinate bounds. */
-NS_INLINE NSString *MGLStringFromCoordinateBounds(MGLCoordinateBounds bounds) {
- return [NSString stringWithFormat:@"{ sw = {%.1f, %.1f}, ne = {%.1f, %.1f}}",
- bounds.sw.latitude, bounds.sw.longitude,
- bounds.ne.latitude, bounds.ne.longitude];
-}
-
-/** Returns a formatted string for the given coordinate quad. */
-NS_INLINE NSString *MGLStringFromCoordinateQuad(MGLCoordinateQuad quad) {
- return [NSString stringWithFormat:@"{ topleft = {%.1f, %.1f}, bottomleft = {%.1f, %.1f}}, bottomright = {%.1f, %.1f}, topright = {%.1f, %.1f}",
- quad.topLeft.latitude, quad.topLeft.longitude,
- quad.bottomLeft.latitude, quad.bottomLeft.longitude,
- quad.bottomRight.latitude, quad.bottomRight.longitude,
- quad.topRight.latitude, quad.topRight.longitude];
-}
-
-/** Returns radians, converted from degrees. */
-NS_INLINE CGFloat MGLRadiansFromDegrees(CLLocationDegrees degrees) {
- return (CGFloat)(degrees * M_PI) / 180;
-}
-
-/** Returns degrees, converted from radians. */
-NS_INLINE CLLocationDegrees MGLDegreesFromRadians(CGFloat radians) {
- return radians * 180 / M_PI;
-}
-
-/** Returns Mercator projection of a WGS84 coordinate at the specified zoom level. */
-FOUNDATION_EXTERN MGL_EXPORT MGLMapPoint MGLMapPointForCoordinate(CLLocationCoordinate2D coordinate, double zoomLevel);
-
-
-/** Converts a map zoom level to a camera altitude.
-
- @param zoomLevel The zoom level to convert.
- @param pitch The camera pitch, measured in degrees.
- @param latitude The latitude of the point at the center of the viewport.
- @param size The size of the viewport.
- @return An altitude measured in meters. */
-FOUNDATION_EXTERN MGL_EXPORT CLLocationDistance MGLAltitudeForZoomLevel(double zoomLevel, CGFloat pitch, CLLocationDegrees latitude, CGSize size);
-
-/** Converts a camera altitude to a map zoom level.
-
- @param altitude The altitude to convert, measured in meters.
- @param pitch The camera pitch, measured in degrees.
- @param latitude The latitude of the point at the center of the viewport.
- @param size The size of the viewport.
- @return A zero-based zoom level. */
-FOUNDATION_EXTERN MGL_EXPORT double MGLZoomLevelForAltitude(CLLocationDistance altitude, CGFloat pitch, CLLocationDegrees latitude, CGSize size);
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLGeometry.mm b/platform/darwin/src/MGLGeometry.mm
deleted file mode 100644
index c6fb5a5fc2..0000000000
--- a/platform/darwin/src/MGLGeometry.mm
+++ /dev/null
@@ -1,122 +0,0 @@
-#import "MGLGeometry_Private.h"
-
-#import "MGLFoundation.h"
-
-#import <mbgl/util/projection.hpp>
-
-#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
-#import <Cocoa/Cocoa.h>
-#endif
-
-/** Vertical field of view, measured in degrees, for determining the altitude
- of the viewpoint.
-
- TransformState::getProjMatrix() has a variable vertical field of view that
- defaults to 2 arctan ⅓ rad ≈ 36.9° but MapKit uses a vertical field of view of 30°.
- flyTo() assumes a field of view of 2 arctan ½ rad. */
-const CLLocationDegrees MGLAngularFieldOfView = 30;
-
-const MGLCoordinateSpan MGLCoordinateSpanZero = {0, 0};
-
-CGRect MGLExtendRect(CGRect rect, CGPoint point) {
- if (point.x < rect.origin.x) {
- rect.size.width += rect.origin.x - point.x;
- rect.origin.x = point.x;
- }
- if (point.x > rect.origin.x + rect.size.width) {
- rect.size.width += point.x - (rect.origin.x + rect.size.width);
- }
- if (point.y < rect.origin.y) {
- rect.size.height += rect.origin.y - point.y;
- rect.origin.y = point.y;
- }
- if (point.y > rect.origin.y + rect.size.height) {
- rect.size.height += point.y - (rect.origin.y + rect.size.height);
- }
- return rect;
-}
-
-mbgl::LatLng MGLLatLngFromLocationCoordinate2D(CLLocationCoordinate2D coordinate) {
- try {
- return mbgl::LatLng(coordinate.latitude, coordinate.longitude);
- } catch (std::domain_error &error) {
- [NSException raise:NSInvalidArgumentException format:@"%s", error.what()];
- return {};
- }
-}
-
-CLLocationDistance MGLAltitudeForZoomLevel(double zoomLevel, CGFloat pitch, CLLocationDegrees latitude, CGSize size) {
- CLLocationDistance metersPerPixel = mbgl::Projection::getMetersPerPixelAtLatitude(latitude, zoomLevel);
- CLLocationDistance metersTall = metersPerPixel * size.height;
- CLLocationDistance altitude = metersTall / 2 / std::tan(MGLRadiansFromDegrees(MGLAngularFieldOfView) / 2.);
- return altitude * std::sin(M_PI_2 - MGLRadiansFromDegrees(pitch)) / std::sin(M_PI_2);
-}
-
-double MGLZoomLevelForAltitude(CLLocationDistance altitude, CGFloat pitch, CLLocationDegrees latitude, CGSize size) {
- CLLocationDistance eyeAltitude = altitude / std::sin(M_PI_2 - MGLRadiansFromDegrees(pitch)) * std::sin(M_PI_2);
- CLLocationDistance metersTall = eyeAltitude * 2 * std::tan(MGLRadiansFromDegrees(MGLAngularFieldOfView) / 2.);
- CLLocationDistance metersPerPixel = metersTall / size.height;
- CGFloat mapPixelWidthAtZoom = std::cos(MGLRadiansFromDegrees(latitude)) * mbgl::util::M2PI * mbgl::util::EARTH_RADIUS_M / metersPerPixel;
- return ::log2(mapPixelWidthAtZoom / mbgl::util::tileSize);
-}
-
-MGLRadianDistance MGLDistanceBetweenRadianCoordinates(MGLRadianCoordinate2D from, MGLRadianCoordinate2D to) {
- double a = pow(sin((to.latitude - from.latitude) / 2), 2)
- + pow(sin((to.longitude - from.longitude) / 2), 2) * cos(from.latitude) * cos(to.latitude);
-
- return 2 * atan2(sqrt(a), sqrt(1 - a));
-}
-
-MGLRadianDirection MGLRadianCoordinatesDirection(MGLRadianCoordinate2D from, MGLRadianCoordinate2D to) {
- double a = sin(to.longitude - from.longitude) * cos(to.latitude);
- double b = cos(from.latitude) * sin(to.latitude)
- - sin(from.latitude) * cos(to.latitude) * cos(to.longitude - from.longitude);
- return atan2(a, b);
-}
-
-MGLRadianCoordinate2D MGLRadianCoordinateAtDistanceFacingDirection(MGLRadianCoordinate2D coordinate,
- MGLRadianDistance distance,
- MGLRadianDirection direction) {
- double otherLatitude = asin(sin(coordinate.latitude) * cos(distance)
- + cos(coordinate.latitude) * sin(distance) * cos(direction));
- double otherLongitude = coordinate.longitude + atan2(sin(direction) * sin(distance) * cos(coordinate.latitude),
- cos(distance) - sin(coordinate.latitude) * sin(otherLatitude));
- return MGLRadianCoordinate2DMake(otherLatitude, otherLongitude);
-}
-
-CLLocationDirection MGLDirectionBetweenCoordinates(CLLocationCoordinate2D firstCoordinate, CLLocationCoordinate2D secondCoordinate) {
- // Ported from https://github.com/mapbox/turf-swift/blob/857e2e8060678ef4a7a9169d4971b0788fdffc37/Turf/Turf.swift#L23-L31
- MGLRadianCoordinate2D firstRadianCoordinate = MGLRadianCoordinateFromLocationCoordinate(firstCoordinate);
- MGLRadianCoordinate2D secondRadianCoordinate = MGLRadianCoordinateFromLocationCoordinate(secondCoordinate);
-
- CGFloat a = sin(secondRadianCoordinate.longitude - firstRadianCoordinate.longitude) * cos(secondRadianCoordinate.latitude);
- CGFloat b = (cos(firstRadianCoordinate.latitude) * sin(secondRadianCoordinate.latitude)
- - sin(firstRadianCoordinate.latitude) * cos(secondRadianCoordinate.latitude) * cos(secondRadianCoordinate.longitude - firstRadianCoordinate.longitude));
- MGLRadianDirection radianDirection = atan2(a, b);
- return radianDirection * 180 / M_PI;
-}
-
-CGPoint MGLPointRounded(CGPoint point) {
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- CGFloat scaleFactor = [UIScreen mainScreen].nativeScale;
-#elif TARGET_OS_MAC
- CGFloat scaleFactor = [NSScreen mainScreen].backingScaleFactor;
-#endif
- return CGPointMake(round(point.x * scaleFactor) / scaleFactor, round(point.y * scaleFactor) / scaleFactor);
-}
-
-MGLMapPoint MGLMapPointForCoordinate(CLLocationCoordinate2D coordinate, double zoomLevel) {
- mbgl::Point<double> projectedCoordinate = mbgl::Projection::project(MGLLatLngFromLocationCoordinate2D(coordinate), std::pow(2.0, zoomLevel));
- return MGLMapPointMake(projectedCoordinate.x, projectedCoordinate.y, zoomLevel);
-}
-
-MGLMatrix4 MGLMatrix4Make(std::array<double, 16> array) {
- MGLMatrix4 mat4 = {
- .m00 = array[0], .m01 = array[1], .m02 = array[2], .m03 = array[3],
- .m10 = array[4], .m11 = array[5], .m12 = array[6], .m13 = array[7],
- .m20 = array[8], .m21 = array[9], .m22 = array[10], .m23 = array[11],
- .m30 = array[12], .m31 = array[13], .m32 = array[14], .m33 = array[15]
- };
- return mat4;
-}
-
diff --git a/platform/darwin/src/MGLGeometry_Private.h b/platform/darwin/src/MGLGeometry_Private.h
deleted file mode 100644
index a89a382c5e..0000000000
--- a/platform/darwin/src/MGLGeometry_Private.h
+++ /dev/null
@@ -1,152 +0,0 @@
-#import "MGLGeometry.h"
-
-#import <TargetConditionals.h>
-#if TARGET_OS_IPHONE
- #import <UIKit/UIKit.h>
-#endif
-
-#import <mbgl/util/geo.hpp>
-#import <mbgl/util/geometry.hpp>
-
-#import <array>
-typedef double MGLLocationRadians;
-typedef double MGLRadianDistance;
-typedef double MGLRadianDirection;
-
-/** Defines the coordinate by a `MGLRadianCoordinate2D`. */
-typedef struct MGLRadianCoordinate2D {
- MGLLocationRadians latitude;
- MGLLocationRadians longitude;
-} MGLRadianCoordinate2D;
-
-/**
- Creates a new `MGLRadianCoordinate2D` from the given latitudinal and longitudinal.
- */
-NS_INLINE MGLRadianCoordinate2D MGLRadianCoordinate2DMake(MGLLocationRadians latitude, MGLLocationRadians longitude) {
- MGLRadianCoordinate2D radianCoordinate;
- radianCoordinate.latitude = latitude;
- radianCoordinate.longitude = longitude;
- return radianCoordinate;
-}
-
-/// Returns the smallest rectangle that contains both the given rectangle and
-/// the given point.
-CGRect MGLExtendRect(CGRect rect, CGPoint point);
-
-#if TARGET_OS_IPHONE
-NS_INLINE NSString *MGLStringFromSize(CGSize size) {
- return NSStringFromCGSize(size);
-}
-#else
-NS_INLINE NSString *MGLStringFromSize(NSSize size) {
- return NSStringFromSize(size);
-}
-#endif
-
-NS_INLINE NSString *MGLStringFromCLLocationCoordinate2D(CLLocationCoordinate2D coordinate) {
- return [NSString stringWithFormat:@"(lat: %f, lon: %f)", coordinate.latitude, coordinate.longitude];
-}
-
-mbgl::LatLng MGLLatLngFromLocationCoordinate2D(CLLocationCoordinate2D coordinate);
-
-NS_INLINE mbgl::Point<double> MGLPointFromLocationCoordinate2D(CLLocationCoordinate2D coordinate) {
- return mbgl::Point<double>(coordinate.longitude, coordinate.latitude);
-}
-
-NS_INLINE CLLocationCoordinate2D MGLLocationCoordinate2DFromPoint(mbgl::Point<double> point) {
- return CLLocationCoordinate2DMake(point.y, point.x);
-}
-
-NS_INLINE CLLocationCoordinate2D MGLLocationCoordinate2DFromLatLng(mbgl::LatLng latLng) {
- return CLLocationCoordinate2DMake(latLng.latitude(), latLng.longitude());
-}
-
-NS_INLINE MGLCoordinateBounds MGLCoordinateBoundsFromLatLngBounds(mbgl::LatLngBounds latLngBounds) {
- return MGLCoordinateBoundsMake(MGLLocationCoordinate2DFromLatLng(latLngBounds.southwest()),
- MGLLocationCoordinate2DFromLatLng(latLngBounds.northeast()));
-}
-
-NS_INLINE mbgl::LatLngBounds MGLLatLngBoundsFromCoordinateBounds(MGLCoordinateBounds coordinateBounds) {
- return mbgl::LatLngBounds::hull(MGLLatLngFromLocationCoordinate2D(coordinateBounds.sw),
- MGLLatLngFromLocationCoordinate2D(coordinateBounds.ne));
-}
-
-NS_INLINE std::array<mbgl::LatLng, 4> MGLLatLngArrayFromCoordinateQuad(MGLCoordinateQuad quad) {
- return { MGLLatLngFromLocationCoordinate2D(quad.topLeft),
- MGLLatLngFromLocationCoordinate2D(quad.topRight),
- MGLLatLngFromLocationCoordinate2D(quad.bottomRight),
- MGLLatLngFromLocationCoordinate2D(quad.bottomLeft) };
-}
-
-NS_INLINE MGLCoordinateQuad MGLCoordinateQuadFromLatLngArray(std::array<mbgl::LatLng, 4> quad) {
- return { MGLLocationCoordinate2DFromLatLng(quad[0]),
- MGLLocationCoordinate2DFromLatLng(quad[3]),
- MGLLocationCoordinate2DFromLatLng(quad[2]),
- MGLLocationCoordinate2DFromLatLng(quad[1]) };
-}
-
-/**
- YES if the coordinate is valid or NO if it is not.
- Considers extended coordinates.
- */
-NS_INLINE BOOL MGLLocationCoordinate2DIsValid(CLLocationCoordinate2D coordinate) {
- return (coordinate.latitude <= 90.0 &&
- coordinate.latitude >= -90.0 &&
- coordinate.longitude <= 360.0 &&
- coordinate.longitude >= -360.0);
-}
-
-#if TARGET_OS_IPHONE
- #define MGLEdgeInsets UIEdgeInsets
- #define MGLEdgeInsetsMake UIEdgeInsetsMake
-#else
- #define MGLEdgeInsets NSEdgeInsets
- #define MGLEdgeInsetsMake NSEdgeInsetsMake
-#endif
-
-NS_INLINE mbgl::EdgeInsets MGLEdgeInsetsFromNSEdgeInsets(MGLEdgeInsets insets) {
- return { insets.top, insets.left, insets.bottom, insets.right };
-}
-
-/// Returns the combination of two edge insets.
-NS_INLINE MGLEdgeInsets MGLEdgeInsetsInsetEdgeInset(MGLEdgeInsets base, MGLEdgeInsets inset) {
- return MGLEdgeInsetsMake(base.top + inset.top,
- base.left + inset.left,
- base.bottom + inset.bottom,
- base.right + inset.right);
-}
-
-/** Returns MGLRadianCoordinate2D, converted from CLLocationCoordinate2D. */
-NS_INLINE MGLRadianCoordinate2D MGLRadianCoordinateFromLocationCoordinate(CLLocationCoordinate2D locationCoordinate) {
- return MGLRadianCoordinate2DMake(MGLRadiansFromDegrees(locationCoordinate.latitude),
- MGLRadiansFromDegrees(locationCoordinate.longitude));
-}
-
-/**
- Returns the distance in radians given two coordinates.
- */
-MGLRadianDistance MGLDistanceBetweenRadianCoordinates(MGLRadianCoordinate2D from, MGLRadianCoordinate2D to);
-
-/**
- Returns direction in radians given two coordinates.
- */
-MGLRadianDirection MGLRadianCoordinatesDirection(MGLRadianCoordinate2D from, MGLRadianCoordinate2D to);
-
-/**
- Returns a coordinate at a given distance and direction away from coordinate.
- */
-MGLRadianCoordinate2D MGLRadianCoordinateAtDistanceFacingDirection(MGLRadianCoordinate2D coordinate,
- MGLRadianDistance distance,
- MGLRadianDirection direction);
-
-/**
- Returns the direction from one coordinate to another.
- */
-CLLocationDirection MGLDirectionBetweenCoordinates(CLLocationCoordinate2D firstCoordinate, CLLocationCoordinate2D secondCoordinate);
-
-/**
- Returns a point with coordinates rounded to the nearest logical pixel.
- */
-CGPoint MGLPointRounded(CGPoint point);
-
-MGLMatrix4 MGLMatrix4Make(std::array<double, 16> mat);
diff --git a/platform/darwin/src/MGLHeatmapStyleLayer.h b/platform/darwin/src/MGLHeatmapStyleLayer.h
deleted file mode 100644
index 3c6dfbc296..0000000000
--- a/platform/darwin/src/MGLHeatmapStyleLayer.h
+++ /dev/null
@@ -1,220 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLVectorStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `MGLHeatmapStyleLayer` is a style layer that renders a <a
- href="https://en.wikipedia.org/wiki/Heat_map">heatmap</a>.
-
- A heatmap visualizes the spatial distribution of a large, dense set of point
- data, using color to avoid cluttering the map with individual points at low
- zoom levels. The points are weighted by an attribute you specify. Use a heatmap
- style layer in conjunction with point or point collection features. These
- features can come from vector tiles loaded by an `MGLVectorTileSource` object,
- or they can be `MGLPointAnnotation`, `MGLPointFeature`, `MGLPointCollection`,
- or `MGLPointCollectionFeature` instances in an `MGLShapeSource` or
- `MGLComputedShapeSource` object.
-
- Consider accompanying a heatmap style layer with an `MGLCircleStyleLayer` or
- `MGLSymbolStyleLayer` at high zoom levels. If you are unsure whether the point
- data in an `MGLShapeSource` is dense enough to warrant a heatmap, you can
- alternatively cluster the source using the `MGLShapeSourceOptionClustered`
- option and render the data using an `MGLCircleStyleLayer` or
- `MGLSymbolStyleLayer`.
-
- You can access an existing heatmap style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new heatmap style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/heatmap-example/">Create a
- heatmap layer</a> example to learn how to add this style layer to your map.
-
- ### Example
-
- ```swift
- let layer = MGLHeatmapStyleLayer(identifier: "earthquake-heat", source: earthquakes)
- layer.heatmapWeight = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:(magnitude, 'linear', nil, %@)",
- [0: 0,
- 6: 1])
- layer.heatmapIntensity = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)",
- [0: 1,
- 9: 3])
- mapView.style?.addLayer(layer)
- ```
- */
-MGL_EXPORT
-@interface MGLHeatmapStyleLayer : MGLVectorStyleLayer
-
-/**
- Returns a heatmap style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Paint Attributes
-
-#if TARGET_OS_IPHONE
-/**
- The color of each screen point based on its density value in a heatmap. This
- property is normally set to an interpolation or step expression with the
- `$heatmapDensity` value as its input.
-
- The default value of this property is an expression that evaluates to a rainbow
- color scale from blue to red. Set this property to `nil` to reset it to the
- default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$heatmapDensity` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *heatmapColor;
-#else
-/**
- The color of each screen point based on its density value in a heatmap. This
- property is normally set to an interpolation or step expression with the
- `$heatmapDensity` value as its input.
-
- The default value of this property is an expression that evaluates to a rainbow
- color scale from blue to red. Set this property to `nil` to reset it to the
- default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$heatmapDensity` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *heatmapColor;
-#endif
-
-/**
- Similar to `heatmapWeight` but controls the intensity of the heatmap globally.
- Primarily used for adjusting the heatmap based on zoom level.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *heatmapIntensity;
-
-/**
- The transition affecting any changes to this layer’s `heatmapIntensity` property.
-
- This property corresponds to the `heatmap-intensity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition heatmapIntensityTransition;
-
-/**
- The global opacity at which the heatmap layer will be drawn.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *heatmapOpacity;
-
-/**
- The transition affecting any changes to this layer’s `heatmapOpacity` property.
-
- This property corresponds to the `heatmap-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition heatmapOpacityTransition;
-
-/**
- Radius of influence of one heatmap point in points. Increasing the value makes
- the heatmap smoother, but less detailed.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `30`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 1
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *heatmapRadius;
-
-/**
- The transition affecting any changes to this layer’s `heatmapRadius` property.
-
- This property corresponds to the `heatmap-radius-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition heatmapRadiusTransition;
-
-/**
- A measure of how much an individual point contributes to the heatmap. A value
- of 10 would be equivalent to having 10 points of weight 1 in the same spot.
- Especially useful when combined with clustering.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *heatmapWeight;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLHeatmapStyleLayer.mm b/platform/darwin/src/MGLHeatmapStyleLayer.mm
deleted file mode 100644
index 41d9597dd7..0000000000
--- a/platform/darwin/src/MGLHeatmapStyleLayer.mm
+++ /dev/null
@@ -1,220 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLHeatmapStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLHeatmapStyleLayer_Private.h"
-
-#include <mbgl/style/layers/heatmap_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-@interface MGLHeatmapStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::HeatmapLayer *rawLayer;
-
-@end
-
-@implementation MGLHeatmapStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::HeatmapLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::HeatmapLayer *)rawLayer
-{
- return (mbgl::style::HeatmapLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-- (NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- auto layerID = self.rawLayer->getSourceLayer();
- return layerID.empty() ? nil : @(layerID.c_str());
-}
-
-- (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting sourceLayerIdentifier: %@", sourceLayerIdentifier);
-
- self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: "");
-}
-
-- (void)setPredicate:(NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting predicate: %@", predicate);
-
- self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::Filter());
-}
-
-- (NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
-
- return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()];
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setHeatmapColor:(NSExpression *)heatmapColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapColor: %@", heatmapColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::ColorRampPropertyValue>(heatmapColor);
- self.rawLayer->setHeatmapColor(mbglValue);
-}
-
-- (NSExpression *)heatmapColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHeatmapColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHeatmapColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setHeatmapIntensity:(NSExpression *)heatmapIntensity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapIntensity: %@", heatmapIntensity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(heatmapIntensity, false);
- self.rawLayer->setHeatmapIntensity(mbglValue);
-}
-
-- (NSExpression *)heatmapIntensity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHeatmapIntensity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHeatmapIntensity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setHeatmapIntensityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapIntensityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setHeatmapIntensityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)heatmapIntensityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getHeatmapIntensityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setHeatmapOpacity:(NSExpression *)heatmapOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapOpacity: %@", heatmapOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(heatmapOpacity, false);
- self.rawLayer->setHeatmapOpacity(mbglValue);
-}
-
-- (NSExpression *)heatmapOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHeatmapOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHeatmapOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setHeatmapOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setHeatmapOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)heatmapOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getHeatmapOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setHeatmapRadius:(NSExpression *)heatmapRadius {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapRadius: %@", heatmapRadius);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(heatmapRadius, true);
- self.rawLayer->setHeatmapRadius(mbglValue);
-}
-
-- (NSExpression *)heatmapRadius {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHeatmapRadius();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHeatmapRadius();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setHeatmapRadiusTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapRadiusTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setHeatmapRadiusTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)heatmapRadiusTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getHeatmapRadiusTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setHeatmapWeight:(NSExpression *)heatmapWeight {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting heatmapWeight: %@", heatmapWeight);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(heatmapWeight, true);
- self.rawLayer->setHeatmapWeight(mbglValue);
-}
-
-- (NSExpression *)heatmapWeight {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHeatmapWeight();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHeatmapWeight();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* HeatmapStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLHeatmapStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLHeatmapStyleLayer_Private.h b/platform/darwin/src/MGLHeatmapStyleLayer_Private.h
deleted file mode 100644
index 407036cedf..0000000000
--- a/platform/darwin/src/MGLHeatmapStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/heatmap_layer_factory.hpp>
-
-namespace mbgl {
-
-class HeatmapStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::HeatmapLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLHillshadeStyleLayer.h b/platform/darwin/src/MGLHillshadeStyleLayer.h
deleted file mode 100644
index 1cf3797321..0000000000
--- a/platform/darwin/src/MGLHillshadeStyleLayer.h
+++ /dev/null
@@ -1,324 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLForegroundStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Direction of light source when map is rotated.
-
- Values of this type are used in the `MGLHillshadeStyleLayer.hillshadeIlluminationAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLHillshadeIlluminationAnchor) {
- /**
- The hillshade illumination is relative to the north direction.
- */
- MGLHillshadeIlluminationAnchorMap,
- /**
- The hillshade illumination is relative to the top of the viewport.
- */
- MGLHillshadeIlluminationAnchorViewport,
-};
-
-/**
- An `MGLHillshadeStyleLayer` is a style layer that renders raster <a
- href="https://en.wikipedia.org/wiki/Digital_elevation_model">digital elevation
- model</a> (DEM) tiles on the map.
-
- Use a hillshade style layer to configure the color parameters of raster tiles
- loaded by an `MGLRasterDEMSource` object. For example, you could use a
- hillshade style layer to render <a
- href="https://docs.mapbox.com/help/troubleshooting/access-elevation-data/#mapbox-terrain-rgb">Mapbox
- Terrain-RGB</a> data.
-
- To display posterized hillshading based on vector shapes, as with the <a
- href="https://www.mapbox.com/vector-tiles/mapbox-terrain/">Mapbox Terrain</a>
- source, use an `MGLVectorTileSource` object in conjunction with several
- `MGLFillStyleLayer` objects.
-
- You can access an existing hillshade style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new hillshade style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- ### Example
-
- ```swift
- let layer = MGLHillshadeStyleLayer(identifier: "hills", source: source)
- layer.hillshadeExaggeration = NSExpression(forConstantValue: 0.6)
- if let canalShadowLayer = mapView.style?.layer(withIdentifier: "waterway-river-canal-shadow") {
- mapView.style?.insertLayer(layer, below: canalShadowLayer)
- }
- ```
- */
-MGL_EXPORT
-@interface MGLHillshadeStyleLayer : MGLForegroundStyleLayer
-
-/**
- Returns a hillshade style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Paint Attributes
-
-#if TARGET_OS_IPHONE
-/**
- The shading color used to accentuate rugged terrain like sharp cliffs and
- gorges.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeAccentColor;
-#else
-/**
- The shading color used to accentuate rugged terrain like sharp cliffs and
- gorges.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeAccentColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `hillshadeAccentColor` property.
-
- This property corresponds to the `hillshade-accent-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition hillshadeAccentColorTransition;
-
-/**
- Intensity of the hillshade
-
- The default value of this property is an expression that evaluates to the float
- `0.5`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeExaggeration;
-
-/**
- The transition affecting any changes to this layer’s `hillshadeExaggeration` property.
-
- This property corresponds to the `hillshade-exaggeration-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition hillshadeExaggerationTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The shading color of areas that faces towards the light source.
-
- The default value of this property is an expression that evaluates to
- `UIColor.whiteColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeHighlightColor;
-#else
-/**
- The shading color of areas that faces towards the light source.
-
- The default value of this property is an expression that evaluates to
- `NSColor.whiteColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeHighlightColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `hillshadeHighlightColor` property.
-
- This property corresponds to the `hillshade-highlight-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition hillshadeHighlightColorTransition;
-
-/**
- Direction of light source when map is rotated.
-
- The default value of this property is an expression that evaluates to
- `viewport`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLHillshadeIlluminationAnchor` values
- * Any of the following constant string values:
- * `map`: The hillshade illumination is relative to the north direction.
- * `viewport`: The hillshade illumination is relative to the top of the
- viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeIlluminationAnchor;
-
-/**
- The direction of the light source used to generate the hillshading with 0 as
- the top of the viewport if `hillshadeIlluminationAnchor` is set to
- `MGLHillshadeIlluminationAnchorViewport` and due north if
- `hillshadeIlluminationAnchor` is set to `MGLHillshadeIlluminationAnchorMap`.
-
- The default value of this property is an expression that evaluates to the float
- `335`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 359 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeIlluminationDirection;
-
-#if TARGET_OS_IPHONE
-/**
- The shading color of areas that face away from the light source.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeShadowColor;
-#else
-/**
- The shading color of areas that face away from the light source.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *hillshadeShadowColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `hillshadeShadowColor` property.
-
- This property corresponds to the `hillshade-shadow-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition hillshadeShadowColorTransition;
-
-@end
-
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGLHillshadeStyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGLHillshadeStyleLayerAdditions)
-
-#pragma mark Working with Hillshade Style Layer Attribute Values
-
-/**
- Creates a new value object containing the given `MGLHillshadeIlluminationAnchor` enumeration.
-
- @param hillshadeIlluminationAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLHillshadeIlluminationAnchor:(MGLHillshadeIlluminationAnchor)hillshadeIlluminationAnchor;
-
-/**
- The `MGLHillshadeIlluminationAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLHillshadeIlluminationAnchor MGLHillshadeIlluminationAnchorValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLHillshadeStyleLayer.mm b/platform/darwin/src/MGLHillshadeStyleLayer.mm
deleted file mode 100644
index 6bb167d43d..0000000000
--- a/platform/darwin/src/MGLHillshadeStyleLayer.mm
+++ /dev/null
@@ -1,245 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLHillshadeStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLHillshadeStyleLayer_Private.h"
-
-#include <mbgl/style/layers/hillshade_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLHillshadeIlluminationAnchor, {
- { MGLHillshadeIlluminationAnchorMap, "map" },
- { MGLHillshadeIlluminationAnchorViewport, "viewport" },
- });
-
-}
-
-@interface MGLHillshadeStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::HillshadeLayer *rawLayer;
-
-@end
-
-@implementation MGLHillshadeStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::HillshadeLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::HillshadeLayer *)rawLayer
-{
- return (mbgl::style::HillshadeLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setHillshadeAccentColor:(NSExpression *)hillshadeAccentColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeAccentColor: %@", hillshadeAccentColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(hillshadeAccentColor, false);
- self.rawLayer->setHillshadeAccentColor(mbglValue);
-}
-
-- (NSExpression *)hillshadeAccentColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHillshadeAccentColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHillshadeAccentColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setHillshadeAccentColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeAccentColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setHillshadeAccentColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)hillshadeAccentColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getHillshadeAccentColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setHillshadeExaggeration:(NSExpression *)hillshadeExaggeration {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeExaggeration: %@", hillshadeExaggeration);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(hillshadeExaggeration, false);
- self.rawLayer->setHillshadeExaggeration(mbglValue);
-}
-
-- (NSExpression *)hillshadeExaggeration {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHillshadeExaggeration();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHillshadeExaggeration();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setHillshadeExaggerationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeExaggerationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setHillshadeExaggerationTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)hillshadeExaggerationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getHillshadeExaggerationTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setHillshadeHighlightColor:(NSExpression *)hillshadeHighlightColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeHighlightColor: %@", hillshadeHighlightColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(hillshadeHighlightColor, false);
- self.rawLayer->setHillshadeHighlightColor(mbglValue);
-}
-
-- (NSExpression *)hillshadeHighlightColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHillshadeHighlightColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHillshadeHighlightColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setHillshadeHighlightColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeHighlightColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setHillshadeHighlightColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)hillshadeHighlightColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getHillshadeHighlightColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setHillshadeIlluminationAnchor:(NSExpression *)hillshadeIlluminationAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeIlluminationAnchor: %@", hillshadeIlluminationAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::HillshadeIlluminationAnchorType, NSValue *, mbgl::style::HillshadeIlluminationAnchorType, MGLHillshadeIlluminationAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::HillshadeIlluminationAnchorType>>(hillshadeIlluminationAnchor, false);
- self.rawLayer->setHillshadeIlluminationAnchor(mbglValue);
-}
-
-- (NSExpression *)hillshadeIlluminationAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHillshadeIlluminationAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHillshadeIlluminationAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::HillshadeIlluminationAnchorType, NSValue *, mbgl::style::HillshadeIlluminationAnchorType, MGLHillshadeIlluminationAnchor>().toExpression(propertyValue);
-}
-
-- (void)setHillshadeIlluminationDirection:(NSExpression *)hillshadeIlluminationDirection {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeIlluminationDirection: %@", hillshadeIlluminationDirection);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(hillshadeIlluminationDirection, false);
- self.rawLayer->setHillshadeIlluminationDirection(mbglValue);
-}
-
-- (NSExpression *)hillshadeIlluminationDirection {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHillshadeIlluminationDirection();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHillshadeIlluminationDirection();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setHillshadeShadowColor:(NSExpression *)hillshadeShadowColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeShadowColor: %@", hillshadeShadowColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(hillshadeShadowColor, false);
- self.rawLayer->setHillshadeShadowColor(mbglValue);
-}
-
-- (NSExpression *)hillshadeShadowColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getHillshadeShadowColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultHillshadeShadowColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setHillshadeShadowColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting hillshadeShadowColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setHillshadeShadowColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)hillshadeShadowColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getHillshadeShadowColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-@end
-
-@implementation NSValue (MGLHillshadeStyleLayerAdditions)
-
-+ (NSValue *)valueWithMGLHillshadeIlluminationAnchor:(MGLHillshadeIlluminationAnchor)hillshadeIlluminationAnchor {
- return [NSValue value:&hillshadeIlluminationAnchor withObjCType:@encode(MGLHillshadeIlluminationAnchor)];
-}
-
-- (MGLHillshadeIlluminationAnchor)MGLHillshadeIlluminationAnchorValue {
- MGLHillshadeIlluminationAnchor hillshadeIlluminationAnchor;
- [self getValue:&hillshadeIlluminationAnchor];
- return hillshadeIlluminationAnchor;
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* HillshadeStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLHillshadeStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLHillshadeStyleLayer_Private.h b/platform/darwin/src/MGLHillshadeStyleLayer_Private.h
deleted file mode 100644
index 4c427f2137..0000000000
--- a/platform/darwin/src/MGLHillshadeStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/hillshade_layer_factory.hpp>
-
-namespace mbgl {
-
-class HillshadeStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::HillshadeLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLImageSource.h b/platform/darwin/src/MGLImageSource.h
deleted file mode 100644
index 66acd39e85..0000000000
--- a/platform/darwin/src/MGLImageSource.h
+++ /dev/null
@@ -1,99 +0,0 @@
-#import "MGLSource.h"
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-#import "MGLGeometry.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-MGL_EXPORT
-/**
- `MGLImageSource` is a content source that is used for a georeferenced raster
- image to be shown on the map. The georeferenced image scales and rotates as the
- user zooms and rotates the map. Images may also be used as icons or patterns
- in a style layer. To register an image for use as an icon or pattern,
- use the `-[MGLStyle setImage:forName:]` method. To configure a point
- annotation’s image, use the `MGLAnnotationImage` class.
-
- The geographic location of the raster image content, supplied with
- `MGLCoordinateQuad`, can be non-axis aligned.
- `MGLImageSource` supports raster content from `NSURL`, `NSImage` (macOS), or
- `UIImage` (iOS).
- An image source is added to an `MGLStyle` object along with one or more
- `MGLRasterStyleLayer` objects. Use a raster style layer to control the
- appearance of content supplied by the image source.
-
- Each
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-image"><code>image</code></a>
- source defined by the style JSON file is represented at runtime by an
- `MGLImageSource` object that you can use to initialize new style layers. You
- can also add and remove sources dynamically using methods such as
- `-[MGLStyle addSource:]` and `-[MGLStyle sourceWithIdentifier:]`.
-
- ### Example
-
- ```swift
- let coordinates = MGLCoordinateQuad(
- topLeft: CLLocationCoordinate2D(latitude: 46.437, longitude: -80.425),
- bottomLeft: CLLocationCoordinate2D(latitude: 37.936, longitude: -80.425),
- bottomRight: CLLocationCoordinate2D(latitude: 37.936, longitude: -71.516),
- topRight: CLLocationCoordinate2D(latitude: 46.437, longitude: -71.516))
- let source = MGLImageSource(identifier: "radar", coordinateQuad: coordinates, url: URL(string: "https://www.mapbox.com/mapbox-gl-js/assets/radar.gif")!)
- mapView.style?.addSource(source)
- ```
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/image-source/">
- Add an image</a> example to learn how to add an image to your map using
- `MGLImageSource`.
- */
-MGL_EXPORT
-@interface MGLImageSource : MGLSource
-
-#pragma mark Initializing a Source
-
-/**
- Returns a georeferenced image source with an identifier, coordinates and a URL.
-
- @param identifier A string that uniquely identifies the source.
- @param coordinateQuad the top left, top right, bottom right, and bottom left coordinates for the image.
- @param url An HTTP(S) URL, absolute file URL, or local file URL relative to the
- current application’s resource bundle.
- @return An initialized shape source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier coordinateQuad:(MGLCoordinateQuad)coordinateQuad URL:(NSURL *)url;
-
-/**
- Returns a georeferenced image source with an identifier, coordinates and an image.
-
- @param identifier A string that uniquely identifies the source.
- @param coordinateQuad The top left, top right, bottom right, and bottom left coordinates for the image.
- @param image The image to display for the source.
- @return An initialized shape source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier coordinateQuad:(MGLCoordinateQuad)coordinateQuad image:(MGLImage *)image;
-
-#pragma mark Accessing a Source’s Content
-
-/**
- The URL to the source image.
-
- If the receiver was initialized using `-initWithIdentifier:coordinateQuad:image:` or
- the `image` property is set, this property is set to `nil`.
- */
-@property (nonatomic, copy, nullable)NSURL *URL;
-
-/**
- The source image.
-
- If the receiver was initialized using `-initWithIdentifier:coordinateQuad:URL:` or if the `URL` property is set, this property is set to `nil`.
- */
-@property (nonatomic, retain, nullable)MGLImage *image;
-
-/**
- The coordinates at which the corners of the source image will be placed.
- */
-@property (nonatomic) MGLCoordinateQuad coordinates;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLImageSource.mm b/platform/darwin/src/MGLImageSource.mm
deleted file mode 100644
index 2d2f090079..0000000000
--- a/platform/darwin/src/MGLImageSource.mm
+++ /dev/null
@@ -1,112 +0,0 @@
-#import "MGLImageSource.h"
-
-#import "MGLGeometry_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLSource_Private.h"
-#import "MGLTileSource_Private.h"
-#import "NSURL+MGLAdditions.h"
-#if TARGET_OS_IPHONE
- #import "UIImage+MGLAdditions.h"
-#else
- #import "NSImage+MGLAdditions.h"
-#endif
-
-#include <mbgl/style/sources/image_source.hpp>
-#include <mbgl/util/premultiply.hpp>
-
-@interface MGLImageSource ()
-- (instancetype)initWithIdentifier:(NSString *)identifier coordinateQuad:(MGLCoordinateQuad)coordinateQuad NS_DESIGNATED_INITIALIZER;
-
-@property (nonatomic, readonly) mbgl::style::ImageSource *rawSource;
-
-@end
-
-@implementation MGLImageSource
-
-- (instancetype)initWithIdentifier:(NSString *)identifier coordinateQuad:(MGLCoordinateQuad)coordinateQuad {
-
- const auto coordsArray = MGLLatLngArrayFromCoordinateQuad(coordinateQuad);
- auto source = std::make_unique<mbgl::style::ImageSource>(identifier.UTF8String, coordsArray);
- return self = [super initWithPendingSource:std::move(source)];
-}
-
-
-- (instancetype)initWithIdentifier:(NSString *)identifier coordinateQuad:(MGLCoordinateQuad)coordinateQuad URL:(NSURL *)url {
- self = [self initWithIdentifier:identifier coordinateQuad: coordinateQuad];
- self.URL = url;
- return self;
-}
-
-
-- (instancetype)initWithIdentifier:(NSString *)identifier coordinateQuad:(MGLCoordinateQuad)coordinateQuad image:(MGLImage *)image {
- self = [self initWithIdentifier:identifier coordinateQuad: coordinateQuad];
- self.image = image;
-
- return self;
-}
-
-- (NSURL *)URL {
- MGLAssertStyleSourceIsValid();
- auto url = self.rawSource->getURL();
- return url ? [NSURL URLWithString:@(url->c_str())] : nil;
-}
-
-- (void)setURL:(NSURL *)url {
- MGLAssertStyleSourceIsValid();
- if (url) {
- self.rawSource->setURL(url.mgl_URLByStandardizingScheme.absoluteString.UTF8String);
- _image = nil;
- } else {
- self.image = nullptr;
- }
-}
-
-- (void)setImage:(MGLImage *)image {
- MGLAssertStyleSourceIsValid();
- if (image != nullptr) {
- self.rawSource->setImage(image.mgl_premultipliedImage);
- } else {
- self.rawSource->setImage(mbgl::PremultipliedImage({0,0}));
- }
- _image = image;
-}
-
-- (MGLCoordinateQuad)coordinates {
- MGLAssertStyleSourceIsValid();
- return MGLCoordinateQuadFromLatLngArray(self.rawSource->getCoordinates());
-}
-
-- (void)setCoordinates: (MGLCoordinateQuad)coordinateQuad {
- MGLAssertStyleSourceIsValid();
- self.rawSource->setCoordinates(MGLLatLngArrayFromCoordinateQuad(coordinateQuad));
-}
-
-- (NSString *)description {
- if (self.rawSource) {
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@; coordinates = %@; URL = %@; image = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier,
- MGLStringFromCoordinateQuad(self.coordinates),
- self.URL,
- self.image];
- }
- else {
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@; coordinates = <unknown>; URL = <unknown>; image = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier, self.image];
- }
-}
-
-- (mbgl::style::ImageSource *)rawSource {
- return (mbgl::style::ImageSource *)super.rawSource;
-}
-
-- (NSString *)attributionHTMLString {
- if (!self.rawSource) {
- MGLAssert(0, @"Source with identifier `%@` was invalidated after a style change", self.identifier);
- return nil;
- }
-
- auto attribution = self.rawSource->getAttribution();
- return attribution ? @(attribution->c_str()) : nil;
-}
-
-@end
diff --git a/platform/darwin/src/MGLLight.h b/platform/darwin/src/MGLLight.h
deleted file mode 100644
index 281fcc5c6e..0000000000
--- a/platform/darwin/src/MGLLight.h
+++ /dev/null
@@ -1,242 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLStyleValue.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Whether extruded geometries are lit relative to the map or viewport.
- */
-typedef NS_ENUM(NSUInteger, MGLLightAnchor) {
- /**
- The position of the light source is aligned to the rotation of the map.
- */
- MGLLightAnchorMap,
- /**
- The position of the light source is aligned to the rotation of the
- viewport.
- */
- MGLLightAnchorViewport,
-};
-
-/**
- A structure containing information about the position of the light source
- relative to lit geometries.
- */
-typedef struct __attribute__((objc_boxable)) MGLSphericalPosition {
- /** Distance from the center of the base of an object to its light. */
- CGFloat radial;
- /** Position of the light relative to 0° (0° when `MGLLight.anchor` is set to viewport corresponds
- to the top of the viewport, or 0° when `MGLLight.anchor` is set to map corresponds to due north,
- and degrees proceed clockwise). */
- CLLocationDirection azimuthal;
- /** Indicates the height of the light (from 0°, directly above, to 180°, directly below). */
- CLLocationDirection polar;
-} MGLSphericalPosition;
-
-/**
- Creates a new `MGLSphericalPosition` from the given radial, azimuthal, polar.
-
- @param radial The radial coordinate.
- @param azimuthal The azimuthal angle.
- @param polar The polar angle.
-
- @return Returns a `MGLSphericalPosition` struct containing the position attributes.
- */
-NS_INLINE MGLSphericalPosition MGLSphericalPositionMake(CGFloat radial, CLLocationDirection azimuthal, CLLocationDirection polar) {
- MGLSphericalPosition position;
- position.radial = radial;
- position.azimuthal = azimuthal;
- position.polar = polar;
-
- return position;
-}
-
-/**
- An `MGLLight` object represents the light source for extruded geometries in
- `MGLStyle`.
-
- ### Example
- ```swift
- let light = MGLLight()
- let position = MGLSphericalPosition(radial: 5, azimuthal: 180, polar: 80)
- light.position = NSExpression(forConstantValue: NSValue(mglSphericalPosition: position))
- light.anchor = NSExpression(forConstantValue: "map")
- mapView.style?.light = light
- ```
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/light-example/">Adjust light of
- 3D buildings</a> to learn how to create and modify the light source for 3D
- geometries.
- */
-MGL_EXPORT
-@interface MGLLight : NSObject
-
-/**
- Whether extruded geometries are lit relative to the map or viewport.
-
- The default value of this property is an expression that evaluates to
- `viewport`.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLAnchor` values
- * Any of the following constant string values:
- * `map`: The position of the light source is aligned to the rotation of the
- map.
- * `viewport`: The position of the light source is aligned to the rotation of
- the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
-
- This property corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-js/style-spec/#light-anchor"><code>anchor</code></a>
- light property in the Mapbox Style Specification.
- */
-@property (nonatomic) NSExpression *anchor;
-
-/**
- Position of the `MGLLight` source relative to lit (extruded) geometries, in a
- `MGLSphericalPosition` struct [radial coordinate, azimuthal angle, polar angle]
- where radial indicates the distance from the center of the base of an object to
- its light, azimuthal indicates the position of the light relative to 0° (0°
- when `MGLLight.anchor` is set to `MGLLightAnchorViewport` corresponds to the
- top of the viewport, or 0° when `MGLLight.anchor` is set to `MGLLightAnchorMap`
- corresponds to due north, and degrees proceed clockwise), and polar indicates
- the height of the light (from 0°, directly above, to 180°, directly below).
-
- The default value of this property is an expression that evaluates to an
- `MGLSphericalPosition` struct set to 1.15 radial, 210 azimuthal and 30 polar.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLSphericalPosition` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
-
- This property corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-js/style-spec/#light-position"><code>position</code></a>
- light property in the Mapbox Style Specification.
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/light-example/">Adjust light of
- 3D buildings</a> example to learn how to create and modify the position of
- value of an `MGLLight` object for 3D geometries.
- */
-@property (nonatomic) NSExpression *position;
-
-/**
- The transition affecting any changes to this layer’s `position` property.
-
- This property corresponds to the `position-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition positionTransition;
-
-#if TARGET_OS_IPHONE
-/**
- Color tint for lighting extruded geometries.
-
- The default value of this property is an expression that evaluates to
- `UIColor.whiteColor`.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
-
- This property corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-js/style-spec/#light-color"><code>color</code></a>
- light property in the Mapbox Style Specification.
- */
-@property (nonatomic) NSExpression *color;
-#else
-/**
- Color tint for lighting extruded geometries.
-
- The default value of this property is an expression that evaluates to
- `NSColor.whiteColor`.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
-
- This property corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-js/style-spec/#light-color"><code>color</code></a>
- light property in the Mapbox Style Specification.
- */
-@property (nonatomic) NSExpression *color;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `color` property.
-
- This property corresponds to the `color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition colorTransition;
-
-/**
- Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as
- more extreme contrast.
-
- The default value of this property is an expression that evaluates to the float
- `0.5`.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
-
- This property corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-js/style-spec/#light-intensity"><code>intensity</code></a>
- light property in the Mapbox Style Specification.
- */
-@property (nonatomic) NSExpression *intensity;
-
-/**
- The transition affecting any changes to this layer’s `intensity` property.
-
- This property corresponds to the `intensity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition intensityTransition;
-
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLLight.h.ejs b/platform/darwin/src/MGLLight.h.ejs
deleted file mode 100644
index 30efef7937..0000000000
--- a/platform/darwin/src/MGLLight.h.ejs
+++ /dev/null
@@ -1,105 +0,0 @@
-<%
- const properties = locals.properties;
- const type = locals.type;
- const doc = locals.doc;
--%>
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLStyleValue.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-<% for (const property of properties) { -%>
-<% if (property.type == "enum") { -%>
-/**
-<%- propertyDoc(property.name, property, type, 'enum').wrap(80, 1) %>
- */
-typedef NS_ENUM(NSUInteger, MGLLight<%- camelize(property.name) %>) {
-<% for (const value in property.values) { -%>
- /**
-<%- propertyDoc(property.name, property.values[value], type, 'enum').wrap(80, 4+1) %>
- */
- MGLLightAnchor<%- camelize(value) %>,
-<% } -%>
-};
-<% } -%>
-<% } -%>
-
-/**
- A structure containing information about the position of the light source
- relative to lit geometries.
- */
-typedef struct __attribute__((objc_boxable)) MGLSphericalPosition {
- /** Distance from the center of the base of an object to its light. */
- CGFloat radial;
- /** Position of the light relative to 0° (0° when `MGLLight.anchor` is set to viewport corresponds
- to the top of the viewport, or 0° when `MGLLight.anchor` is set to map corresponds to due north,
- and degrees proceed clockwise). */
- CLLocationDirection azimuthal;
- /** Indicates the height of the light (from 0°, directly above, to 180°, directly below). */
- CLLocationDirection polar;
-} MGLSphericalPosition;
-
-/**
- Creates a new `MGLSphericalPosition` from the given radial, azimuthal, polar.
-
- @param radial The radial coordinate.
- @param azimuthal The azimuthal angle.
- @param polar The polar angle.
-
- @return Returns a `MGLSphericalPosition` struct containing the position attributes.
- */
-NS_INLINE MGLSphericalPosition MGLSphericalPositionMake(CGFloat radial, CLLocationDirection azimuthal, CLLocationDirection polar) {
- MGLSphericalPosition position;
- position.radial = radial;
- position.azimuthal = azimuthal;
- position.polar = polar;
-
- return position;
-}
-
-/**
- <%- doc.wrap(80, 1) %>
- */
-MGL_EXPORT
-@interface MGLLight : NSObject
-<% if (properties.length) { -%>
-
-<% for (const property of properties) { -%>
-/**
-<%- propertyDoc(property.name, property, type, 'light').wrap(80, 1) %>
-
- This property corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-js/style-spec/#light-<%- originalPropertyName(property) %>"><code><%- originalPropertyName(property) %></code></a>
- light property in the Mapbox Style Specification.
-<% if (property.examples) { -%>
-
- #### Related examples
-<%- propertyExample(property).wrap(80, 1) %>
-<% } -%>
- */
-@property (nonatomic<% if (property.getter) { %>, getter=<%- objCGetter(property) -%><% } %>) NSExpression *<%- camelizeWithLeadingLowercase(property.name) %>;
-
-<% if (property.transition) { -%>
-/**
- The transition affecting any changes to this layer’s `<%- camelizeWithLeadingLowercase(property.name) %>` property.
-
- This property corresponds to the `<%- originalPropertyName(property) %>-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition <%- camelizeWithLeadingLowercase(property.name) %>Transition;
-
-<% } -%>
-<% if (property.original) { -%>
-@property (nonatomic<% if (!property.required) { %>, null_resettable<% } %>) NSExpression *<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %> __attribute__((unavailable("Use <%- camelizeWithLeadingLowercase(property.name) %> instead.")));
-
-<% } -%>
-<% } -%>
-<% } -%>
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLLight.mm b/platform/darwin/src/MGLLight.mm
deleted file mode 100644
index b7566d57a4..0000000000
--- a/platform/darwin/src/MGLLight.mm
+++ /dev/null
@@ -1,133 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-// test
-
-#import "MGLLight.h"
-
-#import "MGLTypes.h"
-#import "MGLStyleValue_Private.h"
-#import "NSValue+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <mbgl/style/light.hpp>
-#import <mbgl/style/types.hpp>
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLLightAnchor, {
- { MGLLightAnchorMap, "map" },
- { MGLLightAnchorViewport, "viewport" },
- });
-
-}
-
-@interface MGLLight()
-
-@end
-
-@implementation MGLLight
-
-- (instancetype)initWithMBGLLight:(const mbgl::style::Light *)mbglLight
-{
- if (self = [super init]) {
- MGLLogInfo(@"Initializing %@.", NSStringFromClass([self class]));
- auto anchor = mbglLight->getAnchor();
- NSExpression *anchorExpression;
- if (anchor.isUndefined()) {
- mbgl::style::PropertyValue<mbgl::style::LightAnchorType> defaultAnchor = mbglLight->getDefaultAnchor();
- anchorExpression = MGLStyleValueTransformer<mbgl::style::LightAnchorType, NSValue *, mbgl::style::LightAnchorType, MGLLightAnchor>().toExpression(defaultAnchor);
- } else {
- anchorExpression = MGLStyleValueTransformer<mbgl::style::LightAnchorType, NSValue *, mbgl::style::LightAnchorType, MGLLightAnchor>().toExpression(anchor);
- }
-
- _anchor = anchorExpression;
-
- auto positionValue = mbglLight->getPosition();
- if (positionValue.isUndefined()) {
- _position = MGLStyleValueTransformer<mbgl::style::Position, NSValue *>().toExpression(mbglLight->getDefaultPosition());
- } else {
- _position = MGLStyleValueTransformer<mbgl::style::Position, NSValue *>().toExpression(positionValue);
- }
- _positionTransition = MGLTransitionFromOptions(mbglLight->getPositionTransition());
- auto colorValue = mbglLight->getColor();
- if (colorValue.isUndefined()) {
- _color = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(mbglLight->getDefaultColor());
- } else {
- _color = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(colorValue);
- }
- _colorTransition = MGLTransitionFromOptions(mbglLight->getColorTransition());
- auto intensityValue = mbglLight->getIntensity();
- if (intensityValue.isUndefined()) {
- _intensity = MGLStyleValueTransformer<float, NSNumber *>().toExpression(mbglLight->getDefaultIntensity());
- } else {
- _intensity = MGLStyleValueTransformer<float, NSNumber *>().toExpression(intensityValue);
- }
- _intensityTransition = MGLTransitionFromOptions(mbglLight->getIntensityTransition());
- }
-
- return self;
-}
-
-- (mbgl::style::Light)mbglLight
-{
- mbgl::style::Light mbglLight;
- auto anchor = MGLStyleValueTransformer<mbgl::style::LightAnchorType, NSValue *, mbgl::style::LightAnchorType, MGLLightAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::LightAnchorType>>(self.anchor, false);
- mbglLight.setAnchor(anchor);
-
- auto position = MGLStyleValueTransformer<mbgl::style::Position, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::Position>>(self.position, false);
- mbglLight.setPosition(position);
-
- mbglLight.setPositionTransition(MGLOptionsFromTransition(self.positionTransition));
-
- auto color = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(self.color, false);
- mbglLight.setColor(color);
-
- mbglLight.setColorTransition(MGLOptionsFromTransition(self.colorTransition));
-
- auto intensity = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(self.intensity, false);
- mbglLight.setIntensity(intensity);
-
- mbglLight.setIntensityTransition(MGLOptionsFromTransition(self.intensityTransition));
-
-
- return mbglLight;
-}
-
-
-
-- (void)setAnchor:(NSExpression *)anchor {
- MGLLogDebug(@"Setting anchor: %@", anchor);
- _anchor = anchor;
-}
-
-- (void)setPosition:(NSExpression *)position {
- MGLLogDebug(@"Setting position: %@", position);
- _position = position;
-}
-
-- (void)setPositionTransition:(MGLTransition)transition {
- MGLLogDebug(@"Setting positionTransition: %@", MGLStringFromMGLTransition(transition));
- _positionTransition = transition;
-}
-
-- (void)setColor:(NSExpression *)color {
- MGLLogDebug(@"Setting color: %@", color);
- _color = color;
-}
-
-- (void)setColorTransition:(MGLTransition)transition {
- MGLLogDebug(@"Setting colorTransition: %@", MGLStringFromMGLTransition(transition));
- _colorTransition = transition;
-}
-
-- (void)setIntensity:(NSExpression *)intensity {
- MGLLogDebug(@"Setting intensity: %@", intensity);
- _intensity = intensity;
-}
-
-- (void)setIntensityTransition:(MGLTransition)transition {
- MGLLogDebug(@"Setting intensityTransition: %@", MGLStringFromMGLTransition(transition));
- _intensityTransition = transition;
-}
-
-@end
diff --git a/platform/darwin/src/MGLLight.mm.ejs b/platform/darwin/src/MGLLight.mm.ejs
deleted file mode 100644
index e4e455d354..0000000000
--- a/platform/darwin/src/MGLLight.mm.ejs
+++ /dev/null
@@ -1,120 +0,0 @@
-<%
- const properties = locals.properties;
--%>
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-// test
-
-#import "MGLLight.h"
-
-#import "MGLTypes.h"
-#import "MGLStyleValue_Private.h"
-#import "NSValue+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <mbgl/style/light.hpp>
-#import <mbgl/style/types.hpp>
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLLightAnchor, {
-<% for (const property of properties) { -%>
-<% if (property.type == "enum") { -%>
-<% for (const value in property.values) { -%>
- { MGLLightAnchor<%- camelize(value) %>, "<%- value %>" },
-<% } -%>
-<% } -%>
-<% } -%>
- });
-
-}
-
-@interface MGLLight()
-
-@end
-
-@implementation MGLLight
-
-- (instancetype)initWithMBGLLight:(const mbgl::style::Light *)mbglLight
-{
- if (self = [super init]) {
- MGLLogInfo(@"Initializing %@.", NSStringFromClass([self class]));
-<% if (properties.length) { -%>
-<% for (const property of properties) { -%>
-<% if (property.type == "enum") { -%>
- auto <%- camelizeWithLeadingLowercase(property.name) -%> = mbglLight->get<%- camelize(property.name) -%>();
- NSExpression *<%- camelizeWithLeadingLowercase(property.name) -%>Expression;
- if (<%- camelizeWithLeadingLowercase(property.name) -%>.isUndefined()) {
- mbgl::style::PropertyValue<mbgl::style::Light<%- camelize(property.name) -%>Type> default<%- camelize(property.name) -%> = mbglLight->getDefault<%- camelize(property.name) -%>();
- <%- camelizeWithLeadingLowercase(property.name) -%>Expression = MGLStyleValueTransformer<mbgl::style::LightAnchorType, NSValue *, mbgl::style::Light<%- camelize(property.name) -%>Type, MGLLight<%- camelize(property.name) -%>>().toExpression(default<%- camelize(property.name) -%>);
- } else {
- <%- camelizeWithLeadingLowercase(property.name) -%>Expression = MGLStyleValueTransformer<mbgl::style::Light<%- camelize(property.name) -%>Type, NSValue *, mbgl::style::Light<%- camelize(property.name) -%>Type, MGLLight<%- camelize(property.name) -%>>().toExpression(<%- camelizeWithLeadingLowercase(property.name) -%>);
- }
-
- _<%- camelizeWithLeadingLowercase(property.name) -%> = <%- camelizeWithLeadingLowercase(property.name) -%>Expression;
-
-<% if (property.transition) { -%>
- _<%- camelizeWithLeadingLowercase(property.name) -%>Transition = MGLTransitionFromOptions(mbglLight->get<%- camelize(property.name) -%>Transition());
-
-<% } -%>
-<% } else {-%>
- auto <%- camelizeWithLeadingLowercase(property.name) -%>Value = mbglLight->get<%- camelize(property.name) -%>();
- if (<%- camelizeWithLeadingLowercase(property.name) -%>Value.isUndefined()) {
- _<%- camelizeWithLeadingLowercase(property.name) -%> = MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toExpression(mbglLight->getDefault<%- camelize(property.name) -%>());
- } else {
- _<%- camelizeWithLeadingLowercase(property.name) -%> = MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toExpression(<%- camelizeWithLeadingLowercase(property.name) -%>Value);
- }
-<% if (property.transition) { -%>
- _<%- camelizeWithLeadingLowercase(property.name) -%>Transition = MGLTransitionFromOptions(mbglLight->get<%- camelize(property.name) -%>Transition());
-<% } -%>
-<% } -%>
-<% } -%>
-<% } -%>
- }
-
- return self;
-}
-
-- (mbgl::style::Light)mbglLight
-{
- mbgl::style::Light mbglLight;
-<% if (properties.length) { -%>
-<% for (const property of properties) { -%>
-<% if (property.type == "enum") { -%>
- auto <%- camelizeWithLeadingLowercase(property.name) -%> = MGLStyleValueTransformer<mbgl::style::Light<%- camelize(property.name) -%>Type, NSValue *, mbgl::style::Light<%- camelize(property.name) -%>Type, MGLLight<%- camelize(property.name) -%>>().toPropertyValue<mbgl::style::PropertyValue<<%- valueTransformerArguments(property)[0] %>>>(self.<%- camelizeWithLeadingLowercase(property.name) -%>, false);
- mbglLight.set<%- camelize(property.name) -%>(<%- camelizeWithLeadingLowercase(property.name) -%>);
-
-<% } else {-%>
- auto <%- camelizeWithLeadingLowercase(property.name) -%> = MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toPropertyValue<mbgl::style::PropertyValue<<%- valueTransformerArguments(property)[0] %>>>(self.<%- camelizeWithLeadingLowercase(property.name) -%>, false);
- mbglLight.set<%- camelize(property.name) -%>(<%- camelizeWithLeadingLowercase(property.name) -%>);
-
-<% } -%>
-<% if (property.transition) { -%>
- mbglLight.set<%- camelize(property.name) -%>Transition(MGLOptionsFromTransition(self.<%- camelizeWithLeadingLowercase(property.name) -%>Transition));
-
-<% } -%>
-<% } -%>
-<% } -%>
-
- return mbglLight;
-}
-
-<% if (properties.length) { -%>
-
-<% for (const property of properties) { -%>
-
-- (void)set<%- camelize(property.name) %>:(NSExpression *)<%- objCName(property) %> {
- MGLLogDebug(@"Setting <%- objCName(property) %>: %@", <%- objCName(property) %>);
- _<%- objCName(property) %> = <%- objCName(property) %>;
-}
-<% if (property["transition"]) { -%>
-
-- (void)set<%- camelize(property.name) %>Transition:(MGLTransition)transition {
- MGLLogDebug(@"Setting <%- objCName(property) %>Transition: %@", MGLStringFromMGLTransition(transition));
- _<%- objCName(property) %>Transition = transition;
-}
-<% } -%>
-<% } -%>
-<% } -%>
-
-@end
diff --git a/platform/darwin/src/MGLLight_Private.h b/platform/darwin/src/MGLLight_Private.h
deleted file mode 100644
index dbc29c1eff..0000000000
--- a/platform/darwin/src/MGLLight_Private.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLLight.h"
-
-namespace mbgl {
- namespace style {
- class Light;
- }
-}
-
-@interface MGLLight (Private)
-
-/**
- Initializes and returns a `MGLLight` associated with a style's light.
- */
-- (instancetype)initWithMBGLLight:(const mbgl::style::Light *)mbglLight;
-
-/**
- Returns an `mbgl::style::Light` representation of the `MGLLight`.
- */
-- (mbgl::style::Light)mbglLight;
-
-@end
diff --git a/platform/darwin/src/MGLLineStyleLayer.h b/platform/darwin/src/MGLLineStyleLayer.h
deleted file mode 100644
index 3400f7e75b..0000000000
--- a/platform/darwin/src/MGLLineStyleLayer.h
+++ /dev/null
@@ -1,671 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLVectorStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The display of line endings.
-
- Values of this type are used in the `MGLLineStyleLayer.lineCap`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLLineCap) {
- /**
- A cap with a squared-off end which is drawn to the exact endpoint of the
- line.
- */
- MGLLineCapButt,
- /**
- A cap with a rounded end which is drawn beyond the endpoint of the line at
- a radius of one-half of the line's width and centered on the endpoint of
- the line.
- */
- MGLLineCapRound,
- /**
- A cap with a squared-off end which is drawn beyond the endpoint of the line
- at a distance of one-half of the line's width.
- */
- MGLLineCapSquare,
-};
-
-/**
- The display of lines when joining.
-
- Values of this type are used in the `MGLLineStyleLayer.lineJoin`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLLineJoin) {
- /**
- A join with a squared-off end which is drawn beyond the endpoint of the
- line at a distance of one-half of the line's width.
- */
- MGLLineJoinBevel,
- /**
- A join with a rounded end which is drawn beyond the endpoint of the line at
- a radius of one-half of the line's width and centered on the endpoint of
- the line.
- */
- MGLLineJoinRound,
- /**
- A join with a sharp, angled corner which is drawn with the outer sides
- beyond the endpoint of the path until they meet.
- */
- MGLLineJoinMiter,
-};
-
-/**
- Controls the frame of reference for `MGLLineStyleLayer.lineTranslation`.
-
- Values of this type are used in the `MGLLineStyleLayer.lineTranslationAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLLineTranslationAnchor) {
- /**
- The line is translated relative to the map.
- */
- MGLLineTranslationAnchorMap,
- /**
- The line is translated relative to the viewport.
- */
- MGLLineTranslationAnchorViewport,
-};
-
-/**
- An `MGLLineStyleLayer` is a style layer that renders one or more stroked
- polylines on the map.
-
- Use a line style layer to configure the visual appearance of polyline or
- multipolyline features. These features can come from vector tiles loaded by an
- `MGLVectorTileSource` object, or they can be `MGLPolyline`,
- `MGLPolylineFeature`, `MGLMultiPolyline`, or `MGLMultiPolylineFeature`
- instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.
-
- You can access an existing line style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new line style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/shape-collection/">Add multiple
- shapes from a single shape source</a> example to learn how to add a line to
- your map using this style layer. See the <a
- href="https://docs.mapbox.com/ios/maps/examples/runtime-add-line/">Add a line
- style layer from GeoJSON</a> example to learn how to add and style line data to
- an `MGLMapView` object at runtime.
-
- ### Example
-
- ```swift
- let layer = MGLLineStyleLayer(identifier: "trails-path", source: trails)
- layer.sourceLayerIdentifier = "trails"
- layer.lineWidth = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.5, %@)",
- [14: 2,
- 18: 20])
- layer.lineColor = NSExpression(forConstantValue: UIColor.brown)
- layer.lineCap = NSExpression(forConstantValue: "round")
- layer.predicate = NSPredicate(format: "%K == %@", "trail-type", "mountain-biking")
- mapView.style?.addLayer(layer)
- ```
- */
-MGL_EXPORT
-@interface MGLLineStyleLayer : MGLVectorStyleLayer
-
-/**
- Returns a line style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Layout Attributes
-
-/**
- The display of line endings.
-
- The default value of this property is an expression that evaluates to `butt`.
- Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLLineCap` values
- * Any of the following constant string values:
- * `butt`: A cap with a squared-off end which is drawn to the exact endpoint
- of the line.
- * `round`: A cap with a rounded end which is drawn beyond the endpoint of the
- line at a radius of one-half of the line's width and centered on the endpoint
- of the line.
- * `square`: A cap with a squared-off end which is drawn beyond the endpoint
- of the line at a distance of one-half of the line's width.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineCap;
-
-/**
- The display of lines when joining.
-
- The default value of this property is an expression that evaluates to `miter`.
- Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLLineJoin` values
- * Any of the following constant string values:
- * `bevel`: A join with a squared-off end which is drawn beyond the endpoint
- of the line at a distance of one-half of the line's width.
- * `round`: A join with a rounded end which is drawn beyond the endpoint of
- the line at a radius of one-half of the line's width and centered on the
- endpoint of the line.
- * `miter`: A join with a sharp, angled corner which is drawn with the outer
- sides beyond the endpoint of the path until they meet.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineJoin;
-
-/**
- Used to automatically convert miter joins to bevel joins for sharp angles.
-
- The default value of this property is an expression that evaluates to the float
- `2`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `lineJoin` is set to an
- expression that evaluates to `miter`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineMiterLimit;
-
-/**
- Used to automatically convert round joins to miter joins for shallow angles.
-
- The default value of this property is an expression that evaluates to the float
- `1.05`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `lineJoin` is set to an
- expression that evaluates to `round`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineRoundLimit;
-
-#pragma mark - Accessing the Paint Attributes
-
-/**
- Blur applied to the line, in points.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineBlur;
-
-/**
- The transition affecting any changes to this layer’s `lineBlur` property.
-
- This property corresponds to the `line-blur-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineBlurTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The color with which the line will be drawn.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `linePattern` is set to `nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineColor;
-#else
-/**
- The color with which the line will be drawn.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `linePattern` is set to `nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `lineColor` property.
-
- This property corresponds to the `line-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineColorTransition;
-
-/**
- Specifies the lengths of the alternating dashes and gaps that form the dash
- pattern. The lengths are later scaled by the line width. To convert a dash
- length to points, multiply the length by the current line width. Note that
- GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to
- the expected scale. Also note that zoom-dependent expressions will be evaluated
- only at integer zoom levels.
-
- This property is measured in line widths.
-
- This property is only applied to the style if `linePattern` is set to `nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-line-dasharray"><code>line-dasharray</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant array values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineDashPattern;
-
-/**
- The transition affecting any changes to this layer’s `lineDashPattern` property.
-
- This property corresponds to the `line-dasharray-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineDashPatternTransition;
-
-@property (nonatomic, null_resettable) NSExpression *lineDasharray __attribute__((unavailable("Use lineDashPattern instead.")));
-
-/**
- Draws a line casing outside of a line's actual path. Value indicates the width
- of the inner gap.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineGapWidth;
-
-/**
- The transition affecting any changes to this layer’s `lineGapWidth` property.
-
- This property corresponds to the `line-gap-width-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineGapWidthTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The color gradient with which the line will be drawn. This property only has an
- effect on lines defined by an `MGLShapeSource` whose
- `MGLShapeSourceOptionLineDistanceMetrics` option is set to `YES`.
-
- This property is only applied to the style if `lineDasharray` is set to `nil`,
- and `linePattern` is set to `nil`, and the data source requirements are met.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$lineProgress` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineGradient;
-#else
-/**
- The color gradient with which the line will be drawn. This property only has an
- effect on lines defined by an `MGLShapeSource` whose
- `MGLShapeSourceOptionLineDistanceMetrics` option is set to `YES`.
-
- This property is only applied to the style if `lineDasharray` is set to `nil`,
- and `linePattern` is set to `nil`, and the data source requirements are met.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$lineProgress` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineGradient;
-#endif
-
-/**
- The line's offset. For linear features, a positive value offsets the line to
- the right, relative to the direction of the line, and a negative value to the
- left. For polygon features, a positive value results in an inset, and a
- negative value results in an outset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineOffset;
-
-/**
- The transition affecting any changes to this layer’s `lineOffset` property.
-
- This property corresponds to the `line-offset-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineOffsetTransition;
-
-/**
- The opacity at which the line will be drawn.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineOpacity;
-
-/**
- The transition affecting any changes to this layer’s `lineOpacity` property.
-
- This property corresponds to the `line-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineOpacityTransition;
-
-/**
- Name of image in style images to use for drawing image lines. For seamless
- patterns, image width must be a factor of two (2, 4, 8, ..., 512).
-
- You can set this property to an expression containing any of the following:
-
- * Constant string values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *linePattern;
-
-/**
- The transition affecting any changes to this layer’s `linePattern` property.
-
- This property corresponds to the `line-pattern-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition linePatternTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points downward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-line-translate"><code>line-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineTranslation;
-#else
-/**
- The geometry's offset.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points upward. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-line-translate"><code>line-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineTranslation;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `lineTranslation` property.
-
- This property corresponds to the `line-translate-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineTranslationTransition;
-
-@property (nonatomic, null_resettable) NSExpression *lineTranslate __attribute__((unavailable("Use lineTranslation instead.")));
-
-/**
- Controls the frame of reference for `lineTranslation`.
-
- The default value of this property is an expression that evaluates to `map`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `lineTranslation` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-line-translate-anchor"><code>line-translate-anchor</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLLineTranslationAnchor` values
- * Any of the following constant string values:
- * `map`: The line is translated relative to the map.
- * `viewport`: The line is translated relative to the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *lineTranslationAnchor;
-
-@property (nonatomic, null_resettable) NSExpression *lineTranslateAnchor __attribute__((unavailable("Use lineTranslationAnchor instead.")));
-
-/**
- Stroke thickness.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *lineWidth;
-
-/**
- The transition affecting any changes to this layer’s `lineWidth` property.
-
- This property corresponds to the `line-width-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition lineWidthTransition;
-
-@end
-
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGLLineStyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGLLineStyleLayerAdditions)
-
-#pragma mark Working with Line Style Layer Attribute Values
-
-/**
- Creates a new value object containing the given `MGLLineCap` enumeration.
-
- @param lineCap The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLLineCap:(MGLLineCap)lineCap;
-
-/**
- The `MGLLineCap` enumeration representation of the value.
- */
-@property (readonly) MGLLineCap MGLLineCapValue;
-
-/**
- Creates a new value object containing the given `MGLLineJoin` enumeration.
-
- @param lineJoin The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLLineJoin:(MGLLineJoin)lineJoin;
-
-/**
- The `MGLLineJoin` enumeration representation of the value.
- */
-@property (readonly) MGLLineJoin MGLLineJoinValue;
-
-/**
- Creates a new value object containing the given `MGLLineTranslationAnchor` enumeration.
-
- @param lineTranslationAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLLineTranslationAnchor:(MGLLineTranslationAnchor)lineTranslationAnchor;
-
-/**
- The `MGLLineTranslationAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLLineTranslationAnchor MGLLineTranslationAnchorValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLLineStyleLayer.mm b/platform/darwin/src/MGLLineStyleLayer.mm
deleted file mode 100644
index 62d778a6f3..0000000000
--- a/platform/darwin/src/MGLLineStyleLayer.mm
+++ /dev/null
@@ -1,568 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLLineStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLLineStyleLayer_Private.h"
-
-#include <mbgl/style/layers/line_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLLineCap, {
- { MGLLineCapButt, "butt" },
- { MGLLineCapRound, "round" },
- { MGLLineCapSquare, "square" },
- });
-
- MBGL_DEFINE_ENUM(MGLLineJoin, {
- { MGLLineJoinBevel, "bevel" },
- { MGLLineJoinRound, "round" },
- { MGLLineJoinMiter, "miter" },
- });
-
- MBGL_DEFINE_ENUM(MGLLineTranslationAnchor, {
- { MGLLineTranslationAnchorMap, "map" },
- { MGLLineTranslationAnchorViewport, "viewport" },
- });
-
-}
-
-@interface MGLLineStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::LineLayer *rawLayer;
-
-@end
-
-@implementation MGLLineStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::LineLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::LineLayer *)rawLayer
-{
- return (mbgl::style::LineLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-- (NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- auto layerID = self.rawLayer->getSourceLayer();
- return layerID.empty() ? nil : @(layerID.c_str());
-}
-
-- (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting sourceLayerIdentifier: %@", sourceLayerIdentifier);
-
- self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: "");
-}
-
-- (void)setPredicate:(NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting predicate: %@", predicate);
-
- self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::Filter());
-}
-
-- (NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
-
- return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()];
-}
-
-#pragma mark - Accessing the Layout Attributes
-
-- (void)setLineCap:(NSExpression *)lineCap {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineCap: %@", lineCap);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::LineCapType, NSValue *, mbgl::style::LineCapType, MGLLineCap>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::LineCapType>>(lineCap, false);
- self.rawLayer->setLineCap(mbglValue);
-}
-
-- (NSExpression *)lineCap {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineCap();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineCap();
- }
- return MGLStyleValueTransformer<mbgl::style::LineCapType, NSValue *, mbgl::style::LineCapType, MGLLineCap>().toExpression(propertyValue);
-}
-
-- (void)setLineJoin:(NSExpression *)lineJoin {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineJoin: %@", lineJoin);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::LineJoinType, NSValue *, mbgl::style::LineJoinType, MGLLineJoin>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::LineJoinType>>(lineJoin, true);
- self.rawLayer->setLineJoin(mbglValue);
-}
-
-- (NSExpression *)lineJoin {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineJoin();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineJoin();
- }
- return MGLStyleValueTransformer<mbgl::style::LineJoinType, NSValue *, mbgl::style::LineJoinType, MGLLineJoin>().toExpression(propertyValue);
-}
-
-- (void)setLineMiterLimit:(NSExpression *)lineMiterLimit {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineMiterLimit: %@", lineMiterLimit);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(lineMiterLimit, false);
- self.rawLayer->setLineMiterLimit(mbglValue);
-}
-
-- (NSExpression *)lineMiterLimit {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineMiterLimit();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineMiterLimit();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setLineRoundLimit:(NSExpression *)lineRoundLimit {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineRoundLimit: %@", lineRoundLimit);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(lineRoundLimit, false);
- self.rawLayer->setLineRoundLimit(mbglValue);
-}
-
-- (NSExpression *)lineRoundLimit {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineRoundLimit();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineRoundLimit();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setLineBlur:(NSExpression *)lineBlur {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineBlur: %@", lineBlur);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(lineBlur, true);
- self.rawLayer->setLineBlur(mbglValue);
-}
-
-- (NSExpression *)lineBlur {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineBlur();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineBlur();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setLineBlurTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineBlurTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineBlurTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineBlurTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineBlurTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLineColor:(NSExpression *)lineColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineColor: %@", lineColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(lineColor, true);
- self.rawLayer->setLineColor(mbglValue);
-}
-
-- (NSExpression *)lineColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setLineColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLineDashPattern:(NSExpression *)lineDashPattern {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineDashPattern: %@", lineDashPattern);
-
- auto mbglValue = MGLStyleValueTransformer<std::vector<float>, NSArray<NSNumber *> *, float>().toPropertyValue<mbgl::style::PropertyValue<std::vector<float>>>(lineDashPattern, false);
- self.rawLayer->setLineDasharray(mbglValue);
-}
-
-- (NSExpression *)lineDashPattern {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineDasharray();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineDasharray();
- }
- return MGLStyleValueTransformer<std::vector<float>, NSArray<NSNumber *> *, float>().toExpression(propertyValue);
-}
-
-- (void)setLineDashPatternTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineDashPatternTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineDasharrayTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineDashPatternTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineDasharrayTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLineDasharray:(NSExpression *)lineDasharray {
-}
-
-- (NSExpression *)lineDasharray {
- return self.lineDashPattern;
-}
-
-- (void)setLineGapWidth:(NSExpression *)lineGapWidth {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineGapWidth: %@", lineGapWidth);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(lineGapWidth, true);
- self.rawLayer->setLineGapWidth(mbglValue);
-}
-
-- (NSExpression *)lineGapWidth {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineGapWidth();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineGapWidth();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setLineGapWidthTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineGapWidthTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineGapWidthTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineGapWidthTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineGapWidthTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLineGradient:(NSExpression *)lineGradient {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineGradient: %@", lineGradient);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::ColorRampPropertyValue>(lineGradient);
- self.rawLayer->setLineGradient(mbglValue);
-}
-
-- (NSExpression *)lineGradient {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineGradient();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineGradient();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setLineOffset:(NSExpression *)lineOffset {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineOffset: %@", lineOffset);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(lineOffset, true);
- self.rawLayer->setLineOffset(mbglValue);
-}
-
-- (NSExpression *)lineOffset {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineOffset();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineOffset();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setLineOffsetTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineOffsetTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineOffsetTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineOffsetTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineOffsetTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLineOpacity:(NSExpression *)lineOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineOpacity: %@", lineOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(lineOpacity, true);
- self.rawLayer->setLineOpacity(mbglValue);
-}
-
-- (NSExpression *)lineOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setLineOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLinePattern:(NSExpression *)linePattern {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting linePattern: %@", linePattern);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::expression::Image>>(linePattern, true);
- self.rawLayer->setLinePattern(mbglValue);
-}
-
-- (NSExpression *)linePattern {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLinePattern();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLinePattern();
- }
- return MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toExpression(propertyValue);
-}
-
-- (void)setLinePatternTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting linePatternTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLinePatternTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)linePatternTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLinePatternTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLineTranslation:(NSExpression *)lineTranslation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineTranslation: %@", lineTranslation);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(lineTranslation, false);
- self.rawLayer->setLineTranslate(mbglValue);
-}
-
-- (NSExpression *)lineTranslation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineTranslate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineTranslate();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setLineTranslationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineTranslationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineTranslateTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineTranslationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineTranslateTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setLineTranslate:(NSExpression *)lineTranslate {
-}
-
-- (NSExpression *)lineTranslate {
- return self.lineTranslation;
-}
-
-- (void)setLineTranslationAnchor:(NSExpression *)lineTranslationAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineTranslationAnchor: %@", lineTranslationAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLLineTranslationAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType>>(lineTranslationAnchor, false);
- self.rawLayer->setLineTranslateAnchor(mbglValue);
-}
-
-- (NSExpression *)lineTranslationAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineTranslateAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineTranslateAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLLineTranslationAnchor>().toExpression(propertyValue);
-}
-
-- (void)setLineTranslateAnchor:(NSExpression *)lineTranslateAnchor {
-}
-
-- (NSExpression *)lineTranslateAnchor {
- return self.lineTranslationAnchor;
-}
-
-- (void)setLineWidth:(NSExpression *)lineWidth {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineWidth: %@", lineWidth);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(lineWidth, true);
- self.rawLayer->setLineWidth(mbglValue);
-}
-
-- (NSExpression *)lineWidth {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getLineWidth();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultLineWidth();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setLineWidthTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting lineWidthTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setLineWidthTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)lineWidthTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getLineWidthTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-@end
-
-@implementation NSValue (MGLLineStyleLayerAdditions)
-
-+ (NSValue *)valueWithMGLLineCap:(MGLLineCap)lineCap {
- return [NSValue value:&lineCap withObjCType:@encode(MGLLineCap)];
-}
-
-- (MGLLineCap)MGLLineCapValue {
- MGLLineCap lineCap;
- [self getValue:&lineCap];
- return lineCap;
-}
-
-+ (NSValue *)valueWithMGLLineJoin:(MGLLineJoin)lineJoin {
- return [NSValue value:&lineJoin withObjCType:@encode(MGLLineJoin)];
-}
-
-- (MGLLineJoin)MGLLineJoinValue {
- MGLLineJoin lineJoin;
- [self getValue:&lineJoin];
- return lineJoin;
-}
-
-+ (NSValue *)valueWithMGLLineTranslationAnchor:(MGLLineTranslationAnchor)lineTranslationAnchor {
- return [NSValue value:&lineTranslationAnchor withObjCType:@encode(MGLLineTranslationAnchor)];
-}
-
-- (MGLLineTranslationAnchor)MGLLineTranslationAnchorValue {
- MGLLineTranslationAnchor lineTranslationAnchor;
- [self getValue:&lineTranslationAnchor];
- return lineTranslationAnchor;
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* LineStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLLineStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLLineStyleLayer_Private.h b/platform/darwin/src/MGLLineStyleLayer_Private.h
deleted file mode 100644
index b4c7b3ee7c..0000000000
--- a/platform/darwin/src/MGLLineStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/line_layer_factory.hpp>
-
-namespace mbgl {
-
-class LineStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::LineLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLLocationManager.h b/platform/darwin/src/MGLLocationManager.h
deleted file mode 100644
index ecb9192981..0000000000
--- a/platform/darwin/src/MGLLocationManager.h
+++ /dev/null
@@ -1,203 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLLocationManagerDelegate;
-
-/**
- The `MGLLocationManager` protocol defines a set of methods that a class must
- implement in order to serve as the location manager of an `MGLMapView`. A location
- manager is responsible for notifying the map view about location-related events,
- such as a change in the user’s location. This protocol is similar to the
- Core Location framework’s `CLLocationManager` class, but your implementation
- does not need to be based on `CLLocationManager`.
-
- To receive location updates from an object that conforms to the `MGLLocationManager`
- protocol, use the optional methods available in the `MGLLocationManagerDelegate` protocol.
- */
-@protocol MGLLocationManager <NSObject>
-
-@optional
-
-#pragma mark Configuring Location Update Precision
-
-/**
- Specifies the minimum distance (measured in meters) a device must move horizontally
- before a location update is generated.
-
- The default value of this property is `kCLDistanceFilterNone` when `MGLMapView` uses its
- default location manager.
-
- @see `CLLocationManager.distanceFilter`
- */
-- (CLLocationDistance)distanceFilter;
-
-/**
- Sets the minimum update distance in meters.
- @param distanceFilter The distance filter in meters.
- */
-- (void)setDistanceFilter:(CLLocationDistance) distanceFilter;
-
-/**
- Specifies the accuracy of the location data.
-
- The default value is `kCLLocationAccuracyBest` when `MGLMapView` uses its
- default location manager.
-
- @note Determining a location with greater accuracy requires more time and more power.
-
- @see `CLLocationManager.desiredAccuracy`
- */
-- (CLLocationAccuracy)desiredAccuracy;
-
-/**
- Sets the desired location accuracy.
-
- @param desiredAccuracy The desired location accuracy.
- */
-- (void)setDesiredAccuracy:(CLLocationAccuracy)desiredAccuracy;
-
-/**
- Specifies the type of user activity associated with the location updates.
-
- The location manager uses this property as a cue to determine when location updates
- may be automatically paused.
-
- The default value is `CLActivityTypeOther` when `MGLMapView` uses its
- default location manager.
-
- @see `CLLocationManager.activityType`
- */
-- (CLActivityType)activityType;
-
-/**
- Sets the type of user activity associated with the location updates.
-
- @param activityType The location's manager activity type.
- */
-- (void)setActivityType:(CLActivityType)activityType;
-
-@required
-
-/**
- The delegate to receive location updates.
-
- Do not set the location manager’s delegate yourself. `MGLMapView` sets this property
- after the location manager becomes `MGLMapView`’s location manager.
- */
-@property (nonatomic, weak) id<MGLLocationManagerDelegate> delegate;
-
-#pragma mark Requesting Authorization for Location Services
-
-/**
- Returns the current localization authorization status.
-
- @see `+[CLLocationManger authorizationStatus]`
- */
-@property (nonatomic, readonly) CLAuthorizationStatus authorizationStatus;
-
-/**
- Requests permission to use the location services whenever the app is running.
- */
-- (void)requestAlwaysAuthorization;
-
-/**
- Requests permission to use the location services while the app is in
- the foreground.
- */
-- (void)requestWhenInUseAuthorization;
-
-#pragma mark Initiating Location Updates
-
-/**
- Starts the generation of location updates that reports the user's current location.
- */
-- (void)startUpdatingLocation;
-
-/**
- Stops the generation of location updates.
- */
-- (void)stopUpdatingLocation;
-
-#pragma mark Initiating Heading Updates
-
-/**
- Specifies a physical device orientation.
- */
-@property (nonatomic) CLDeviceOrientation headingOrientation;
-
-/**
- Starts the generation of heading updates that reports the user's current hading.
- */
-- (void)startUpdatingHeading;
-
-/**
- Stops the generation of heading updates.
- */
-- (void)stopUpdatingHeading;
-
-/**
- Dissmisses immediately the heading calibration view from screen.
- */
-- (void)dismissHeadingCalibrationDisplay;
-
-@end
-
-/**
- The `MGLLocationManagerDelegate` protocol defines a set of methods that respond
- to location updates from an `MGLLocationManager` object that is serving as the
- location manager of an `MGLMapView`.
- */
-@protocol MGLLocationManagerDelegate <NSObject>
-
-#pragma mark Responding to Location Updates
-
-/**
- Notifies the delegate with the new location data.
-
- @param manager The location manager reporting the update.
- @param locations An array of `CLLocation` objects in chronological order,
- with the last object representing the most recent location. This array
- contains multiple `CLLocation` objects when `MGLMapView` uses its
- default location manager.
- */
-- (void)locationManager:(id<MGLLocationManager>)manager
- didUpdateLocations:(NSArray<CLLocation *> *)locations;
-
-#pragma mark Responding to Heading Updates
-
-/**
- Notifies the delegate with the new heading data.
-
- @param manager The location manager reporting the update.
- @param newHeading The new heading update.
- */
-- (void)locationManager:(id<MGLLocationManager>)manager
- didUpdateHeading:(CLHeading *)newHeading;
-
-/**
- Asks the delegate if the calibration alert should be displayed.
-
- @param manager The location manager reporting the calibration.
- */
-- (BOOL)locationManagerShouldDisplayHeadingCalibration:(id<MGLLocationManager>)manager;
-
-#pragma mark Responding to Location Updates Errors
-
-/**
- Notifies the delegate that the location manager was unable to retrieve
- location updates.
-
- @param manager The location manager reporting the error.
- @param error An error object containing the error code that indicates
- why the location manager failed.
- */
-- (void)locationManager:(id<MGLLocationManager>)manager
- didFailWithError:(nonnull NSError *)error;
-
-@optional
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLLocationManager.m b/platform/darwin/src/MGLLocationManager.m
deleted file mode 100644
index 29e3ccaa30..0000000000
--- a/platform/darwin/src/MGLLocationManager.m
+++ /dev/null
@@ -1,116 +0,0 @@
-#import "MGLLocationManager_Private.h"
-
-@interface MGLCLLocationManager()<CLLocationManagerDelegate>
-
-@property (nonatomic) CLLocationManager *locationManager;
-
-@end
-
-@implementation MGLCLLocationManager
-
-- (instancetype)init
-{
- if (self = [super init]) {
- _locationManager = [[CLLocationManager alloc] init];
- _locationManager.delegate = self;
- }
- return self;
-}
-
-@synthesize delegate;
-
-- (void)setHeadingOrientation:(CLDeviceOrientation)headingOrientation
-{
- self.locationManager.headingOrientation = headingOrientation;
-}
-
-- (CLDeviceOrientation)headingOrientation
-{
- return self.locationManager.headingOrientation;
-}
-
-- (void)setDesiredAccuracy:(CLLocationAccuracy)desiredAccuracy {
- self.locationManager.desiredAccuracy = desiredAccuracy;
-}
-
-- (CLLocationAccuracy)desiredAccuracy {
- return self.locationManager.desiredAccuracy;
-}
-
-- (CLAuthorizationStatus)authorizationStatus {
- return [CLLocationManager authorizationStatus];
-}
-
-- (void)setActivityType:(CLActivityType)activityType {
- self.locationManager.activityType = activityType;
-}
-
-- (CLActivityType)activityType {
- return self.locationManager.activityType;
-}
-
-- (void)dismissHeadingCalibrationDisplay {
- [self.locationManager dismissHeadingCalibrationDisplay];
-}
-
-- (void)requestAlwaysAuthorization {
- [self.locationManager requestAlwaysAuthorization];
-}
-
-- (void)requestWhenInUseAuthorization {
- [self.locationManager requestWhenInUseAuthorization];
-}
-
-- (void)startUpdatingHeading {
- [self.locationManager startUpdatingHeading];
-}
-
-- (void)startUpdatingLocation {
- [self.locationManager startUpdatingLocation];
-}
-
-- (void)stopUpdatingHeading {
- [self.locationManager stopUpdatingHeading];
-}
-
-- (void)stopUpdatingLocation {
- [self.locationManager stopUpdatingLocation];
-}
-
-- (void)dealloc
-{
- [self.locationManager stopUpdatingLocation];
- [self.locationManager stopUpdatingHeading];
- self.locationManager.delegate = nil;
- self.delegate = nil;
-}
-
-#pragma mark - CLLocationManagerDelegate
-
-- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
- if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateLocations:)]) {
- [self.delegate locationManager:self didUpdateLocations:locations];
- }
-}
-
-- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
- if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateHeading:)]) {
- [self.delegate locationManager:self didUpdateHeading:newHeading];
- }
-}
-
-- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager {
- if ([self.delegate respondsToSelector:@selector(locationManagerShouldDisplayHeadingCalibration:)]) {
- return [self.delegate locationManagerShouldDisplayHeadingCalibration:self];
- }
-
- return NO;
-}
-
-- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
- if ([self.delegate respondsToSelector:@selector(locationManager:didFailWithError:)]) {
- [self.delegate locationManager:self didFailWithError:error];
- }
-}
-
-@end
diff --git a/platform/darwin/src/MGLLocationManager_Private.h b/platform/darwin/src/MGLLocationManager_Private.h
deleted file mode 100644
index 4f09405e71..0000000000
--- a/platform/darwin/src/MGLLocationManager_Private.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import "MGLLocationManager.h"
-
-@interface MGLCLLocationManager : NSObject<MGLLocationManager>
-
-@end
diff --git a/platform/darwin/src/MGLLoggingConfiguration.h b/platform/darwin/src/MGLLoggingConfiguration.h
deleted file mode 100644
index 2445078584..0000000000
--- a/platform/darwin/src/MGLLoggingConfiguration.h
+++ /dev/null
@@ -1,99 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-
-#ifndef MGL_LOGGING_DISABLED
- #ifndef MGL_LOGGING_ENABLE_DEBUG
- #ifndef NDEBUG
- #define MGL_LOGGING_ENABLE_DEBUG 1
- #endif
- #endif
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Constants indicating the message's logging level.
- */
-typedef NS_ENUM(NSInteger, MGLLoggingLevel) {
- /**
- None-level won't print any messages.
- */
- MGLLoggingLevelNone = 0,
- /**
- Fault-level messages contain system-level error information.
- */
- MGLLoggingLevelFault,
- /**
- Error-level messages contain information that is intended to aid in process-level
- errors.
- */
- MGLLoggingLevelError,
- /**
- Warning-level messages contain warning information for potential risks.
- */
- MGLLoggingLevelWarning,
- /**
- Info-level messages contain information that may be helpful for flow tracing
- but is not essential.
- */
- MGLLoggingLevelInfo,
- /**
- Debug-level messages contain information that may be helpful for troubleshooting
- specific problems.
- */
-#if MGL_LOGGING_ENABLE_DEBUG
- MGLLoggingLevelDebug,
-#endif
- /**
- Verbose-level will print all messages.
- */
- MGLLoggingLevelVerbose,
-};
-
-/**
- A block to be called once `loggingLevel` is set to a higher value than `MGLLoggingLevelNone`.
-
- @param loggingLevel The message logging level.
- @param filePath The description of the file and method for the calling message.
- @param line The line where the message is logged.
- @param message The logging message.
- */
-typedef void (^MGLLoggingBlockHandler)(MGLLoggingLevel loggingLevel, NSString *filePath, NSUInteger line, NSString *message);
-
-/**
- The `MGLLoggingConfiguration` object provides a global way to set this SDK logging levels
- and logging handler.
- */
-MGL_EXPORT
-@interface MGLLoggingConfiguration : NSObject
-
-/**
- The handler this SDK uses to log messages.
-
- If this property is set to nil or if no custom handler is provided this property
- is set to the default handler.
-
- The default handler uses `os_log` and `NSLog` for iOS 10+ and iOS < 10 respectively.
- */
-@property (nonatomic, copy, null_resettable) MGLLoggingBlockHandler handler;
-
-/**
- The logging level.
-
- The default value is `MGLLoggingLevelNone`.
-
- Setting this property includes logging levels less than or equal to the setted value.
- */
-@property (assign, nonatomic) MGLLoggingLevel loggingLevel;
-
-/**
- Returns the shared logging object.
- */
-@property (class, nonatomic, readonly) MGLLoggingConfiguration *sharedConfiguration;
-
-- (MGLLoggingBlockHandler)handler UNAVAILABLE_ATTRIBUTE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-#endif
diff --git a/platform/darwin/src/MGLLoggingConfiguration.mm b/platform/darwin/src/MGLLoggingConfiguration.mm
deleted file mode 100644
index 75d2439365..0000000000
--- a/platform/darwin/src/MGLLoggingConfiguration.mm
+++ /dev/null
@@ -1,161 +0,0 @@
-#include <mbgl/util/logging.hpp>
-#include <mbgl/util/enum.hpp>
-
-#import "MGLLoggingConfiguration_Private.h"
-
-#ifndef MGL_LOGGING_DISABLED
-#if __has_builtin(__builtin_os_log_format)
-#import <os/log.h>
-#endif
-
-namespace mbgl {
-
-class MGLCoreLoggingObserver : public Log :: Observer {
-public:
- //Return true not print messages at core level, and filter at platform level.
- bool onRecord(EventSeverity severity, Event event, int64_t code, const std::string& msg) override{
-
- NSString *message = [NSString stringWithFormat:@"[event]:%s [code]:%lld [message]:%@", Enum<Event>::toString(event), code, [NSString stringWithCString:msg.c_str() encoding:NSUTF8StringEncoding]];
- switch (severity) {
- case EventSeverity::Debug:
- MGLLogDebug(message);
- break;
- case EventSeverity::Info:
- MGLLogInfo(message);
- break;
- case EventSeverity::Warning:
- MGLLogWarning(message);
- break;
- case EventSeverity::Error:
- MGLLogError(message);
- break;
- }
- return true;
- }
-};
-}
-
-@implementation MGLLoggingConfiguration
-{
- std::unique_ptr<mbgl::MGLCoreLoggingObserver> _coreLoggingObserver;
-}
-
-+ (instancetype)sharedConfiguration {
- static dispatch_once_t once;
- static id sharedConfiguration;
- dispatch_once(&once, ^{
- sharedConfiguration = [[self alloc] init];
- ((MGLLoggingConfiguration *)sharedConfiguration).handler = nil;
- });
- return sharedConfiguration;
-}
-
-- (id)init{
- if(self = [super init]){
- mbgl::Log::setObserver(std::make_unique<mbgl::MGLCoreLoggingObserver>());
- }
- return self;
-}
-
-- (void)setHandler:(void (^)(MGLLoggingLevel, NSString *, NSUInteger, NSString *))handler {
-
- if (!handler) {
- _handler = [self defaultBlockHandler];
- } else {
- _handler = handler;
- }
-}
-
-- (void)logCallingFunction:(const char *)callingFunction functionLine:(NSUInteger)functionLine messageType:(MGLLoggingLevel)type format:(id)messageFormat, ... {
- va_list formatList;
- va_start(formatList, messageFormat);
- NSString *formattedMessage = [[NSString alloc] initWithFormat:messageFormat arguments:formatList];
- va_end(formatList);
-
- _handler(type, @(callingFunction), functionLine, formattedMessage);
-
-}
-
-- (MGLLoggingBlockHandler)defaultBlockHandler {
- MGLLoggingBlockHandler mapboxHandler = ^(MGLLoggingLevel level, NSString *fileName, NSUInteger line, NSString *message) {
-
- if (@available(iOS 10.0, macOS 10.12.0, *)) {
- static dispatch_once_t once;
- static os_log_t info_log;
-#if MGL_LOGGING_ENABLE_DEBUG
- static os_log_t debug_log;
-#endif
- static os_log_t error_log;
- static os_log_t fault_log;
- static os_log_type_t log_types[] = { OS_LOG_TYPE_DEFAULT,
- OS_LOG_TYPE_INFO,
-#if MGL_LOGGING_ENABLE_DEBUG
- OS_LOG_TYPE_DEBUG,
-#endif
- OS_LOG_TYPE_ERROR,
- OS_LOG_TYPE_FAULT };
- dispatch_once(&once, ^ {
- info_log = os_log_create("com.mapbox.Mapbox", "INFO");
-#if MGL_LOGGING_ENABLE_DEBUG
- debug_log = os_log_create("com.mapbox.Mapbox", "DEBUG");
-#endif
- error_log = os_log_create("com.mapbox.Mapbox", "ERROR");
- fault_log = os_log_create("com.mapbox.Mapbox", "FAULT");
- });
-
- os_log_t mapbox_log;
- switch (level) {
- case MGLLoggingLevelInfo:
- case MGLLoggingLevelWarning:
- mapbox_log = info_log;
- break;
-#if MGL_LOGGING_ENABLE_DEBUG
- case MGLLoggingLevelDebug:
- mapbox_log = debug_log;
- break;
-#endif
- case MGLLoggingLevelError:
- mapbox_log = error_log;
- break;
- case MGLLoggingLevelFault:
- mapbox_log = fault_log;
- break;
- case MGLLoggingLevelNone:
- default:
- break;
- }
-
- os_log_type_t logType = log_types[level];
- os_log_with_type(mapbox_log, logType, "%@ - %lu: %@", fileName, (unsigned long)line, message);
- } else {
- NSString *category;
- switch (level) {
- case MGLLoggingLevelInfo:
- case MGLLoggingLevelWarning:
- category = @"INFO";
- break;
-#if MGL_LOGGING_ENABLE_DEBUG
- case MGLLoggingLevelDebug:
- category = @"DEBUG";
- break;
-#endif
- case MGLLoggingLevelError:
- category = @"ERROR";
- break;
- case MGLLoggingLevelFault:
- category = @"FAULT";
- break;
- case MGLLoggingLevelNone:
- default:
- break;
- }
-
- NSLog(@"[%@] %@ - %lu: %@", category, fileName, (unsigned long)line, message);
- }
- };
-
- return mapboxHandler;
-}
-
-@end
-#endif
diff --git a/platform/darwin/src/MGLLoggingConfiguration_Private.h b/platform/darwin/src/MGLLoggingConfiguration_Private.h
deleted file mode 100644
index 40b4df440d..0000000000
--- a/platform/darwin/src/MGLLoggingConfiguration_Private.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#import "MGLLoggingConfiguration.h"
-
-NS_INLINE NSString *MGLStringFromBOOL(BOOL value) {
- return value ? @"YES" : @"NO";
-}
-
-#if TARGET_OS_OSX
-NS_INLINE NSString *MGLStringFromNSEdgeInsets(NSEdgeInsets insets) {
- return [NSString stringWithFormat:@"{ top: %f, left: %f, bottom: %f, right: %f", insets.top, insets.left, insets.bottom, insets.right];
-}
-#endif
-
-#ifdef MGL_LOGGING_DISABLED
-
-#define MGLLogInfo(...)
-#define MGLLogDebug(...)
-#define MGLLogWarning(...)
-#define MGLLogError(...)
-#define MGLLogFault(...)
-
-#else
-
-#if MGL_LOGGING_ENABLE_DEBUG
- #define MGLLogDebug(message, ...) MGLLogWithType(MGLLoggingLevelDebug, __PRETTY_FUNCTION__, __LINE__, message, ##__VA_ARGS__)
-#else
- #define MGLLogDebug(...)
-#endif
-
-#define MGLLogInfo(message, ...) MGLLogWithType(MGLLoggingLevelInfo, __PRETTY_FUNCTION__, __LINE__, message, ##__VA_ARGS__)
-#define MGLLogWarning(message, ...) MGLLogWithType(MGLLoggingLevelWarning, __PRETTY_FUNCTION__, __LINE__, message, ##__VA_ARGS__)
-#define MGLLogError(message, ...) MGLLogWithType(MGLLoggingLevelError, __PRETTY_FUNCTION__, __LINE__, message, ##__VA_ARGS__)
-#define MGLLogFault(message, ...) MGLLogWithType(MGLLoggingLevelFault, __PRETTY_FUNCTION__, __LINE__, message, ##__VA_ARGS__)
-
-#endif
-
-#define MGLAssert(expression, message, ...) \
- __extension__({ \
- if (__builtin_expect(!(expression), 0)) { \
- MGLLogFault(message, ##__VA_ARGS__); \
- } \
- NSAssert(expression, message, ##__VA_ARGS__); \
- })
-#define MGLCAssert(expression, message, ...) \
- __extension__({ \
- if (__builtin_expect(!(expression), 0)) { \
- MGLLogFault(message, ##__VA_ARGS__); \
- } \
- NSCAssert(expression, message, ##__VA_ARGS__); \
- })
-
-
-#ifndef MGL_LOGGING_DISABLED
-
-#define MGLLogWithType(type, function, line, message, ...) \
-{ \
- if ([MGLLoggingConfiguration sharedConfiguration].loggingLevel != MGLLoggingLevelNone && type <= [MGLLoggingConfiguration sharedConfiguration].loggingLevel) \
- { \
- [[MGLLoggingConfiguration sharedConfiguration] logCallingFunction:function functionLine:line messageType:type format:(message), ##__VA_ARGS__]; \
- } \
-}
-
-@interface MGLLoggingConfiguration (Private)
-
-- (void)logCallingFunction:(const char *)callingFunction functionLine:(NSUInteger)functionLine messageType:(MGLLoggingLevel)type format:(id)messageFormat, ...;
-
-@end
-#endif
diff --git a/platform/darwin/src/MGLMapCamera.h b/platform/darwin/src/MGLMapCamera.h
deleted file mode 100644
index c0e40bc33b..0000000000
--- a/platform/darwin/src/MGLMapCamera.h
+++ /dev/null
@@ -1,152 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreGraphics/CoreGraphics.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `MGLMapCamera` object represents a viewpoint from which the user observes
- some point on an `MGLMapView`.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/camera-animation/">
- Camera animation</a> example to learn how to create a camera that rotates
- around a central point. See the <a href="https://docs.mapbox.com/ios/maps/examples/constraining-gestures/">
- Restrict map panning to an area</a> example to learn how to restrict map
- panning using `MGLMapViewDelegate`'s
-`-mapView:shouldChangeFromCamera:toCamera:` method.
- */
-MGL_EXPORT
-@interface MGLMapCamera : NSObject <NSSecureCoding, NSCopying>
-
-/** Coordinate at the center of the map view. */
-@property (nonatomic) CLLocationCoordinate2D centerCoordinate;
-
-/** Heading measured in degrees clockwise from true north. */
-@property (nonatomic) CLLocationDirection heading;
-
-/**
- Pitch toward the horizon measured in degrees, with 0 degrees resulting in a
- two-dimensional map.
- */
-@property (nonatomic) CGFloat pitch;
-
-/**
- The altitude (measured in meters) above the map at which the camera is
- situated.
-
- The altitude is the distance from the viewpoint to the map, perpendicular to
- the map plane. This property does not account for physical elevation.
-
- This property’s value may be less than that of the `viewingDistance` property.
- Setting this property automatically updates the `viewingDistance` property
- based on the `pitch` property’s current value.
- */
-@property (nonatomic) CLLocationDistance altitude;
-
-/**
- The straight-line distance from the viewpoint to the `centerCoordinate`.
-
- Setting this property automatically updates the `altitude` property based on
- the `pitch` property’s current value.
- */
-@property (nonatomic) CLLocationDistance viewingDistance;
-
-/** Returns a new camera with all properties set to 0. */
-+ (instancetype)camera;
-
-/**
- Returns a new camera based on information about the camera’s viewpoint
- and focus point.
-
- @param centerCoordinate The geographic coordinate on which the map should be
- centered.
- @param eyeCoordinate The geometric coordinate at which the camera should be
- situated.
- @param eyeAltitude The altitude (measured in meters) above the map at which the
- camera should be situated. The altitude may be less than the distance from
- the camera’s viewpoint to the camera’s focus point.
- */
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- fromEyeCoordinate:(CLLocationCoordinate2D)eyeCoordinate
- eyeAltitude:(CLLocationDistance)eyeAltitude;
-
-/**
- Returns a new camera with the given distance, pitch, and heading.
-
- This method interprets the distance as a straight-line distance from the
- viewpoint to the center coordinate. To specify the altitude of the viewpoint,
- use the `-cameraLookingAtCenterCoordinate:altitude:pitch:heading:` method.
-
- @param centerCoordinate The geographic coordinate on which the map should be
- centered.
- @param distance The straight-line distance from the viewpoint to the
- `centerCoordinate`.
- @param pitch The viewing angle of the camera, measured in degrees. A value of
- `0` results in a camera pointed straight down at the map. Angles greater
- than `0` result in a camera angled toward the horizon.
- @param heading The camera’s heading, measured in degrees clockwise from true
- north. A value of `0` means that the top edge of the map view corresponds to
- true north. The value `90` means the top of the map is pointing due east.
- The value `180` means the top of the map points due south, and so on.
- */
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- acrossDistance:(CLLocationDistance)distance
- pitch:(CGFloat)pitch
- heading:(CLLocationDirection)heading;
-
-/**
- Returns a new camera with the given altitude, pitch, and heading.
-
- @param centerCoordinate The geographic coordinate on which the map should be
- centered.
- @param altitude The altitude (measured in meters) above the map at which the
- camera should be situated. The altitude may be less than the distance from
- the camera’s viewpoint to the camera’s focus point.
- @param pitch The viewing angle of the camera, measured in degrees. A value of
- `0` results in a camera pointed straight down at the map. Angles greater
- than `0` result in a camera angled toward the horizon.
- @param heading The camera’s heading, measured in degrees clockwise from true
- north. A value of `0` means that the top edge of the map view corresponds to
- true north. The value `90` means the top of the map is pointing due east.
- The value `180` means the top of the map points due south, and so on.
- */
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- altitude:(CLLocationDistance)altitude
- pitch:(CGFloat)pitch
- heading:(CLLocationDirection)heading;
-
-/**
- @note This initializer incorrectly interprets the `distance` parameter. To
- specify the straight-line distance from the viewpoint to `centerCoordinate`,
- use the `-cameraLookingAtCenterCoordinate:acrossDistance:pitch:heading:`
- method. To specify the altitude of the viewpoint, use the
- `-cameraLookingAtCenterCoordinate:altitude:pitch:heading:` method, which has
- the same behavior as this initializer.
- */
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- fromDistance:(CLLocationDistance)distance
- pitch:(CGFloat)pitch
- heading:(CLLocationDirection)heading
-__attribute__((deprecated("Use -cameraLookingAtCenterCoordinate:acrossDistance:pitch:heading: "
- "or -cameraLookingAtCenterCoordinate:altitude:pitch:heading:.")));
-
-/**
- Returns a Boolean value indicating whether the given camera is functionally
- equivalent to the receiver.
-
- Unlike `-isEqual:`, this method returns `YES` if the difference between the
- coordinates, altitudes, pitches, or headings of the two camera objects is
- negligible.
-
- @param otherCamera The camera with which to compare the receiver.
- @return A Boolean value indicating whether the two cameras are functionally
- equivalent.
- */
-- (BOOL)isEqualToMapCamera:(MGLMapCamera *)otherCamera;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLMapCamera.mm b/platform/darwin/src/MGLMapCamera.mm
deleted file mode 100644
index 0f5dd558a8..0000000000
--- a/platform/darwin/src/MGLMapCamera.mm
+++ /dev/null
@@ -1,196 +0,0 @@
-#import "MGLMapCamera.h"
-#import "MGLGeometry_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <CoreLocation/CoreLocation.h>
-
-#include <mbgl/math/wrap.hpp>
-
-BOOL MGLEqualFloatWithAccuracy(CGFloat left, CGFloat right, CGFloat accuracy)
-{
- return MAX(left, right) - MIN(left, right) <= accuracy;
-}
-
-@implementation MGLMapCamera
-
-+ (BOOL)supportsSecureCoding
-{
- return YES;
-}
-
-+ (instancetype)camera
-{
- return [[self alloc] init];
-}
-
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- fromEyeCoordinate:(CLLocationCoordinate2D)eyeCoordinate
- eyeAltitude:(CLLocationDistance)eyeAltitude
-{
- CLLocationDirection heading = -1;
- CGFloat pitch = -1;
- if (CLLocationCoordinate2DIsValid(centerCoordinate) && CLLocationCoordinate2DIsValid(eyeCoordinate)) {
- heading = MGLDirectionBetweenCoordinates(eyeCoordinate, centerCoordinate);
-
- CLLocation *centerLocation = [[CLLocation alloc] initWithLatitude:centerCoordinate.latitude
- longitude:centerCoordinate.longitude];
- CLLocation *eyeLocation = [[CLLocation alloc] initWithLatitude:eyeCoordinate.latitude
- longitude:eyeCoordinate.longitude];
- CLLocationDistance groundDistance = [eyeLocation distanceFromLocation:centerLocation];
- CGFloat radianPitch = atan2(eyeAltitude, groundDistance);
- pitch = mbgl::util::wrap(90 - MGLDegreesFromRadians(radianPitch), 0.0, 360.0);
- }
-
- return [[self alloc] initWithCenterCoordinate:centerCoordinate
- altitude:eyeAltitude
- pitch:pitch
- heading:heading];
-}
-
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- acrossDistance:(CLLocationDistance)distance
- pitch:(CGFloat)pitch
- heading:(CLLocationDirection)heading
-{
- // Angle at the viewpoint formed by the straight lines running perpendicular
- // to the ground and toward the center coordinate.
- CLLocationDirection eyeAngle = 90 - pitch;
- CLLocationDistance altitude = distance * sin(MGLRadiansFromDegrees(eyeAngle));
-
- return [[self alloc] initWithCenterCoordinate:centerCoordinate
- altitude:altitude
- pitch:pitch
- heading:heading];
-}
-
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- altitude:(CLLocationDistance)altitude
- pitch:(CGFloat)pitch
- heading:(CLLocationDirection)heading
-{
- return [[self alloc] initWithCenterCoordinate:centerCoordinate
- altitude:altitude
- pitch:pitch
- heading:heading];
-}
-
-+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- fromDistance:(CLLocationDistance)distance
- pitch:(CGFloat)pitch
- heading:(CLLocationDirection)heading
-{
- // TODO: Remove this compatibility shim in favor of `-cameraLookingAtCenterCoordinate:acrossDistance:pitch:heading:.
- // https://github.com/mapbox/mapbox-gl-native/issues/12943
- return [MGLMapCamera cameraLookingAtCenterCoordinate:centerCoordinate
- altitude:distance
- pitch:pitch
- heading:heading];
-}
-
-- (instancetype)initWithCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
- altitude:(CLLocationDistance)altitude
- pitch:(CGFloat)pitch
- heading:(CLLocationDirection)heading
-{
- MGLLogDebug(@"Initializing withCenterCoordinate: %@ altitude: %.0fm pitch: %f° heading: %f°", MGLStringFromCLLocationCoordinate2D(centerCoordinate), altitude, pitch, heading);
- if (self = [super init])
- {
- _centerCoordinate = centerCoordinate;
- _altitude = altitude;
- _pitch = pitch;
- _heading = heading;
- }
- return self;
-}
-
-- (nullable instancetype)initWithCoder:(NSCoder *)coder
-{
- MGLLogInfo(@"Initialiazing with coder.");
- if (self = [super init])
- {
- _centerCoordinate = CLLocationCoordinate2DMake([coder decodeDoubleForKey:@"centerLatitude"],
- [coder decodeDoubleForKey:@"centerLongitude"]);
- _altitude = [coder decodeDoubleForKey:@"altitude"];
- _pitch = [coder decodeDoubleForKey:@"pitch"];
- _heading = [coder decodeDoubleForKey:@"heading"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [coder encodeDouble:_centerCoordinate.latitude forKey:@"centerLatitude"];
- [coder encodeDouble:_centerCoordinate.longitude forKey:@"centerLongitude"];
- [coder encodeDouble:_altitude forKey:@"altitude"];
- [coder encodeDouble:_pitch forKey:@"pitch"];
- [coder encodeDouble:_heading forKey:@"heading"];
-}
-
-- (id)copyWithZone:(nullable NSZone *)zone
-{
- return [[[self class] allocWithZone:zone] initWithCenterCoordinate:_centerCoordinate
- altitude:_altitude
- pitch:_pitch
- heading:_heading];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingViewingDistance {
- return [NSSet setWithObjects:@"altitude", @"pitch", nil];
-}
-
-- (CLLocationDistance)viewingDistance {
- CLLocationDirection eyeAngle = 90 - self.pitch;
- return self.altitude / sin(MGLRadiansFromDegrees(eyeAngle));
-}
-
-- (void)setViewingDistance:(CLLocationDistance)distance {
- MGLLogDebug(@"Setting viewingDistance: %f", distance);
- CLLocationDirection eyeAngle = 90 - self.pitch;
- self.altitude = distance * sin(MGLRadiansFromDegrees(eyeAngle));
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; centerCoordinate = %f, %f; altitude = %.0fm; heading = %.0f°; pitch = %.0f°>",
- NSStringFromClass([self class]), (void *)self, _centerCoordinate.latitude, _centerCoordinate.longitude, _altitude, _heading, _pitch];
-}
-
-- (BOOL)isEqual:(id)other
-{
- if ( ! [other isKindOfClass:[self class]])
- {
- return NO;
- }
- if (other == self)
- {
- return YES;
- }
-
- MGLMapCamera *otherCamera = other;
- return (_centerCoordinate.latitude == otherCamera.centerCoordinate.latitude
- && _centerCoordinate.longitude == otherCamera.centerCoordinate.longitude
- && _altitude == otherCamera.altitude
- && _pitch == otherCamera.pitch && _heading == otherCamera.heading);
-}
-
-- (BOOL)isEqualToMapCamera:(MGLMapCamera *)otherCamera
-{
- if (otherCamera == self)
- {
- return YES;
- }
-
- return (MGLEqualFloatWithAccuracy(_centerCoordinate.latitude, otherCamera.centerCoordinate.latitude, 1e-6)
- && MGLEqualFloatWithAccuracy(_centerCoordinate.longitude, otherCamera.centerCoordinate.longitude, 1e-6)
- && MGLEqualFloatWithAccuracy(_altitude, otherCamera.altitude, 1e-6)
- && MGLEqualFloatWithAccuracy(_pitch, otherCamera.pitch, 1)
- && MGLEqualFloatWithAccuracy(_heading, otherCamera.heading, 1));
-}
-
-- (NSUInteger)hash
-{
- return (@(_centerCoordinate.latitude).hash + @(_centerCoordinate.longitude).hash
- + @(_altitude).hash + @(_pitch).hash + @(_heading).hash);
-}
-
-@end
diff --git a/platform/darwin/src/MGLMapSnapshotter.h b/platform/darwin/src/MGLMapSnapshotter.h
deleted file mode 100644
index 98c8e8a375..0000000000
--- a/platform/darwin/src/MGLMapSnapshotter.h
+++ /dev/null
@@ -1,281 +0,0 @@
-#import <Foundation/Foundation.h>
-#import "MGLTypes.h"
-#import "MGLGeometry.h"
-#import "MGLMapCamera.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An overlay that is placed within a `MGLMapSnapshot`.
- To access this object, use `-[MGLMapSnapshotter startWithOverlayHandler:completionHandler:]`.
- */
-
-MGL_EXPORT
-@interface MGLMapSnapshotOverlay : NSObject
-
-/**
- The current `CGContext` that snapshot is drawing within. You may use this context
- to perform additional custom drawing.
- */
-@property (nonatomic, readonly) CGContextRef context;
-
-#if TARGET_OS_IPHONE
-/**
- Converts the specified map coordinate to a point in the coordinate space of the
- context.
- */
-- (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;
-
-/**
- Converts the specified context point to a map coordinate.
- */
-- (CLLocationCoordinate2D)coordinateForPoint:(CGPoint)point;
-
-#else
-/**
- Converts the specified map coordinate to a point in the coordinate space of the
- context.
- */
-- (NSPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;
-
-/**
- Converts the specified context point to a map coordinate.
- */
-- (CLLocationCoordinate2D)coordinateForPoint:(NSPoint)point;
-#endif
-
-@end
-
-/**
-A block provided during the snapshot drawing process, enabling the ability to
-draw custom overlays rendered with Core Graphics.
-
- @param snapshotOverlay The `MGLMapSnapshotOverlay` provided during snapshot drawing.
- */
-typedef void (^MGLMapSnapshotOverlayHandler)(MGLMapSnapshotOverlay * snapshotOverlay);
-
-/**
- The options to use when creating images with the `MGLMapSnapshotter`.
- */
-MGL_EXPORT
-@interface MGLMapSnapshotOptions : NSObject
-
-/**
- Creates a set of options with the minimum required information.
-
- @param styleURL URL of the map style to snapshot. The URL may be a full HTTP or
- HTTPS URL, a Mapbox style URL
- (`mapbox://styles/{user}/{style}`), or a path to a local file relative to
- the application’s resource path. Specify `nil` for the default style.
- @param size The image size.
- */
-- (instancetype)initWithStyleURL:(nullable NSURL *)styleURL camera:(MGLMapCamera *)camera size:(CGSize)size;
-
-#pragma mark - Configuring the Map
-
-/**
- URL of the map style to snapshot.
- */
-@property (nonatomic, readonly) NSURL *styleURL;
-
-/**
- The zoom level.
-
- The default zoom level is 0. If this property is non-zero and the camera
- property is non-nil, the camera’s altitude is ignored in favor of this
- property’s value.
- */
-@property (nonatomic) double zoomLevel;
-
-/**
- A camera representing the viewport visible in the snapshot.
-
- If this property is non-nil and the `coordinateBounds` property is set to a
- non-empty coordinate bounds, the camera’s center coordinate and altitude are
- ignored in favor of the `coordinateBounds` property.
- */
-@property (nonatomic) MGLMapCamera *camera;
-
-/**
- The coordinate rectangle that encompasses the bounds to capture.
-
- If this property is non-empty and the camera property is non-nil, the camera’s
- center coordinate and altitude are ignored in favor of this property’s value.
- */
-@property (nonatomic) MGLCoordinateBounds coordinateBounds;
-
-#pragma mark - Configuring the Image
-
-/**
- The size of the output image, measured in points.
-
- */
-@property (nonatomic, readonly) CGSize size;
-
-/**
- The scale of the output image. Defaults to the main screen scale.
-
- The minimum scale is 1.
- */
-@property (nonatomic) CGFloat scale;
-
-@end
-
-/**
- An image generated by a snapshotter object.
- */
-MGL_EXPORT
-@interface MGLMapSnapshot : NSObject
-
-#if TARGET_OS_IPHONE
-/**
- Converts the specified map coordinate to a point in the coordinate space of the
- image.
- */
-- (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;
-
-/**
- Converts the specified image point to a map coordinate.
- */
-- (CLLocationCoordinate2D)coordinateForPoint:(CGPoint)point;
-
-/**
- The image of the map’s content.
- */
-@property (nonatomic, readonly) UIImage *image;
-#else
-/**
- Converts the specified map coordinate to a point in the coordinate space of the
- image.
- */
-- (NSPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;
-
-/**
- Converts the specified image point to a map coordinate.
- */
-- (CLLocationCoordinate2D)coordinateForPoint:(NSPoint)point;
-
-
-/**
- The image of the map’s content.
- */
-@property (nonatomic, readonly) NSImage *image;
-#endif
-
-@end
-
-/**
- A block to processes the result or error of a snapshot request.
-
- @param snapshot The `MGLMapSnapshot` that was generated or `nil` if an error
- occurred.
- @param error The error that occured or `nil` when successful.
- */
-typedef void (^MGLMapSnapshotCompletionHandler)(MGLMapSnapshot* _Nullable snapshot, NSError* _Nullable error);
-
-/**
- An `MGLMapSnapshotter` generates static raster images of the map. Each snapshot
- image depicts a portion of a map defined by an `MGLMapSnapshotOptions` object
- you provide. The snapshotter generates an `MGLMapSnapshot` object
- asynchronously, passing it into a completion handler once tiles and other
- resources needed for the snapshot are finished loading.
-
- You can change the snapshotter’s options at any time and reuse the snapshotter
- for multiple distinct snapshots; however, the snapshotter can only generate one
- snapshot at a time. If you need to generate multiple snapshots concurrently,
- create multiple snapshotter objects.
-
- For an interactive map, use the `MGLMapView` class. Both `MGLMapSnapshotter`
- and `MGLMapView` are compatible with offline packs managed by the
- `MGLOfflineStorage` class.
-
- From a snapshot, you can obtain an image and convert geographic coordinates to
- the image’s coordinate space in order to superimpose markers and overlays. If
- you do not need offline map functionality, you can use the `Snapshot` class in
- [MapboxStatic.swift](https://github.com/mapbox/MapboxStatic.swift/) to generate
- static map images with overlays.
-
- ### Example
-
- ```swift
- let camera = MGLMapCamera(lookingAtCenter: CLLocationCoordinate2D(latitude: 37.7184, longitude: -122.4365), altitude: 100, pitch: 20, heading: 0)
-
- let options = MGLMapSnapshotOptions(styleURL: MGLStyle.satelliteStreetsStyleURL, camera: camera, size: CGSize(width: 320, height: 480))
- options.zoomLevel = 10
-
- let snapshotter = MGLMapSnapshotter(options: options)
- snapshotter.start { (snapshot, error) in
- if let error = error {
- fatalError(error.localizedDescription)
- }
-
- image = snapshot?.image
- }
- ```
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/map-snapshotter/">
- Create a static map snapshot</a> example to learn how to use the
- `MGLMapSnapshotter` to generate a static image based on an `MGLMapView`
- object's style, camera, and view bounds.
- */
-MGL_EXPORT
-@interface MGLMapSnapshotter : NSObject
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- Initializes and returns a map snapshotter object that produces snapshots
- according to the given options.
-
- @param options The options to use when generating a map snapshot.
- @return An initialized map snapshotter.
- */
-- (instancetype)initWithOptions:(MGLMapSnapshotOptions *)options NS_DESIGNATED_INITIALIZER;
-
-/**
- Starts the snapshot creation and executes the specified block with the result.
-
- @param completionHandler The block to handle the result in.
- */
-- (void)startWithCompletionHandler:(MGLMapSnapshotCompletionHandler)completionHandler;
-
-/**
- Starts the snapshot creation and executes the specified block with the result
- on the specified queue.
-
- @param queue The queue to handle the result on.
- @param completionHandler The block to handle the result in.
- */
-- (void)startWithQueue:(dispatch_queue_t)queue completionHandler:(MGLMapSnapshotCompletionHandler)completionHandler;
-
-/**
- Starts the snapshot creation and executes the specified blocks with the result
- on the specified queue. Use this option if you want to add custom drawing on top of the
- resulting `MGLMapSnapShot`.
- @param overlayHandler The block to handle manipulation of the `MGLMapSnapshotter`'s `CGContext`.
- @param completionHandler The block to handle the result in.
- */
-- (void)startWithOverlayHandler:(MGLMapSnapshotOverlayHandler)overlayHandler completionHandler:(MGLMapSnapshotCompletionHandler)completionHandler;
-
-/**
- Cancels the snapshot creation request, if any.
-
- Once you call this method, you cannot resume the snapshot. In order to obtain
- the snapshot, create a new `MGLMapSnapshotter` object.
- */
-- (void)cancel;
-
-/**
- The options to use when generating a map snapshot.
- */
-@property (nonatomic) MGLMapSnapshotOptions *options;
-
-/**
- Indicates whether a snapshot is currently being generated.
- */
-@property (nonatomic, readonly, getter=isLoading) BOOL loading;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLMapSnapshotter.mm b/platform/darwin/src/MGLMapSnapshotter.mm
deleted file mode 100644
index f3e9e7a41e..0000000000
--- a/platform/darwin/src/MGLMapSnapshotter.mm
+++ /dev/null
@@ -1,752 +0,0 @@
-#import "MGLMapSnapshotter.h"
-
-#import <mbgl/actor/actor.hpp>
-#import <mbgl/actor/scheduler.hpp>
-#import <mbgl/util/geo.hpp>
-#import <mbgl/map/map_options.hpp>
-#import <mbgl/map/map_snapshotter.hpp>
-#import <mbgl/map/camera.hpp>
-#import <mbgl/storage/resource_options.hpp>
-#import <mbgl/util/string.hpp>
-
-#import "MGLOfflineStorage_Private.h"
-#import "MGLGeometry_Private.h"
-#import "NSBundle+MGLAdditions.h"
-#import "MGLStyle.h"
-#import "MGLAttributionInfo_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLRendererConfiguration.h"
-#import "MGLMapSnapshotter_Private.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MGLMapboxEvents.h"
-#endif
-
-#if TARGET_OS_IPHONE
-#import "UIImage+MGLAdditions.h"
-#else
-#import "NSImage+MGLAdditions.h"
-#import <CoreGraphics/CoreGraphics.h>
-#import <QuartzCore/QuartzCore.h>
-#endif
-
-const CGPoint MGLLogoImagePosition = CGPointMake(8, 8);
-const CGFloat MGLSnapshotterMinimumPixelSize = 64;
-
-
-@interface MGLMapSnapshotOverlay() <MGLMapSnapshotProtocol>
-@property (nonatomic, assign) CGFloat scale;
-- (instancetype)initWithContext:(CGContextRef)context scale:(CGFloat)scale pointForFn:(mbgl::MapSnapshotter::PointForFn)pointForFn latLngForFn:(mbgl::MapSnapshotter::LatLngForFn)latLngForFn;
-
-@end
-
-@implementation MGLMapSnapshotOverlay {
- mbgl::MapSnapshotter::PointForFn _pointForFn;
- mbgl::MapSnapshotter::LatLngForFn _latLngForFn;
-}
-
-- (instancetype) initWithContext:(CGContextRef)context scale:(CGFloat)scale pointForFn:(mbgl::MapSnapshotter::PointForFn)pointForFn latLngForFn:(mbgl::MapSnapshotter::LatLngForFn)latLngForFn {
- self = [super init];
- if (self) {
- _context = context;
- _scale = scale;
- _pointForFn = pointForFn;
- _latLngForFn = latLngForFn;
- }
-
- return self;
-}
-
-#if TARGET_OS_IPHONE
-
-- (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate
-{
- mbgl::ScreenCoordinate sc = _pointForFn(MGLLatLngFromLocationCoordinate2D(coordinate));
- return CGPointMake(sc.x, sc.y);
-}
-
-- (CLLocationCoordinate2D)coordinateForPoint:(CGPoint)point
-{
- mbgl::LatLng latLng = _latLngForFn(mbgl::ScreenCoordinate(point.x, point.y));
- return MGLLocationCoordinate2DFromLatLng(latLng);
-}
-
-#else
-
-- (NSPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate
-{
- mbgl::ScreenCoordinate sc = _pointForFn(MGLLatLngFromLocationCoordinate2D(coordinate));
- CGFloat height = ((CGFloat)CGBitmapContextGetHeight(self.context))/self.scale;
- return NSMakePoint(sc.x, height - sc.y);
-}
-
-- (CLLocationCoordinate2D)coordinateForPoint:(NSPoint)point
-{
- CGFloat height = ((CGFloat)CGBitmapContextGetHeight(self.context))/self.scale;
- auto screenCoord = mbgl::ScreenCoordinate(point.x, height - point.y);
- mbgl::LatLng latLng = _latLngForFn(screenCoord);
- return MGLLocationCoordinate2DFromLatLng(latLng);
-}
-
-#endif
-@end
-
-@implementation MGLMapSnapshotOptions
-
-- (instancetype _Nonnull)initWithStyleURL:(nullable NSURL *)styleURL camera:(MGLMapCamera *)camera size:(CGSize)size
-{
- MGLLogDebug(@"Initializing withStyleURL: %@ camera: %@ size: %@", styleURL, camera, MGLStringFromSize(size));
- self = [super init];
- if (self)
- {
- if ( !styleURL)
- {
- styleURL = [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion];
- }
- _styleURL = styleURL;
- _size = size;
- _camera = camera;
-#if TARGET_OS_IPHONE
- _scale = [UIScreen mainScreen].scale;
-#else
- _scale = [NSScreen mainScreen].backingScaleFactor;
-#endif
- }
- return self;
-}
-
-@end
-
-@interface MGLMapSnapshot() <MGLMapSnapshotProtocol>
-- (instancetype)initWithImage:(nullable MGLImage *)image scale:(CGFloat)scale pointForFn:(mbgl::MapSnapshotter::PointForFn)pointForFn latLngForFn:(mbgl::MapSnapshotter::LatLngForFn)latLngForFn;
-
-@property (nonatomic) CGFloat scale;
-@end
-
-@implementation MGLMapSnapshot {
- mbgl::MapSnapshotter::PointForFn _pointForFn;
- mbgl::MapSnapshotter::LatLngForFn _latLngForFn;
-}
-
-- (instancetype)initWithImage:(nullable MGLImage *)image scale:(CGFloat)scale pointForFn:(mbgl::MapSnapshotter::PointForFn)pointForFn latLngForFn:(mbgl::MapSnapshotter::LatLngForFn)latLngForFn
-{
- self = [super init];
- if (self) {
- _pointForFn = pointForFn;
- _latLngForFn = latLngForFn;
- _scale = scale;
- _image = image;
- }
- return self;
-}
-
-#if TARGET_OS_IPHONE
-
-- (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate
-{
- mbgl::ScreenCoordinate sc = _pointForFn(MGLLatLngFromLocationCoordinate2D(coordinate));
- return CGPointMake(sc.x, sc.y);
-}
-
-- (CLLocationCoordinate2D)coordinateForPoint:(CGPoint)point
-{
- mbgl::LatLng latLng = _latLngForFn(mbgl::ScreenCoordinate(point.x, point.y));
- return MGLLocationCoordinate2DFromLatLng(latLng);
-}
-
-#else
-
-- (NSPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate
-{
- mbgl::ScreenCoordinate sc = _pointForFn(MGLLatLngFromLocationCoordinate2D(coordinate));
- return NSMakePoint(sc.x, self.image.size.height - sc.y);
-}
-
-- (CLLocationCoordinate2D)coordinateForPoint:(NSPoint)point
-{
- auto screenCoord = mbgl::ScreenCoordinate(point.x, self.image.size.height - point.y);
- mbgl::LatLng latLng = _latLngForFn(screenCoord);
- return MGLLocationCoordinate2DFromLatLng(latLng);
-}
-
-#endif
-
-@end
-
-@interface MGLMapSnapshotter()
-@property (nonatomic) BOOL cancelled;
-@property (nonatomic) BOOL terminated;
-@property (nonatomic) dispatch_queue_t resultQueue;
-@property (nonatomic, copy) MGLMapSnapshotCompletionHandler completion;
-+ (void)completeWithErrorCode:(MGLErrorCode)errorCode description:(nonnull NSString*)description onQueue:(dispatch_queue_t)queue completion:(MGLMapSnapshotCompletionHandler)completion;
-@end
-
-@implementation MGLMapSnapshotter {
- std::unique_ptr<mbgl::MapSnapshotter> _mbglMapSnapshotter;
- std::unique_ptr<mbgl::Actor<mbgl::MapSnapshotter::Callback>> _snapshotCallback;
-}
-
-- (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
- if (_completion) {
- MGLAssert(_snapshotCallback, @"Snapshot in progress - there should be a valid callback");
-
- [MGLMapSnapshotter completeWithErrorCode:MGLErrorCodeSnapshotFailed
- description:@"MGLMapSnapshotter deallocated prior to snapshot completion."
- onQueue:_resultQueue
- completion:_completion];
- }
-}
-
-
-- (instancetype)init {
- NSAssert(NO, @"Please use -[MGLMapSnapshotter initWithOptions:]");
- [super doesNotRecognizeSelector:_cmd];
- return nil;
-}
-
-- (instancetype)initWithOptions:(MGLMapSnapshotOptions *)options
-{
- MGLLogDebug(@"Initializing withOptions: %@", options);
- self = [super init];
- if (self) {
- [self setOptions:options];
-#if TARGET_OS_IPHONE
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:nil];
-#else
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name:NSApplicationWillTerminateNotification object:nil];
-#endif
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [MGLMapboxEvents pushTurnstileEvent];
-#endif
- }
- return self;
-}
-
-- (void)applicationWillTerminate:(NSNotification *)notification
-{
- if (self.completion) {
- [self cancel];
- }
-
- _mbglMapSnapshotter.reset();
- _snapshotCallback.reset();
-
- self.terminated = YES;
-}
-
-- (void)startWithCompletionHandler:(MGLMapSnapshotCompletionHandler)completion
-{
- MGLLogDebug(@"Starting withCompletionHandler: %@", completion);
- [self startWithQueue:dispatch_get_main_queue() completionHandler:completion];
-}
-
-- (void)startWithQueue:(dispatch_queue_t)queue completionHandler:(MGLMapSnapshotCompletionHandler)completionHandler {
- [self startWithQueue:queue overlayHandler:nil completionHandler:completionHandler];
-}
-
-- (void)startWithOverlayHandler:(MGLMapSnapshotOverlayHandler)overlayHandler completionHandler:(MGLMapSnapshotCompletionHandler)completion {
- [self startWithQueue:dispatch_get_main_queue() overlayHandler:overlayHandler completionHandler:completion];
-}
-
-- (void)startWithQueue:(dispatch_queue_t)queue overlayHandler:(MGLMapSnapshotOverlayHandler)overlayHandler completionHandler:(MGLMapSnapshotCompletionHandler)completion
-{
- if (!mbgl::Scheduler::GetCurrent()) {
- [NSException raise:NSInvalidArgumentException
- format:@"startWithQueue:completionHandler: must be called from a thread with an active run loop."];
- }
-
- if (self.completion) {
- // Consider replacing this exception with an error passed to the completion block.
- [NSException raise:NSInternalInconsistencyException
- format:@"Already started this snapshotter."];
- }
-
- if (self.terminated) {
- [NSException raise:NSInternalInconsistencyException
- format:@"Starting a snapshotter after application termination is not supported."];
- }
-
- self.completion = completion;
- self.resultQueue = queue;
- self.cancelled = NO;
-
- __weak __typeof__(self) weakSelf = self;
- // mbgl::Scheduler::GetCurrent() scheduler means "run callback on current (ie UI/main) thread"
- // capture weakSelf to avoid retain cycle if callback is never called (ie snapshot cancelled)
-
- _snapshotCallback = std::make_unique<mbgl::Actor<mbgl::MapSnapshotter::Callback>>(
- *mbgl::Scheduler::GetCurrent(),
- [=](std::exception_ptr mbglError, mbgl::PremultipliedImage image, mbgl::MapSnapshotter::Attributions attributions, mbgl::MapSnapshotter::PointForFn pointForFn, mbgl::MapSnapshotter::LatLngForFn latLngForFn) {
-
- __typeof__(self) strongSelf = weakSelf;
- // If self had died, _snapshotCallback would have been destroyed and this block would not be executed
- MGLCAssert(strongSelf, @"Snapshot callback executed after being destroyed.");
-
- if (!strongSelf.completion)
- return;
-
- if (mbglError) {
- NSString *description = @(mbgl::util::toString(mbglError).c_str());
- NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description};
- NSError *error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeSnapshotFailed userInfo:userInfo];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- // Dispatch to result queue
- dispatch_async(queue, ^{
- strongSelf.completion(nil, error);
- strongSelf.completion = nil;
- });
-
- } else {
-#if TARGET_OS_IPHONE
- MGLImage *mglImage = [[MGLImage alloc] initWithMGLPremultipliedImage:std::move(image) scale:strongSelf.options.scale];
-#else
- MGLImage *mglImage = [[MGLImage alloc] initWithMGLPremultipliedImage:std::move(image)];
- mglImage.size = NSMakeSize(mglImage.size.width / strongSelf.options.scale,
- mglImage.size.height / strongSelf.options.scale);
-#endif
-
- [strongSelf drawAttributedSnapshot:attributions snapshotImage:mglImage pointForFn:pointForFn latLngForFn:latLngForFn overlayHandler:overlayHandler];
- }
- strongSelf->_snapshotCallback = NULL;
-
- });
-
- // Launches snapshot on background Thread owned by mbglMapSnapshotter
- // _snapshotCallback->self() is an ActorRef: if the callback is destroyed, further messages
- // to the callback are just no-ops
- _mbglMapSnapshotter->snapshot(_snapshotCallback->self());
-}
-
-+ (MGLImage*)drawAttributedSnapshotWorker:(mbgl::MapSnapshotter::Attributions)attributions snapshotImage:(MGLImage *)mglImage pointForFn:(mbgl::MapSnapshotter::PointForFn)pointForFn latLngForFn:(mbgl::MapSnapshotter::LatLngForFn)latLngForFn scale:(CGFloat)scale size:(CGSize)size overlayHandler:(MGLMapSnapshotOverlayHandler)overlayHandler {
-
- NSArray<MGLAttributionInfo *>* attributionInfo = [MGLMapSnapshotter generateAttributionInfos:attributions];
-
-#if TARGET_OS_IPHONE
- MGLAttributionInfoStyle attributionInfoStyle = MGLAttributionInfoStyleLong;
- for (NSUInteger styleValue = MGLAttributionInfoStyleLong; styleValue >= MGLAttributionInfoStyleShort; styleValue--) {
- attributionInfoStyle = (MGLAttributionInfoStyle)styleValue;
- CGSize attributionSize = [MGLMapSnapshotter attributionSizeWithLogoStyle:attributionInfoStyle sourceAttributionStyle:attributionInfoStyle attributionInfo:attributionInfo];
- if (attributionSize.width <= mglImage.size.width) {
- break;
- }
- }
-
- UIImage *logoImage = [MGLMapSnapshotter logoImageWithStyle:attributionInfoStyle];
- CGSize attributionBackgroundSize = [MGLMapSnapshotter attributionTextSizeWithStyle:attributionInfoStyle attributionInfo:attributionInfo];
-
- CGRect logoImageRect = CGRectMake(MGLLogoImagePosition.x, mglImage.size.height - (MGLLogoImagePosition.y + logoImage.size.height), logoImage.size.width, logoImage.size.height);
- CGPoint attributionOrigin = CGPointMake(mglImage.size.width - 10 - attributionBackgroundSize.width,
- logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2) + 1);
- if (!logoImage) {
- CGSize defaultLogoSize = [MGLMapSnapshotter mapboxLongStyleLogo].size;
- logoImageRect = CGRectMake(0, mglImage.size.height - (MGLLogoImagePosition.y + defaultLogoSize.height), 0, defaultLogoSize.height);
- attributionOrigin = CGPointMake(10, logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2) + 1);
- }
-
- CGRect attributionBackgroundFrame = CGRectMake(attributionOrigin.x,
- attributionOrigin.y,
- attributionBackgroundSize.width,
- attributionBackgroundSize.height);
- CGPoint attributionTextPosition = CGPointMake(attributionBackgroundFrame.origin.x + 10,
- attributionBackgroundFrame.origin.y - 1);
-
- CGRect cropRect = CGRectMake(attributionBackgroundFrame.origin.x * mglImage.scale,
- attributionBackgroundFrame.origin.y * mglImage.scale,
- attributionBackgroundSize.width * mglImage.scale,
- attributionBackgroundSize.height * mglImage.scale);
-
-
- UIGraphicsBeginImageContextWithOptions(mglImage.size, NO, scale);
-
- [mglImage drawInRect:CGRectMake(0, 0, mglImage.size.width, mglImage.size.height)];
-
- CGContextRef currentContext = UIGraphicsGetCurrentContext();
-
- if (currentContext && overlayHandler) {
- MGLMapSnapshotOverlay *snapshotOverlay = [[MGLMapSnapshotOverlay alloc] initWithContext:currentContext
- scale:scale
- pointForFn:pointForFn
- latLngForFn:latLngForFn];
- CGContextSaveGState(snapshotOverlay.context);
- overlayHandler(snapshotOverlay);
- CGContextRestoreGState(snapshotOverlay.context);
- currentContext = UIGraphicsGetCurrentContext();
- }
-
- if (!currentContext && overlayHandler) {
- // If the current context has been corrupted by the user,
- // return nil so we can generate an error later.
- return nil;
- }
-
- [logoImage drawInRect:logoImageRect];
-
- UIImage *currentImage = UIGraphicsGetImageFromCurrentImageContext();
- CGImageRef attributionImageRef = CGImageCreateWithImageInRect([currentImage CGImage], cropRect);
- UIImage *attributionImage = [UIImage imageWithCGImage:attributionImageRef];
- CGImageRelease(attributionImageRef);
-
- CIImage *ciAttributionImage = [[CIImage alloc] initWithCGImage:attributionImage.CGImage];
-
- UIImage *blurredAttributionBackground = [MGLMapSnapshotter blurredAttributionBackground:ciAttributionImage];
-
- [blurredAttributionBackground drawInRect:attributionBackgroundFrame];
-
- [MGLMapSnapshotter drawAttributionTextWithStyle:attributionInfoStyle origin:attributionTextPosition attributionInfo:attributionInfo];
-
- UIImage *compositedImage = UIGraphicsGetImageFromCurrentImageContext();
-
- UIGraphicsEndImageContext();
-
- return compositedImage;
-
-#else
-
- NSSize targetSize = NSMakeSize(size.width, size.height);
- NSRect targetFrame = NSMakeRect(0, 0, targetSize.width, targetSize.height);
-
- MGLAttributionInfoStyle attributionInfoStyle = MGLAttributionInfoStyleLong;
- for (NSUInteger styleValue = MGLAttributionInfoStyleLong; styleValue >= MGLAttributionInfoStyleShort; styleValue--) {
- attributionInfoStyle = (MGLAttributionInfoStyle)styleValue;
- CGSize attributionSize = [MGLMapSnapshotter attributionSizeWithLogoStyle:attributionInfoStyle sourceAttributionStyle:attributionInfoStyle attributionInfo:attributionInfo];
- if (attributionSize.width <= mglImage.size.width) {
- break;
- }
- }
-
- NSImage *logoImage = [MGLMapSnapshotter logoImageWithStyle:attributionInfoStyle];
- CGSize attributionBackgroundSize = [MGLMapSnapshotter attributionTextSizeWithStyle:attributionInfoStyle attributionInfo:attributionInfo];
- NSImage *sourceImage = mglImage;
-
- CGRect logoImageRect = CGRectMake(MGLLogoImagePosition.x, MGLLogoImagePosition.y, logoImage.size.width, logoImage.size.height);
- CGPoint attributionOrigin = CGPointMake(targetFrame.size.width - 10 - attributionBackgroundSize.width,
- MGLLogoImagePosition.y + 1);
- if (!logoImage) {
- CGSize defaultLogoSize = [MGLMapSnapshotter mapboxLongStyleLogo].size;
- logoImageRect = CGRectMake(0, MGLLogoImagePosition.y, 0, defaultLogoSize.height);
- attributionOrigin = CGPointMake(10, attributionOrigin.y);
- }
-
- CGRect attributionBackgroundFrame = CGRectMake(attributionOrigin.x,
- attributionOrigin.y,
- attributionBackgroundSize.width,
- attributionBackgroundSize.height);
- CGPoint attributionTextPosition = CGPointMake(attributionBackgroundFrame.origin.x + 10,
- logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2));
-
-
- NSImage *compositedImage = nil;
- NSImageRep *sourceImageRep = [sourceImage bestRepresentationForRect:targetFrame
- context:nil
- hints:nil];
- compositedImage = [[NSImage alloc] initWithSize:targetSize];
-
- [compositedImage lockFocus];
-
- [sourceImageRep drawInRect: targetFrame];
-
- NSGraphicsContext *currentContext = [NSGraphicsContext currentContext];
- if (currentContext && overlayHandler) {
- MGLMapSnapshotOverlay *snapshotOverlay = [[MGLMapSnapshotOverlay alloc] initWithContext:currentContext.CGContext
- scale:scale
- pointForFn:pointForFn
- latLngForFn:latLngForFn];
- [currentContext saveGraphicsState];
- overlayHandler(snapshotOverlay);
- [currentContext restoreGraphicsState];
- currentContext = [NSGraphicsContext currentContext];
- }
-
- if (!currentContext && overlayHandler) {
- // If the current context has been corrupted by the user,
- // return nil so we can generate an error later.
- return nil;
- }
-
- if (logoImage) {
- [logoImage drawInRect:logoImageRect];
- }
-
- NSBitmapImageRep *attributionBackground = [[NSBitmapImageRep alloc] initWithFocusedViewRect:attributionBackgroundFrame];
-
- CIImage *attributionBackgroundImage = [[CIImage alloc] initWithCGImage:[attributionBackground CGImage]];
-
- NSImage *blurredAttributionBackground = [MGLMapSnapshotter blurredAttributionBackground:attributionBackgroundImage];
-
- [blurredAttributionBackground drawInRect:attributionBackgroundFrame];
-
- [MGLMapSnapshotter drawAttributionTextWithStyle:attributionInfoStyle origin:attributionTextPosition attributionInfo:attributionInfo];
-
- [compositedImage unlockFocus];
-
- return compositedImage;
-#endif
-}
-
-- (void)drawAttributedSnapshot:(mbgl::MapSnapshotter::Attributions)attributions snapshotImage:(MGLImage *)mglImage pointForFn:(mbgl::MapSnapshotter::PointForFn)pointForFn latLngForFn:(mbgl::MapSnapshotter::LatLngForFn)latLngForFn overlayHandler:(MGLMapSnapshotOverlayHandler)overlayHandler {
-
- // Process image watermark in a work queue
- dispatch_queue_t workQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
- dispatch_queue_t resultQueue = self.resultQueue;
-
- // Capture scale and size by value to avoid accessing self from another thread
- CGFloat scale = self.options.scale;
- CGSize size = self.options.size;
-
- // pointForFn is a copyable std::function that captures state by value: see MapSnapshotter::Impl::snapshot
- __weak __typeof__(self) weakself = self;
-
- dispatch_async(workQueue, ^{
- // Call a class method to ensure we're not accidentally capturing self
- MGLImage *compositedImage = [MGLMapSnapshotter drawAttributedSnapshotWorker:attributions snapshotImage:mglImage pointForFn:pointForFn latLngForFn:latLngForFn scale:scale size:size overlayHandler:overlayHandler];
-
- // Dispatch result to origin queue
- dispatch_async(resultQueue, ^{
- __typeof__(self) strongself = weakself;
-
- if (strongself.completion) {
-
- if (!compositedImage) {
- NSDictionary *userInfo = @{NSLocalizedDescriptionKey: @"Failed to generate composited snapshot."};
- NSError *error = [NSError errorWithDomain:MGLErrorDomain
- code:MGLErrorCodeSnapshotFailed
- userInfo:userInfo];
-
- strongself.completion(nil, error);
- strongself.completion = nil;
- } else {
- MGLMapSnapshot* snapshot = [[MGLMapSnapshot alloc] initWithImage:compositedImage
- scale:scale
- pointForFn:pointForFn
- latLngForFn:latLngForFn];
- strongself.completion(snapshot, nil);
- strongself.completion = nil;
- }
- }
- });
- });
-}
-
-+ (NSArray<MGLAttributionInfo *>*) generateAttributionInfos:(mbgl::MapSnapshotter::Attributions)attributions {
- NSMutableArray *infos = [NSMutableArray array];
-
-#if TARGET_OS_IPHONE
- CGFloat fontSize = [UIFont smallSystemFontSize];
- UIColor *attributeFontColor = [UIColor blackColor];
-#else
- CGFloat fontSize = [NSFont systemFontSizeForControlSize:NSMiniControlSize];
- NSColor *attributeFontColor = [NSColor blackColor];
-#endif
- for (auto attribution = attributions.begin(); attribution != attributions.end(); ++attribution) {
- NSString *attributionHTMLString = @(attribution->c_str());
- NSArray *tileSetInfos = [MGLAttributionInfo attributionInfosFromHTMLString:attributionHTMLString
- fontSize:fontSize
- linkColor:attributeFontColor];
- [infos growArrayByAddingAttributionInfosFromArray:tileSetInfos];
- }
- return infos;
-}
-
-+ (void)drawAttributionTextWithStyle:(MGLAttributionInfoStyle)attributionInfoStyle origin:(CGPoint)origin attributionInfo:(NSArray<MGLAttributionInfo *>*)attributionInfo
-{
- for (MGLAttributionInfo *info in attributionInfo) {
- if (info.isFeedbackLink) {
- continue;
- }
- NSAttributedString *attribution = [info titleWithStyle:attributionInfoStyle];
- [attribution drawAtPoint:origin];
-
- origin.x += [attribution size].width + 10;
- }
-}
-
-+ (MGLImage *)blurredAttributionBackground:(CIImage *)backgroundImage
-{
- CGAffineTransform transform = CGAffineTransformIdentity;
- CIFilter *clamp = [CIFilter filterWithName:@"CIAffineClamp"];
- [clamp setValue:backgroundImage forKey:kCIInputImageKey];
- [clamp setValue:[NSValue valueWithBytes:&transform objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"];
-
- CIFilter *attributionBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
- [attributionBlurFilter setValue:[clamp outputImage] forKey:kCIInputImageKey];
- [attributionBlurFilter setValue:@10 forKey:kCIInputRadiusKey];
-
- CIFilter *attributionColorFilter = [CIFilter filterWithName:@"CIColorControls"];
- [attributionColorFilter setValue:[attributionBlurFilter outputImage] forKey:kCIInputImageKey];
- [attributionColorFilter setValue:@(0.1) forKey:kCIInputBrightnessKey];
-
- CIImage *blurredImage = attributionColorFilter.outputImage;
-
- CIContext *ctx = [CIContext contextWithOptions:nil];
- CGImageRef cgimg = [ctx createCGImage:blurredImage fromRect:[backgroundImage extent]];
- MGLImage *image;
-
-#if TARGET_OS_IPHONE
- image = [UIImage imageWithCGImage:cgimg];
-#else
- image = [[NSImage alloc] initWithCGImage:cgimg size:[backgroundImage extent].size];
-#endif
-
- CGImageRelease(cgimg);
- return image;
-}
-
-+ (MGLImage *)logoImageWithStyle:(MGLAttributionInfoStyle)style
-{
- MGLImage *logoImage;
- switch (style) {
- case MGLAttributionInfoStyleLong:
- logoImage = [MGLMapSnapshotter mapboxLongStyleLogo];
- break;
- case MGLAttributionInfoStyleMedium:
-#if TARGET_OS_IPHONE
- logoImage = [UIImage imageNamed:@"mapbox_helmet" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil];
-#else
- logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox_helmet" ofType:@"pdf"]];
-#endif
- break;
- case MGLAttributionInfoStyleShort:
- logoImage = nil;
- break;
- }
- return logoImage;
-}
-
-+ (MGLImage *)mapboxLongStyleLogo
-{
- MGLImage *logoImage;
-#if TARGET_OS_IPHONE
- logoImage =[UIImage imageNamed:@"mapbox" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil];
-#else
- logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox" ofType:@"pdf"]];
-#endif
- return logoImage;
-}
-
-+ (CGSize)attributionSizeWithLogoStyle:(MGLAttributionInfoStyle)logoStyle sourceAttributionStyle:(MGLAttributionInfoStyle)attributionStyle attributionInfo:(NSArray<MGLAttributionInfo *>*)attributionInfo
-{
- MGLImage *logoImage = [self logoImageWithStyle:logoStyle];
-
- CGSize attributionBackgroundSize = [MGLMapSnapshotter attributionTextSizeWithStyle:attributionStyle attributionInfo:attributionInfo];
-
- CGSize attributionSize = CGSizeZero;
-
- if (logoImage) {
- attributionSize.width = MGLLogoImagePosition.x + logoImage.size.width + 10;
- }
- attributionSize.width = attributionSize.width + 10 + attributionBackgroundSize.width + 10;
- attributionSize.height = MAX(logoImage.size.height, attributionBackgroundSize.height);
-
- return attributionSize;
-}
-
-+ (CGSize)attributionTextSizeWithStyle:(MGLAttributionInfoStyle)attributionStyle attributionInfo:(NSArray<MGLAttributionInfo *>*)attributionInfo
-{
- CGSize attributionBackgroundSize = CGSizeMake(10, 0);
- for (MGLAttributionInfo *info in attributionInfo) {
- if (info.isFeedbackLink) {
- continue;
- }
- CGSize attributionSize = [info titleWithStyle:attributionStyle].size;
- attributionBackgroundSize.width += attributionSize.width + 10;
- attributionBackgroundSize.height = MAX(attributionSize.height, attributionBackgroundSize.height);
- }
-
- return attributionBackgroundSize;
-}
-
-- (void)cancel
-{
- MGLLogInfo(@"Cancelling snapshotter.");
- self.cancelled = YES;
-
- if (_snapshotCallback) {
- [MGLMapSnapshotter completeWithErrorCode:MGLErrorCodeSnapshotFailed
- description:[NSString stringWithFormat:@"MGLMapSnapshotter cancelled from %s", __PRETTY_FUNCTION__]
- onQueue:self.resultQueue
- completion:self.completion];
- self.completion = nil;
- }
-
- _snapshotCallback.reset();
- _mbglMapSnapshotter.reset();
-}
-
-+ (void)completeWithErrorCode:(MGLErrorCode)errorCode description:(nonnull NSString*)description onQueue:(dispatch_queue_t)queue completion:(MGLMapSnapshotCompletionHandler)completion {
- // The snapshot hasn't completed, so we should alert the caller
- if (completion && queue) {
- dispatch_async(queue, ^{
- NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description};
- NSError *error = [NSError errorWithDomain:MGLErrorDomain
- code:errorCode
- userInfo:userInfo];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- completion(NULL, error);
- });
- }
-}
-
-- (void)setOptions:(MGLMapSnapshotOptions *)options
-{
- if (_terminated) {
- [NSException raise:NSInternalInconsistencyException
- format:@"Calling MGLMapSnapshotter.options after application termination is not supported."];
- }
-
- MGLLogDebug(@"Setting options: %@", options);
-
- if (_completion) {
- [self cancel];
- }
-
- _cancelled = NO;
- _options = options;
-
- auto mbglFileSource = [[MGLOfflineStorage sharedOfflineStorage] mbglFileSource];
-
- std::string styleURL = std::string([options.styleURL.absoluteString UTF8String]);
- std::pair<bool, std::string> style = std::make_pair(false, styleURL);
-
- // Size; taking into account the minimum texture size for OpenGL ES
- // For non retina screens the ratio is 1:1 MGLSnapshotterMinimumPixelSize
- mbgl::Size size = {
- static_cast<uint32_t>(MAX(options.size.width, MGLSnapshotterMinimumPixelSize)),
- static_cast<uint32_t>(MAX(options.size.height, MGLSnapshotterMinimumPixelSize))
- };
-
- float pixelRatio = MAX(options.scale, 1);
-
- // Camera options
- mbgl::CameraOptions cameraOptions;
- if (CLLocationCoordinate2DIsValid(options.camera.centerCoordinate)) {
- cameraOptions.center = MGLLatLngFromLocationCoordinate2D(options.camera.centerCoordinate);
- }
- cameraOptions.bearing = MAX(0, options.camera.heading);
- cameraOptions.zoom = MAX(0, options.zoomLevel);
- cameraOptions.pitch = MAX(0, options.camera.pitch);
-
- // Region
- mbgl::optional<mbgl::LatLngBounds> coordinateBounds;
- if (!MGLCoordinateBoundsIsEmpty(options.coordinateBounds)) {
- coordinateBounds = MGLLatLngBoundsFromCoordinateBounds(options.coordinateBounds);
- }
-
- // App-global configuration
- MGLRendererConfiguration* config = [MGLRendererConfiguration currentConfiguration];
-
- mbgl::ResourceOptions resourceOptions;
- resourceOptions.withCachePath([[MGLOfflineStorage sharedOfflineStorage] mbglCachePath])
- .withAssetPath([NSBundle mainBundle].resourceURL.path.UTF8String);
-
- // Create the snapshotter
- _mbglMapSnapshotter = std::make_unique<mbgl::MapSnapshotter>(
- style, size, pixelRatio, cameraOptions, coordinateBounds, config.localFontFamilyName, resourceOptions);
-}
-
-@end
diff --git a/platform/darwin/src/MGLMapSnapshotter_Private.h b/platform/darwin/src/MGLMapSnapshotter_Private.h
deleted file mode 100644
index 205e51a6de..0000000000
--- a/platform/darwin/src/MGLMapSnapshotter_Private.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#import "MGLMapSnapshotter.h"
-
-@protocol MGLMapSnapshotProtocol <NSObject>
-
-#if TARGET_OS_IPHONE
-- (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;
-- (CLLocationCoordinate2D)coordinateForPoint:(CGPoint)point;
-
-#else
-- (NSPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;
-- (CLLocationCoordinate2D)coordinateForPoint:(NSPoint)point;
-#endif
-
-@end
diff --git a/platform/darwin/src/MGLMultiPoint.h b/platform/darwin/src/MGLMultiPoint.h
deleted file mode 100644
index ee9eb530a4..0000000000
--- a/platform/darwin/src/MGLMultiPoint.h
+++ /dev/null
@@ -1,167 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLShape.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLMultiPoint` class is an abstract superclass used to define shapes
- composed of multiple vertices.
-
- Create instances of `MGLPolyline` or `MGLPolygon` in order to use
- properties of `MGLMultiPoint`. Do not create instances of `MGLMultiPoint`
- directly and do not create your own subclasses of this class. You can use
- the method and properties of this class to access information about the
- vertices of the line or polygon.
-
- Do not confuse `MGLMultiPoint` with `MGLPointCollection`, which represents a
- collection of related but disconnected points.
- */
-MGL_EXPORT
-@interface MGLMultiPoint : MGLShape
-
-/**
- The array of vertices associated with the shape.
-
- This C array is a pointer to a structure inside the multipoint object, which
- may have a lifetime shorter than the multipoint object and will certainly not
- have a longer lifetime. Therefore, you should copy the C array if it needs to
- be stored outside of the memory context in which you use this property.
- */
-@property (nonatomic, readonly) CLLocationCoordinate2D *coordinates NS_RETURNS_INNER_POINTER;
-
-/** The number of vertices in the shape. */
-@property (nonatomic, readonly) NSUInteger pointCount;
-
-/**
- Retrieves the vertices of part of the shape.
-
- @param coords On input, you must provide a C array of `CLLocationCoordinate2D`
- structures large enough to hold the desired number of coordinates. On
- output, this structure contains the requested coordinate data.
- @param range The range of vertices you want. The `location` field indicates
- the first vertex you are requesting, with `0` being the first vertex, `1`
- being the second vertex, and so on. The `length` field indicates the number
- of vertices you want. The array in `coords` must be large enough to
- accommodate the number of requested coordinates.
- */
-- (void)getCoordinates:(CLLocationCoordinate2D *)coords range:(NSRange)range;
-
-/**
- Sets the shape’s vertices to the given C array of vertices.
-
- @param coords The array of coordinates defining the shape. The data in this
- array is copied to the shape’s `coordinates` property.
- @param count The number of coordinates from the `coords` array.
- */
-- (void)setCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-
-/**
- Inserts the given vertices into the shape.
-
- If the shape is currently visible on the map as an annotation, it is redrawn
- immediately. If the shape is part of an `MGLShapeSource` object, you must
- explicitly set the `MGLShapeSource.shape` property in order for any style
- layers that use the source to be redrawn.
-
- @param coords The array of coordinates to insert into the shape. The data in
- this array is copied to the shape’s `coordinates` property.
- @param count The number of items in the `coords` array.
- @param index The zero-based index at which the first coordinate in `coords`
- will appear in the `coordinates` property.
- */
-- (void)insertCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count atIndex:(NSUInteger)index;
-
-/**
- Appends the given vertices to the shape.
-
- If the shape is currently visible on the map as an annotation, it is redrawn
- immediately. If the shape is part of an `MGLShapeSource` object, you must
- explicitly set the `MGLShapeSource.shape` property in order for any style
- layers that use the source to be redrawn.
-
- @param coords The array of coordinates to add to the shape. The data in this
- array is copied to the shape’s `coordinates` property.
- @param count The number of items in the `coords` array.
- */
-- (void)appendCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-
-/**
- Replaces the vertices at the given range in the shape with the same number of
- vertices from a given C array.
-
- If the shape is currently visible on the map as an annotation, it is redrawn
- immediately. If the shape is part of an `MGLShapeSource` object, you must
- explicitly set the `MGLShapeSource.shape` property in order for any style
- layers that use the source to be redrawn.
-
- The number of coordinates in `coords` must be equal to the length of `range`.
- If you want to insert or delete one or more vertices, use the
- `-replaceCoordinatesInRange:withCoordinates:count:` method.
-
- If `range` extends beyond the shape’s `coordinates` property, an
- `NSRangeException` is raised. If you want to append new vertices to the shape,
- use the `-appendCoordinates:count:` method.
-
- @param range The range of vertices to replace. The `location` field indicates
- the first vertex you are replacing, with `0` being the first vertex, `1`
- being the second vertex, and so on. The `length` field indicates the number
- of vertices to replace.
- @param coords The array of coordinates defining part of the shape. The data in
- this array is copied to the shape’s `coordinates` property.
- */
-- (void)replaceCoordinatesInRange:(NSRange)range withCoordinates:(const CLLocationCoordinate2D *)coords;
-
-/**
- Replaces the vertices at the given range in the shape with the specified number
- of vertices from a given C array.
-
- If the shape is currently visible on the map as an annotation, it is redrawn
- immediately. If the shape is part of an `MGLShapeSource` object, you must
- explicitly set the `MGLShapeSource.shape` property in order for any style
- layers that use the source to be redrawn.
-
- If `count` is greater than the `length` field of `range`, some vertices will
- effectively be inserted into the shape. On the other hand, if `count` is less
- than the `length` field of `range`, some vertices will effectively be removed.
-
- If `range` extends beyond the shape’s `coordinates` property, an
- `NSRangeException` is raised. If you want to append new vertices to the shape,
- use the `-appendCoordinates:count:` method.
-
- @param range The range of vertices to replace. The `location` field indicates
- the first vertex you are replacing, with `0` being the first vertex, `1`
- being the second vertex, and so on. The `length` field indicates the number
- of vertices to replace.
- @param coords The array of coordinates defining part of the shape. The data in
- this array is copied to the shape’s `coordinates` property.
- @param count The number of coordinates from the `coords` array to insert in
- place of the coordinates in `range`. The sum of `range`’s length and this
- count must not exceed the number of items currently in the `coordinates`
- property.
- */
-- (void)replaceCoordinatesInRange:(NSRange)range withCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-
-/**
- Removes the vertices at the given range from the shape.
-
- If the shape is currently visible on the map as an annotation, it is redrawn
- immediately. If the shape is part of an `MGLShapeSource` object, you must
- explicitly set the `MGLShapeSource.shape` property in order for any style
- layers that use the source to be redrawn.
-
- If `range` extends beyond the shape’s `coordinates` property, an
- `NSRangeException` is raised.
-
- @param range The range of vertices to remove. The `location` field indicates
- the first vertex you are removing, with `0` being the first vertex, `1`
- being the second vertex, and so on. The `length` field indicates the number
- of vertices to remove.
- */
-- (void)removeCoordinatesInRange:(NSRange)range;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLMultiPoint.mm b/platform/darwin/src/MGLMultiPoint.mm
deleted file mode 100644
index 19aacaea43..0000000000
--- a/platform/darwin/src/MGLMultiPoint.mm
+++ /dev/null
@@ -1,204 +0,0 @@
-#import "MGLMultiPoint_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLShape_Private.h"
-#import "NSCoder+MGLAdditions.h"
-#import "MGLTypes.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-@implementation MGLMultiPoint
-{
- mbgl::optional<mbgl::LatLngBounds> _bounds;
- std::vector<CLLocationCoordinate2D> _coordinates;
-}
-
-- (instancetype)initWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count
-{
- MGLLogDebug(@"Initializing with %lu coordinates.", (unsigned long) count);
- self = [super init];
-
- if (self)
- {
- if (!count) {
- [NSException raise:NSInvalidArgumentException
- format:@"A multipoint must have at least one vertex."];
- }
- _coordinates = { coords, coords + count };
- }
-
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder
-{
- MGLLogInfo(@"Initializing with coder.");
- if (self = [super initWithCoder:decoder]) {
- _coordinates = [decoder mgl_decodeLocationCoordinates2DForKey:@"coordinates"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [super encodeWithCoder:coder];
- [coder mgl_encodeLocationCoordinates2D:_coordinates forKey:@"coordinates"];
-}
-
-- (BOOL)isEqual:(id)other
-{
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLMultiPoint class]]) return NO;
-
- MGLMultiPoint *otherMultipoint = other;
- return ([super isEqual:otherMultipoint]
- && _coordinates == otherMultipoint->_coordinates);
-}
-
-- (NSUInteger)hash
-{
- NSUInteger hash = [super hash];
- for (auto coord : _coordinates) {
- hash += @(coord.latitude+coord.longitude).hash;
- }
- return hash;
-}
-
-- (CLLocationCoordinate2D)coordinate
-{
- MGLAssert([self pointCount] > 0, @"A multipoint must have coordinates");
- return _coordinates.at(0);
-}
-
-- (NSUInteger)pointCount
-{
- return _coordinates.size();
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingPointCount
-{
- return [NSSet setWithObjects:@"coordinates", nil];
-}
-
-- (CLLocationCoordinate2D *)coordinates
-{
- return _coordinates.data();
-}
-
-- (void)getCoordinates:(CLLocationCoordinate2D *)coords range:(NSRange)range
-{
- if (range.location + range.length > [self pointCount])
- {
- [NSException raise:NSRangeException
- format:@"Invalid coordinate range %@ extends beyond current coordinate count of %ld",
- NSStringFromRange(range), (unsigned long)[self pointCount]];
- }
-
- std::copy(_coordinates.begin() + range.location, _coordinates.begin() + NSMaxRange(range), coords);
-}
-
-- (void)setCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count {
- MGLLogDebug(@"Setting: %lu coordinates.", (unsigned long)count);
- if (!count) {
- [NSException raise:NSInvalidArgumentException
- format:@"A multipoint must have at least one vertex."];
- }
-
- [self willChangeValueForKey:@"coordinates"];
- _coordinates = { coords, coords + count };
- _bounds = {};
- [self didChangeValueForKey:@"coordinates"];
-}
-
-- (void)insertCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count atIndex:(NSUInteger)index {
- MGLLogDebug(@"Inserting %lu coordinates at index %lu.", (unsigned long)count, (unsigned long)index);
- if (!count) {
- return;
- }
-
- if (index > _coordinates.size()) {
- [NSException raise:NSRangeException
- format:@"Invalid index %lu for existing coordinate count %ld",
- (unsigned long)index, (unsigned long)[self pointCount]];
- }
-
- [self willChangeValueForKey:@"coordinates"];
- _coordinates.insert(_coordinates.begin() + index, count, *coords);
- _bounds = {};
- [self didChangeValueForKey:@"coordinates"];
-}
-
-- (void)appendCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count
-{
- MGLLogDebug(@"Appending %lu coordinates.", (unsigned long)count);
- [self insertCoordinates:coords count:count atIndex:_coordinates.size()];
-}
-
-- (void)replaceCoordinatesInRange:(NSRange)range withCoordinates:(const CLLocationCoordinate2D *)coords
-{
- MGLLogDebug(@"Replacing coordinates in range: %@", NSStringFromRange(range));
- [self replaceCoordinatesInRange:range withCoordinates:coords count:range.length];
-}
-
-- (void)replaceCoordinatesInRange:(NSRange)range withCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count {
- MGLLogDebug(@"Replacing %lu coordinates in range %@.", (unsigned long)count, NSStringFromRange(range));
- if (!count && !range.length) {
- return;
- }
-
- if (NSMaxRange(range) > _coordinates.size()) {
- [NSException raise:NSRangeException
- format:@"Invalid range %@ for existing coordinate count %ld",
- NSStringFromRange(range), (unsigned long)[self pointCount]];
- }
-
- [self willChangeValueForKey:@"coordinates"];
- std::copy(coords, coords + MIN(count, range.length), _coordinates.begin() + range.location);
- if (count >= range.length) {
- _coordinates.insert(_coordinates.begin() + NSMaxRange(range), coords, coords + count - range.length);
- } else {
- _coordinates.erase(_coordinates.begin() + range.location + count, _coordinates.begin() + NSMaxRange(range));
- }
- _bounds = {};
- [self didChangeValueForKey:@"coordinates"];
-}
-
-- (void)removeCoordinatesInRange:(NSRange)range {
- MGLLogDebug(@"Removing coordinatesInRange: %@", NSStringFromRange(range));
- CLLocationCoordinate2D coords;
- [self replaceCoordinatesInRange:range withCoordinates:&coords count:0];
-}
-
-- (MGLCoordinateBounds)overlayBounds
-{
- if (!_bounds) {
- mbgl::LatLngBounds bounds = mbgl::LatLngBounds::empty();
- for (auto coordinate : _coordinates) {
- if (!MGLLocationCoordinate2DIsValid(coordinate)) {
- bounds = mbgl::LatLngBounds::empty();
- break;
- }
- bounds.extend(MGLLatLngFromLocationCoordinate2D(coordinate));
- }
- _bounds = bounds;
- }
- return MGLCoordinateBoundsFromLatLngBounds(*_bounds);
-}
-
-- (BOOL)intersectsOverlayBounds:(MGLCoordinateBounds)overlayBounds
-{
- return MGLCoordinateBoundsIntersectsCoordinateBounds(self.overlayBounds, overlayBounds);
-}
-
-- (mbgl::Annotation)annotationObjectWithDelegate:(__unused id <MGLMultiPointDelegate>)delegate
-{
- MGLAssert(NO, @"Cannot add an annotation from an instance of %@", NSStringFromClass([self class]));
- return mbgl::SymbolAnnotation(mbgl::Point<double>());
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; count = %lu; bounds = %@>",
- NSStringFromClass([self class]), (void *)self, (unsigned long)[self pointCount],
- MGLStringFromCoordinateBounds(self.overlayBounds)];
-}
-
-@end
diff --git a/platform/darwin/src/MGLMultiPoint_Private.h b/platform/darwin/src/MGLMultiPoint_Private.h
deleted file mode 100644
index a9b4b72ca5..0000000000
--- a/platform/darwin/src/MGLMultiPoint_Private.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#import "MGLMultiPoint.h"
-
-#import "MGLGeometry.h"
-
-#import <mbgl/annotation/annotation.hpp>
-#import <mbgl/util/feature.hpp>
-#import <vector>
-
-#import <CoreGraphics/CoreGraphics.h>
-#import <CoreLocation/CoreLocation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLPolygon;
-@class MGLPolyline;
-
-@protocol MGLMultiPointDelegate;
-
-@interface MGLMultiPoint (Private)
-
-- (instancetype)initWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-- (BOOL)intersectsOverlayBounds:(MGLCoordinateBounds)overlayBounds;
-
-/** Constructs a shape annotation object, asking the delegate for style values. */
-- (mbgl::Annotation)annotationObjectWithDelegate:(id <MGLMultiPointDelegate>)delegate;
-
-@end
-
-/** An object that tells the MGLMultiPoint instance how to style itself. */
-@protocol MGLMultiPointDelegate <NSObject>
-
-/** Returns the fill alpha value for the given annotation. */
-- (double)alphaForShapeAnnotation:(MGLShape *)annotation;
-
-/** Returns the stroke color object for the given annotation. */
-- (mbgl::Color)strokeColorForShapeAnnotation:(MGLShape *)annotation;
-
-/** Returns the fill color object for the given annotation. */
-- (mbgl::Color)fillColorForPolygonAnnotation:(MGLPolygon *)annotation;
-
-/** Returns the stroke width object for the given annotation. */
-- (CGFloat)lineWidthForPolylineAnnotation:(MGLPolyline *)annotation;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLNetworkConfiguration.h b/platform/darwin/src/MGLNetworkConfiguration.h
deleted file mode 100644
index 6c56050aae..0000000000
--- a/platform/darwin/src/MGLNetworkConfiguration.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLNetworkConfiguration` object provides a global way to set a base
- `NSURLSessionConfiguration`, and other resources.
- */
-MGL_EXPORT
-@interface MGLNetworkConfiguration : NSObject
-
-/**
- Returns the shared instance of the `MGLNetworkConfiguration` class.
- */
-@property (class, nonatomic, readonly) MGLNetworkConfiguration *sharedManager;
-
-/**
- The session configuration object that is used by the `NSURLSession` objects
- in this SDK.
-
- If this property is set to nil or if no session configuration is provided this property
- is set to the default session configuration.
-
- Assign this object before instantiating any `MGLMapView` object.
-
- @note: `NSURLSession` objects store a copy of this configuration. Any further changes
- to mutable properties on this configuration object passed to a session’s initializer
- will not affect the behavior of that session.
-
- */
-@property (atomic, strong, null_resettable) NSURLSessionConfiguration *sessionConfiguration;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLNetworkConfiguration.m b/platform/darwin/src/MGLNetworkConfiguration.m
deleted file mode 100644
index 0e5046e7a3..0000000000
--- a/platform/darwin/src/MGLNetworkConfiguration.m
+++ /dev/null
@@ -1,162 +0,0 @@
-#import "MGLNetworkConfiguration_Private.h"
-
-#include <mbgl/storage/reachability.h>
-
-static NSString * const MGLStartTime = @"start_time";
-static NSString * const MGLResourceType = @"resource_type";
-NSString * const kMGLDownloadPerformanceEvent = @"mobile.performance_trace";
-
-@interface MGLNetworkConfiguration ()
-
-@property (strong) NSURLSessionConfiguration *sessionConfig;
-@property (nonatomic, strong) NSMutableDictionary<NSString *, NSDictionary*> *events;
-@property (nonatomic, weak) id<MGLNetworkConfigurationMetricsDelegate> metricsDelegate;
-@property (nonatomic) dispatch_queue_t eventsQueue;
-
-@end
-
-@implementation MGLNetworkConfiguration
-
-- (instancetype)init {
- if (self = [super init]) {
- self.sessionConfiguration = nil;
- _events = [NSMutableDictionary dictionary];
- _eventsQueue = dispatch_queue_create("com.mapbox.network-configuration", DISPATCH_QUEUE_CONCURRENT);
- }
-
- return self;
-}
-
-+ (instancetype)sharedManager {
- static dispatch_once_t onceToken;
- static MGLNetworkConfiguration *_sharedManager;
- dispatch_once(&onceToken, ^{
- _sharedManager = [[self alloc] init];
- });
-
- return _sharedManager;
-}
-
-- (void)setSessionConfiguration:(NSURLSessionConfiguration *)sessionConfiguration {
- @synchronized (self) {
- if (sessionConfiguration == nil) {
- _sessionConfig = [self defaultSessionConfiguration];
- } else {
- _sessionConfig = sessionConfiguration;
- }
- }
-}
-
-- (NSURLSessionConfiguration *)sessionConfiguration {
- NSURLSessionConfiguration *sessionConfig = nil;
- @synchronized (self) {
- sessionConfig = _sessionConfig;
- }
- return sessionConfig;
-}
-
-- (NSURLSessionConfiguration *)defaultSessionConfiguration {
- NSURLSessionConfiguration* sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
-
- sessionConfiguration.timeoutIntervalForResource = 30;
- sessionConfiguration.HTTPMaximumConnectionsPerHost = 8;
- sessionConfiguration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
- sessionConfiguration.URLCache = nil;
-
- return sessionConfiguration;
-}
-
-- (void)startDownloadEvent:(NSString *)urlString type:(NSString *)resourceType {
- if (urlString && ![self eventDictionaryForKey:urlString]) {
- NSDate *startDate = [NSDate date];
- [self setEventDictionary:@{ MGLStartTime: startDate, MGLResourceType: resourceType } forKey:urlString];
- }
-}
-
-- (void)stopDownloadEventForResponse:(NSURLResponse *)response {
- [self sendEventForURLResponse:response withAction:nil];
-}
-
-- (void)cancelDownloadEventForResponse:(NSURLResponse *)response {
- [self sendEventForURLResponse:response withAction:@"cancel"];
-}
-
-- (void)sendEventForURLResponse:(NSURLResponse *)response withAction:(NSString *)action
-{
- if ([response isKindOfClass:[NSURLResponse class]]) {
- NSString *urlString = response.URL.relativePath;
- if (urlString && [self eventDictionaryForKey:urlString]) {
- NSDictionary *eventAttributes = [self eventAttributesForURL:response withAction:action];
- [self removeEventDictionaryForKey:urlString];
-
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.metricsDelegate networkConfiguration:self didGenerateMetricEvent:eventAttributes];
- });
- }
- }
-
-}
-
-- (NSDictionary *)eventAttributesForURL:(NSURLResponse *)response withAction:(NSString *)action
-{
- NSString *urlString = response.URL.relativePath;
- NSDictionary *parameters = [self eventDictionaryForKey:urlString];
- NSDate *startDate = [parameters objectForKey:MGLStartTime];
- NSDate *endDate = [NSDate date];
- NSTimeInterval elapsedTime = [endDate timeIntervalSinceDate:startDate];
- NSDateFormatter* iso8601Formatter = [[NSDateFormatter alloc] init];
- iso8601Formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZ";
- NSString *createdDate = [iso8601Formatter stringFromDate:[NSDate date]];
-
- NSMutableArray *attributes = [NSMutableArray array];
- [attributes addObject:@{ @"name" : @"requestUrl" , @"value" : urlString }];
- [attributes addObject:@{ @"name" : MGLResourceType , @"value" : [parameters objectForKey:MGLResourceType] }];
-
- if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
- NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode];
- [attributes addObject:@{ @"name" : @"responseCode", @"value" : @(responseCode)}];
- }
-
- BOOL isWIFIOn = [[MGLReachability reachabilityWithHostName:response.URL.host] isReachableViaWiFi];
- [attributes addObject:@{ @"name" : @"wifiOn", @"value" : @(isWIFIOn)}];
-
- if (action) {
- [attributes addObject:@{ @"name" : @"action" , @"value" : action }];
- }
-
- double elapsedTimeInMS = elapsedTime * 1000.0;
-
- return @{
- @"event" : kMGLDownloadPerformanceEvent,
- @"created" : createdDate,
- @"sessionId" : [NSUUID UUID].UUIDString,
- @"counters" : @[ @{ @"name" : @"elapsedMS" , @"value" : @(elapsedTimeInMS) } ],
- @"attributes" : attributes
- };
-}
-
-#pragma mark - Events dictionary access
-
-- (nullable NSDictionary*)eventDictionaryForKey:(nonnull NSString*)key {
- __block NSDictionary *dictionary;
-
- dispatch_sync(self.eventsQueue, ^{
- dictionary = [self.events objectForKey:key];
- });
-
- return dictionary;
-}
-
-- (void)setEventDictionary:(nonnull NSDictionary*)dictionary forKey:(nonnull NSString*)key {
- dispatch_barrier_async(self.eventsQueue, ^{
- [self.events setObject:dictionary forKey:key];
- });
-}
-
-- (void)removeEventDictionaryForKey:(nonnull NSString*)key {
- dispatch_barrier_async(self.eventsQueue, ^{
- [self.events removeObjectForKey:key];
- });
-}
-
-@end
diff --git a/platform/darwin/src/MGLNetworkConfiguration_Private.h b/platform/darwin/src/MGLNetworkConfiguration_Private.h
deleted file mode 100644
index 06f5c7d1b5..0000000000
--- a/platform/darwin/src/MGLNetworkConfiguration_Private.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#import "MGLNetworkConfiguration.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLNetworkConfiguration;
-@protocol MGLNetworkConfigurationMetricsDelegate <NSObject>
-
-- (void)networkConfiguration:(MGLNetworkConfiguration *)networkConfiguration didGenerateMetricEvent:(NSDictionary *)metricEvent;
-
-@end
-
-extern NSString * const kMGLDownloadPerformanceEvent;
-
-@interface MGLNetworkConfiguration (Private)
-
-@property (nonatomic, strong) NSMutableDictionary<NSString*, NSDictionary*> *events;
-@property (nonatomic, weak) id<MGLNetworkConfigurationMetricsDelegate> metricsDelegate;
-
-- (void)startDownloadEvent:(NSString *)urlString type:(NSString *)resourceType;
-- (void)stopDownloadEventForResponse:(NSURLResponse *)response;
-- (void)cancelDownloadEventForResponse:(NSURLResponse *)response;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLNetworkIntegrationManager.h b/platform/darwin/src/MGLNetworkIntegrationManager.h
deleted file mode 100644
index 2c929e16f8..0000000000
--- a/platform/darwin/src/MGLNetworkIntegrationManager.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#import <Foundation/Foundation.h>
-#include <mbgl/interface/native_apple_interface.h>
-
-@interface MGLNetworkIntegrationManager : NSObject <MGLNativeNetworkDelegate>
-
-+ (MGLNetworkIntegrationManager *)sharedManager;
-
-@end
diff --git a/platform/darwin/src/MGLNetworkIntegrationManager.m b/platform/darwin/src/MGLNetworkIntegrationManager.m
deleted file mode 100644
index 79c7f15156..0000000000
--- a/platform/darwin/src/MGLNetworkIntegrationManager.m
+++ /dev/null
@@ -1,54 +0,0 @@
-#import "MGLNetworkIntegrationManager.h"
-
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLNetworkConfiguration_Private.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MGLAccountManager_Private.h"
-#endif
-
-@implementation MGLNetworkIntegrationManager
-
-static MGLNetworkIntegrationManager *instance = nil;
-
-+ (MGLNetworkIntegrationManager *)sharedManager {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- instance = [[MGLNetworkIntegrationManager alloc] init];
- });
- return instance;
-}
-
-#pragma mark - MGLNativeAppleInterfaceManager delegate -
-
-- (NSURLSessionConfiguration *)sessionConfiguration {
- return [MGLNetworkConfiguration sharedManager].sessionConfiguration;
-}
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-- (NSString *)skuToken {
- return MGLAccountManager.skuToken;
-}
-#endif
-
-- (void)startDownloadEvent:(NSString *)event type:(NSString *)type {
- [[MGLNetworkConfiguration sharedManager] startDownloadEvent:event type:@"tile"];
-}
-
-- (void)cancelDownloadEventForResponse:(NSURLResponse *)response {
- [[MGLNetworkConfiguration sharedManager] cancelDownloadEventForResponse:response];
-}
-
-- (void)stopDownloadEventForResponse:(NSURLResponse *)response {
- [[MGLNetworkConfiguration sharedManager] stopDownloadEventForResponse:response];
-}
-
-- (void)debugLog:(NSString *)format, ... {
- MGLLogDebug(format);
-}
-
-- (void)errorLog:(NSString *)format, ... {
- MGLLogError(format);
-}
-
-@end
diff --git a/platform/darwin/src/MGLOfflinePack.h b/platform/darwin/src/MGLOfflinePack.h
deleted file mode 100644
index 3dcb5b7abe..0000000000
--- a/platform/darwin/src/MGLOfflinePack.h
+++ /dev/null
@@ -1,203 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-#import "MGLOfflineRegion.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLInvalidOfflinePackException;
-
-/**
- The state an offline pack is currently in.
- */
-typedef NS_ENUM (NSInteger, MGLOfflinePackState) {
- /**
- It is unknown whether the pack is inactive, active, or complete.
-
- This is the initial state of a pack. The state of a pack becomes known by
- the time the shared `MGLOfflineStorage` object sends the first
- `MGLOfflinePackProgressChangedNotification` about the pack. For inactive
- packs, you must explicitly request a progress update using the
- `-[MGLOfflinePack requestProgress]` method.
-
- An invalid pack always has a state of `MGLOfflinePackStateInvalid`, never
- `MGLOfflinePackStateUnknown`.
- */
- MGLOfflinePackStateUnknown = 0,
- /**
- The pack is incomplete and is not currently downloading.
-
- This is the initial state of a pack that is created using the
- `-[MGLOfflineStorage addPackForRegion:withContext:completionHandler:]`
- method, as well as after the `-[MGLOfflinePack suspend]` method is
- called.
- */
- MGLOfflinePackStateInactive = 1,
- /**
- The pack is incomplete and is currently downloading.
-
- This is the state of a pack after the `-[MGLOfflinePack resume]` method is
- called.
- */
- MGLOfflinePackStateActive = 2,
- /**
- The pack has downloaded to completion.
- */
- MGLOfflinePackStateComplete = 3,
- /**
- The pack has been removed using the
- `-[MGLOfflineStorage removePack:withCompletionHandler:]` method. Sending
- any message to the pack will raise an exception.
- */
- MGLOfflinePackStateInvalid = 4,
-};
-
-/**
- A structure containing information about an offline pack’s current download
- progress.
- */
-typedef struct __attribute__((objc_boxable)) MGLOfflinePackProgress {
- /**
- The number of resources, including tiles, that have been completely
- downloaded and are ready to use offline.
- */
- uint64_t countOfResourcesCompleted;
- /**
- The cumulative size of the downloaded resources on disk, including tiles,
- measured in bytes.
- */
- uint64_t countOfBytesCompleted;
- /**
- The number of tiles that have been completely downloaded and are ready
- to use offline.
- */
- uint64_t countOfTilesCompleted;
- /**
- The cumulative size of the downloaded tiles on disk, measured in bytes.
- */
- uint64_t countOfTileBytesCompleted;
- /**
- The minimum number of resources that must be downloaded in order to view
- the pack’s full region without any omissions.
-
- At the beginning of a download, this count is a lower bound; the number of
- expected resources may increase as the download progresses.
- */
- uint64_t countOfResourcesExpected;
- /**
- The maximum number of resources that must be downloaded in order to view
- the pack’s full region without any omissions.
-
- At the beginning of a download, when the exact number of required resources
- is unknown, this field is set to `UINT64_MAX`. Thus this count is always an
- upper bound.
- */
- uint64_t maximumResourcesExpected;
-} MGLOfflinePackProgress;
-
-/**
- An `MGLOfflinePack` represents a collection of resources necessary for viewing
- a region offline to a local database.
-
- To create an instance of `MGLOfflinePack`, use the
- `+[MGLOfflineStorage addPackForRegion:withContext:completionHandler:]` method.
- A pack created using `-[MGLOfflinePack init]` is immediately invalid.
-
- ### Example
- ```swift
- MGLOfflineStorage.shared.addPack(for: region, withContext: context) { (pack, error) in
- guard let pack = pack else {
- // If adding the pack fails, log an error to console.
- print("Error:", error?.localizedDescription ?? "unknown error adding pack at \(#file)(\(#line)) in \(#function)")
- return
- }
-
- // Start an MGLOfflinePack download
- pack.resume()
- }
- ```
- */
-MGL_EXPORT
-@interface MGLOfflinePack : NSObject
-
-/**
- The region for which the pack manages resources.
- */
-@property (nonatomic, readonly) id <MGLOfflineRegion> region;
-
-/**
- Arbitrary data stored alongside the downloaded resources.
-
- The context typically holds application-specific information for identifying
- the pack, such as a user-selected name.
- */
-@property (nonatomic, readonly) NSData *context;
-
-/**
- The pack’s current state.
-
- The state of an inactive or completed pack is computed lazily and is set to
- `MGLOfflinePackStateUnknown` by default. To request the pack’s status, use the
- `-requestProgress` method. To get notified when the state becomes known and
- when it changes, observe KVO change notifications on this pack’s `state` key
- path. Alternatively, you can add an observer for
- `MGLOfflinePackProgressChangedNotification`s about this pack that come from the
- default notification center.
- */
-@property (nonatomic, readonly) MGLOfflinePackState state;
-
-/**
- The pack’s current progress.
-
- The progress of an inactive or completed pack is computed lazily, and all its
- fields are set to 0 by default. To request the pack’s progress, use the
- `-requestProgress` method. To get notified when the progress becomes
- known and when it changes, observe KVO change notifications on this pack’s
- `state` key path. Alternatively, you can add an observer for
- `MGLOfflinePackProgressChangedNotification`s about this pack that come from the
- default notification center.
- */
-@property (nonatomic, readonly) MGLOfflinePackProgress progress;
-
-/**
- Resumes downloading if the pack is inactive.
-
- When a pack resumes after being suspended, it may begin by iterating over the
- already downloaded resources. As a result, the `progress` structure’s
- `countOfResourcesCompleted` field may revert to 0 before rapidly returning to
- the level of progress at the time the pack was suspended.
-
- To temporarily suspend downloading, call the `-suspend` method.
- */
-- (void)resume;
-
-/**
- Temporarily stops downloading if the pack is active.
-
- A pack suspends asynchronously, so some network requests may be sent after this
- method is called. Regardless, the `progress` property will not be updated until
- `-resume` is called.
-
- If the pack previously reached a higher level of progress before being
- suspended, it may wait to suspend until it returns to that level.
-
- To resume downloading, call the `-resume` method.
- */
-- (void)suspend;
-
-/**
- Request an asynchronous update to the pack’s `state` and `progress` properties.
-
- The state and progress of an inactive or completed pack are computed lazily. If
- you need the state or progress of a pack whose `state` property is currently
- set to `MGLOfflinePackStateUnknown`, observe KVO change notifications on this
- pack’s `state` key path, then call this method. Alternatively, you can add an
- observer for `MGLOfflinePackProgressChangedNotification` about this pack that
- come from the default notification center.
- */
-- (void)requestProgress;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLOfflinePack.mm b/platform/darwin/src/MGLOfflinePack.mm
deleted file mode 100644
index edee549744..0000000000
--- a/platform/darwin/src/MGLOfflinePack.mm
+++ /dev/null
@@ -1,282 +0,0 @@
-#import "MGLOfflinePack_Private.h"
-
-#import "MGLOfflineStorage_Private.h"
-#import "MGLOfflineRegion_Private.h"
-#import "MGLTilePyramidOfflineRegion.h"
-#import "MGLTilePyramidOfflineRegion_Private.h"
-#import "MGLShapeOfflineRegion.h"
-#import "MGLShapeOfflineRegion_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import "NSValue+MGLAdditions.h"
-
-#include <mbgl/map/map_options.hpp>
-#include <mbgl/storage/database_file_source.hpp>
-
-const MGLExceptionName MGLInvalidOfflinePackException = @"MGLInvalidOfflinePackException";
-
-/**
- Assert that the current offline pack is valid.
-
- This macro should be used at the beginning of any public-facing instance method
- of `MGLOfflinePack`. For private methods, an assertion is more appropriate.
- */
-#define MGLAssertOfflinePackIsValid() \
- do { \
- if (_state == MGLOfflinePackStateInvalid) { \
- [NSException raise:MGLInvalidOfflinePackException \
- format: \
- @"-[MGLOfflineStorage removePack:withCompletionHandler:] has been called " \
- @"on this instance of MGLOfflinePack, rendering it invalid. It is an " \
- @"error to send any message to this pack."]; \
- } \
- } while (NO);
-
-@interface MGLTilePyramidOfflineRegion () <MGLOfflineRegion_Private, MGLTilePyramidOfflineRegion_Private>
-@end
-
-@interface MGLShapeOfflineRegion () <MGLOfflineRegion_Private, MGLShapeOfflineRegion_Private>
-@end
-
-class MBGLOfflineRegionObserver : public mbgl::OfflineRegionObserver {
-public:
- MBGLOfflineRegionObserver(MGLOfflinePack *pack_) : pack(pack_) {}
-
- void statusChanged(mbgl::OfflineRegionStatus status) override;
- void responseError(mbgl::Response::Error error) override;
- void mapboxTileCountLimitExceeded(uint64_t limit) override;
-
-private:
- __weak MGLOfflinePack *pack = nullptr;
-};
-
-@interface MGLOfflinePack ()
-
-@property (nonatomic, nullable, readwrite) mbgl::OfflineRegion *mbglOfflineRegion;
-@property (nonatomic, readwrite) MGLOfflinePackProgress progress;
-
-@end
-
-@implementation MGLOfflinePack {
- BOOL _isSuspending;
- std::shared_ptr<mbgl::DatabaseFileSource> _mbglDatabaseFileSource;
-}
-
-- (instancetype)init {
- MGLLogInfo(@"Calling this initializer is not allowed.");
- if (self = [super init]) {
- _state = MGLOfflinePackStateInvalid;
- NSLog(@"%s called; did you mean to call +[MGLOfflineStorage addPackForRegion:withContext:completionHandler:] instead?", __PRETTY_FUNCTION__);
- }
- return self;
-}
-
-- (instancetype)initWithMBGLRegion:(mbgl::OfflineRegion *)region {
- if (self = [super init]) {
- _mbglOfflineRegion = region;
- _state = MGLOfflinePackStateUnknown;
-
- _mbglDatabaseFileSource = [[MGLOfflineStorage sharedOfflineStorage] mbglDatabaseFileSource];
- _mbglDatabaseFileSource->setOfflineRegionObserver(*_mbglOfflineRegion, std::make_unique<MBGLOfflineRegionObserver>(self));
- }
- return self;
-}
-
-- (void)dealloc {
- MGLAssert(_state == MGLOfflinePackStateInvalid, @"MGLOfflinePack was not invalided prior to deallocation.");
-}
-
-- (id <MGLOfflineRegion>)region {
- MGLAssertOfflinePackIsValid();
-
- const mbgl::OfflineRegionDefinition &regionDefinition = _mbglOfflineRegion->getDefinition();
- MGLAssert([MGLTilePyramidOfflineRegion conformsToProtocol:@protocol(MGLOfflineRegion_Private)], @"MGLTilePyramidOfflineRegion should conform to MGLOfflineRegion_Private.");
- MGLAssert([MGLShapeOfflineRegion conformsToProtocol:@protocol(MGLOfflineRegion_Private)], @"MGLShapeOfflineRegion should conform to MGLOfflineRegion_Private.");
-
-
-
- return regionDefinition.match(
- [&] (const mbgl::OfflineTilePyramidRegionDefinition def){
- return (id <MGLOfflineRegion>)[[MGLTilePyramidOfflineRegion alloc] initWithOfflineRegionDefinition:def];
- },
- [&] (const mbgl::OfflineGeometryRegionDefinition& def){
- return (id <MGLOfflineRegion>)[[MGLShapeOfflineRegion alloc] initWithOfflineRegionDefinition:def];
- });
-}
-
-- (NSData *)context {
- MGLAssertOfflinePackIsValid();
-
- const mbgl::OfflineRegionMetadata &metadata = _mbglOfflineRegion->getMetadata();
- return [NSData dataWithBytes:&metadata[0] length:metadata.size()];
-}
-
-- (void)resume {
- MGLLogInfo(@"Resuming pack download.");
- MGLAssertOfflinePackIsValid();
-
- self.state = MGLOfflinePackStateActive;
-
- _mbglDatabaseFileSource->setOfflineRegionDownloadState(*_mbglOfflineRegion, mbgl::OfflineRegionDownloadState::Active);
-}
-
-- (void)suspend {
- MGLLogInfo(@"Suspending pack download.");
- MGLAssertOfflinePackIsValid();
-
- if (self.state == MGLOfflinePackStateActive) {
- self.state = MGLOfflinePackStateInactive;
- _isSuspending = YES;
- }
-
- _mbglDatabaseFileSource->setOfflineRegionDownloadState(*_mbglOfflineRegion, mbgl::OfflineRegionDownloadState::Inactive);
-}
-
-- (void)invalidate {
- MGLLogInfo(@"Invalidating pack.");
- MGLAssert(_state != MGLOfflinePackStateInvalid, @"Cannot invalidate an already invalid offline pack.");
- MGLAssert(self.mbglOfflineRegion, @"Should have a valid region");
-
- @synchronized (self) {
- self.state = MGLOfflinePackStateInvalid;
- if (self.mbglOfflineRegion) {
- _mbglDatabaseFileSource->setOfflineRegionObserver(*self.mbglOfflineRegion, nullptr);
- }
- self.mbglOfflineRegion = nil;
- }
-}
-
-- (void)setState:(MGLOfflinePackState)state {
- MGLLogDebug(@"Setting state: %ld", (long)state);
- if (!self.mbglOfflineRegion) {
- // A progress update has arrived after the call to
- // -[MGLOfflineStorage removePack:withCompletionHandler:] but before the
- // removal is complete and the completion handler is called.
- MGLAssert(_state == MGLOfflinePackStateInvalid, @"A valid MGLOfflinePack has no mbgl::OfflineRegion.");
- return;
- }
-
- MGLAssert(_state != MGLOfflinePackStateInvalid, @"Cannot change the state of an invalid offline pack.");
-
- if (!_isSuspending || state != MGLOfflinePackStateActive) {
- _isSuspending = NO;
- _state = state;
- }
-}
-
-- (void)requestProgress {
- MGLLogInfo(@"Requesting pack progress.");
- MGLAssertOfflinePackIsValid();
-
- __weak MGLOfflinePack *weakSelf = self;
- _mbglDatabaseFileSource->getOfflineRegionStatus(*_mbglOfflineRegion, [&, weakSelf](mbgl::expected<mbgl::OfflineRegionStatus, std::exception_ptr> status) {
- if (status) {
- mbgl::OfflineRegionStatus checkedStatus = *status;
- dispatch_async(dispatch_get_main_queue(), ^{
- MGLOfflinePack *strongSelf = weakSelf;
- [strongSelf offlineRegionStatusDidChange:checkedStatus];
- });
- }
- });
-}
-
-- (void)offlineRegionStatusDidChange:(mbgl::OfflineRegionStatus)status {
- MGLAssert(_state != MGLOfflinePackStateInvalid, @"Cannot change update progress of an invalid offline pack.");
-
- switch (status.downloadState) {
- case mbgl::OfflineRegionDownloadState::Inactive:
- self.state = status.complete() ? MGLOfflinePackStateComplete : MGLOfflinePackStateInactive;
- break;
-
- case mbgl::OfflineRegionDownloadState::Active:
- self.state = MGLOfflinePackStateActive;
- break;
- }
-
- if (_isSuspending) {
- return;
- }
-
- MGLOfflinePackProgress progress;
- progress.countOfResourcesCompleted = status.completedResourceCount;
- progress.countOfBytesCompleted = status.completedResourceSize;
- progress.countOfTilesCompleted = status.completedTileCount;
- progress.countOfTileBytesCompleted = status.completedTileSize;
- progress.countOfResourcesExpected = status.requiredResourceCount;
- progress.maximumResourcesExpected = status.requiredResourceCountIsPrecise ? status.requiredResourceCount : UINT64_MAX;
- self.progress = progress;
-
- NSDictionary *userInfo = @{MGLOfflinePackUserInfoKeyState: @(self.state),
- MGLOfflinePackUserInfoKeyProgress: [NSValue valueWithMGLOfflinePackProgress:progress]};
-
- NSNotificationCenter *noteCenter = [NSNotificationCenter defaultCenter];
- [noteCenter postNotificationName:MGLOfflinePackProgressChangedNotification
- object:self
- userInfo:userInfo];
-}
-
-- (void)didReceiveError:(NSError *)error {
- MGLLogError(@"Error: %@", error.localizedDescription);
- MGLLogInfo(@"Notifying about pack error.");
-
- NSDictionary *userInfo = @{ MGLOfflinePackUserInfoKeyError: error };
- NSNotificationCenter *noteCenter = [NSNotificationCenter defaultCenter];
- [noteCenter postNotificationName:MGLOfflinePackErrorNotification
- object:self
- userInfo:userInfo];
-}
-
-- (void)didReceiveMaximumAllowedMapboxTiles:(uint64_t)limit {
- MGLLogInfo(@"Notifying reached maximum allowed Mapbox tiles: %lu", (unsigned long)limit);
- NSDictionary *userInfo = @{ MGLOfflinePackUserInfoKeyMaximumCount: @(limit) };
- NSNotificationCenter *noteCenter = [NSNotificationCenter defaultCenter];
- [noteCenter postNotificationName:MGLOfflinePackMaximumMapboxTilesReachedNotification
- object:self
- userInfo:userInfo];
-}
-
-NSError *MGLErrorFromResponseError(mbgl::Response::Error error) {
- NSInteger errorCode = MGLErrorCodeUnknown;
- switch (error.reason) {
- case mbgl::Response::Error::Reason::NotFound:
- errorCode = MGLErrorCodeNotFound;
- break;
-
- case mbgl::Response::Error::Reason::Server:
- errorCode = MGLErrorCodeBadServerResponse;
- break;
-
- case mbgl::Response::Error::Reason::Connection:
- errorCode = MGLErrorCodeConnectionFailed;
- break;
-
- default:
- break;
- }
- return [NSError errorWithDomain:MGLErrorDomain code:errorCode userInfo:@{
- NSLocalizedFailureReasonErrorKey: @(error.message.c_str())
- }];
-}
-
-@end
-
-void MBGLOfflineRegionObserver::statusChanged(mbgl::OfflineRegionStatus status) {
- __weak MGLOfflinePack *weakPack = pack;
- dispatch_async(dispatch_get_main_queue(), ^{
- [weakPack offlineRegionStatusDidChange:status];
- });
-}
-
-void MBGLOfflineRegionObserver::responseError(mbgl::Response::Error error) {
- __weak MGLOfflinePack *weakPack = pack;
- dispatch_async(dispatch_get_main_queue(), ^{
- [weakPack didReceiveError:MGLErrorFromResponseError(error)];
- });
-}
-
-void MBGLOfflineRegionObserver::mapboxTileCountLimitExceeded(uint64_t limit) {
- __weak MGLOfflinePack *weakPack = pack;
- dispatch_async(dispatch_get_main_queue(), ^{
- [weakPack didReceiveMaximumAllowedMapboxTiles:limit];
- });
-}
diff --git a/platform/darwin/src/MGLOfflinePack_Private.h b/platform/darwin/src/MGLOfflinePack_Private.h
deleted file mode 100644
index ea3fb2da99..0000000000
--- a/platform/darwin/src/MGLOfflinePack_Private.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#import "MGLOfflinePack.h"
-
-#include <mbgl/storage/offline.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLOfflinePack (Private)
-
-@property (nonatomic, nullable) mbgl::OfflineRegion *mbglOfflineRegion;
-
-@property (nonatomic, readwrite) MGLOfflinePackState state;
-
-- (instancetype)initWithMBGLRegion:(mbgl::OfflineRegion *)region;
-
-/**
- Invalidates the pack and ensures that no future progress update can ever
- revalidate it. This method must be called before the pack is deallocated.
- */
-- (void)invalidate;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLOfflineRegion.h b/platform/darwin/src/MGLOfflineRegion.h
deleted file mode 100644
index f873424c93..0000000000
--- a/platform/darwin/src/MGLOfflineRegion.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An object conforming to the `MGLOfflineRegion` protocol determines which
- resources are required by an `MGLOfflinePack` object.
- */
-@protocol MGLOfflineRegion <NSObject>
-
-/**
- URL of the style whose resources are required for offline viewing.
-
- In addition to the JSON stylesheet, different styles may require different font
- glyphs, sprite sheets, and other resources.
-
- The URL may be a full HTTP or HTTPS URL or a Mapbox
- style URL (`mapbox://styles/{user}/{style}`).
- */
-@property (nonatomic, readonly) NSURL *styleURL;
-
-/**
- Specifies whether to include ideographic glyphs in downloaded font data.
- Ideographic glyphs make up the majority of downloaded font data, but
- it is possible to configure the renderer to use locally installed fonts
- instead of relying on fonts downloaded as part of the offline pack.
- See `MGLIdeographicFontFamilyName` setting. Also, for regions outside of
- China, Japan, and Korea, these glyphs will rarely appear for non-CJK users.
-
- By default, this property is set to `NO`, so that the offline pack will
- include ideographic glyphs.
- */
-@property (nonatomic) BOOL includesIdeographicGlyphs;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLOfflineRegion_Private.h b/platform/darwin/src/MGLOfflineRegion_Private.h
deleted file mode 100644
index 75a023bcbb..0000000000
--- a/platform/darwin/src/MGLOfflineRegion_Private.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLOfflineRegion.h"
-
-#include <mbgl/storage/offline.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLOfflineRegion_Private <MGLOfflineRegion>
-
-/**
- Creates and returns a C++ offline region definition corresponding to the
- receiver.
- */
-- (const mbgl::OfflineRegionDefinition)offlineRegionDefinition;
-
-/**
- Attributes to be passed into the offline download start event
- */
-@property (nonatomic, readonly) NSDictionary *offlineStartEventAttributes;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLOfflineStorage.h b/platform/darwin/src/MGLOfflineStorage.h
deleted file mode 100644
index d093bb938a..0000000000
--- a/platform/darwin/src/MGLOfflineStorage.h
+++ /dev/null
@@ -1,474 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLOfflinePack;
-@protocol MGLOfflineRegion;
-@protocol MGLOfflineStorageDelegate;
-
-/**
- Posted by the shared `MGLOfflineStorage` object when an `MGLOfflinePack`
- object’s progress changes. The progress may change due to a resource being
- downloaded or because the pack discovers during the download that more
- resources are required for offline viewing. This notification is posted
- whenever any field in the `progress` property changes.
-
- The `object` is the `MGLOfflinePack` object whose progress changed. The
- `userInfo` dictionary contains the pack’s current state in the
- `MGLOfflinePackUserInfoKeyState` key and details about the pack’s current
- progress in the `MGLOfflinePackUserInfoKeyProgress` key. You may also consult
- the `MGLOfflinePack.state` and `MGLOfflinePack.progress` properties, which
- provide the same values.
-
- If you only need to observe changes in a particular pack’s progress, you can
- alternatively observe KVO change notifications to the pack’s `progress` key
- path.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/offline-pack/">
- Download an offline map</a> example to learn how to calculate the progress
- of an offline download.
- */
-FOUNDATION_EXTERN MGL_EXPORT const NSNotificationName MGLOfflinePackProgressChangedNotification;
-
-/**
- Posted by the shared `MGLOfflineStorage` object whenever an `MGLOfflinePack`
- object encounters an error while downloading. The error may be recoverable and
- may not warrant the user’s attention. For example, the pack’s implementation
- may attempt to re-request failed resources based on an exponential backoff
- strategy or upon the restoration of network access.
-
- The `object` is the `MGLOfflinePack` object that encountered the error. The
- `userInfo` dictionary contains the error object in the
- `MGLOfflinePackUserInfoKeyError` key.
- */
-FOUNDATION_EXTERN MGL_EXPORT const NSNotificationName MGLOfflinePackErrorNotification;
-
-/**
- Posted by the shared `MGLOfflineStorage` object when the maximum number of
- Mapbox-hosted tiles has been downloaded and stored on the current device.
-
- The `object` is the `MGLOfflinePack` object that reached the tile limit in the
- course of downloading. The `userInfo` dictionary contains the tile limit in the
- `MGLOfflinePackUserInfoKeyMaximumCount` key.
-
- Once this limit is reached, no instance of `MGLOfflinePack` can download
- additional tiles from Mapbox APIs until already downloaded tiles are removed by
- calling the `-[MGLOfflineStorage removePack:withCompletionHandler:]` method.
- */
-FOUNDATION_EXTERN MGL_EXPORT const NSNotificationName MGLOfflinePackMaximumMapboxTilesReachedNotification;
-
-/**
- A key in the `userInfo` property of a notification posted by `MGLOfflinePack`.
- */
-typedef NSString *MGLOfflinePackUserInfoKey NS_EXTENSIBLE_STRING_ENUM;
-
-/**
- The key for an `NSNumber` object that indicates an offline pack’s current
- state. This key is used in the `userInfo` dictionary of an
- `MGLOfflinePackProgressChangedNotification` notification. Call `-integerValue`
- on the object to receive the `MGLOfflinePackState`-typed state.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyState;
-
-/**
- The key for an `NSValue` object that indicates an offline pack’s current
- progress. This key is used in the `userInfo` dictionary of an
- `MGLOfflinePackProgressChangedNotification` notification. Call
- `-MGLOfflinePackProgressValue` on the object to receive the
- `MGLOfflinePackProgress`-typed progress.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyProgress;
-
-/**
- The key for an `NSError` object that is encountered in the course of
- downloading an offline pack. This key is used in the `userInfo` dictionary of
- an `MGLOfflinePackErrorNotification` notification. The error’s domain is
- `MGLErrorDomain`. See `MGLErrorCode` for possible error codes.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyError;
-
-/**
- The key for an `NSNumber` object that indicates the maximum number of
- Mapbox-hosted tiles that may be downloaded and stored on the current device.
- This key is used in the `userInfo` dictionary of an
- `MGLOfflinePackMaximumMapboxTilesReachedNotification` notification. Call
- `-unsignedLongLongValue` on the object to receive the `uint64_t`-typed tile
- limit.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyMaximumCount;
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLUnsupportedRegionTypeException;
-
-/**
- A block to be called once an offline pack has been completely created and
- added.
-
- An application typically calls the `-resume` method on the pack inside this
- completion handler to begin the download.
-
- @param pack Contains a pointer to the newly added pack, or `nil` if there was
- an error creating or adding the pack.
- @param error Contains a pointer to an error object (if any) indicating why the
- pack could not be created or added.
- */
-typedef void (^MGLOfflinePackAdditionCompletionHandler)(MGLOfflinePack * _Nullable pack, NSError * _Nullable error);
-
-/**
- A block to be called once an offline pack has been completely invalidated and
- removed.
-
- Avoid any references to the pack inside this completion handler: by the time
- this completion handler is executed, the pack has become invalid, and any
- messages passed to it will raise an exception.
-
- @param error Contains a pointer to an error object (if any) indicating why the
- pack could not be invalidated or removed.
- */
-typedef void (^MGLOfflinePackRemovalCompletionHandler)(NSError * _Nullable error);
-
-/**
- A block to be called once the contents of a file are copied into the current packs.
-
- @param fileURL The file URL of the offline database containing the offline packs
- that were copied.
- @param packs An array of all known offline packs, or `nil` if there was an error
- creating or adding the pack.
- @param error A pointer to an error object (if any) indicating why the pack could
- not be created or added.
- */
-typedef void (^MGLBatchedOfflinePackAdditionCompletionHandler)(NSURL *fileURL, NSArray<MGLOfflinePack *> * _Nullable packs, NSError * _Nullable error);
-
-/**
- The type of resource that is requested.
- */
-typedef NS_ENUM(NSUInteger, MGLResourceKind) {
- /** Unknown type */
- MGLResourceKindUnknown,
- /** Style sheet JSON file */
- MGLResourceKindStyle,
- /** TileJSON file as specified in https://www.mapbox.com/mapbox-gl-js/style-spec/#root-sources */
- MGLResourceKindSource,
- /** A vector or raster tile as described in the style sheet at
- https://www.mapbox.com/mapbox-gl-js/style-spec/#sources */
- MGLResourceKindTile,
- /** Signed distance field glyphs for text rendering. These are the URLs specified in the style
- in https://www.mapbox.com/mapbox-gl-js/style-spec/#root-glyphs */
- MGLResourceKindGlyphs,
- /** Image part of a sprite sheet. It is constructed of the prefix in
- https://www.mapbox.com/mapbox-gl-js/style-spec/#root-sprite and a PNG file extension. */
- MGLResourceKindSpriteImage,
- /** JSON part of a sprite sheet. It is constructed of the prefix in
- https://www.mapbox.com/mapbox-gl-js/style-spec/#root-sprite and a JSON file extension. */
- MGLResourceKindSpriteJSON,
- /** Image data for a georeferenced image source. **/
- MGLResourceKindImage,
-};
-
-/**
- MGLOfflineStorage implements a singleton (shared object) that manages offline
- packs and ambient caching. All of this class’s instance methods are asynchronous,
- reflecting the fact that offline resources are stored in a database. The shared
- object maintains a canonical collection of offline packs in its `packs` property.
-
- Mapbox resources downloaded via this API are subject to separate Vector Tile and
- Raster Tile API pricing and are not included in the Maps SDK’s “unlimited” requests.
- See <a href="https://www.mapbox.com/pricing/">our pricing page</a> for more
- information.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/offline-pack/">
- Download an offline map</a> example to learn how to create and register an
- offline pack for a defined region.
- */
-MGL_EXPORT
-@interface MGLOfflineStorage : NSObject
-
-/**
- Returns the shared offline storage object.
- */
-@property (class, nonatomic, readonly) MGLOfflineStorage *sharedOfflineStorage;
-
-#pragma mark - Adding Contents of File
-
-/**
- Adds the offline packs located at the given file path to offline storage.
-
- The file must be a valid offline region database bundled with the application
- or downloaded separately.
-
- The resulting packs are added or updated to the shared offline storage object’s `packs`
- property, then the `completion` block is executed.
-
- @param filePath A string representation of the file path. The file path must be
- writable as schema updates may be perfomed.
- @param completion The completion handler to call once the contents of the given
- file has been added to offline storage. This handler is executed asynchronously
- on the main queue.
- */
-- (void)addContentsOfFile:(NSString *)filePath withCompletionHandler:(nullable MGLBatchedOfflinePackAdditionCompletionHandler)completion;
-
-/**
- Adds the offline packs located at the given URL to offline storage.
-
- The file must be a valid offline region database bundled with the application
- or downloaded separately.
-
- The resulting packs are added or updated to the shared offline storage object’s `packs`
- property, then the `completion` block is executed.
-
- @param fileURL A file URL specifying the file to add. URL should be a valid system path.
- The file URL must be writable as schema updates may be performed.
- @param completion The completion handler to call once the contents of the given
- file has been added to offline storage. This handler is executed asynchronously
- on the main queue.
- */
-- (void)addContentsOfURL:(NSURL *)fileURL withCompletionHandler:(nullable MGLBatchedOfflinePackAdditionCompletionHandler)completion;
-
-#pragma mark - Accessing the Delegate
-
-/**
- The receiver’s delegate.
-
- An offline storage object sends messages to its delegate to allow it to
- transform URLs before they are requested from the internet. This can be used
- add or remove custom parameters, or reroute certain requests to other servers
- or endpoints.
- */
-@property(nonatomic, weak, nullable) IBOutlet id<MGLOfflineStorageDelegate> delegate;
-
-#pragma mark - Managing Offline Packs
-
-/**
- An array of all known offline packs, in the order in which they were created.
-
- This property is set to `nil`, indicating that the receiver does not yet know
- the existing packs, for an undefined amount of time starting from the moment
- the shared offline storage object is initialized until the packs are fetched
- from the database. After that point, this property is always non-nil, but it
- may be empty to indicate that no packs are present.
-
- To detect when the shared offline storage object has finished loading its
- `packs` property, observe KVO change notifications on the `packs` key path.
- The initial load results in an `NSKeyValueChangeSetting` change.
- */
-@property (nonatomic, strong, readonly, nullable) NSArray<MGLOfflinePack *> *packs;
-
-/**
- Creates and registers an offline pack that downloads the resources needed to
- use the given region offline.
-
- The resulting pack is added to the shared offline storage object’s `packs`
- property, then the `completion` block is executed with that pack passed in.
-
- The pack has an initial state of `MGLOfflinePackStateInactive`. To begin
- downloading resources, call `-[MGLOfflinePack resume]` on the pack from within
- the completion handler. To monitor download progress, add an observer for
- `MGLOfflinePackProgressChangedNotification`s about that pack.
-
- To detect when any call to this method results in a new pack, observe KVO
- change notifications on the shared offline storage object’s `packs` key path.
- Additions to that array result in an `NSKeyValueChangeInsertion` change.
-
- @param region A region to download.
- @param context Arbitrary data to store alongside the downloaded resources.
- @param completion The completion handler to call once the pack has been added.
- This handler is executed asynchronously on the main queue.
- */
-- (void)addPackForRegion:(id <MGLOfflineRegion>)region withContext:(NSData *)context completionHandler:(nullable MGLOfflinePackAdditionCompletionHandler)completion;
-
-/**
- Unregisters the given offline pack and allows resources that are no longer
- required by any remaining packs to be potentially freed.
-
- As soon as this method is called on a pack, the pack becomes invalid; any
- attempt to send it a message will result in an exception being thrown. If an
- error occurs and the pack cannot be removed, do not attempt to reuse the pack
- object. Instead, if you need continued access to the pack, suspend all packs
- and use the `-reloadPacks` method to obtain valid pointers to all the packs.
-
- To detect when any call to this method results in a pack being removed, observe
- KVO change notifications on the shared offline storage object’s `packs` key
- path. Removals from that array result in an `NSKeyValueChangeRemoval` change.
-
- When you remove an offline pack, any resources that are required by that pack,
- but not other packs, become eligible for deletion from offline storage. Because
- the backing store used for offline storage is also used as a general purpose
- cache for map resources, such resources may not be immediately removed if the
- implementation determines that they remain useful for general performance of
- the map.
-
- @param pack The offline pack to remove.
- @param completion The completion handler to call once the pack has been
- removed. This handler is executed asynchronously on the main queue.
- */
-- (void)removePack:(MGLOfflinePack *)pack withCompletionHandler:(nullable MGLOfflinePackRemovalCompletionHandler)completion;
-
-/**
- Invalidates the specified offline pack. This method checks that the tiles
- in the specified offline pack match those from the server. Local tiles that
- do not match the latest version on the server are updated.
-
- This is more efficient than deleting the offline pack and downloading it
- again. If the data stored locally matches that on the server, new data will
- not be downloaded.
-
- @param pack The offline pack to be invalidated.
- @param completion The completion handler to call once the pack has been
- removed. This handler is executed asynchronously on the main queue.
- */
-
-- (void)invalidatePack:(MGLOfflinePack *)pack withCompletionHandler:(void (^)(NSError * _Nullable))completion;
-/**
- Forcibly, asynchronously reloads the `packs` property. At some point after this
- method is called, the pointer values of the `MGLOfflinePack` objects in the
- `packs` property change, even if the underlying data for these packs has not
- changed. If this method is called while a pack is actively downloading, the
- behavior is undefined.
-
- You typically do not need to call this method.
-
- To detect when the shared offline storage object has finished reloading its
- `packs` property, observe KVO change notifications on the `packs` key path.
- A reload results in an `NSKeyValueChangeSetting` change.
- */
-- (void)reloadPacks;
-
-/**
- Sets the maximum number of Mapbox-hosted tiles that may be downloaded and
- stored on the current device.
-
- Once this limit is reached, an
- `MGLOfflinePackMaximumMapboxTilesReachedNotification` is posted for every
- attempt to download additional tiles until already downloaded tiles are removed
- by calling the `-removePack:withCompletionHandler:` method.
-
- @param maximumCount The maximum number of tiles allowed to be downloaded.
- */
-- (void)setMaximumAllowedMapboxTiles:(uint64_t)maximumCount;
-
-/**
- The cumulative size, measured in bytes, of all downloaded resources on disk.
-
- The returned value includes all resources, including tiles, whether downloaded
- as part of an offline pack or due to caching during normal use of `MGLMapView`.
- */
-@property (nonatomic, readonly) unsigned long long countOfBytesCompleted;
-
-
-#pragma mark - Managing Ambient Cache
-
-/**
- Sets the maximum ambient cache size in bytes. The default maximum cache
- size is 50 MB. To disable ambient caching, set the maximum ambient cache size
- to `0`. Setting the maximum ambient cache size does not impact the maximum size
- of offline packs.
-
- While this method does not limit the space available to offline packs,
- data in offline packs count towards this limit. If the maximum ambient
- cache size is set to 30 MB and 20 MB of offline packs are downloaded,
- there may be only 10 MB reserved for the ambient cache.
-
- This method should be called before the map and map style have been loaded.
-
- This method is potentially expensive, as the database will trim cached data
- in order to prevent the ambient cache from being larger than the
- specified amount.
-
- @param cacheSize The maximum size in bytes for the ambient cache.
- @param completion The completion handler to call once the maximum ambient cache size
- has been set. This handler is executed synchronously on the main queue.
- */
-
-- (void)setMaximumAmbientCacheSize:(NSUInteger)cacheSize withCompletionHandler:(void (^)(NSError *_Nullable error))completion;
-
-/**
- Invalidates the ambient cache. This method checks that the tiles in the
- ambient cache match those from the server. If the local tiles do not match
- those on the server, they are re-downloaded.
-
- This is recommended over clearing the cache or resetting the database
- because valid local tiles will not be downloaded again.
-
- Resources shared with offline packs will not be affected by this method.
-
- @param completion The completion handler to call once the ambient cache has
- been revalidated. This handler is executed asynchronously on the main queue.
- */
-
-- (void)invalidateAmbientCacheWithCompletionHandler:(void (^)(NSError *_Nullable error))completion;
-
-/**
- Clears the ambient cache by deleting resources. This method does not
- affect resources shared with offline regions.
-
- @param completion The completion handler to call once resources from
- the ambient cache have been cleared. This handler is executed
- asynchronously on the main queue.
- */
-
-- (void)clearAmbientCacheWithCompletionHandler:(void (^)(NSError *_Nullable error))completion;
-
-/**
- Deletes the existing database, which includes both the ambient cache and offline packs,
- then reinitializes it.
-
- You typically do not need to call this method.
-
- @param completion The completion handler to call once the pack has database has
- been reset. This handler is executed asynchronously on the main queue.
- */
-
-- (void)resetDatabaseWithCompletionHandler:(void (^)(NSError *_Nullable error))completion;
-
-/**
- Inserts the provided resource into the ambient cache.
-
- This method mimics the caching that would take place if the equivalent resource
- were requested in the process of map rendering. Use this method to pre-warm the
- cache with resources you know will be requested.
-
- This method is asynchronous; the data may not be immediately available for
- in-progress requests, though subsequent requests should have access to the
- cached data.
-
- @param data Response data to store for this resource. The data is expected to
- be uncompressed; internally, the cache will compress data as necessary.
- @param url The URL at which the data can normally be found.
- @param modified The date the resource was last modified.
- @param expires The date after which the resource is no longer valid.
- @param eTag An HTTP entity tag.
- @param mustRevalidate A Boolean value indicating whether the data is still
- usable past the expiration date.
- */
-- (void)preloadData:(NSData *)data forURL:(NSURL *)url modificationDate:(nullable NSDate *)modified expirationDate:(nullable NSDate *)expires eTag:(nullable NSString *)eTag mustRevalidate:(BOOL)mustRevalidate NS_SWIFT_NAME(preload(_:for:modifiedOn:expiresOn:eTag:mustRevalidate:));
-
-- (void)putResourceWithUrl:(NSURL *)url data:(NSData *)data modified:(nullable NSDate *)modified expires:(nullable NSDate *)expires etag:(nullable NSString *)etag mustRevalidate:(BOOL)mustRevalidate __attribute__((deprecated("", "-preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:")));
-
-@end
-
-/**
- The `MGLOfflineStorageDelegate` protocol defines methods that a delegate of an
- `MGLOfflineStorage` object can optionally implement to transform various types
- of URLs before downloading them via the internet.
- */
-@protocol MGLOfflineStorageDelegate <NSObject>
-
-/**
- Sent whenever a URL needs to be transformed.
-
- @param storage The storage object processing the download.
- @param kind The kind of URL to be transformed.
- @param url The original URL to be transformed.
- @return A URL that will now be downloaded.
- */
-- (NSURL *)offlineStorage:(MGLOfflineStorage *)storage
- URLForResourceOfKind:(MGLResourceKind)kind
- withURL:(NSURL *)url;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLOfflineStorage.mm b/platform/darwin/src/MGLOfflineStorage.mm
deleted file mode 100644
index 4c71286b79..0000000000
--- a/platform/darwin/src/MGLOfflineStorage.mm
+++ /dev/null
@@ -1,652 +0,0 @@
-#import "MGLOfflineStorage_Private.h"
-
-#import "MGLFoundation_Private.h"
-#import "MGLAccountManager_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLOfflinePack_Private.h"
-#import "MGLOfflineRegion_Private.h"
-#import "MGLTilePyramidOfflineRegion.h"
-#import "MGLShapeOfflineRegion.h"
-#import "NSBundle+MGLAdditions.h"
-#import "NSValue+MGLAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MMEConstants.h"
-#import "MGLMapboxEvents.h"
-#endif
-
-#include <mbgl/actor/actor.hpp>
-#include <mbgl/actor/scheduler.hpp>
-#include <mbgl/storage/file_source_manager.hpp>
-#include <mbgl/storage/resource_options.hpp>
-#include <mbgl/storage/resource_transform.hpp>
-#include <mbgl/util/chrono.hpp>
-#include <mbgl/util/run_loop.hpp>
-#include <mbgl/util/string.hpp>
-
-#include <memory>
-
-static NSString * const MGLOfflineStorageFileName = @"cache.db";
-static NSString * const MGLOfflineStorageFileName3_2_0_beta_1 = @"offline.db";
-
-const NSNotificationName MGLOfflinePackProgressChangedNotification = @"MGLOfflinePackProgressChanged";
-const NSNotificationName MGLOfflinePackErrorNotification = @"MGLOfflinePackError";
-const NSNotificationName MGLOfflinePackMaximumMapboxTilesReachedNotification = @"MGLOfflinePackMaximumMapboxTilesReached";
-
-const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyState = @"State";
-const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyProgress = @"Progress";
-const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyError = @"Error";
-const MGLOfflinePackUserInfoKey MGLOfflinePackUserInfoKeyMaximumCount = @"MaximumCount";
-
-const MGLExceptionName MGLUnsupportedRegionTypeException = @"MGLUnsupportedRegionTypeException";
-
-@interface MGLOfflineStorage ()
-
-@property (nonatomic, strong, readwrite) NSMutableArray<MGLOfflinePack *> *packs;
-@property (nonatomic) std::shared_ptr<mbgl::DatabaseFileSource> mbglDatabaseFileSource;
-@property (nonatomic) std::shared_ptr<mbgl::FileSource> mbglOnlineFileSource;
-@property (nonatomic) std::shared_ptr<mbgl::FileSource> mbglFileSource;
-@property (nonatomic) std::string mbglCachePath;
-@property (nonatomic, getter=isPaused) BOOL paused;
-@end
-
-@implementation MGLOfflineStorage {
- std::unique_ptr<mbgl::Actor<mbgl::ResourceTransform::TransformCallback>> _mbglResourceTransform;
-}
-
-+ (instancetype)sharedOfflineStorage {
- static dispatch_once_t onceToken;
- static MGLOfflineStorage *sharedOfflineStorage;
- dispatch_once(&onceToken, ^{
- sharedOfflineStorage = [[self alloc] init];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[NSNotificationCenter defaultCenter] addObserver:sharedOfflineStorage selector:@selector(unpauseFileSource:) name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:sharedOfflineStorage selector:@selector(pauseFileSource:) name:UIApplicationDidEnterBackgroundNotification object:nil];
-#endif
- [sharedOfflineStorage reloadPacks];
- });
-
- return sharedOfflineStorage;
-}
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-- (void)pauseFileSource:(__unused NSNotification *)notification {
- if (self.isPaused) {
- return;
- }
- _mbglFileSource->pause();
- self.paused = YES;
-}
-
-- (void)unpauseFileSource:(__unused NSNotification *)notification {
- if (!self.isPaused) {
- return;
- }
- _mbglFileSource->resume();
- self.paused = NO;
-}
-#endif
-
-- (void)setDelegate:(id<MGLOfflineStorageDelegate>)newValue {
- MGLLogDebug(@"Setting delegate: %@", newValue);
- _delegate = newValue;
- if ([self.delegate respondsToSelector:@selector(offlineStorage:URLForResourceOfKind:withURL:)]) {
- _mbglResourceTransform = std::make_unique<mbgl::Actor<mbgl::ResourceTransform::TransformCallback>>(*mbgl::Scheduler::GetCurrent(), [offlineStorage = self](auto kind_, const std::string& url_, mbgl::ResourceTransform::FinishedCallback cb) {
- NSURL* url =
- [NSURL URLWithString:[[NSString alloc] initWithBytes:url_.data()
- length:url_.length()
- encoding:NSUTF8StringEncoding]];
- MGLResourceKind kind = MGLResourceKindUnknown;
- switch (kind_) {
- case mbgl::Resource::Kind::Tile:
- kind = MGLResourceKindTile;
- break;
- case mbgl::Resource::Kind::Glyphs:
- kind = MGLResourceKindGlyphs;
- break;
- case mbgl::Resource::Kind::Style:
- kind = MGLResourceKindStyle;
- break;
- case mbgl::Resource::Kind::Source:
- kind = MGLResourceKindSource;
- break;
- case mbgl::Resource::Kind::SpriteImage:
- kind = MGLResourceKindSpriteImage;
- break;
- case mbgl::Resource::Kind::SpriteJSON:
- kind = MGLResourceKindSpriteJSON;
- break;
- case mbgl::Resource::Kind::Image:
- kind = MGLResourceKindImage;
- break;
- case mbgl::Resource::Kind::Unknown:
- kind = MGLResourceKindUnknown;
- break;
-
- }
- url = [offlineStorage.delegate offlineStorage:offlineStorage
- URLForResourceOfKind:kind
- withURL:url];
- cb(url.absoluteString.UTF8String);
- });
-
- _mbglOnlineFileSource->setResourceTransform({[actorRef = _mbglResourceTransform->self()](auto kind_, const std::string& url_, mbgl::ResourceTransform::FinishedCallback cb_){
- actorRef.invoke(&mbgl::ResourceTransform::TransformCallback::operator(), kind_, url_, std::move(cb_));
- }});
- } else {
- _mbglResourceTransform.reset();
- _mbglOnlineFileSource->setResourceTransform({});
- }
-}
-
-/**
- Returns the file URL to the offline cache, with the option to omit the private
- subdirectory for legacy (v3.2.0 - v3.2.3) migration purposes.
-
- The cache is located in a directory specific to the application, so that packs
- downloaded by other applications don’t count toward this application’s limits.
-
- The cache is located at:
- ~/Library/Application Support/tld.app.bundle.id/.mapbox/cache.db
-
- The subdirectory-less cache was located at:
- ~/Library/Application Support/tld.app.bundle.id/cache.db
- */
-+ (NSURL *)cacheURLIncludingSubdirectory:(BOOL)useSubdirectory {
- NSURL *cacheDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory
- inDomain:NSUserDomainMask
- appropriateForURL:nil
- create:YES
- error:nil];
- NSString *bundleIdentifier = [NSBundle mgl_applicationBundleIdentifier];
- if (!bundleIdentifier) {
- // There’s no main bundle identifier when running in a unit test bundle.
- bundleIdentifier = [[NSUUID UUID] UUIDString];
- }
- cacheDirectoryURL = [cacheDirectoryURL URLByAppendingPathComponent:bundleIdentifier];
- if (useSubdirectory) {
- cacheDirectoryURL = [cacheDirectoryURL URLByAppendingPathComponent:@".mapbox"];
- }
- [[NSFileManager defaultManager] createDirectoryAtURL:cacheDirectoryURL
- withIntermediateDirectories:YES
- attributes:nil
- error:nil];
- if (useSubdirectory) {
- // Avoid backing up the offline cache onto iCloud, because it can be
- // redownloaded. Ideally, we’d even put the ambient cache in Caches, so
- // it can be reclaimed by the system when disk space runs low. But
- // unfortunately it has to live in the same file as offline resources.
- [cacheDirectoryURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:NULL];
- }
- return [cacheDirectoryURL URLByAppendingPathComponent:MGLOfflineStorageFileName];
-}
-
-/**
- Returns the absolute path to the location where v3.2.0-beta.1 placed the
- offline cache.
- */
-+ (NSString *)legacyCachePath {
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- // ~/Documents/offline.db
- NSArray *legacyPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *legacyCachePath = [legacyPaths.firstObject stringByAppendingPathComponent:MGLOfflineStorageFileName3_2_0_beta_1];
-#elif TARGET_OS_MAC
- // ~/Library/Caches/tld.app.bundle.id/offline.db
- NSString *bundleIdentifier = [NSBundle mgl_applicationBundleIdentifier];
- NSURL *legacyCacheDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory
- inDomain:NSUserDomainMask
- appropriateForURL:nil
- create:NO
- error:nil];
- legacyCacheDirectoryURL = [legacyCacheDirectoryURL URLByAppendingPathComponent:bundleIdentifier];
- NSURL *legacyCacheURL = [legacyCacheDirectoryURL URLByAppendingPathComponent:MGLOfflineStorageFileName3_2_0_beta_1];
- NSString *legacyCachePath = legacyCacheURL ? legacyCacheURL.path : @"";
-#endif
- return legacyCachePath;
-}
-
-- (instancetype)init {
- MGLInitializeRunLoop();
-
- if (self = [super init]) {
- NSURL *cacheURL = [[self class] cacheURLIncludingSubdirectory:YES];
- NSString *cachePath = cacheURL.path ?: @"";
-
- // Move the offline cache from v3.2.0-beta.1 to a location that can also
- // be used for ambient caching.
- if (![[NSFileManager defaultManager] fileExistsAtPath:cachePath]) {
- NSString *legacyCachePath = [[self class] legacyCachePath];
- [[NSFileManager defaultManager] moveItemAtPath:legacyCachePath toPath:cachePath error:NULL];
- }
-
- // Move the offline file cache from v3.2.x path to a subdirectory that
- // can be reliably excluded from backups.
- if (![[NSFileManager defaultManager] fileExistsAtPath:cachePath]) {
- NSURL *subdirectorylessCacheURL = [[self class] cacheURLIncludingSubdirectory:NO];
- [[NSFileManager defaultManager] moveItemAtPath:subdirectorylessCacheURL.path toPath:cachePath error:NULL];
- }
-
- _mbglCachePath = cachePath.UTF8String;
- mbgl::ResourceOptions options;
- options.withCachePath(_mbglCachePath)
- .withAssetPath([NSBundle mainBundle].resourceURL.path.UTF8String);
- _mbglFileSource = mbgl::FileSourceManager::get()->getFileSource(mbgl::FileSourceType::ResourceLoader, options);
- _mbglOnlineFileSource = mbgl::FileSourceManager::get()->getFileSource(mbgl::FileSourceType::Network, options);
- _mbglDatabaseFileSource = std::static_pointer_cast<mbgl::DatabaseFileSource>(std::shared_ptr<mbgl::FileSource>(mbgl::FileSourceManager::get()->getFileSource(mbgl::FileSourceType::Database, options)));
-
- // Observe for changes to the API base URL (and find out the current one).
- [[MGLAccountManager sharedManager] addObserver:self
- forKeyPath:@"apiBaseURL"
- options:(NSKeyValueObservingOptionInitial |
- NSKeyValueObservingOptionNew)
- context:NULL];
-
- // Observe for changes to the global access token (and find out the current one).
- [[MGLAccountManager sharedManager] addObserver:self
- forKeyPath:@"accessToken"
- options:(NSKeyValueObservingOptionInitial |
- NSKeyValueObservingOptionNew)
- context:NULL];
- }
- return self;
-}
-
-- (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [[MGLAccountManager sharedManager] removeObserver:self forKeyPath:@"apiBaseURL"];
- [[MGLAccountManager sharedManager] removeObserver:self forKeyPath:@"accessToken"];
-
- for (MGLOfflinePack *pack in self.packs) {
- [pack invalidate];
- }
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *, id> *)change context:(void *)context {
- // Synchronize the file source’s access token with the global one in MGLAccountManager.
- if ([keyPath isEqualToString:@"accessToken"] && object == [MGLAccountManager sharedManager]) {
- NSString *accessToken = change[NSKeyValueChangeNewKey];
- if (![accessToken isKindOfClass:[NSNull class]]) {
- _mbglOnlineFileSource->setProperty(mbgl::ACCESS_TOKEN_KEY, accessToken.UTF8String);
- }
- } else if ([keyPath isEqualToString:@"apiBaseURL"] && object == [MGLAccountManager sharedManager]) {
- NSURL *apiBaseURL = change[NSKeyValueChangeNewKey];
- if ([apiBaseURL isKindOfClass:[NSNull class]]) {
- _mbglFileSource->setProperty(mbgl::API_BASE_URL_KEY, mbgl::util::API_BASE_URL);
- } else {
- _mbglFileSource->setProperty(mbgl::API_BASE_URL_KEY, apiBaseURL.absoluteString.UTF8String);
- }
- } else {
- [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
- }
-}
-
-#pragma mark Offline merge methods
-
-- (void)addContentsOfFile:(NSString *)filePath withCompletionHandler:(MGLBatchedOfflinePackAdditionCompletionHandler)completion {
- MGLLogDebug(@"Adding contentsOfFile: %@ completionHandler: %@", filePath, completion);
- NSURL *fileURL = [NSURL fileURLWithPath:filePath];
-
- [self addContentsOfURL:fileURL withCompletionHandler:completion];
-
-}
-
-- (void)addContentsOfURL:(NSURL *)fileURL withCompletionHandler:(MGLBatchedOfflinePackAdditionCompletionHandler)completion {
- MGLLogDebug(@"Adding contentsOfURL: %@ completionHandler: %@", fileURL, completion);
- NSFileManager *fileManager = [NSFileManager defaultManager];
-
- if (!fileURL.isFileURL) {
- [NSException raise:NSInvalidArgumentException format:@"%@ must be a valid file path", fileURL.absoluteString];
- }
- if (![fileManager isWritableFileAtPath:fileURL.path]) {
- [NSException raise:NSInvalidArgumentException format:@"The file path: %@ must be writable", fileURL.absoluteString];
- }
-
- __weak MGLOfflineStorage *weakSelf = self;
- [self _addContentsOfFile:fileURL.path withCompletionHandler:^(NSArray<MGLOfflinePack *> * _Nullable packs, NSError * _Nullable error) {
- if (packs) {
- NSMutableDictionary *packsByIdentifier = [NSMutableDictionary dictionary];
-
- MGLOfflineStorage *strongSelf = weakSelf;
- for (MGLOfflinePack *pack in packs) {
- [packsByIdentifier setObject:pack forKey:@(pack.mbglOfflineRegion->getID())];
- }
-
- id mutablePacks = [strongSelf mutableArrayValueForKey:@"packs"];
- NSMutableIndexSet *replaceIndexSet = [NSMutableIndexSet indexSet];
- NSMutableArray *replacePacksArray = [NSMutableArray array];
- [strongSelf.packs enumerateObjectsUsingBlock:^(MGLOfflinePack * _Nonnull pack, NSUInteger idx, BOOL * _Nonnull stop) {
- MGLOfflinePack *newPack = packsByIdentifier[@(pack.mbglOfflineRegion->getID())];
- if (newPack) {
- MGLOfflinePack *previousPack = [mutablePacks objectAtIndex:idx];
- [previousPack invalidate];
- [replaceIndexSet addIndex:idx];
- [replacePacksArray addObject:[packsByIdentifier objectForKey:@(newPack.mbglOfflineRegion->getID())]];
- [packsByIdentifier removeObjectForKey:@(newPack.mbglOfflineRegion->getID())];
- }
-
- }];
-
- if (replaceIndexSet.count > 0) {
- [mutablePacks replaceObjectsAtIndexes:replaceIndexSet withObjects:replacePacksArray];
- }
-
- [mutablePacks addObjectsFromArray:packsByIdentifier.allValues];
- }
- if (completion) {
- completion(fileURL, packs, error);
- }
- }];
-}
-
-- (void)_addContentsOfFile:(NSString *)filePath withCompletionHandler:(void (^)(NSArray<MGLOfflinePack *> * _Nullable packs, NSError * _Nullable error))completion {
- _mbglDatabaseFileSource->mergeOfflineRegions(std::string(static_cast<const char *>([filePath UTF8String])), [&, completion, filePath](mbgl::expected<mbgl::OfflineRegions, std::exception_ptr> result) {
- NSError *error;
- NSMutableArray *packs;
- if (!result) {
- NSString *description = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"ADD_FILE_CONTENTS_FAILED_DESC", @"Foundation", nil, @"Unable to add offline packs from the file at %@.", @"User-friendly error description"), filePath];
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeModifyingOfflineStorageFailed
- userInfo:@{
- NSLocalizedDescriptionKey: description,
- NSLocalizedFailureReasonErrorKey: @(mbgl::util::toString(result.error()).c_str())
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- } else {
- auto& regions = result.value();
- packs = [NSMutableArray arrayWithCapacity:regions.size()];
- for (auto &region : regions) {
- MGLOfflinePack *pack = [[MGLOfflinePack alloc] initWithMBGLRegion:new mbgl::OfflineRegion(std::move(region))];
- [packs addObject:pack];
- }
- }
- if (completion) {
- dispatch_async(dispatch_get_main_queue(), [&, completion, error, packs](void) {
- completion(packs, error);
- });
- }
- });
-}
-
-#pragma mark Pack management methods
-
-- (void)addPackForRegion:(id <MGLOfflineRegion>)region withContext:(NSData *)context completionHandler:(MGLOfflinePackAdditionCompletionHandler)completion {
- MGLLogDebug(@"Adding packForRegion: %@ contextLength: %lu completionHandler: %@", region, (unsigned long)context.length, completion);
- __weak MGLOfflineStorage *weakSelf = self;
- [self _addPackForRegion:region withContext:context completionHandler:^(MGLOfflinePack * _Nullable pack, NSError * _Nullable error) {
- pack.state = MGLOfflinePackStateInactive;
- MGLOfflineStorage *strongSelf = weakSelf;
- [[strongSelf mutableArrayValueForKey:@"packs"] addObject:pack];
- if (completion) {
- completion(pack, error);
- }
-
- #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- NSMutableDictionary *offlineDownloadStartEventAttributes = [NSMutableDictionary dictionaryWithObject:MMEventTypeOfflineDownloadStart forKey:MMEEventKeyEvent];
-
- if ([region conformsToProtocol:@protocol(MGLOfflineRegion_Private)]) {
- NSDictionary *regionAttributes = ((id<MGLOfflineRegion_Private>)region).offlineStartEventAttributes;
- [offlineDownloadStartEventAttributes addEntriesFromDictionary:regionAttributes];
- }
-
- [MGLMapboxEvents pushEvent:MMEventTypeOfflineDownloadStart withAttributes:offlineDownloadStartEventAttributes];
- #endif
- }];
-}
-
-- (void)_addPackForRegion:(id <MGLOfflineRegion>)region withContext:(NSData *)context completionHandler:(MGLOfflinePackAdditionCompletionHandler)completion {
- if (![region conformsToProtocol:@protocol(MGLOfflineRegion_Private)]) {
- [NSException raise:MGLUnsupportedRegionTypeException
- format:@"Regions of type %@ are unsupported.", NSStringFromClass([region class])];
- return;
- }
-
- const mbgl::OfflineRegionDefinition regionDefinition = [(id <MGLOfflineRegion_Private>)region offlineRegionDefinition];
- mbgl::OfflineRegionMetadata metadata(context.length);
- [context getBytes:&metadata[0] length:metadata.size()];
- _mbglDatabaseFileSource->createOfflineRegion(regionDefinition, metadata, [&, completion](mbgl::expected<mbgl::OfflineRegion, std::exception_ptr> mbglOfflineRegion) {
- NSError *error;
- if (!mbglOfflineRegion) {
- NSString *errorDescription = @(mbgl::util::toString(mbglOfflineRegion.error()).c_str());
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeModifyingOfflineStorageFailed userInfo:errorDescription ? @{
- NSLocalizedDescriptionKey: errorDescription,
- } : nil];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- }
- if (completion) {
- MGLOfflinePack *pack = mbglOfflineRegion ? [[MGLOfflinePack alloc] initWithMBGLRegion:new mbgl::OfflineRegion(std::move(mbglOfflineRegion.value()))] : nil;
- dispatch_async(dispatch_get_main_queue(), [&, completion, error, pack](void) {
- completion(pack, error);
- });
- }
- });
-}
-
-- (void)removePack:(MGLOfflinePack *)pack withCompletionHandler:(MGLOfflinePackRemovalCompletionHandler)completion {
- MGLLogDebug(@"Removing pack: %@ completionHandler: %@", pack, completion);
- [[self mutableArrayValueForKey:@"packs"] removeObject:pack];
- [self _removePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- if (completion) {
- completion(error);
- }
- }];
-}
-
-- (void)_removePack:(MGLOfflinePack *)pack withCompletionHandler:(MGLOfflinePackRemovalCompletionHandler)completion {
- mbgl::OfflineRegion *mbglOfflineRegion = pack.mbglOfflineRegion;
-
- [pack invalidate];
-
- if (!mbglOfflineRegion) {
- MGLAssert(pack.state == MGLOfflinePackStateInvalid, @"State should be invalid");
- completion(nil);
- return;
- }
-
- _mbglDatabaseFileSource->deleteOfflineRegion(std::move(*mbglOfflineRegion), [&, completion](std::exception_ptr exception) {
- NSError *error;
- if (exception) {
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeModifyingOfflineStorageFailed userInfo:@{
- NSLocalizedDescriptionKey: @(mbgl::util::toString(exception).c_str()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- }
- if (completion) {
- dispatch_async(dispatch_get_main_queue(), [&, completion, error](void) {
- completion(error);
- });
- }
- });
-
-}
-
-- (void)invalidatePack:(MGLOfflinePack *)pack withCompletionHandler:(void (^)(NSError * _Nullable))completion {
- mbgl::OfflineRegion& region = *pack.mbglOfflineRegion;
- NSError *error;
- if (!pack.mbglOfflineRegion) {
- completion(nil);
- return;
- }
-
- _mbglDatabaseFileSource->invalidateOfflineRegion(region, [&](std::exception_ptr exception) {
- if (exception) {
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeModifyingOfflineStorageFailed userInfo:@{
- NSLocalizedDescriptionKey: @(mbgl::util::toString(exception).c_str()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- }
- });
- if (completion) {
- dispatch_async(dispatch_get_main_queue(), [&, completion, error](void) {
- completion(error);
- });
- }
-}
-
-- (void)reloadPacks {
- MGLLogInfo(@"Reloading packs.");
- [self getPacksWithCompletionHandler:^(NSArray<MGLOfflinePack *> *packs, __unused NSError * _Nullable error) {
- for (MGLOfflinePack *pack in self.packs) {
- [pack invalidate];
- }
- self.packs = [packs mutableCopy];
- }];
-}
-
-- (void)getPacksWithCompletionHandler:(void (^)(NSArray<MGLOfflinePack *> *packs, NSError * _Nullable error))completion {
- _mbglDatabaseFileSource->listOfflineRegions([&, completion](mbgl::expected<mbgl::OfflineRegions, std::exception_ptr> result) {
- NSError *error;
- NSMutableArray *packs;
- if (!result) {
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeUnknown userInfo:@{
- NSLocalizedDescriptionKey: @(mbgl::util::toString(result.error()).c_str()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- } else {
- auto& regions = result.value();
- packs = [NSMutableArray arrayWithCapacity:regions.size()];
- for (auto &region : regions) {
- MGLOfflinePack *pack = [[MGLOfflinePack alloc] initWithMBGLRegion:new mbgl::OfflineRegion(std::move(region))];
- [packs addObject:pack];
- }
- }
- if (completion) {
- dispatch_async(dispatch_get_main_queue(), [&, completion, error, packs](void) {
- completion(packs, error);
- });
- }
- });
-}
-
-- (void)setMaximumAllowedMapboxTiles:(uint64_t)maximumCount {
- MGLLogDebug(@"Setting maximumAllowedMapboxTiles: %lu", (unsigned long)maximumCount);
- _mbglDatabaseFileSource->setOfflineMapboxTileCountLimit(maximumCount);
-}
-
-#pragma mark - Ambient Cache management
-
-- (void)setMaximumAmbientCacheSize:(NSUInteger)cacheSize withCompletionHandler:(void (^)(NSError * _Nullable))completion {
- _mbglDatabaseFileSource->setMaximumAmbientCacheSize(cacheSize, [&, completion](std::exception_ptr exception) {
- NSError *error;
- if (completion) {
- if (exception) {
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeModifyingOfflineStorageFailed userInfo:@{
- NSLocalizedDescriptionKey: @(mbgl::util::toString(exception).c_str()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- }
- dispatch_sync(dispatch_get_main_queue(), ^ {
- completion(error);
- });
- }
- });
-}
-
-- (void)invalidateAmbientCacheWithCompletionHandler:(void (^)(NSError *_Nullable))completion {
- _mbglDatabaseFileSource->invalidateAmbientCache([&, completion](std::exception_ptr exception){
- NSError *error;
- if (completion) {
- if (exception) {
- // Convert std::exception_ptr to an NSError.
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeModifyingOfflineStorageFailed userInfo:@{
- NSLocalizedDescriptionKey: @(mbgl::util::toString(exception).c_str()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- }
- dispatch_async(dispatch_get_main_queue(), ^ {
- completion(error);
- });
- }
- });
-}
-
-- (void)clearAmbientCacheWithCompletionHandler:(void (^)(NSError *_Nullable error))completion {
- _mbglDatabaseFileSource->clearAmbientCache([&, completion](std::exception_ptr exception){
- NSError *error;
- if (completion) {
- if (exception) {
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeModifyingOfflineStorageFailed userInfo:@{
- NSLocalizedDescriptionKey: @(mbgl::util::toString(exception).c_str()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- }
- dispatch_async(dispatch_get_main_queue(), [&, completion, error](void) {
- completion(error);
- });
- }
- });
-}
-
-- (void)resetDatabaseWithCompletionHandler:(void (^)(NSError *_Nullable error))completion {
- _mbglDatabaseFileSource->resetDatabase([&, completion](std::exception_ptr exception) {
- NSError *error;
- if (completion) {
- if (exception) {
- error = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeUnknown userInfo:@{
- NSLocalizedDescriptionKey: @(mbgl::util::toString(exception).c_str()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- }
- dispatch_async(dispatch_get_main_queue(), ^{
- completion(error);
- });
- }
- });
-}
-#pragma mark -
-
-- (unsigned long long)countOfBytesCompleted {
- NSURL *cacheURL = [[self class] cacheURLIncludingSubdirectory:YES];
- NSString *cachePath = cacheURL.path;
- if (!cachePath) {
- return 0;
- }
-
- NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:cachePath error:NULL];
- return attributes.fileSize;
-}
-
-- (void)preloadData:(NSData *)data forURL:(NSURL *)url modificationDate:(nullable NSDate *)modified expirationDate:(nullable NSDate *)expires eTag:(nullable NSString *)eTag mustRevalidate:(BOOL)mustRevalidate {
- mbgl::Resource resource(mbgl::Resource::Kind::Unknown, url.absoluteString.UTF8String);
- mbgl::Response response;
- response.data = std::make_shared<std::string>(static_cast<const char*>(data.bytes), data.length);
- response.mustRevalidate = mustRevalidate;
-
- if (eTag) {
- response.etag = std::string(eTag.UTF8String);
- }
-
- if (modified) {
- response.modified = mbgl::Timestamp() + std::chrono::duration_cast<mbgl::Seconds>(MGLDurationFromTimeInterval(modified.timeIntervalSince1970));
- }
-
- if (expires) {
- response.expires = mbgl::Timestamp() + std::chrono::duration_cast<mbgl::Seconds>(MGLDurationFromTimeInterval(expires.timeIntervalSince1970));
- }
-
- _mbglDatabaseFileSource->put(resource, response);
-}
-
-- (void)putResourceWithUrl:(NSURL *)url data:(NSData *)data modified:(nullable NSDate *)modified expires:(nullable NSDate *)expires etag:(nullable NSString *)etag mustRevalidate:(BOOL)mustRevalidate {
- [self preloadData:data forURL:url modificationDate:modified expirationDate:expires eTag:etag mustRevalidate:mustRevalidate];
-}
-
-@end
diff --git a/platform/darwin/src/MGLOfflineStorage_Private.h b/platform/darwin/src/MGLOfflineStorage_Private.h
deleted file mode 100644
index c01163e766..0000000000
--- a/platform/darwin/src/MGLOfflineStorage_Private.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#import "MGLOfflineStorage.h"
-
-#import "MGLOfflinePack.h"
-
-#include <mbgl/storage/online_file_source.hpp>
-#include <mbgl/storage/database_file_source.hpp>
-
-#include <memory>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLOfflineStorage (Private)
-
-/**
- The shared database file source object owned by the shared offline storage object.
- */
-@property (nonatomic) std::shared_ptr<mbgl::DatabaseFileSource> mbglDatabaseFileSource;
-
-/**
- The shared online file source object owned by the shared offline storage object.
- */
-@property (nonatomic) std::shared_ptr<mbgl::FileSource> mbglOnlineFileSource;
-
-/**
- The shared resource loader file source object owned by the shared offline storage object.
- */
-@property (nonatomic) std::shared_ptr<mbgl::FileSource> mbglFileSource;
-
-/**
- The shared offline cache path.
- */
-@property (nonatomic) std::string mbglCachePath;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLOpenGLStyleLayer.h b/platform/darwin/src/MGLOpenGLStyleLayer.h
deleted file mode 100644
index fd82a4a69d..0000000000
--- a/platform/darwin/src/MGLOpenGLStyleLayer.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-#import <QuartzCore/QuartzCore.h>
-
-#import "MGLFoundation.h"
-#import "MGLStyleValue.h"
-#import "MGLStyleLayer.h"
-#import "MGLGeometry.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLMapView;
-@class MGLStyle;
-
-typedef struct MGLStyleLayerDrawingContext {
- CGSize size;
- CLLocationCoordinate2D centerCoordinate;
- double zoomLevel;
- CLLocationDirection direction;
- CGFloat pitch;
- CGFloat fieldOfView;
- MGLMatrix4 projectionMatrix;
-} MGLStyleLayerDrawingContext;
-
-MGL_EXPORT
-@interface MGLOpenGLStyleLayer : MGLStyleLayer
-
-@property (nonatomic, weak, readonly) MGLStyle *style;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-#if TARGET_OS_IPHONE
-@property (nonatomic, readonly) EAGLContext *context;
-#else
-@property (nonatomic, readonly) CGLContextObj context;
-#endif
-#pragma clang diagnostic pop
-
-- (instancetype)initWithIdentifier:(NSString *)identifier;
-
-- (void)didMoveToMapView:(MGLMapView *)mapView;
-
-- (void)willMoveFromMapView:(MGLMapView *)mapView;
-
-- (void)drawInMapView:(MGLMapView *)mapView withContext:(MGLStyleLayerDrawingContext)context;
-
-- (void)setNeedsDisplay;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLOpenGLStyleLayer.mm b/platform/darwin/src/MGLOpenGLStyleLayer.mm
deleted file mode 100644
index 8c9e4b02a2..0000000000
--- a/platform/darwin/src/MGLOpenGLStyleLayer.mm
+++ /dev/null
@@ -1,206 +0,0 @@
-#import "MGLOpenGLStyleLayer.h"
-#import "MGLOpenGLStyleLayer_Private.h"
-
-#import "MGLMapView_Private.h"
-#import "MGLStyle_Private.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLGeometry_Private.h"
-
-#include <mbgl/gl/custom_layer.hpp>
-#include <mbgl/math/wrap.hpp>
-
-class MGLOpenGLLayerHost : public mbgl::style::CustomLayerHost {
-public:
- MGLOpenGLLayerHost(MGLOpenGLStyleLayer *styleLayer) {
- layerRef = styleLayer;
- layer = nil;
- }
-
- void initialize() {
- if (layerRef == nil) return;
- else if (layer == nil) layer = layerRef;
-
- [layer didMoveToMapView:layer.style.mapView];
- }
-
- void render(const mbgl::style::CustomLayerRenderParameters &params) {
- if(!layer) return;
-
- MGLStyleLayerDrawingContext drawingContext = {
- .size = CGSizeMake(params.width, params.height),
- .centerCoordinate = CLLocationCoordinate2DMake(params.latitude, params.longitude),
- .zoomLevel = params.zoom,
- .direction = mbgl::util::wrap(params.bearing, 0., 360.),
- .pitch = static_cast<CGFloat>(params.pitch),
- .fieldOfView = static_cast<CGFloat>(params.fieldOfView),
- .projectionMatrix = MGLMatrix4Make(params.projectionMatrix)
- };
- [layer drawInMapView:layer.style.mapView withContext:drawingContext];
- }
-
- void contextLost() {}
-
- void deinitialize() {
- if (layer == nil) return;
-
- [layer willMoveFromMapView:layer.style.mapView];
- layerRef = layer;
- layer = nil;
- }
-private:
- __weak MGLOpenGLStyleLayer * layerRef;
- MGLOpenGLStyleLayer * layer = nil;
-};
-
-/**
- An `MGLOpenGLStyleLayer` is a style layer that is rendered by OpenGL code that
- you provide.
-
- By default, this class does nothing. You can subclass this class to provide
- custom OpenGL drawing code that is run on each frame of the map. Your subclass
- should override the `-didMoveToMapView:`, `-willMoveFromMapView:`, and
- `-drawInMapView:withContext:` methods.
-
- You can access an existing OpenGL style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new OpenGL style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- @warning This API is undocumented and therefore unsupported. It may change at
- any time without notice.
- */
-@interface MGLOpenGLStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::CustomLayer *rawLayer;
-
-/**
- The style currently containing the layer.
-
- If the layer is not currently part of any style, this property is
- set to `nil`.
- */
-@property (nonatomic, weak, readwrite) MGLStyle *style;
-
-@end
-
-@implementation MGLOpenGLStyleLayer
-
-/**
- Returns an OpenGL style layer object initialized with the given identifier.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the layer in the style to
- which it is added.
- @return An initialized OpenGL style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier {
- auto layer = std::make_unique<mbgl::style::CustomLayer>(identifier.UTF8String,
- std::make_unique<MGLOpenGLLayerHost>(self));
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::CustomLayer *)rawLayer {
- return (mbgl::style::CustomLayer *)super.rawLayer;
-}
-
-#if TARGET_OS_IPHONE
-- (EAGLContext *)context {
- return self.style.mapView.context;
-}
-#else
-- (CGLContextObj)context {
- return self.style.mapView.context;
-}
-#endif
-
-#pragma mark - Adding to and removing from a map view
-- (void)addToStyle:(MGLStyle *)style belowLayer:(MGLStyleLayer *)otherLayer {
- self.style = style;
- self.style.openGLLayers[self.identifier] = self;
- [super addToStyle:style belowLayer:otherLayer];
-}
-
-- (void)removeFromStyle:(MGLStyle *)style {
- [super removeFromStyle:style];
- self.style.openGLLayers[self.identifier] = nil;
- self.style = nil;
-}
-
-/**
- Called immediately after a layer is added to a map view’s style.
-
- This method is intended to be overridden in a subclass. You can use this method
- to perform any setup work before the layer is used to draw a frame. For
- example, you might use this method to compile an OpenGL shader. The default
- implementation of this method does nothing.
-
- Any resource acquired in this method must be released in
- `-willMoveFromMapView:`.
-
- @param mapView The map view to whose style the layer has been added.
- */
-- (void)didMoveToMapView:(MGLMapView *)mapView {
-
-}
-
-/**
- Called immediately before a layer is removed from a map view’s style.
-
- This method is intended to be overridden in a subclass. You can use this method
- to perform any teardown work once the layer has drawn its last frame and is
- about to be removed from the style. The default implementation of this method
- does nothing.
-
- This method may be called even if `-didMoveToMapView:` has not been called.
-
- @param mapView The map view from whose style the layer is about to be removed.
- */
-- (void)willMoveFromMapView:(MGLMapView *)mapView {
-
-}
-
-/**
- Called each time the layer needs to draw a new frame in a map view.
-
- This method is intended to be overridden in a subclass. You can use this method
- to draw the layer’s content. The default implementation of this method does
- nothing.
-
- Your implementation should not make any assumptions about the OpenGL state,
- other than that the current OpenGL context is active. It may make changes to
- the OpenGL state. It is not required to reset values such as the depth mask,
- stencil mask, or corresponding test flags to their original values.
-
- Be sure to draw your fragments with a <var>z</var> value of 1 to take advantage
- of the opaque fragment culling, in case the style contains any opaque layers
- above this layer.
-
- @param mapView The map view to which the layer draws.
- @param context A context structure with information defining the frame to draw.
- */
-- (void)drawInMapView:(MGLMapView *)mapView withContext:(MGLStyleLayerDrawingContext)context {
-
-}
-
-/**
- Forces the map view associated with this style to redraw the receiving layer,
- causing the `-drawInMapView:withContext:` method to be called.
- */
-- (void)setNeedsDisplay {
- [self.style.mapView setNeedsRerender];
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* OpenGLStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLOpenGLStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
-
diff --git a/platform/darwin/src/MGLOpenGLStyleLayer_Private.h b/platform/darwin/src/MGLOpenGLStyleLayer_Private.h
deleted file mode 100644
index 15dd6bf816..0000000000
--- a/platform/darwin/src/MGLOpenGLStyleLayer_Private.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/gl/custom_layer_factory.hpp>
-
-namespace mbgl {
-
-class OpenGLStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::CustomLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLOverlay.h b/platform/darwin/src/MGLOverlay.h
deleted file mode 100644
index 7706b741e2..0000000000
--- a/platform/darwin/src/MGLOverlay.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLAnnotation.h"
-#import "MGLGeometry.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLOverlay` protocol defines a specific type of annotation that represents
- both a point and an area on a map. Overlay objects are essentially data objects
- that contain the geographic data needed to represent the map area. Overlays can
- take the form of a polyline or polygon.
-
- You use overlays to layer more sophisticated content on top of a map view. For
- example, you could use an overlay to show the boundaries of a national park or
- trace a bus route along city streets. This SDK defines several concrete classes
- that conform to this protocol and define standard shapes.
- */
-@protocol MGLOverlay <MGLAnnotation>
-
-/**
- A coordinate representing the overlay. (required) (read-only)
- */
-@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
-
-/**
- The cooordinate rectangle that encompasses the overlay. (required) (read-only)
-
- This property contains the smallest rectangle that completely encompasses the
- overlay. Implementers of this protocol must set this area when implementing
- their overlay class, and after setting it, you must not change it.
-
- If this overlay spans the antimeridian, its bounds may extend west of −180 degrees
- longitude or east of 180 degrees longitude. For example, an overlay covering the
- Pacific Ocean from Tokyo to San Francisco might have a bounds extending
- from (35.68476, −220.24257) to (37.78428, −122.41310).
- */
-@property (nonatomic, readonly) MGLCoordinateBounds overlayBounds;
-
-/**
- Returns a Boolean indicating whether the specified rectangle intersects the
- receiver’s shape.
-
- You can implement this method to provide more specific bounds checking for an
- overlay. If you do not implement it, the bounding rectangle is used to detect
- intersections.
-
- @param overlayBounds The rectangle to intersect with the receiver’s area.
- @return `YES` if any part of the map rectangle intersects the receiver’s shape
- or `NO` if it does not.
- */
-- (BOOL)intersectsOverlayBounds:(MGLCoordinateBounds)overlayBounds;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLPointAnnotation.h b/platform/darwin/src/MGLPointAnnotation.h
deleted file mode 100644
index 27562f0df0..0000000000
--- a/platform/darwin/src/MGLPointAnnotation.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLShape.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `MGLPointAnnotation` object represents a one-dimensional shape located at a
- single geographical coordinate. Depending on how it is used, an
- `MGLPointAnnotation` object is known as a point annotation or point shape. For
- example, you could use a point shape to represent a city at low zoom levels, an
- address at high zoom levels, or the location of a long press gesture.
-
- You can add point shapes to the map by adding them to an `MGLShapeSource`
- object. Configure the appearance of an `MGLShapeSource`’s or
- `MGLVectorTileSource`’s point shapes collectively using an `MGLCircleStyleLayer` or
- `MGLSymbolStyleLayer` object.
-
- For more interactivity, add a selectable point annotation to a map view using
- the `-[MGLMapView addAnnotation:]` method. Alternatively, define your own model
- class that conforms to the `MGLAnnotation` protocol. Configure a point
- annotation’s appearance using
- `-[MGLMapViewDelegate mapView:imageForAnnotation:]` or
- `-[MGLMapViewDelegate mapView:viewForAnnotation:]` (iOS only). A point
- annotation’s `MGLShape.title` and `MGLShape.subtitle` properties define the
- default content of the annotation’s callout (on iOS) or popover (on macOS).
-
- To group multiple related points together in one shape, use an
- `MGLPointCollection` or `MGLShapeCollection` object. To access
- a point’s attributes, use an `MGLPointFeature` object.
-
- A point shape is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.2">Point</a> geometry
- in GeoJSON.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/marker/">
- Mark a place on the map with an annotation</a>, <a href="https://docs.mapbox.com/ios/maps/examples/marker-image/">
- Mark a place on the map with an image</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> examples to learn how to add `MGLPointAnnotation`
- objects to your map.
- */
-MGL_EXPORT
-@interface MGLPointAnnotation : MGLShape
-
-/**
- The coordinate point of the shape, specified as a latitude and longitude.
- */
-@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLPointAnnotation.mm b/platform/darwin/src/MGLPointAnnotation.mm
deleted file mode 100644
index 233bef0a0f..0000000000
--- a/platform/darwin/src/MGLPointAnnotation.mm
+++ /dev/null
@@ -1,72 +0,0 @@
-#import "MGLPointAnnotation.h"
-
-#import "MGLShape_Private.h"
-#import "NSCoder+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <mbgl/util/geometry.hpp>
-
-
-@implementation MGLPointAnnotation
-
-@synthesize coordinate;
-
-+ (BOOL)supportsSecureCoding
-{
- return YES;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)coder
-{
- MGLLogInfo(@"Initializing with coder.");
- if (self = [super initWithCoder:coder]) {
- self.coordinate = [coder decodeMGLCoordinateForKey:@"coordinate"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [super encodeWithCoder:coder];
- [coder encodeMGLCoordinate:coordinate forKey:@"coordinate"];
-}
-
-- (BOOL)isEqual:(id)other
-{
- if (other == self) return YES;
- if (![other isKindOfClass:[MGLPointAnnotation class]]) return NO;
-
- MGLPointAnnotation *otherAnnotation = other;
- return ([super isEqual:other]
- && self.coordinate.latitude == otherAnnotation.coordinate.latitude
- && self.coordinate.longitude == otherAnnotation.coordinate.longitude);
-}
-
-- (NSUInteger)hash
-{
- return [super hash] + @(self.coordinate.latitude).hash + @(self.coordinate.longitude).hash;
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; title = %@; subtitle = %@; coordinate = %f, %f>",
- NSStringFromClass([self class]), (void *)self,
- self.title ? [NSString stringWithFormat:@"\"%@\"", self.title] : self.title,
- self.subtitle ? [NSString stringWithFormat:@"\"%@\"", self.subtitle] : self.subtitle,
- coordinate.latitude, coordinate.longitude];
-}
-
-- (NSDictionary *)geoJSONDictionary
-{
- return @{@"type": @"Point",
- @"coordinates": @[@(self.coordinate.longitude), @(self.coordinate.latitude)]};
-}
-
-- (mbgl::Geometry<double>)geometryObject
-{
- mbgl::Point<double> point = { self.coordinate.longitude, self.coordinate.latitude };
- return point;
-}
-
-@end
-
diff --git a/platform/darwin/src/MGLPointCollection.h b/platform/darwin/src/MGLPointCollection.h
deleted file mode 100644
index 65ce95cb0f..0000000000
--- a/platform/darwin/src/MGLPointCollection.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLOverlay.h"
-#import "MGLShape.h"
-
-/**
- An `MGLPointCollection` object represents a shape consisting of one or more
- disconnected vertices, specified as `CLLocationCoordinate2D` instances. The
- points in the collection may be related but are not connected spatially. For
- example, you could use a point collection to represent all the trees in an
- orchard.
-
- You can add point collections to the map by adding them to an `MGLShapeSource`
- object. Configure the appearance of an `MGLShapeSource`’s or
- `MGLVectorTileSource`’s point collections collectively using an
- `MGLCircleStyleLayer` or `MGLSymbolStyleLayer` object. To access a point
- collection’s attributes, use an `MGLPointCollectionFeature` object.
-
- You cannot add an `MGLPointCollection` object directly to a map view as an
- annotation. However, you can create individual `MGLPointAnnotation` objects
- from the `coordinates` array and add those annotation objects to the map view
- using the `-[MGLMapView addAnnotations:]` method.
-
- A point collection is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.3">MultiPoint</a>
- geometry in GeoJSON. Do not confuse `MGLPointCollection` with `MGLMultiPoint`,
- the abstract superclass of `MGLPolyline` and `MGLPolygon`.
- */
-MGL_EXPORT
-@interface MGLPointCollection : MGLShape <MGLOverlay>
-
-/**
- Creates and returns a `MGLPointCollection` object from the specified set of
- coordinates.
-
- @param coords The array of coordinates defining the shape. The data in this
- array is copied to the new object.
- @param count The number of items in the `coords` array.
- @return A new point collection object.
- */
-+ (instancetype)pointCollectionWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-
-/** The array of coordinates associated with the shape. */
-@property (nonatomic, readonly) CLLocationCoordinate2D *coordinates NS_RETURNS_INNER_POINTER;
-
-/** The number of coordinates associated with the shape. */
-@property (nonatomic, readonly) NSUInteger pointCount;
-
-/**
- Retrieves one or more coordinates associated with the shape.
-
- @param coords On input, you must provide a C array of structures large enough
- to hold the desired number of coordinates. On output, this structure
- contains the requested coordinate data.
- @param range The range of points you want. The `location` field indicates the
- first point you are requesting, with `0` being the first point, `1` being
- the second point, and so on. The `length` field indicates the number of
- points you want. The array in _`coords`_ must be large enough to accommodate
- the number of requested coordinates.
- */
-- (void)getCoordinates:(CLLocationCoordinate2D *)coords range:(NSRange)range;
-
-@end
diff --git a/platform/darwin/src/MGLPointCollection.mm b/platform/darwin/src/MGLPointCollection.mm
deleted file mode 100644
index 6e056712f7..0000000000
--- a/platform/darwin/src/MGLPointCollection.mm
+++ /dev/null
@@ -1,136 +0,0 @@
-#import "MGLPointCollection_Private.h"
-#import "MGLGeometry_Private.h"
-#import "NSArray+MGLAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <mbgl/util/geojson.hpp>
-#import <mbgl/util/geometry.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation MGLPointCollection
-{
- mbgl::optional<mbgl::LatLngBounds> _bounds;
- std::vector<CLLocationCoordinate2D> _coordinates;
-}
-
-+ (instancetype)pointCollectionWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count
-{
- return [[self alloc] initWithCoordinates:coords count:count];
-}
-
-- (instancetype)initWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count
-{
- MGLLogDebug(@"Initializing with %lu coordinates.", (unsigned long)count);
- self = [super init];
- if (self)
- {
- _coordinates = { coords, coords + count };
- }
- return self;
-}
-
-- (nullable instancetype)initWithCoder:(NSCoder *)decoder {
- MGLLogInfo(@"Initializing with coder.O");
- if (self = [super initWithCoder:decoder]) {
- NSArray *coordinates = [decoder decodeObjectOfClass:[NSArray class] forKey:@"coordinates"];
- _coordinates = [coordinates mgl_coordinates];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [super encodeWithCoder:coder];
- [coder encodeObject:[NSArray mgl_coordinatesFromCoordinates:_coordinates] forKey:@"coordinates"];
-}
-
-- (BOOL)isEqual:(id)other {
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLPointCollection class]]) return NO;
-
- MGLPointCollection *otherCollection = (MGLPointCollection *)other;
- return ([super isEqual:other]
- && ((![self geoJSONDictionary] && ![otherCollection geoJSONDictionary]) || [[self geoJSONDictionary] isEqualToDictionary:[otherCollection geoJSONDictionary]]));
-}
-
-- (MGLCoordinateBounds)overlayBounds {
- if (!_bounds) {
- mbgl::LatLngBounds bounds = mbgl::LatLngBounds::empty();
- for (auto coordinate : _coordinates) {
- if (!MGLLocationCoordinate2DIsValid(coordinate)) {
- bounds = mbgl::LatLngBounds::empty();
- break;
- }
- bounds.extend(MGLLatLngFromLocationCoordinate2D(coordinate));
- }
- _bounds = bounds;
- }
- return MGLCoordinateBoundsFromLatLngBounds(*_bounds);
-}
-
-- (NSUInteger)pointCount
-{
- return _coordinates.size();
-}
-
-- (CLLocationCoordinate2D *)coordinates
-{
- return _coordinates.data();
-}
-
-- (CLLocationCoordinate2D)coordinate
-{
- MGLAssert([self pointCount] > 0, @"A multipoint must have coordinates");
- return _coordinates.at(0);
-}
-
-- (void)getCoordinates:(CLLocationCoordinate2D *)coords range:(NSRange)range
-{
- if (range.location + range.length > [self pointCount])
- {
- [NSException raise:NSRangeException
- format:@"Invalid coordinate range %@ extends beyond current coordinate count of %ld",
- NSStringFromRange(range), (unsigned long)[self pointCount]];
- }
-
- std::copy(_coordinates.begin() + range.location, _coordinates.begin() + NSMaxRange(range), coords);
-}
-
-- (BOOL)intersectsOverlayBounds:(MGLCoordinateBounds)overlayBounds
-{
- return MGLCoordinateBoundsIntersectsCoordinateBounds(self.overlayBounds, overlayBounds);
-}
-
-- (mbgl::Geometry<double>)geometryObject
-{
- mbgl::MultiPoint<double> multiPoint;
- multiPoint.reserve(self.pointCount);
- for (NSUInteger i = 0; i < self.pointCount; i++)
- {
- multiPoint.push_back(mbgl::Point<double>(self.coordinates[i].longitude, self.coordinates[i].latitude));
- }
- return multiPoint;
-}
-
-- (NSDictionary *)geoJSONDictionary
-{
- NSMutableArray *coordinates = [[NSMutableArray alloc] initWithCapacity:self.pointCount];
- for (NSUInteger index = 0; index < self.pointCount; index++) {
- CLLocationCoordinate2D coordinate = self.coordinates[index];
- [coordinates addObject:@[@(coordinate.longitude), @(coordinate.latitude)]];
- }
-
- return @{@"type": @"MultiPoint",
- @"coordinates": coordinates};
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; count = %lu; bounds = %@>",
- NSStringFromClass([self class]), (void *)self, (unsigned long)[self pointCount],
- MGLStringFromCoordinateBounds(self.overlayBounds)];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLPointCollection_Private.h b/platform/darwin/src/MGLPointCollection_Private.h
deleted file mode 100644
index fc1c33fe4c..0000000000
--- a/platform/darwin/src/MGLPointCollection_Private.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import "MGLPointCollection.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLPointCollection (Private)
-
-- (instancetype)initWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLPolygon.h b/platform/darwin/src/MGLPolygon.h
deleted file mode 100644
index 900e43334e..0000000000
--- a/platform/darwin/src/MGLPolygon.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLMultiPoint.h"
-#import "MGLOverlay.h"
-
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `MGLPolygon` object represents a closed shape consisting of four or more
- vertices, specified as `CLLocationCoordinate2D` instances, and the edges that
- connect them. For example, you could use a polygon shape to represent a
- building, a lake, or an area you want to highlight.
-
- You can add polygon shapes to the map by adding them to an `MGLShapeSource`
- object. Configure the appearance of an `MGLShapeSource`’s or
- `MGLVectorTileSource`’s polygons collectively using an `MGLFillStyleLayer` or
- `MGLSymbolStyleLayer` object. To access a polygon’s attributes, use an
- `MGLPolygonFeature` object.
-
- Alternatively, you can add a polygon overlay directly to a map view using the
- `-[MGLMapView addAnnotation:]` or `-[MGLMapView addOverlay:]` method. Configure
- a polygon overlay’s appearance using
- `-[MGLMapViewDelegate mapView:strokeColorForShapeAnnotation:]` and
- `-[MGLMapViewDelegate mapView:fillColorForPolygonAnnotation:]`.
-
- The vertices are automatically connected in the order in which you provide
- them. You should close the polygon by specifying the same
- `CLLocationCoordinate2D` as the first and last vertices; otherwise, the
- polygon’s fill may not cover the area you expect it to. To avoid filling the
- space within the shape, give the polygon a transparent fill or use an
- `MGLPolyline` object.
-
- A polygon may have one or more interior polygons, or holes, that you specify as
- `MGLPolygon` objects with the `+polygonWithCoordinates:count:interiorPolygons:`
- method. For example, if a polygon represents a lake, it could exclude an island
- within the lake using an interior polygon. Interior polygons may not themselves
- have interior polygons. To represent a shape that includes a polygon within a
- hole or, more generally, to group multiple polygons together in one shape, use
- an `MGLMultiPolygon` or `MGLShapeCollection` object.
-
- To make the polygon straddle the antimeridian, specify some longitudes less
- than −180 degrees or greater than 180 degrees.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/polygon/">
- Add a polygon annotation</a> example to learn how to initialize an
- `MGLPolygon` object from an array of coordinates.
- */
-MGL_EXPORT
-@interface MGLPolygon : MGLMultiPoint <MGLOverlay>
-
-/**
- The array of polygons nested inside the receiver.
-
- The area occupied by any interior polygons is excluded from the overall shape.
- Interior polygons should not overlap. An interior polygon should not have
- interior polygons of its own.
-
- If there are no interior polygons, the value of this property is `nil`.
- */
-@property (nonatomic, nullable, readonly) NSArray<MGLPolygon *> *interiorPolygons;
-
-/**
- Creates and returns an `MGLPolygon` object from the specified set of
- coordinates.
-
- @param coords The array of coordinates defining the shape. The data in this
- array is copied to the new object.
- @param count The number of items in the `coords` array.
- @return A new polygon object.
- */
-+ (instancetype)polygonWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-
-/**
- Creates and returns an `MGLPolygon` object from the specified set of
- coordinates and interior polygons.
-
- @param coords The array of coordinates defining the shape. The data in this
- array is copied to the new object.
- @param count The number of items in the `coords` array.
- @param interiorPolygons An array of `MGLPolygon` objects that define regions
- excluded from the overall shape. If this array is `nil` or empty, the shape
- is considered to have no interior polygons.
- @return A new polygon object.
- */
-+ (instancetype)polygonWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count interiorPolygons:(nullable NSArray<MGLPolygon *> *)interiorPolygons;
-
-@end
-
-/**
- An `MGLMultiPolygon` object represents a shape consisting of one or more
- polygons that do not overlap. For example, you could use a multipolygon shape
- to represent the body of land that consists of an island surrounded by an
- atoll: the inner island would be one `MGLPolygon` object, while the surrounding
- atoll would be another. You could also use a multipolygon shape to represent a
- group of disconnected but related buildings.
-
- You can add multipolygon shapes to the map by adding them to an
- `MGLShapeSource` object. Configure the appearance of an `MGLShapeSource`’s or
- `MGLVectorTileSource`’s multipolygons collectively using an `MGLFillStyleLayer`
- or `MGLSymbolStyleLayer` object.
-
- You cannot add an `MGLMultiPolygon` object directly to a map view using
- `-[MGLMapView addAnnotation:]` or `-[MGLMapView addOverlay:]`. However, you can
- add the `polygons` array’s items as overlays individually.
- */
-MGL_EXPORT
-@interface MGLMultiPolygon : MGLShape <MGLOverlay>
-
-/**
- An array of polygons forming the multipolygon.
- */
-@property (nonatomic, copy, readonly) NSArray<MGLPolygon *> *polygons;
-
-/**
- Creates and returns a multipolygon object consisting of the given polygons.
-
- @param polygons The array of polygons defining the shape.
- @return A new multipolygon object.
- */
-+ (instancetype)multiPolygonWithPolygons:(NSArray<MGLPolygon *> *)polygons;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLPolygon.mm b/platform/darwin/src/MGLPolygon.mm
deleted file mode 100644
index 52bff01b20..0000000000
--- a/platform/darwin/src/MGLPolygon.mm
+++ /dev/null
@@ -1,240 +0,0 @@
-#import "MGLPolygon_Private.h"
-
-#import "MGLMultiPoint_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import "MGLFeature.h"
-
-#import <mbgl/util/geojson.hpp>
-#import <mapbox/polylabel.hpp>
-
-@implementation MGLPolygon
-
-@dynamic overlayBounds;
-
-+ (instancetype)polygonWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count {
- return [self polygonWithCoordinates:coords count:count interiorPolygons:nil];
-}
-
-+ (instancetype)polygonWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count interiorPolygons:(NSArray<MGLPolygon *> *)interiorPolygons {
- return [[self alloc] initWithCoordinates:coords count:count interiorPolygons:interiorPolygons];
-}
-
-- (instancetype)initWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count interiorPolygons:(NSArray<MGLPolygon *> *)interiorPolygons {
- MGLLogDebug(@"Initializing with %lu coordinates and %lu interiorPolygons.", (unsigned long)count, (unsigned long)interiorPolygons);
- if (self = [super initWithCoordinates:coords count:count]) {
- if (interiorPolygons.count) {
- _interiorPolygons = interiorPolygons;
- }
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- MGLLogInfo(@"Initializng with coder.");
- self = [super initWithCoder:decoder];
- if (self) {
- _interiorPolygons = [decoder decodeObjectOfClass:[NSArray class] forKey:@"interiorPolygons"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [super encodeWithCoder:coder];
- [coder encodeObject:self.interiorPolygons forKey:@"interiorPolygons"];
-}
-
-- (BOOL)isEqual:(id)other {
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLPolygon class]]) return NO;
-
- MGLPolygon *otherPolygon = (MGLPolygon *)other;
- return ([super isEqual:otherPolygon] &&
- [[self geoJSONDictionary] isEqualToDictionary:[otherPolygon geoJSONDictionary]]);
-}
-
-- (NSUInteger)hash {
- return [super hash] + [[self geoJSONDictionary] hash];
-}
-
-- (CLLocationCoordinate2D)coordinate {
- // pole of inaccessibility
- auto poi = mapbox::polylabel([self polygon]);
-
- return MGLLocationCoordinate2DFromPoint(poi);
-}
-
-- (mbgl::LinearRing<double>)ring {
- NSUInteger count = self.pointCount;
- CLLocationCoordinate2D *coordinates = self.coordinates;
-
- mbgl::LinearRing<double> result;
- result.reserve(self.pointCount);
- for (NSUInteger i = 0; i < count; i++) {
- result.push_back(mbgl::Point<double>(coordinates[i].longitude, coordinates[i].latitude));
- }
- return result;
-}
-
-- (mbgl::Polygon<double>)polygon {
- mbgl::Polygon<double> geometry;
- geometry.push_back(self.ring);
- for (MGLPolygon *polygon in self.interiorPolygons) {
- geometry.push_back(polygon.ring);
- }
- return geometry;
-}
-
-- (mbgl::Geometry<double>)geometryObject {
- return [self polygon];
-}
-
-- (mbgl::Annotation)annotationObjectWithDelegate:(id <MGLMultiPointDelegate>)delegate {
-
- mbgl::FillAnnotation annotation { [self polygon] };
- annotation.opacity = { static_cast<float>([delegate alphaForShapeAnnotation:self]) };
- annotation.outlineColor = { [delegate strokeColorForShapeAnnotation:self] };
- annotation.color = { [delegate fillColorForPolygonAnnotation:self] };
-
- return annotation;
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return @{@"type": @"Polygon",
- @"coordinates": self.mgl_coordinates};
-}
-
-- (NSArray<id> *)mgl_coordinates {
- NSMutableArray *coordinates = [NSMutableArray array];
-
- NSMutableArray *exteriorRing = [NSMutableArray array];
- for (NSUInteger index = 0; index < self.pointCount; index++) {
- CLLocationCoordinate2D coordinate = self.coordinates[index];
- [exteriorRing addObject:@[@(coordinate.longitude), @(coordinate.latitude)]];
- }
- [coordinates addObject:exteriorRing];
-
- for (MGLPolygon *interiorPolygon in self.interiorPolygons) {
- NSMutableArray *interiorRing = [NSMutableArray array];
- for (NSUInteger index = 0; index < interiorPolygon.pointCount; index++) {
- CLLocationCoordinate2D coordinate = interiorPolygon.coordinates[index];
- [interiorRing addObject:@[@(coordinate.longitude), @(coordinate.latitude)]];
- }
- [coordinates addObject:interiorRing];
- }
-
- return [coordinates copy];
-}
-
-@end
-
-@interface MGLMultiPolygon ()
-
-@property (nonatomic, copy, readwrite) NSArray<MGLPolygon *> *polygons;
-
-@end
-
-@implementation MGLMultiPolygon {
- MGLCoordinateBounds _overlayBounds;
-}
-
-@synthesize overlayBounds = _overlayBounds;
-
-+ (instancetype)multiPolygonWithPolygons:(NSArray<MGLPolygon *> *)polygons {
- return [[self alloc] initWithPolygons:polygons];
-}
-
-- (instancetype)initWithPolygons:(NSArray<MGLPolygon *> *)polygons {
- MGLLogDebug(@"Initializing with %lu polygons.", (unsigned long)polygons.count);
- if (self = [super init]) {
- _polygons = polygons;
-
- mbgl::LatLngBounds bounds = mbgl::LatLngBounds::empty();
-
- for (MGLPolygon *polygon in _polygons) {
- bounds.extend(MGLLatLngBoundsFromCoordinateBounds(polygon.overlayBounds));
- }
- _overlayBounds = MGLCoordinateBoundsFromLatLngBounds(bounds);
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- MGLLogInfo(@"Initializing with coder.");
- if (self = [super initWithCoder:decoder]) {
- _polygons = [decoder decodeObjectOfClass:[NSArray class] forKey:@"polygons"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [super encodeWithCoder:coder];
- [coder encodeObject:_polygons forKey:@"polygons"];
-}
-
-- (BOOL)isEqual:(id)other {
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLMultiPolygon class]]) return NO;
-
- MGLMultiPolygon *otherMultiPolygon = other;
- return [super isEqual:other]
- && [self.polygons isEqualToArray:otherMultiPolygon.polygons];
-}
-
-- (NSUInteger)hash {
- NSUInteger hash = [super hash];
- for (MGLPolygon *polygon in self.polygons) {
- hash += [polygon hash];
- }
- return hash;
-}
-
-- (CLLocationCoordinate2D)coordinate {
- MGLPolygon *firstPolygon = self.polygons.firstObject;
-
- return firstPolygon.coordinate;
-}
-
-- (BOOL)intersectsOverlayBounds:(MGLCoordinateBounds)overlayBounds {
- return MGLCoordinateBoundsIntersectsCoordinateBounds(_overlayBounds, overlayBounds);
-}
-
-- (mbgl::MultiPolygon<double>)multiPolygon {
- mbgl::MultiPolygon<double> multiPolygon;
- multiPolygon.reserve(self.polygons.count);
- for (MGLPolygon *polygon in self.polygons) {
- mbgl::Polygon<double> geometry;
- geometry.push_back(polygon.ring);
- for (MGLPolygon *interiorPolygon in polygon.interiorPolygons) {
- geometry.push_back(interiorPolygon.ring);
- }
- multiPolygon.push_back(geometry);
- }
- return multiPolygon;
-}
-
-- (mbgl::Geometry<double>)geometryObject {
- return [self multiPolygon];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- NSMutableArray *coordinates = [[NSMutableArray alloc] initWithCapacity:self.polygons.count];
- for (MGLPolygonFeature *feature in self.polygons) {
- [coordinates addObject: feature.mgl_coordinates];
- }
- return @{@"type": @"MultiPolygon",
- @"coordinates": coordinates};
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; title = %@, subtitle: = %@, count = %lu; bounds = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.title ? [NSString stringWithFormat:@"\"%@\"", self.title] : self.title,
- self.subtitle ? [NSString stringWithFormat:@"\"%@\"", self.subtitle] : self.subtitle,
- (unsigned long)self.polygons.count,
- MGLStringFromCoordinateBounds(self.overlayBounds)];
-}
-
-@end
diff --git a/platform/darwin/src/MGLPolygon_Private.h b/platform/darwin/src/MGLPolygon_Private.h
deleted file mode 100644
index b006f2d77f..0000000000
--- a/platform/darwin/src/MGLPolygon_Private.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import "MGLPolygon.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLPolygon (Private)
-
-- (NSArray<id> *)mgl_coordinates;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLPolyline.h b/platform/darwin/src/MGLPolyline.h
deleted file mode 100644
index 9efaea24ff..0000000000
--- a/platform/darwin/src/MGLPolyline.h
+++ /dev/null
@@ -1,112 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLMultiPoint.h"
-#import "MGLOverlay.h"
-
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `MGLPolyline` object represents a shape consisting of two or more vertices,
- specified as `CLLocationCoordinate2D` instances, and the line segments that
- connect them. For example, you could use an polyline to represent a road or the
- path along which something moves.
-
- You can add polyline shapes to the map by adding them to an `MGLShapeSource`
- object. Configure the appearance of an `MGLShapeSource`’s or
- `MGLVectorTileSource`’s polylines collectively using an `MGLLineStyleLayer` or
- `MGLSymbolStyleLayer` object. To access a polyline’s attributes, use an
- `MGLPolylineFeature` object.
-
- Alternatively, you can add a polyline overlay directly to a map view using the
- `-[MGLMapView addAnnotation:]` or `-[MGLMapView addOverlay:]` method. Configure
- a polyline overlay’s appearance using
- `-[MGLMapViewDelegate mapView:strokeColorForShapeAnnotation:]` and
- `-[MGLMapViewDelegate mapView:lineWidthForPolylineAnnotation:]`.
-
- The vertices are automatically connected in the order in which you provide
- them. The first and last vertices are not connected to each other, but you can
- specify the same `CLLocationCoordinate2D` as the first and last vertices in
- order to close the polyline. To fill the space within the shape, use an
- `MGLPolygon` object. To group multiple polylines together in one shape, use an
- `MGLMultiPolyline` or `MGLShapeCollection` object.
-
- To make the polyline go across the antimeridian or international date line,
- specify some longitudes less than −180 degrees or greater than 180 degrees.
- For example, a polyline that stretches from Tokyo to San Francisco would have
- coordinates of (35.68476, -220.24257) and (37.78428, -122.41310).
-
- ```swift
- let coordinates = [
- CLLocationCoordinate2D(latitude: 35.68476, longitude: -220.24257),
- CLLocationCoordinate2D(latitude: 37.78428, longitude: -122.41310)
- ]
- let polyline = MGLPolyline(coordinates: coordinates, count: UInt(coordinates.count))
- ```
-
- A polyline is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.4">LineString</a>
- geometry in GeoJSON.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-models/">
- Annotation models</a> example to learn how to add an `MGLPolyine` object to
- your map.
- */
-MGL_EXPORT
-@interface MGLPolyline : MGLMultiPoint <MGLOverlay>
-
-/**
- Creates and returns an `MGLPolyline` object from the specified set of
- coordinates.
-
- @param coords The array of coordinates defining the shape. The data in this
- array is copied to the new object.
- @param count The number of items in the `coords` array.
- @return A new polyline object.
- */
-+ (instancetype)polylineWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;
-
-@end
-
-/**
- An `MGLMultiPolyline` object represents a shape consisting of one or more
- polylines. For example, you could use a multipolyline shape to represent both
- sides of a divided highway (dual carriageway), excluding the median (central
- reservation): each carriageway would be a distinct `MGLPolyline` object.
-
- You can add multipolyline shapes to the map by adding them to an
- `MGLShapeSource` object. Configure the appearance of an `MGLShapeSource`’s or
- `MGLVectorTileSource`’s multipolylines collectively using an
- `MGLLineStyleLayer` or `MGLSymbolStyleLayer` object.
-
- You cannot add an `MGLMultiPolyline` object directly to a map view using
- `-[MGLMapView addAnnotation:]` or `-[MGLMapView addOverlay:]`. However, you can
- add the `polylines` array’s items as overlays individually.
-
- A multipolyline is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.5">MultiLineString</a>
- geometry in GeoJSON.
- */
-MGL_EXPORT
-@interface MGLMultiPolyline : MGLShape <MGLOverlay>
-
-/**
- An array of polygons forming the multipolyline.
- */
-@property (nonatomic, copy, readonly) NSArray<MGLPolyline *> *polylines;
-
-/**
- Creates and returns a multipolyline object consisting of the given polylines.
-
- @param polylines The array of polylines defining the shape.
- @return A new multipolyline object.
- */
-+ (instancetype)multiPolylineWithPolylines:(NSArray<MGLPolyline *> *)polylines;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLPolyline.mm b/platform/darwin/src/MGLPolyline.mm
deleted file mode 100644
index 25c540b527..0000000000
--- a/platform/darwin/src/MGLPolyline.mm
+++ /dev/null
@@ -1,228 +0,0 @@
-#import "MGLPolyline_Private.h"
-
-#import "MGLMultiPoint_Private.h"
-#import "MGLGeometry_Private.h"
-
-#import "MGLFeature.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <mbgl/util/geojson.hpp>
-#import <mapbox/polylabel.hpp>
-
-@implementation MGLPolyline
-
-@dynamic overlayBounds;
-
-+ (instancetype)polylineWithCoordinates:(const CLLocationCoordinate2D *)coords
- count:(NSUInteger)count
-{
- return [[self alloc] initWithCoordinates:coords count:count];
-}
-
-- (mbgl::LineString<double>)lineString {
- NSUInteger count = self.pointCount;
- CLLocationCoordinate2D *coordinates = self.coordinates;
-
- mbgl::LineString<double> geometry;
- geometry.reserve(self.pointCount);
- for (NSUInteger i = 0; i < count; i++) {
- geometry.push_back(mbgl::Point<double>(coordinates[i].longitude, coordinates[i].latitude));
- }
-
- return geometry;
-}
-
-- (mbgl::Annotation)annotationObjectWithDelegate:(id <MGLMultiPointDelegate>)delegate {
- mbgl::LineAnnotation annotation { [self lineString] };
- annotation.opacity = { static_cast<float>([delegate alphaForShapeAnnotation:self]) };
- annotation.color = { [delegate strokeColorForShapeAnnotation:self] };
- annotation.width = { static_cast<float>([delegate lineWidthForPolylineAnnotation:self]) };
-
- return annotation;
-}
-
-- (mbgl::Geometry<double>)geometryObject {
- return [self lineString];
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return @{@"type": @"LineString",
- @"coordinates": self.mgl_coordinates};
-}
-
-- (NSArray<id> *)mgl_coordinates {
- NSMutableArray *coordinates = [[NSMutableArray alloc] initWithCapacity:self.pointCount];
- for (NSUInteger index = 0; index < self.pointCount; index++) {
- CLLocationCoordinate2D coordinate = self.coordinates[index];
- [coordinates addObject:@[@(coordinate.longitude), @(coordinate.latitude)]];
- }
- return [coordinates copy];
-}
-
-- (BOOL)isEqual:(id)other {
- return self == other || ([other isKindOfClass:[MGLPolyline class]] && [super isEqual:other]);
-}
-
-- (CLLocationCoordinate2D)coordinate {
- NSUInteger count = self.pointCount;
- MGLAssert(count > 0, @"Polyline must have coordinates");
-
- CLLocationCoordinate2D *coordinates = self.coordinates;
- CLLocationDistance middle = [self length] / 2.0;
- CLLocationDistance traveled = 0.0;
-
- if (count > 1 || middle > traveled) {
- for (NSUInteger i = 0; i < count; i++) {
-
- // Avoid a heap buffer overflow when there are only two coordinates.
- NSUInteger nextIndex = (i + 1 == count) ? 0 : 1;
-
- MGLRadianCoordinate2D from = MGLRadianCoordinateFromLocationCoordinate(coordinates[i]);
- MGLRadianCoordinate2D to = MGLRadianCoordinateFromLocationCoordinate(coordinates[i + nextIndex]);
-
- if (traveled >= middle) {
- double overshoot = middle - traveled;
- if (overshoot == 0) {
- return coordinates[i];
- }
- to = MGLRadianCoordinateFromLocationCoordinate(coordinates[i - 1]);
- CLLocationDirection direction = [self direction:from to:to] - 180;
- MGLRadianCoordinate2D otherCoordinate = MGLRadianCoordinateAtDistanceFacingDirection(from,
- overshoot/mbgl::util::EARTH_RADIUS_M,
- MGLRadiansFromDegrees(direction));
- return CLLocationCoordinate2DMake(MGLDegreesFromRadians(otherCoordinate.latitude),
- MGLDegreesFromRadians(otherCoordinate.longitude));
- }
-
- traveled += (MGLDistanceBetweenRadianCoordinates(from, to) * mbgl::util::EARTH_RADIUS_M);
- }
- }
-
- return coordinates[count - 1];
-}
-
-- (CLLocationDistance)length
-{
- CLLocationDistance length = 0.0;
-
- NSUInteger count = self.pointCount;
- CLLocationCoordinate2D *coordinates = self.coordinates;
-
- for (NSUInteger i = 0; i < count - 1; i++) {
- length += (MGLDistanceBetweenRadianCoordinates(MGLRadianCoordinateFromLocationCoordinate(coordinates[i]), MGLRadianCoordinateFromLocationCoordinate(coordinates[i + 1])) * mbgl::util::EARTH_RADIUS_M);
- }
-
- return length;
-}
-
-- (CLLocationDirection)direction:(MGLRadianCoordinate2D)from to:(MGLRadianCoordinate2D)to
-{
- return MGLDegreesFromRadians(MGLRadianCoordinatesDirection(from, to));
-}
-
-@end
-
-@interface MGLMultiPolyline ()
-
-@property (nonatomic, copy, readwrite) NSArray<MGLPolyline *> *polylines;
-
-@end
-
-@implementation MGLMultiPolyline {
- MGLCoordinateBounds _overlayBounds;
-}
-
-@synthesize overlayBounds = _overlayBounds;
-
-+ (instancetype)multiPolylineWithPolylines:(NSArray<MGLPolyline *> *)polylines {
- return [[self alloc] initWithPolylines:polylines];
-}
-
-- (instancetype)initWithPolylines:(NSArray<MGLPolyline *> *)polylines {
- MGLLogDebug(@"Initializing with %lu polylines.", (unsigned long)polylines.count);
- if (self = [super init]) {
- _polylines = polylines;
-
- mbgl::LatLngBounds bounds = mbgl::LatLngBounds::empty();
-
- for (MGLPolyline *polyline in _polylines) {
- bounds.extend(MGLLatLngBoundsFromCoordinateBounds(polyline.overlayBounds));
- }
- _overlayBounds = MGLCoordinateBoundsFromLatLngBounds(bounds);
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- MGLLogInfo(@"Initializing with coder.");
- if (self = [super initWithCoder:decoder]) {
- _polylines = [decoder decodeObjectOfClass:[NSArray class] forKey:@"polylines"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [super encodeWithCoder:coder];
- [coder encodeObject:_polylines forKey:@"polylines"];
-}
-
-- (BOOL)isEqual:(id)other
-{
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLMultiPolyline class]]) return NO;
-
- MGLMultiPolyline *otherMultipoline = other;
- return ([super isEqual:otherMultipoline]
- && [self.polylines isEqualToArray:otherMultipoline.polylines]);
-}
-
-- (NSUInteger)hash {
- NSUInteger hash = [super hash];
- for (MGLPolyline *polyline in self.polylines) {
- hash += [polyline hash];
- }
- return hash;
-}
-
-- (CLLocationCoordinate2D)coordinate {
- MGLPolyline *polyline = self.polylines.firstObject;
- CLLocationCoordinate2D *coordinates = polyline.coordinates;
- MGLAssert([polyline pointCount] > 0, @"Polyline must have coordinates");
- CLLocationCoordinate2D firstCoordinate = coordinates[0];
-
- return firstCoordinate;
-}
-
-- (BOOL)intersectsOverlayBounds:(MGLCoordinateBounds)overlayBounds {
- return MGLCoordinateBoundsIntersectsCoordinateBounds(_overlayBounds, overlayBounds);
-}
-
-- (mbgl::Geometry<double>)geometryObject {
- mbgl::MultiLineString<double> multiLineString;
- multiLineString.reserve(self.polylines.count);
- for (MGLPolyline *polyline in self.polylines) {
- multiLineString.push_back([polyline lineString]);
- }
- return multiLineString;
-}
-
-- (NSDictionary *)geoJSONDictionary {
- NSMutableArray *coordinates = [NSMutableArray array];
- for (MGLPolylineFeature *feature in self.polylines) {
- [coordinates addObject: feature.mgl_coordinates];
- }
- return @{@"type": @"MultiLineString",
- @"coordinates": coordinates};
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; title = %@, subtitle: = %@, count = %lu; bounds = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.title ? [NSString stringWithFormat:@"\"%@\"", self.title] : self.title,
- self.subtitle ? [NSString stringWithFormat:@"\"%@\"", self.subtitle] : self.subtitle,
- (unsigned long)self.polylines.count,
- MGLStringFromCoordinateBounds(self.overlayBounds)];
-}
-
-@end
diff --git a/platform/darwin/src/MGLPolyline_Private.h b/platform/darwin/src/MGLPolyline_Private.h
deleted file mode 100644
index ff4fabaa78..0000000000
--- a/platform/darwin/src/MGLPolyline_Private.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#import "MGLPolyline.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLPolyline (Private)
-
-- (NSArray<id> *)mgl_coordinates;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
diff --git a/platform/darwin/src/MGLRasterDEMSource.h b/platform/darwin/src/MGLRasterDEMSource.h
deleted file mode 100644
index 18ad802564..0000000000
--- a/platform/darwin/src/MGLRasterDEMSource.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#import "MGLFoundation.h"
-
-#import "MGLRasterTileSource.h"
-
-/**
- An `NSNumber` object containing an unsigned integer that specifies the encoding
- formula for raster-dem tilesets. The integer corresponds to one of
- the constants described in `MGLDEMEncoding`.
-
- The default value for this option is `MGLDEMEncodingMapbox`.
-
- This option cannot be represented in a TileJSON or style JSON file. It is used
- with the `MGLRasterDEMSource` class and is ignored when creating an
- `MGLRasterTileSource` or `MGLVectorTileSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionDEMEncoding;
-
-/**
- `MGLRasterDEMSource` is a map content source that supplies rasterized
- <a href="https://en.wikipedia.org/wiki/Digital_elevation_model">digital elevation model</a>
- (DEM) tiles to be shown on the map. The location of and metadata about the
- tiles are defined either by an option dictionary or by an external file that
- conforms to the
- <a href="https://github.com/mapbox/tilejson-spec/">TileJSON specification</a>.
- A raster DEM source is added to an `MGLStyle` object along with one or more
- `MGLHillshadeStyleLayer` objects. Use a hillshade style layer to control the
- appearance of content supplied by the raster DEM source.
-
- Each
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-raster-dem"><code>raster-dem</code></a>
- source defined by the style JSON file is represented at runtime by an
- `MGLRasterDEMSource` object that you can use to initialize new style layers.
- You can also add and remove sources dynamically using methods such as
- `-[MGLStyle addSource:]` and `-[MGLStyle sourceWithIdentifier:]`.
-
- Currently, raster DEM sources only support the format used by
- <a href="https://docs.mapbox.com/help/troubleshooting/access-elevation-data/#mapbox-terrain-rgb">Mapbox Terrain-RGB</a>.
-
- ### Example
-
- ```swift
- let terrainRGBURL = URL(string: "mapbox://mapbox.terrain-rgb")!
- let source = MGLRasterDEMSource(identifier: "hills", configurationURL: terrainRGBURL)
- mapView.style?.addSource(source)
- ```
- */
-MGL_EXPORT
-@interface MGLRasterDEMSource : MGLRasterTileSource
-
-@end
diff --git a/platform/darwin/src/MGLRasterDEMSource.mm b/platform/darwin/src/MGLRasterDEMSource.mm
deleted file mode 100644
index 753499ff94..0000000000
--- a/platform/darwin/src/MGLRasterDEMSource.mm
+++ /dev/null
@@ -1,16 +0,0 @@
-#import "MGLRasterDEMSource.h"
-
-#import "MGLRasterTileSource_Private.h"
-#import "NSURL+MGLAdditions.h"
-
-#import <mbgl/style/sources/raster_dem_source.hpp>
-
-@implementation MGLRasterDEMSource
-
-- (std::unique_ptr<mbgl::style::RasterSource>)pendingSourceWithIdentifier:(NSString *)identifier urlOrTileset:(mbgl::variant<std::string, mbgl::Tileset>)urlOrTileset tileSize:(uint16_t)tileSize {
- auto source = std::make_unique<mbgl::style::RasterDEMSource>(identifier.UTF8String,
- urlOrTileset,
- tileSize);
- return source;
-}
-@end
diff --git a/platform/darwin/src/MGLRasterStyleLayer.h b/platform/darwin/src/MGLRasterStyleLayer.h
deleted file mode 100644
index 87cf5be1b8..0000000000
--- a/platform/darwin/src/MGLRasterStyleLayer.h
+++ /dev/null
@@ -1,347 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLForegroundStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The resampling/interpolation method to use for overscaling, also known as
- texture magnification filter
-
- Values of this type are used in the `MGLRasterStyleLayer.rasterResamplingMode`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLRasterResamplingMode) {
- /**
- (Bi)linear filtering interpolates point values using the weighted average
- of the four closest original source points creating a smooth but blurry
- look when overscaled
- */
- MGLRasterResamplingModeLinear,
- /**
- Nearest neighbor filtering interpolates point values using the nearest
- original source point creating a sharp but pointated look when overscaled
- */
- MGLRasterResamplingModeNearest,
-};
-
-/**
- An `MGLRasterStyleLayer` is a style layer that renders georeferenced raster
- imagery on the map, especially raster tiles.
-
- Use a raster style layer to configure the color parameters of raster tiles
- loaded by an `MGLRasterTileSource` object or raster images loaded by an
- `MGLImageSource` object. For example, you could use a raster style layer to
- render <a href="https://www.mapbox.com/satellite/">Mapbox Satellite</a>
- imagery, a <a
- href="https://docs.mapbox.com/help/glossary/tileset/#raster-tilesets">raster
- tile set</a> uploaded to Mapbox Studio, or a raster map authored in <a
- href="https://tilemill-project.github.io/tilemill/">TileMill</a>, the classic
- Mapbox Editor, or Mapbox Studio Classic.
-
- Raster images may also be used as icons or patterns in a style layer. To
- register an image for use as an icon or pattern, use the `-[MGLStyle
- setImage:forName:]` method. To configure a point annotation’s image, use the
- `MGLAnnotationImage` class.
-
- You can access an existing raster style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new raster style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/image-source/">Add
- an image</a> and <a
- href="https://docs.mapbox.com/ios/maps/examples/source-custom-raster/">Add
- raster imagery</a> examples to learn how to add imagery with this style layer.
-
- ### Example
-
- ```swift
- let layer = MGLRasterStyleLayer(identifier: "clouds", source: source)
- layer.rasterOpacity = NSExpression(forConstantValue: 0.5)
- mapView.style?.addLayer(layer)
- ```
- */
-MGL_EXPORT
-@interface MGLRasterStyleLayer : MGLForegroundStyleLayer
-
-/**
- Returns a raster style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Paint Attributes
-
-/**
- Increase or reduce the brightness of the image. The value is the maximum
- brightness.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-raster-brightness-max"><code>raster-brightness-max</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *maximumRasterBrightness;
-
-/**
- The transition affecting any changes to this layer’s `maximumRasterBrightness` property.
-
- This property corresponds to the `raster-brightness-max-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition maximumRasterBrightnessTransition;
-
-@property (nonatomic, null_resettable) NSExpression *rasterBrightnessMax __attribute__((unavailable("Use maximumRasterBrightness instead.")));
-
-/**
- Increase or reduce the brightness of the image. The value is the minimum
- brightness.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-raster-brightness-min"><code>raster-brightness-min</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *minimumRasterBrightness;
-
-/**
- The transition affecting any changes to this layer’s `minimumRasterBrightness` property.
-
- This property corresponds to the `raster-brightness-min-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition minimumRasterBrightnessTransition;
-
-@property (nonatomic, null_resettable) NSExpression *rasterBrightnessMin __attribute__((unavailable("Use minimumRasterBrightness instead.")));
-
-/**
- Increase or reduce the contrast of the image.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between −1 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *rasterContrast;
-
-/**
- The transition affecting any changes to this layer’s `rasterContrast` property.
-
- This property corresponds to the `raster-contrast-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition rasterContrastTransition;
-
-/**
- Fade duration when a new tile is added.
-
- This property is measured in milliseconds.
-
- The default value of this property is an expression that evaluates to the float
- `300`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *rasterFadeDuration;
-
-/**
- Rotates hues around the color wheel.
-
- This property is measured in degrees.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-raster-hue-rotate"><code>raster-hue-rotate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *rasterHueRotation;
-
-/**
- The transition affecting any changes to this layer’s `rasterHueRotation` property.
-
- This property corresponds to the `raster-hue-rotate-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition rasterHueRotationTransition;
-
-@property (nonatomic, null_resettable) NSExpression *rasterHueRotate __attribute__((unavailable("Use rasterHueRotation instead.")));
-
-/**
- The opacity at which the image will be drawn.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *rasterOpacity;
-
-/**
- The transition affecting any changes to this layer’s `rasterOpacity` property.
-
- This property corresponds to the `raster-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition rasterOpacityTransition;
-
-/**
- The resampling/interpolation method to use for overscaling, also known as
- texture magnification filter
-
- The default value of this property is an expression that evaluates to `linear`.
- Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-raster-resampling"><code>raster-resampling</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLRasterResamplingMode` values
- * Any of the following constant string values:
- * `linear`: (Bi)linear filtering interpolates pixel values using the weighted
- average of the four closest original source pixels creating a smooth but blurry
- look when overscaled
- * `nearest`: Nearest neighbor filtering interpolates pixel values using the
- nearest original source pixel creating a sharp but pixelated look when
- overscaled
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *rasterResamplingMode;
-
-@property (nonatomic, null_resettable) NSExpression *rasterResampling __attribute__((unavailable("Use rasterResamplingMode instead.")));
-
-/**
- Increase or reduce the saturation of the image.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between −1 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *rasterSaturation;
-
-/**
- The transition affecting any changes to this layer’s `rasterSaturation` property.
-
- This property corresponds to the `raster-saturation-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition rasterSaturationTransition;
-
-@end
-
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGLRasterStyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGLRasterStyleLayerAdditions)
-
-#pragma mark Working with Raster Style Layer Attribute Values
-
-/**
- Creates a new value object containing the given `MGLRasterResamplingMode` enumeration.
-
- @param rasterResamplingMode The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLRasterResamplingMode:(MGLRasterResamplingMode)rasterResamplingMode;
-
-/**
- The `MGLRasterResamplingMode` enumeration representation of the value.
- */
-@property (readonly) MGLRasterResamplingMode MGLRasterResamplingModeValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLRasterStyleLayer.mm b/platform/darwin/src/MGLRasterStyleLayer.mm
deleted file mode 100644
index 2198d441d1..0000000000
--- a/platform/darwin/src/MGLRasterStyleLayer.mm
+++ /dev/null
@@ -1,339 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLRasterStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLRasterStyleLayer_Private.h"
-
-#include <mbgl/style/layers/raster_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLRasterResamplingMode, {
- { MGLRasterResamplingModeLinear, "linear" },
- { MGLRasterResamplingModeNearest, "nearest" },
- });
-
-}
-
-@interface MGLRasterStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::RasterLayer *rawLayer;
-
-@end
-
-@implementation MGLRasterStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::RasterLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::RasterLayer *)rawLayer
-{
- return (mbgl::style::RasterLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setMaximumRasterBrightness:(NSExpression *)maximumRasterBrightness {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting maximumRasterBrightness: %@", maximumRasterBrightness);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(maximumRasterBrightness, false);
- self.rawLayer->setRasterBrightnessMax(mbglValue);
-}
-
-- (NSExpression *)maximumRasterBrightness {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterBrightnessMax();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterBrightnessMax();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setMaximumRasterBrightnessTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting maximumRasterBrightnessTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setRasterBrightnessMaxTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)maximumRasterBrightnessTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getRasterBrightnessMaxTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setRasterBrightnessMax:(NSExpression *)rasterBrightnessMax {
-}
-
-- (NSExpression *)rasterBrightnessMax {
- return self.maximumRasterBrightness;
-}
-
-- (void)setMinimumRasterBrightness:(NSExpression *)minimumRasterBrightness {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting minimumRasterBrightness: %@", minimumRasterBrightness);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(minimumRasterBrightness, false);
- self.rawLayer->setRasterBrightnessMin(mbglValue);
-}
-
-- (NSExpression *)minimumRasterBrightness {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterBrightnessMin();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterBrightnessMin();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setMinimumRasterBrightnessTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting minimumRasterBrightnessTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setRasterBrightnessMinTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)minimumRasterBrightnessTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getRasterBrightnessMinTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setRasterBrightnessMin:(NSExpression *)rasterBrightnessMin {
-}
-
-- (NSExpression *)rasterBrightnessMin {
- return self.minimumRasterBrightness;
-}
-
-- (void)setRasterContrast:(NSExpression *)rasterContrast {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterContrast: %@", rasterContrast);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(rasterContrast, false);
- self.rawLayer->setRasterContrast(mbglValue);
-}
-
-- (NSExpression *)rasterContrast {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterContrast();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterContrast();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setRasterContrastTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterContrastTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setRasterContrastTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)rasterContrastTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getRasterContrastTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setRasterFadeDuration:(NSExpression *)rasterFadeDuration {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterFadeDuration: %@", rasterFadeDuration);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(rasterFadeDuration, false);
- self.rawLayer->setRasterFadeDuration(mbglValue);
-}
-
-- (NSExpression *)rasterFadeDuration {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterFadeDuration();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterFadeDuration();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setRasterHueRotation:(NSExpression *)rasterHueRotation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterHueRotation: %@", rasterHueRotation);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(rasterHueRotation, false);
- self.rawLayer->setRasterHueRotate(mbglValue);
-}
-
-- (NSExpression *)rasterHueRotation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterHueRotate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterHueRotate();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setRasterHueRotationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterHueRotationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setRasterHueRotateTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)rasterHueRotationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getRasterHueRotateTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setRasterHueRotate:(NSExpression *)rasterHueRotate {
-}
-
-- (NSExpression *)rasterHueRotate {
- return self.rasterHueRotation;
-}
-
-- (void)setRasterOpacity:(NSExpression *)rasterOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterOpacity: %@", rasterOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(rasterOpacity, false);
- self.rawLayer->setRasterOpacity(mbglValue);
-}
-
-- (NSExpression *)rasterOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setRasterOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setRasterOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)rasterOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getRasterOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setRasterResamplingMode:(NSExpression *)rasterResamplingMode {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterResamplingMode: %@", rasterResamplingMode);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::RasterResamplingType, NSValue *, mbgl::style::RasterResamplingType, MGLRasterResamplingMode>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::RasterResamplingType>>(rasterResamplingMode, false);
- self.rawLayer->setRasterResampling(mbglValue);
-}
-
-- (NSExpression *)rasterResamplingMode {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterResampling();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterResampling();
- }
- return MGLStyleValueTransformer<mbgl::style::RasterResamplingType, NSValue *, mbgl::style::RasterResamplingType, MGLRasterResamplingMode>().toExpression(propertyValue);
-}
-
-- (void)setRasterResampling:(NSExpression *)rasterResampling {
-}
-
-- (NSExpression *)rasterResampling {
- return self.rasterResamplingMode;
-}
-
-- (void)setRasterSaturation:(NSExpression *)rasterSaturation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterSaturation: %@", rasterSaturation);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(rasterSaturation, false);
- self.rawLayer->setRasterSaturation(mbglValue);
-}
-
-- (NSExpression *)rasterSaturation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getRasterSaturation();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultRasterSaturation();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setRasterSaturationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting rasterSaturationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setRasterSaturationTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)rasterSaturationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getRasterSaturationTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-@end
-
-@implementation NSValue (MGLRasterStyleLayerAdditions)
-
-+ (NSValue *)valueWithMGLRasterResamplingMode:(MGLRasterResamplingMode)rasterResamplingMode {
- return [NSValue value:&rasterResamplingMode withObjCType:@encode(MGLRasterResamplingMode)];
-}
-
-- (MGLRasterResamplingMode)MGLRasterResamplingModeValue {
- MGLRasterResamplingMode rasterResamplingMode;
- [self getValue:&rasterResamplingMode];
- return rasterResamplingMode;
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* RasterStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLRasterStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLRasterStyleLayer_Private.h b/platform/darwin/src/MGLRasterStyleLayer_Private.h
deleted file mode 100644
index 7b123ed888..0000000000
--- a/platform/darwin/src/MGLRasterStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/raster_layer_factory.hpp>
-
-namespace mbgl {
-
-class RasterStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::RasterLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLRasterTileSource.h b/platform/darwin/src/MGLRasterTileSource.h
deleted file mode 100644
index a8d0a470e0..0000000000
--- a/platform/darwin/src/MGLRasterTileSource.h
+++ /dev/null
@@ -1,139 +0,0 @@
-#import <CoreGraphics/CoreGraphics.h>
-
-#import "MGLFoundation.h"
-#import "MGLTileSource.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `NSNumber` object containing a floating-point number that specifies the
- width and height (measured in points) at which the map displays each raster
- image tile when the map’s zoom level is an integer. The raster tile source
- scales its images up or down when the map’s zoom level falls between two
- integers.
-
- The default value for this option is 512. Version 4 of the
- <a href="https://docs.mapbox.com/api/maps/#raster-tiles">Mapbox Raster Tiles API</a>
- requires a value of 256, as do many third-party tile servers, so consult your
- provider’s documentation for the correct value.
-
- This option is only applicable to `MGLRasterTileSource` objects; it is ignored
- when initializing `MGLVectorTileSource` objects.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionTileSize;
-
-/**
- `MGLRasterTileSource` is a map content source that supplies raster image tiles
- to be shown on the map. The location of and metadata about the tiles are
- defined either by an option dictionary or by an external file that conforms to
- the
- <a href="https://github.com/mapbox/tilejson-spec/">TileJSON specification</a>.
- A raster tile source is added to an `MGLStyle` object along with one or more
- `MGLRasterStyleLayer` objects. Use a raster style layer to control the
- appearance of content supplied by the raster tile source.
-
- Each
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-raster"><code>raster</code></a>
- source defined by the style JSON file is represented at runtime by an
- `MGLRasterTileSource` object that you can use to initialize new style layers. You
- can also add and remove sources dynamically using methods such as
- `-[MGLStyle addSource:]` and `-[MGLStyle sourceWithIdentifier:]`.
-
- ### Example
-
- ```swift
- let source = MGLRasterTileSource(identifier: "clouds", tileURLTemplates: ["https://example.com/raster-tiles/{z}/{x}/{y}.png"], options: [
- .minimumZoomLevel: 9,
- .maximumZoomLevel: 16,
- .tileSize: 512,
- .attributionInfos: [
- MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "https://mapbox.com"))
- ]
- ])
- mapView.style?.addSource(source)
- ```
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/source-custom-raster/">
- Add raster imagery</a> example to learn how to add a `MGLRasterStyleLayer`
- to your map using an `MGLRasterTileSource`.
- */
-MGL_EXPORT
-@interface MGLRasterTileSource : MGLTileSource
-
-#pragma mark Initializing a Source
-
-/**
- Returns a raster tile source initialized with an identifier and configuration
- URL.
-
- After initializing and configuring the source, add it to a map view’s style
- using the `-[MGLStyle addSource:]` method.
-
- The URL may be a full HTTP or HTTPS URL or, for tilesets hosted by Mapbox, a
- Mapbox URL indicating a tileset ID (`mapbox://<tilesetid>`). The URL should
- point to a JSON file that conforms to the
- <a href="https://github.com/mapbox/tilejson-spec/">TileJSON specification</a>.
-
- If a Mapbox URL is specified, this source uses a tile size of 256. For all
- other tilesets, the default value is 512. (See the
- `MGLTileSourceOptionTileSize` documentation for more information about tile
- sizes.) If you need to use a tile size other than the default, use the
- `-initWithIdentifier:configurationURL:tileSize:` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param configurationURL A URL to a TileJSON configuration file describing the
- source’s contents and other metadata.
- @return An initialized raster tile source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL;
-
-/**
- Returns a raster tile source initialized with an identifier, configuration URL,
- and tile size.
-
- After initializing and configuring the source, add it to a map view’s style
- using the `-[MGLStyle addSource:]` method.
-
- The URL may be a full HTTP or HTTPS URL or, for tilesets hosted by Mapbox, a
- Mapbox URL indicating a tileset ID (`mapbox://<tilesetid>`). The URL should
- point to a JSON file that conforms to the
- <a href="https://github.com/mapbox/tilejson-spec/">TileJSON specification</a>.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param configurationURL A URL to a TileJSON configuration file describing the
- source’s contents and other metadata.
- @param tileSize The width and height (measured in points) of each tiled image
- in the raster tile source. See the `MGLTileSourceOptionTileSize`
- documentation for details.
- @return An initialized raster tile source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL tileSize:(CGFloat)tileSize NS_DESIGNATED_INITIALIZER;
-
-/**
- Returns a raster tile source initialized an identifier, tile URL templates, and
- options.
-
- Tile URL templates are strings that specify the URLs of the raster tile images
- to load. See the “<a href="../tile-url-templates.html">Tile URL Templates</a>”
- guide for information about the format of a tile URL template.
-
- After initializing and configuring the source, add it to a map view’s style
- using the `-[MGLStyle addSource:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param tileURLTemplates An array of tile URL template strings. Only the first
- string is used; any additional strings are ignored.
- @param options A dictionary containing configuration options. See
- `MGLTileSourceOption` for available keys and values. Pass in `nil` to use
- the default values.
- @return An initialized tile source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NSArray<NSString *> *)tileURLTemplates options:(nullable NSDictionary<MGLTileSourceOption, id> *)options NS_DESIGNATED_INITIALIZER;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLRasterTileSource.mm b/platform/darwin/src/MGLRasterTileSource.mm
deleted file mode 100644
index 80b21cc7dd..0000000000
--- a/platform/darwin/src/MGLRasterTileSource.mm
+++ /dev/null
@@ -1,85 +0,0 @@
-#import "MGLRasterTileSource_Private.h"
-
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLMapView_Private.h"
-#import "MGLSource_Private.h"
-#import "MGLTileSource_Private.h"
-#import "NSURL+MGLAdditions.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/style/sources/raster_source.hpp>
-
-const MGLTileSourceOption MGLTileSourceOptionTileSize = @"MGLTileSourceOptionTileSize";
-
-static const CGFloat MGLRasterTileSourceClassicTileSize = 256;
-static const CGFloat MGLRasterTileSourceRetinaTileSize = 512;
-
-@interface MGLRasterTileSource ()
-
-@property (nonatomic, readonly) mbgl::style::RasterSource *rawSource;
-
-@end
-
-@implementation MGLRasterTileSource
-
-- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL {
- // The style specification default is 512, but 256 is the expected value for
- // any tile set that would be accessed through a mapbox: URL and therefore
- // any tile URL that this option currently affects.
- BOOL isMapboxURL = ([configurationURL.scheme isEqualToString:@"mapbox"]
- && [configurationURL.host containsString:@"."]
- && (!configurationURL.path.length || [configurationURL.path isEqualToString:@"/"]));
- CGFloat tileSize = isMapboxURL ? MGLRasterTileSourceClassicTileSize : MGLRasterTileSourceRetinaTileSize;
- return [self initWithIdentifier:identifier configurationURL:configurationURL tileSize:tileSize];
-}
-
-- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL tileSize:(CGFloat)tileSize {
- NSString *configurationURLString = configurationURL.mgl_URLByStandardizingScheme.absoluteString;
- auto source = [self pendingSourceWithIdentifier:identifier urlOrTileset:configurationURLString.UTF8String tileSize:uint16_t(round(tileSize))];
- return self = [super initWithPendingSource:std::move(source)];
-}
-
-- (std::unique_ptr<mbgl::style::RasterSource>)pendingSourceWithIdentifier:(NSString *)identifier urlOrTileset:(mbgl::variant<std::string, mbgl::Tileset>)urlOrTileset tileSize:(uint16_t)tileSize {
- auto source = std::make_unique<mbgl::style::RasterSource>(identifier.UTF8String,
- urlOrTileset,
- tileSize);
- return source;
-}
-
-- (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NSArray<NSString *> *)tileURLTemplates options:(nullable NSDictionary<MGLTileSourceOption, id> *)options {
- mbgl::Tileset tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, options);
-
- uint16_t tileSize = MGLRasterTileSourceRetinaTileSize;
- if (NSNumber *tileSizeNumber = options[MGLTileSourceOptionTileSize]) {
- if (![tileSizeNumber isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionTileSize must be set to an NSNumber."];
- }
- tileSize = static_cast<uint16_t>(round(tileSizeNumber.doubleValue));
- }
-
- auto source = [self pendingSourceWithIdentifier:identifier urlOrTileset:tileSet tileSize:tileSize];
- return self = [super initWithPendingSource:std::move(source)];
-}
-
-- (mbgl::style::RasterSource *)rawSource {
- return (mbgl::style::RasterSource *)super.rawSource;
-}
-
-- (NSURL *)configurationURL {
- MGLAssertStyleSourceIsValid();
- auto url = self.rawSource->getURL();
- return url ? [NSURL URLWithString:@(url->c_str())] : nil;
-}
-
-- (NSString *)attributionHTMLString {
- if (!self.rawSource) {
- MGLAssert(0, @"Source with identifier `%@` was invalidated after a style change", self.identifier);
- return nil;
- }
-
- auto attribution = self.rawSource->getAttribution();
- return attribution ? @(attribution->c_str()) : nil;
-}
-
-@end
diff --git a/platform/darwin/src/MGLRasterTileSource_Private.h b/platform/darwin/src/MGLRasterTileSource_Private.h
deleted file mode 100644
index 55f342c7ff..0000000000
--- a/platform/darwin/src/MGLRasterTileSource_Private.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#import "MGLRasterTileSource.h"
-
-#include <memory>
-#include <mbgl/util/variant.hpp>
-
-namespace mbgl {
- class Tileset;
- namespace style {
- class RasterSource;
- }
-}
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLRasterTileSource (Private)
-
-@property (nonatomic, readonly, nullable) mbgl::style::RasterSource *rawSource;
-
-- (std::unique_ptr<mbgl::style::RasterSource>)pendingSourceWithIdentifier:(NSString *)identifier urlOrTileset:(mbgl::variant<std::string, mbgl::Tileset>)urlOrTileset tileSize:(uint16_t)tileSize;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLRendererConfiguration.h b/platform/darwin/src/MGLRendererConfiguration.h
deleted file mode 100644
index 0c539f86f1..0000000000
--- a/platform/darwin/src/MGLRendererConfiguration.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#import "MGLFoundation.h"
-#import <Foundation/Foundation.h>
-
-#include <mbgl/util/optional.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The MGLRendererConfiguration object represents configuration values for the
- renderer.
- */
-MGL_EXPORT
-@interface MGLRendererConfiguration : NSObject
-
-/** Returns an instance of the current renderer configuration. */
-@property (class, nonatomic, readonly) MGLRendererConfiguration *currentConfiguration;
-
-/** The scale factor to use.
-
- Based on the native scale where available, otherwise the standard screen scale. */
-@property (nonatomic, readonly) const float scaleFactor;
-
-/** The name of the font family to use for client-side text rendering of CJK ideographs.
-
- Set MGLIdeographicFontFamilyName in your containing application's Info.plist to
- font family name(s) that will be available at run time, such as “PingFang TC”
- or “Marker Felt”. This plist key accepts:
-
- - A string value of a single font family name.
-
- - An array of font family names. Fonts will be used in the defined order,
- eventually falling back to default system font if none are available.
-
- - A boolean value NO to disable client-side rendering of CJK glyphs —
- remote fonts specified in your style will be used instead.
- */
-@property (nonatomic, readonly) mbgl::optional<std::string> localFontFamilyName;
-
-/**
- A Boolean value indicating whether symbol layers may enable per-source symbol
- collision detection.
-
- Set `MGLCollisionBehaviorPre4_0` in your containing app's Info.plist or by using
- `[[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:@"MGLCollisionBehaviorPre4_0"]`.
- If both are set, the value from `NSUserDefaults` takes priority.
-
- Setting this property to `YES` in the plist results in symbol layers only running
- collision detection against other symbol layers that are part of the same source.
- */
-@property (nonatomic, readonly) BOOL perSourceCollisions;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLRendererConfiguration.mm b/platform/darwin/src/MGLRendererConfiguration.mm
deleted file mode 100644
index 136dc929a6..0000000000
--- a/platform/darwin/src/MGLRendererConfiguration.mm
+++ /dev/null
@@ -1,119 +0,0 @@
-#import "MGLRendererConfiguration.h"
-#import "MGLOfflineStorage_Private.h"
-#import "MGLFoundation_Private.h"
-
-#if TARGET_OS_IPHONE
-#import <UIKit/UIKit.h>
-#else
-#import <AppKit/AppKit.h>
-#endif
-
-static NSString * const MGLCollisionBehaviorPre4_0Key = @"MGLCollisionBehaviorPre4_0";
-static NSString * const MGLIdeographicFontFamilyNameKey = @"MGLIdeographicFontFamilyName";
-
-@interface MGLRendererConfiguration ()
-@property (nonatomic, readwrite) BOOL perSourceCollisions;
-@end
-
-
-@implementation MGLRendererConfiguration
-
-+ (instancetype)currentConfiguration {
- return [[self alloc] init];
-}
-
-- (instancetype)init {
- return [self initWithPropertyDictionary:[[NSBundle mainBundle] infoDictionary]];
-}
-
-- (instancetype)initWithPropertyDictionary:(nonnull NSDictionary *)properties {
- self = [super init];
-
- if (self) {
- // Set the collision behaviour. A value set in `NSUserDefaults.standardUserDefaults`
- // should override anything in the application's info.plist
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-
- if ([defaults objectForKey:MGLCollisionBehaviorPre4_0Key]) {
- _perSourceCollisions = [defaults boolForKey:MGLCollisionBehaviorPre4_0Key];
- }
- else {
- id collisionBehaviourValue = properties[MGLCollisionBehaviorPre4_0Key];
-
- NSNumber *collisionBehaviourNumber = MGL_OBJC_DYNAMIC_CAST(collisionBehaviourValue, NSNumber);
-
- if (collisionBehaviourNumber) {
- _perSourceCollisions = collisionBehaviourNumber.boolValue;
- } else {
- // Also support NSString to correspond with the behavior of `-[NSUserDefaults boolForKey:]`
- NSString *collisionBehaviourString = MGL_OBJC_DYNAMIC_CAST(collisionBehaviourValue, NSString);
-
- if (collisionBehaviourString) {
- _perSourceCollisions = collisionBehaviourString.boolValue;
- }
- }
- }
- }
-
- return self;
-}
-
-- (const float)scaleFactor {
-#if TARGET_OS_IPHONE
- return [UIScreen instancesRespondToSelector:@selector(nativeScale)] ? [[UIScreen mainScreen] nativeScale] : [[UIScreen mainScreen] scale];
-#else
- return [NSScreen mainScreen].backingScaleFactor;
-#endif
-}
-
-- (mbgl::optional<std::string>)localFontFamilyName {
- return [self _localFontFamilyNameWithPropertyDictionary:[[NSBundle mainBundle] infoDictionary]];
-}
-
-- (mbgl::optional<std::string>)_localFontFamilyNameWithPropertyDictionary:(nonnull NSDictionary *)properties {
-
- std::string systemFontFamilyName;
-#if TARGET_OS_IPHONE
- systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
-#else
- systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
-#endif
-
- id fontFamilyName = properties[MGLIdeographicFontFamilyNameKey];
-
- if([fontFamilyName isKindOfClass:[NSNumber class]] && ![fontFamilyName boolValue])
- {
- return mbgl::optional<std::string>();
- }
- else if([fontFamilyName isKindOfClass:[NSString class]])
- {
- BOOL isValidFont = NO;
-#if TARGET_OS_IPHONE
- if([[UIFont familyNames] containsObject:fontFamilyName]){
- isValidFont = YES;
- }
-#else
- if([[[NSFontManager sharedFontManager] availableFontFamilies] containsObject:fontFamilyName]){
- isValidFont = YES;
- }
-#endif
- return (fontFamilyName && isValidFont) ? std::string([fontFamilyName UTF8String]) : systemFontFamilyName;
- }
- // Ability to specify an array of fonts for fallbacks for `localIdeographicFontFamily`
- else if ([fontFamilyName isKindOfClass:[NSArray class]]){
- for(NSString *name in fontFamilyName){
-#if TARGET_OS_IPHONE
- if([[UIFont familyNames] containsObject:name]){
- return std::string([name UTF8String]);
- }
-#else
- if([[[NSFontManager sharedFontManager] availableFontFamilies] containsObject:name]){
- return std::string([name UTF8String]);
- }
-#endif
- }
- }
- return systemFontFamilyName;
-}
-
-@end
diff --git a/platform/darwin/src/MGLRendererFrontend.h b/platform/darwin/src/MGLRendererFrontend.h
deleted file mode 100644
index e2b8260fd1..0000000000
--- a/platform/darwin/src/MGLRendererFrontend.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#include <mbgl/gfx/backend_scope.hpp>
-#include <mbgl/renderer/renderer.hpp>
-#include <mbgl/renderer/renderer_frontend.hpp>
-#include <mbgl/gfx/renderer_backend.hpp>
-#include <mbgl/util/async_task.hpp>
-#include <mbgl/util/optional.hpp>
-
-
-/**
- The RenderFrontend is passed to the Map to facilitate rendering in a platform
- dependent way.
- */
-class MGLRenderFrontend : public mbgl::RendererFrontend
-{
-public:
- MGLRenderFrontend(std::unique_ptr<mbgl::Renderer> renderer_, MGLMapView* nativeView_, mbgl::gfx::RendererBackend& mbglBackend_, bool async = false)
- : renderer(std::move(renderer_))
- , nativeView(nativeView_)
- , mbglBackend(mbglBackend_) {
- if (async) {
- asyncInvalidate.emplace([&]() {
- [nativeView setNeedsRerender];
- });
- }
- }
-
- void reset() override {
- if (renderer) {
- renderer.reset();
- }
- }
-
- void update(std::shared_ptr<mbgl::UpdateParameters> updateParameters_) override {
- updateParameters = std::move(updateParameters_);
- if (asyncInvalidate) {
- asyncInvalidate->send();
- } else {
- [nativeView setNeedsRerender];
- }
- }
-
- void setObserver(mbgl::RendererObserver& observer) override {
- if (!renderer) return;
- renderer->setObserver(&observer);
- }
-
- void render() {
- if (!renderer || !updateParameters) return;
-
- mbgl::gfx::BackendScope guard { mbglBackend, mbgl::gfx::BackendScope::ScopeType::Implicit };
-
- // onStyleImageMissing might be called during a render. The user implemented method
- // could trigger a call to MGLRenderFrontend#update which overwrites `updateParameters`.
- // Copy the shared pointer here so that the parameters aren't destroyed while `render(...)` is
- // still using them.
- auto updateParameters_ = updateParameters;
- renderer->render(updateParameters_);
- }
-
- mbgl::Renderer* getRenderer() {
- return renderer.get();
- }
-
- void reduceMemoryUse() {
- if (!renderer) return;
- renderer->reduceMemoryUse();
- }
-
-private:
- std::unique_ptr<mbgl::Renderer> renderer;
- __weak MGLMapView *nativeView = nullptr;
- mbgl::gfx::RendererBackend& mbglBackend;
- std::shared_ptr<mbgl::UpdateParameters> updateParameters;
- mbgl::optional<mbgl::util::AsyncTask> asyncInvalidate;
-};
diff --git a/platform/darwin/src/MGLSDKMetricsManager.h b/platform/darwin/src/MGLSDKMetricsManager.h
deleted file mode 100644
index 49b3391a72..0000000000
--- a/platform/darwin/src/MGLSDKMetricsManager.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#import <Foundation/Foundation.h>
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- :nodoc:
- The metrics type used to handle metrics events.
- */
-typedef NS_ENUM(NSUInteger, MGLMetricType) {
- /** :nodoc:
- Metric that measures performance.
- */
- MGLMetricTypePerformance = 0,
-};
-
-FOUNDATION_EXTERN MGL_EXPORT NSString* MGLStringFromMetricType(MGLMetricType metricType);
-
-@class MGLMetricsManager;
-
-/**
- :nodoc:
- The `MGLMetricsManagerDelegate` protocol defines a set of methods that you
- can use to receive metric events.
- */
-@protocol MGLMetricsManagerDelegate <NSObject>
-
-/**
- :nodoc:
- Asks the delegate whether the metrics manager should handle metric events.
-
- @param metricsManager The metrics manager object.
- @param metricType The metric type event.
- */
-- (BOOL)metricsManager:(MGLMetricsManager *)metricsManager shouldHandleMetric:(MGLMetricType)metricType;
-
-/**
- :nodoc:
- Asks the delegate to handle metric events.
-
- @param metricsManager The metrics manager object.
- @param metricType The metric type event.
- @param attributes The metric attributes.
- */
-- (void)metricsManager:(MGLMetricsManager *)metricsManager didCollectMetric:(MGLMetricType)metricType withAttributes:(NSDictionary *)attributes;
-
-@end
-
-/**
- :nodoc:
- The `MGLMetricsManager` object provides a single poin to collect SDK metrics
- such as tile download latency.
- */
-MGL_EXPORT
-@interface MGLMetricsManager : NSObject
-
-/**
- :nodoc:
- Returns the shared metrics manager object.
- */
-@property (class, nonatomic, readonly) MGLMetricsManager *sharedManager;
-
-/**
- :nodoc:
- The metrics manager delegate that will recieve metric events.
- */
-@property (nonatomic, weak) id<MGLMetricsManagerDelegate> delegate;
-
-#if TARGET_OS_IOS
-/**
- :nodoc:
- Sends metric events to Mapbox.
- */
-- (void)pushMetric:(MGLMetricType)metricType withAttributes:(NSDictionary *)attributes;
-#endif
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLSDKMetricsManager.m b/platform/darwin/src/MGLSDKMetricsManager.m
deleted file mode 100644
index 0ef9ecda10..0000000000
--- a/platform/darwin/src/MGLSDKMetricsManager.m
+++ /dev/null
@@ -1,134 +0,0 @@
-#import "MGLSDKMetricsManager_Private.h"
-#import "MGLNetworkConfiguration_Private.h"
-#if TARGET_OS_IOS
-#import "MGLMapboxEvents.h"
-#import <mach-o/arch.h>
-#import <sys/utsname.h>
-#import <UIKit/UIKit.h>
-#endif
-
-NSString* MGLStringFromMetricType(MGLMetricType metricType) {
- NSString *eventName;
-
- switch (metricType) {
- case MGLMetricTypePerformance:
- eventName = kMGLDownloadPerformanceEvent;
- break;
- }
- return eventName;
-}
-
-// Taken verbatim from NXFreeArchInfo header documentation
-#if TARGET_OS_IOS
-static void MGLFreeArchInfo(const NXArchInfo *x)
-{
- const NXArchInfo *p;
-
- p = NXGetAllArchInfos();
- while(p->name != NULL){
- if(x == p)
- return;
- p++;
- }
- free((char *)x->description);
- free((NXArchInfo *)x);
-}
-#endif
-
-@interface MGLMetricsManager() <MGLNetworkConfigurationMetricsDelegate>
-
-@property (strong, nonatomic) NSDictionary *metadata;
-
-@end
-
-@implementation MGLMetricsManager
-
-+ (instancetype)sharedManager
-{
- static dispatch_once_t once;
- static MGLMetricsManager *sharedConfiguration;
- dispatch_once(&once, ^{
- sharedConfiguration = [[self alloc] init];
- [MGLNetworkConfiguration sharedManager].metricsDelegate = sharedConfiguration;
-#if TARGET_OS_IOS
- UIDevice *currentDevice = [UIDevice currentDevice];
-
- NSString *osVersion = currentDevice.systemVersion;
-
- NSString *screenSize = [NSString stringWithFormat:@"%.fx%.f", [UIScreen mainScreen].bounds.size.width,
- [UIScreen mainScreen].bounds.size.height];
-
- NSLocale *currentLocale = [NSLocale currentLocale];
-
- NSString *country = [currentLocale objectForKey:NSLocaleCountryCode] ?: @"unknown";
-
- NSString *device = deviceName();
-
- NSString *abi = @"unknown";
-
- {
- const NXArchInfo *localArchInfo = NXGetLocalArchInfo();
-
- if (localArchInfo) {
- abi = @(localArchInfo->description);
-
- NSProcessInfo *processInfo = [NSProcessInfo processInfo];
-
- // Although NXFreeArchInfo appears to be weakly linked, it does
- // not have the weak_import attribute, so check the OS version.
- if (&NXFreeArchInfo && [processInfo isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){10, 0, 0}]) {
- NXFreeArchInfo(localArchInfo);
- } else {
- MGLFreeArchInfo(localArchInfo);
- }
- }
- }
-
- NSString *ram = [NSString stringWithFormat:@"%llu", [NSProcessInfo processInfo].physicalMemory];
-
- NSString *os = currentDevice.systemName;
-
- sharedConfiguration.metadata = @{ @"version" : osVersion,
- @"screenSize" : screenSize,
- @"country" : country,
- @"device" : device,
- @"abi" : abi,
- @"brand" : @"Apple",
- @"ram" : ram,
- @"os" : os
- };
-#endif
- });
- return sharedConfiguration;
-}
-
-- (void)handleMetricsEvent:(MGLMetricType)metricType withAttributes:(NSDictionary *)attributes {
- if ([self.delegate metricsManager:self shouldHandleMetric:metricType]) {
- [self.delegate metricsManager:self didCollectMetric:metricType withAttributes:attributes];
- }
-}
-
-#if TARGET_OS_IOS
-- (void)pushMetric:(MGLMetricType)metricType withAttributes:(NSDictionary *)attributes {
- NSString *eventName = MGLStringFromMetricType(metricType);
- NSMutableDictionary *mutableAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
- [mutableAttributes setObject:self.metadata forKey:@"metadata"];
-
- [MGLMapboxEvents pushEvent:eventName withAttributes:mutableAttributes];
-}
-
-NSString* deviceName()
-{
- struct utsname systemInfo;
- uname(&systemInfo);
-
- return [NSString stringWithCString:systemInfo.machine
- encoding:NSUTF8StringEncoding];
-}
-#endif
-
-- (void)networkConfiguration:(MGLNetworkConfiguration *)networkConfiguration didGenerateMetricEvent:(NSDictionary *)metricEvent {
- [self handleMetricsEvent:MGLMetricTypePerformance withAttributes:metricEvent];
-}
-
-@end
diff --git a/platform/darwin/src/MGLSDKMetricsManager_Private.h b/platform/darwin/src/MGLSDKMetricsManager_Private.h
deleted file mode 100644
index a3cdfca794..0000000000
--- a/platform/darwin/src/MGLSDKMetricsManager_Private.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import "MGLSDKMetricsManager.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLMetricsManager (Private)
-
-- (void)handleMetricsEvent:(MGLMetricType)metricType withAttributes:(NSDictionary *)attributes;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLShape.h b/platform/darwin/src/MGLShape.h
deleted file mode 100644
index 6954045fd7..0000000000
--- a/platform/darwin/src/MGLShape.h
+++ /dev/null
@@ -1,115 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLAnnotation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- `MGLShape` is an abstract class that represents a shape or annotation. Shapes
- constitute the content of a map — not only the overlays atop the map, but also
- the content that forms the base map.
-
- Create instances of `MGLPointAnnotation`, `MGLPointCollection`, `MGLPolyline`,
- `MGLMultiPolyline`, `MGLPolygon`, `MGLMultiPolygon`, or `MGLShapeCollection` in
- order to use `MGLShape`'s methods. Do not create instances of `MGLShape`
- directly, and do not create your own subclasses of this class. The shape
- classes correspond to the
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1">Geometry</a> object
- types in the GeoJSON standard, but some have nonstandard names for backwards
- compatibility.
-
- Although you do not create instances of this class directly, you can use its
- `+[MGLShape shapeWithData:encoding:error:]` factory method to create one of the
- concrete subclasses of `MGLShape` noted above from GeoJSON data. To access a
- shape’s attributes, use the corresponding `MGLFeature` class instead.
-
- You can add shapes to the map by adding them to an `MGLShapeSource` object.
- Configure the appearance of an `MGLShapeSource`’s or `MGLVectorTileSource`’s
- shapes collectively using a concrete instance of `MGLVectorStyleLayer`.
- Alternatively, you can add some kinds of shapes directly to a map view as
- annotations or overlays.
- */
-MGL_EXPORT
-@interface MGLShape : NSObject <MGLAnnotation, NSSecureCoding>
-
-#pragma mark Creating a Shape
-
-/**
- Returns an `MGLShape` object initialized with the given data interpreted as a
- string containing a GeoJSON object.
-
- If the GeoJSON object is a geometry, the returned value is a kind of
- `MGLShape`. If it is a feature object, the returned value is a kind of
- `MGLShape` that conforms to the `MGLFeature` protocol. If it is a feature
- collection object, the returned value is an instance of
- `MGLShapeCollectionFeature`.
-
- ### Example
-
- ```swift
- let url = mainBundle.url(forResource: "amsterdam", withExtension: "geojson")!
- let data = try! Data(contentsOf: url)
- let feature = try! MGLShape(data: data, encoding: String.Encoding.utf8.rawValue) as! MGLShapeCollectionFeature
- ```
-
- @param data String data containing GeoJSON source code.
- @param encoding The encoding used by `data`.
- @param outError Upon return, if an error has occurred, a pointer to an
- `NSError` object describing the error. Pass in `NULL` to ignore any error.
- @return An `MGLShape` object representation of `data`, or `nil` if `data` could
- not be parsed as valid GeoJSON source code. If `nil`, `outError` contains an
- `NSError` object describing the problem.
- */
-+ (nullable MGLShape *)shapeWithData:(NSData *)data encoding:(NSStringEncoding)encoding error:(NSError * _Nullable *)outError;
-
-#pragma mark Accessing the Shape Attributes
-
-/**
- The title of the shape annotation.
-
- The default value of this property is `nil`.
-
- This property is ignored when the shape is used in an `MGLShapeSource`. To name
- a shape used in a shape source, create an `MGLFeature` and add an attribute to
- the `MGLFeature.attributes` property.
- */
-@property (nonatomic, copy, nullable) NSString *title;
-
-/**
- The subtitle of the shape annotation. The default value of this property is
- `nil`.
-
- This property is ignored when the shape is used in an `MGLShapeSource`. To
- provide additional information about a shape used in a shape source, create an
- `MGLFeature` and add an attribute to the `MGLFeature.attributes` property.
- */
-@property (nonatomic, copy, nullable) NSString *subtitle;
-
-#if !TARGET_OS_IPHONE
-
-/**
- The tooltip of the shape annotation.
-
- The default value of this property is `nil`.
-
- This property is ignored when the shape is used in an `MGLShapeSource`.
- */
-@property (nonatomic, copy, nullable) NSString *toolTip;
-
-#endif
-
-#pragma mark Creating GeoJSON Data
-
-/**
- Returns the GeoJSON string representation of the shape encapsulated in a data
- object.
-
- @param encoding The string encoding to use.
- @return A data object containing the shape’s GeoJSON string representation.
- */
-- (NSData *)geoJSONDataUsingEncoding:(NSStringEncoding)encoding;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLShape.mm b/platform/darwin/src/MGLShape.mm
deleted file mode 100644
index 4ed546a3d2..0000000000
--- a/platform/darwin/src/MGLShape.mm
+++ /dev/null
@@ -1,121 +0,0 @@
-#import "MGLShape_Private.h"
-
-#import "MGLFeature_Private.h"
-
-#import "NSString+MGLAdditions.h"
-#import "MGLTypes.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MMEEventsManager.h"
-#endif
-
-#import <mbgl/util/geo.hpp>
-
-bool operator==(const CLLocationCoordinate2D lhs, const CLLocationCoordinate2D rhs) {
- return lhs.latitude == rhs.latitude && lhs.longitude == rhs.longitude;
-}
-
-@implementation MGLShape
-
-+ (nullable MGLShape *)shapeWithData:(NSData *)data encoding:(NSStringEncoding)encoding error:(NSError * _Nullable *)outError {
- NSString *string = [[NSString alloc] initWithData:data encoding:encoding];
- if (!string) {
- if (outError) {
- *outError = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeUnknown userInfo:nil];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:*outError];
-#endif
- }
- return nil;
- }
-
- try {
- const auto geojson = mapbox::geojson::parse(string.UTF8String);
- return MGLShapeFromGeoJSON(geojson);
- } catch (std::runtime_error &err) {
- if (outError) {
- *outError = [NSError errorWithDomain:MGLErrorDomain code:MGLErrorCodeUnknown userInfo:@{
- NSLocalizedFailureReasonErrorKey: @(err.what()),
- }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:*outError];
-#endif
- }
- return nil;
- }
-}
-
-- (mbgl::GeoJSON)geoJSONObject {
- return self.geometryObject;
-}
-
-- (mbgl::Geometry<double>)geometryObject {
- [NSException raise:MGLAbstractClassException
- format:@"MGLShape is an abstract class"];
- return mbgl::Point<double>();
-}
-
-- (NSData *)geoJSONDataUsingEncoding:(NSStringEncoding)encoding {
- auto geometry = self.geoJSONObject;
- NSString *string = @(mapbox::geojson::stringify(geometry).c_str());
- return [string dataUsingEncoding:NSUTF8StringEncoding];
-}
-
-+ (BOOL)supportsSecureCoding
-{
- return YES;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)coder
-{
- if (self = [super init]) {
- _title = [coder decodeObjectOfClass:[NSString class] forKey:@"title"];
- _subtitle = [coder decodeObjectOfClass:[NSString class] forKey:@"subtitle"];
-#if !TARGET_OS_IPHONE
- _toolTip = [coder decodeObjectOfClass:[NSString class] forKey:@"toolTip"];
-#endif
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [coder encodeObject:_title forKey:@"title"];
- [coder encodeObject:_subtitle forKey:@"subtitle"];
-#if !TARGET_OS_IPHONE
- [coder encodeObject:_toolTip forKey:@"toolTip"];
-#endif
-}
-
-- (BOOL)isEqual:(id)other
-{
- if (other == self) { return YES; }
- id <MGLAnnotation> annotation = other;
-
-#if TARGET_OS_IPHONE
- return ((!_title && ![annotation title]) || [_title isEqualToString:[annotation title]])
- && ((!_subtitle && ![annotation subtitle]) || [_subtitle isEqualToString:[annotation subtitle]]);
-#else
- return ((!_title && ![annotation title]) || [_title isEqualToString:[annotation title]])
- && ((!_subtitle && ![annotation subtitle]) || [_subtitle isEqualToString:[annotation subtitle]])
- && ((!_toolTip && ![annotation toolTip]) || [_toolTip isEqualToString:[annotation toolTip]]);
-#endif
-}
-
-- (NSUInteger)hash
-{
- NSUInteger hash = _title.hash + _subtitle.hash;
-#if !TARGET_OS_IPHONE
- hash += _toolTip.hash;
-#endif
- return hash;
-}
-
-- (CLLocationCoordinate2D)coordinate
-{
- [NSException raise:MGLAbstractClassException
- format:@"MGLShape is an abstract class"];
- return kCLLocationCoordinate2DInvalid;
-}
-
-@end
diff --git a/platform/darwin/src/MGLShapeCollection.h b/platform/darwin/src/MGLShapeCollection.h
deleted file mode 100644
index 08f3276496..0000000000
--- a/platform/darwin/src/MGLShapeCollection.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLShape.h"
-
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An `MGLShapeCollection` object represents a shape consisting of zero or more
- distinct but related shapes that are instances of `MGLShape`. The constituent
- shapes can be a mixture of different kinds of shapes.
-
- `MGLShapeCollection` is most commonly used to add multiple shapes to a single
- `MGLShapeSource`. Configure the appearance of an `MGLShapeSource`’s or
- `MGLVectorTileSource`’s shape collection collectively using an
- `MGLSymbolStyleLayer` object, or use multiple instances of
- `MGLCircleStyleLayer`, `MGLFillStyleLayer`, and `MGLLineStyleLayer` to
- configure the appearance of each kind of shape inside the collection.
-
- You cannot add an `MGLShapeCollection` object directly to a map view as an
- annotation. However, you can create individual `MGLPointAnnotation`,
- `MGLPolyline`, and `MGLPolygon` objects from the `shapes` array and add those
- annotation objects to the map view using the `-[MGLMapView addAnnotations:]`
- method.
-
- To represent a collection of point, polyline, or polygon shapes, it may be more
- convenient to use an `MGLPointCollection`, `MGLMultiPolyline`, or
- `MGLMultiPolygon` object, respectively. To access a shape collection’s
- attributes, use the corresponding `MGLFeature` object.
-
- A shape collection is known as a
- <a href="https://tools.ietf.org/html/rfc7946#section-3.1.8">GeometryCollection</a>
- geometry in GeoJSON.
- */
-MGL_EXPORT
-@interface MGLShapeCollection : MGLShape
-
-/**
- An array of shapes forming the shape collection.
- */
-@property (nonatomic, copy, readonly) NSArray<MGLShape *> *shapes;
-
-/**
- Creates and returns a shape collection consisting of the given shapes.
-
- @param shapes The array of shapes defining the shape collection. The data in
- this array is copied to the new object.
- @return A new shape collection object.
- */
-+ (instancetype)shapeCollectionWithShapes:(NSArray<MGLShape *> *)shapes;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLShapeCollection.mm b/platform/darwin/src/MGLShapeCollection.mm
deleted file mode 100644
index 5a0ef03340..0000000000
--- a/platform/darwin/src/MGLShapeCollection.mm
+++ /dev/null
@@ -1,80 +0,0 @@
-#import "MGLShapeCollection.h"
-
-#import "MGLShape_Private.h"
-#import "MGLFeature.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import <mbgl/style/conversion/geojson.hpp>
-
-@implementation MGLShapeCollection
-
-+ (instancetype)shapeCollectionWithShapes:(NSArray<MGLShape *> *)shapes {
- return [[self alloc] initWithShapes:shapes];
-}
-
-- (instancetype)initWithShapes:(NSArray<MGLShape *> *)shapes {
- MGLLogDebug(@"Initializing with %lu shapes.", (unsigned long)shapes.count);
- if (self = [super init]) {
- _shapes = shapes.copy;
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- MGLLogInfo(@"Initializing with coder.");
- if (self = [super initWithCoder:decoder]) {
- _shapes = [decoder decodeObjectOfClass:[NSArray class] forKey:@"shapes"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [super encodeWithCoder:coder];
- [coder encodeObject:_shapes forKey:@"shapes"];
-}
-
-- (BOOL)isEqual:(id)other {
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLShapeCollection class]]) return NO;
-
- MGLShapeCollection *otherShapeCollection = other;
- return [super isEqual:otherShapeCollection]
- && [_shapes isEqualToArray:otherShapeCollection.shapes];
-}
-
-- (NSUInteger)hash {
- NSUInteger hash = [super hash];
- for (MGLShape *shape in _shapes) {
- hash += [shape hash];
- }
- return hash;
-}
-
-- (CLLocationCoordinate2D)coordinate {
- return _shapes.firstObject.coordinate;
-}
-
-- (NSDictionary *)geoJSONDictionary {
- return @{@"type": @"GeometryCollection",
- @"geometries": [self geometryCollection]};
-}
-
-- (NSArray *)geometryCollection {
- NSMutableArray *geometries = [[NSMutableArray alloc] initWithCapacity:self.shapes.count];
- for (id shape in self.shapes) {
- NSDictionary *geometry = [shape geoJSONDictionary];
- [geometries addObject:geometry];
- }
- return [geometries copy];
-}
-
-- (mbgl::Geometry<double>)geometryObject {
- mapbox::geojson::geometry_collection collection;
- collection.reserve(self.shapes.count);
- for (MGLShape *shape in self.shapes) {
- collection.push_back([shape geometryObject]);
- }
- return collection;
-}
-
-@end
diff --git a/platform/darwin/src/MGLShapeOfflineRegion.h b/platform/darwin/src/MGLShapeOfflineRegion.h
deleted file mode 100644
index 7e871067b6..0000000000
--- a/platform/darwin/src/MGLShapeOfflineRegion.h
+++ /dev/null
@@ -1,86 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLOfflineRegion.h"
-#import "MGLShape.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An offline region defined by a style URL, geographic shape, and
- range of zoom levels.
-
- ### Example
- ```swift
- var coordinates = [
- CLLocationCoordinate2D(latitude: 45.522585, longitude: -122.685699),
- CLLocationCoordinate2D(latitude: 45.534611, longitude: -122.708873),
- CLLocationCoordinate2D(latitude: 45.530883, longitude: -122.678833)
- ]
-
- let triangle = MGLPolygon(coordinates: &coordinates, count: UInt(coordinates.count))
- let region = MGLShapeOfflineRegion(styleURL: MGLStyle.lightStyleURL, shape: triangle, fromZoomLevel: 11, toZoomLevel: 14)
- let context = "Triangle Region".data(using: .utf8)
- MGLOfflineStorage.shared.addPack(for: region, withContext: context!)
- ```
-
- This class requires fewer resources than MGLTilePyramidOfflineRegion
- for irregularly shaped regions.
- */
-MGL_EXPORT
-@interface MGLShapeOfflineRegion : NSObject <MGLOfflineRegion, NSSecureCoding, NSCopying>
-
-/**
- The shape for the geographic region covered by the downloaded
- tiles.
- */
-@property (nonatomic, readonly) MGLShape *shape;
-
-/**
- The minimum zoom level for which to download tiles and other resources.
-
- For more information about zoom levels, `-[MGLMapView zoomLevel]`.
- */
-@property (nonatomic, readonly) double minimumZoomLevel;
-
-/**
- The maximum zoom level for which to download tiles and other resources.
-
- For more information about zoom levels, `-[MGLMapView zoomLevel]`.
- */
-@property (nonatomic, readonly) double maximumZoomLevel;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- Initializes a newly created offline region with the given style URL, geometry,
- and range of zoom levels.
-
- This is the designated initializer for `MGLShapeOfflineRegion`.
-
- @param styleURL URL of the map style for which to download resources. The URL
- may be a full HTTP or HTTPS URL or a Mapbox
- style URL (`mapbox://styles/{user}/{style}`). Specify `nil` for the default style.
- Relative file URLs cannot be used as offline style URLs. To download the
- online resources required by a local style, specify a URL to an online copy
- of the style.
- @param shape The shape of the geographic region to be covered by
- the downloaded tiles.
- @param minimumZoomLevel The minimum zoom level to be covered by the downloaded
- tiles. This parameter should be set to at least 0 but no greater than the
- value of the `maximumZoomLevel` parameter. For each required tile source, if
- this parameter is set to a value less than the tile source’s minimum zoom
- level, the download covers zoom levels down to the tile source’s minimum
- zoom level.
- @param maximumZoomLevel The maximum zoom level to be covered by the downloaded
- tiles. This parameter should be set to at least the value of the
- `minimumZoomLevel` parameter. For each required tile source, if this
- parameter is set to a value greater than the tile source’s minimum zoom
- level, the download covers zoom levels up to the tile source’s maximum zoom
- level.
- */
-- (instancetype)initWithStyleURL:(nullable NSURL *)styleURL shape:(MGLShape *)shape fromZoomLevel:(double)minimumZoomLevel toZoomLevel:(double)maximumZoomLevel NS_DESIGNATED_INITIALIZER;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLShapeOfflineRegion.mm b/platform/darwin/src/MGLShapeOfflineRegion.mm
deleted file mode 100644
index b4f4b5e92a..0000000000
--- a/platform/darwin/src/MGLShapeOfflineRegion.mm
+++ /dev/null
@@ -1,150 +0,0 @@
-#import "MGLShapeOfflineRegion.h"
-
-#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
- #import <Cocoa/Cocoa.h>
-#else
- #import <UIKit/UIKit.h>
-#endif
-
-#import "MGLOfflineRegion_Private.h"
-#import "MGLShapeOfflineRegion_Private.h"
-#import "MGLFeature_Private.h"
-#import "MGLShape_Private.h"
-#import "MGLStyle.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MMEConstants.h"
-#endif
-
-@interface MGLShapeOfflineRegion () <MGLOfflineRegion_Private, MGLShapeOfflineRegion_Private>
-
-@end
-
-@implementation MGLShapeOfflineRegion {
- NSURL *_styleURL;
-}
-
-@synthesize styleURL = _styleURL;
-@synthesize includesIdeographicGlyphs = _includesIdeographicGlyphs;
-
--(NSDictionary *)offlineStartEventAttributes {
- return @{
- #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- MMEEventKeyShapeForOfflineRegion: @"shaperegion",
- MMEEventKeyMinZoomLevel: @(self.minimumZoomLevel),
- MMEEventKeyMaxZoomLevel: @(self.maximumZoomLevel),
- MMEEventKeyStyleURL: self.styleURL.absoluteString ?: [NSNull null]
- #endif
- };
-}
-
-+ (BOOL)supportsSecureCoding {
- return YES;
-}
-
-- (instancetype)init {
- MGLLogInfo(@"Calling this initializer is not allowed.");
- [NSException raise:@"Method unavailable"
- format:
- @"-[MGLShapeOfflineRegion init] is unavailable. "
- @"Use -initWithStyleURL:shape:fromZoomLevel:toZoomLevel: instead."];
- return nil;
-}
-
-- (instancetype)initWithStyleURL:(NSURL *)styleURL shape:(MGLShape *)shape fromZoomLevel:(double)minimumZoomLevel toZoomLevel:(double)maximumZoomLevel {
- MGLLogDebug(@"Initializing styleURL: %@ shape: %@ fromZoomLevel: %f toZoomLevel: %f", styleURL, shape, minimumZoomLevel, maximumZoomLevel);
- if (self = [super init]) {
- if (!styleURL) {
- styleURL = [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion];
- }
-
- if (!styleURL.scheme) {
- [NSException raise:@"Invalid style URL" format:
- @"%@ does not support setting a relative file URL as the style URL. "
- @"To download the online resources required by this style, "
- @"specify a URL to an online copy of this style. "
- @"For Mapbox-hosted styles, use the mapbox: scheme.",
- NSStringFromClass([self class])];
- }
-
- _styleURL = styleURL;
- _shape = shape;
- _minimumZoomLevel = minimumZoomLevel;
- _maximumZoomLevel = maximumZoomLevel;
- _includesIdeographicGlyphs = NO;
- }
- return self;
-}
-
-- (instancetype)initWithOfflineRegionDefinition:(const mbgl::OfflineGeometryRegionDefinition &)definition {
- NSURL *styleURL = [NSURL URLWithString:@(definition.styleURL.c_str())];
- MGLShape *shape = MGLShapeFromGeoJSON(definition.geometry);
- MGLShapeOfflineRegion* result = [self initWithStyleURL:styleURL shape:shape fromZoomLevel:definition.minZoom toZoomLevel:definition.maxZoom];
- result.includesIdeographicGlyphs = definition.includeIdeographs;
- return result;
-}
-
-- (const mbgl::OfflineRegionDefinition)offlineRegionDefinition {
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- const float scaleFactor = [UIScreen instancesRespondToSelector:@selector(nativeScale)] ? [[UIScreen mainScreen] nativeScale] : [[UIScreen mainScreen] scale];
-#elif TARGET_OS_MAC
- const float scaleFactor = [NSScreen mainScreen].backingScaleFactor;
-#endif
- return mbgl::OfflineGeometryRegionDefinition(_styleURL.absoluteString.UTF8String,
- _shape.geometryObject,
- _minimumZoomLevel, _maximumZoomLevel,
- scaleFactor, _includesIdeographicGlyphs);
-}
-
-- (nullable instancetype)initWithCoder:(NSCoder *)coder {
- MGLLogInfo(@"Initializing with coder.");
- NSURL *styleURL = [coder decodeObjectForKey:@"styleURL"];
- MGLShape * shape = [coder decodeObjectForKey:@"shape"];
- double minimumZoomLevel = [coder decodeDoubleForKey:@"minimumZoomLevel"];
- double maximumZoomLevel = [coder decodeDoubleForKey:@"maximumZoomLevel"];
-
- MGLShapeOfflineRegion* result = [self initWithStyleURL:styleURL shape:shape fromZoomLevel:minimumZoomLevel toZoomLevel:maximumZoomLevel];
- result.includesIdeographicGlyphs = [coder decodeBoolForKey:@"includesIdeographicGlyphs"];
- return result;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [coder encodeObject:_styleURL forKey:@"styleURL"];
- [coder encodeObject:_shape forKey:@"shape"];
- [coder encodeDouble:_maximumZoomLevel forKey:@"maximumZoomLevel"];
- [coder encodeDouble:_minimumZoomLevel forKey:@"minimumZoomLevel"];
- [coder encodeBool:_includesIdeographicGlyphs forKey:@"includesIdeographicGlyphs"];
-}
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- MGLShapeOfflineRegion* result = [[[self class] allocWithZone:zone] initWithStyleURL:_styleURL shape:_shape fromZoomLevel:_minimumZoomLevel toZoomLevel:_maximumZoomLevel];
- result.includesIdeographicGlyphs = _includesIdeographicGlyphs;
- return result;
-}
-
-- (BOOL)isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[self class]]) {
- return NO;
- }
-
- MGLShapeOfflineRegion *otherRegion = other;
- return (_minimumZoomLevel == otherRegion->_minimumZoomLevel
- && _maximumZoomLevel == otherRegion->_maximumZoomLevel
- && _shape.geometryObject == otherRegion->_shape.geometryObject
- && [_styleURL isEqual:otherRegion->_styleURL]
- && _includesIdeographicGlyphs == otherRegion->_includesIdeographicGlyphs);
-}
-
-- (NSUInteger)hash {
- return (_styleURL.hash
- + _shape.hash
- + @(_minimumZoomLevel).hash + @(_maximumZoomLevel).hash
- + @(_includesIdeographicGlyphs).hash);
-}
-
-@end
diff --git a/platform/darwin/src/MGLShapeOfflineRegion_Private.h b/platform/darwin/src/MGLShapeOfflineRegion_Private.h
deleted file mode 100644
index 2ab44ad405..0000000000
--- a/platform/darwin/src/MGLShapeOfflineRegion_Private.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLOfflineRegion.h"
-
-#include <mbgl/storage/offline.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLShapeOfflineRegion_Private <MGLOfflineRegion>
-
-/**
- Initializes and returns an offline region backed by the given C++ region
- definition object.
-
- @param definition A reference to an offline region definition backing the
- offline region.
- */
-- (instancetype)initWithOfflineRegionDefinition:(const mbgl::OfflineGeometryRegionDefinition &)definition;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLShapeSource.h b/platform/darwin/src/MGLShapeSource.h
deleted file mode 100644
index 675c219300..0000000000
--- a/platform/darwin/src/MGLShapeSource.h
+++ /dev/null
@@ -1,400 +0,0 @@
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-#import "MGLSource.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLFeature;
-@class MGLPointFeature;
-@class MGLPointFeatureCluster;
-@class MGLShape;
-
-/**
- Options for `MGLShapeSource` objects.
- */
-typedef NSString *MGLShapeSourceOption NS_STRING_ENUM;
-
-/**
- An `NSNumber` object containing a Boolean enabling or disabling clustering.
- If the `shape` property contains point shapes, setting this option to
- `YES` clusters the points by radius into groups. The default value is `NO`.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-cluster"><code>cluster</code></a>
- source property in the Mapbox Style Specification.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">Cluster point data</a> and <a href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">Use images to cluster point data</a> examples to learn how to cluster point data with this `MGLShapeSourceOption`.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionClustered;
-
-/**
- An `NSNumber` object containing an integer; specifies the radius of each
- cluster if clustering is enabled. A value of 512 produces a radius equal to
- the width of a tile. The default value is 50.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionClusterRadius;
-
-/**
- An `NSDictionary` object where the key is an `NSString`. The dictionary key will
- be the feature attribute key. The resulting attribute value is
- aggregated from the clustered points. The dictionary value is an `NSArray`
- consisting of two `NSExpression` objects.
-
- The first object determines how the attribute values are accumulated from the
- cluster points. It is an `NSExpression` with an expression function that accepts
- two or more arguments, such as `sum` or `max`. The arguments should be
- `featureAccumulated` and the previously defined feature attribute key. The
- resulting value is assigned to the specified attribute key.
-
- The second `NSExpression` in the array determines which
- attribute values are accessed from individual features within a cluster.
-
- ```swift
- let firstExpression = NSExpression(format: "sum:({$featureAccumulated, sumValue})")
- let secondExpression = NSExpression(forKeyPath: "magnitude")
- let clusterPropertiesDictionary = ["sumValue" : [firstExpression, secondExpression]]
-
- let options : [MGLShapeSourceOption : Any] = [.clustered : true,
- .clusterProperties: clusterPropertiesDictionary]
- ```
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-clusterProperties"><code>clusterProperties</code></a>
- source property in the Mapbox Style Specification.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionClusterProperties;
-/**
- An `NSNumber` object containing an integer; specifies the maximum zoom level at
- which to cluster points if clustering is enabled. Defaults to one zoom level
- less than the value of `MGLShapeSourceOptionMaximumZoomLevel` so that, at the
- maximum zoom level, the shapes are not clustered.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-clusterMaxZoom"><code>clusterMaxZoom</code></a>
- source property in the Mapbox Style Specification.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevelForClustering;
-
-/**
- An `NSNumber` object containing an integer; specifies the minimum zoom level at
- which to create vector tiles. The default value is 0.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-minzoom"><code>minzoom</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionMinimumZoomLevel;
-
-/**
- An `NSNumber` object containing an integer; specifies the maximum zoom level at
- which to create vector tiles. A greater value produces greater detail at high
- zoom levels. The default value is 18.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-maxzoom"><code>maxzoom</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevel;
-
-/**
- An `NSNumber` object containing an integer; specifies the size of the tile
- buffer on each side. A value of 0 produces no buffer. A value of 512 produces a
- buffer as wide as the tile itself. Larger values produce fewer rendering
- artifacts near tile edges and slower performance. The default value is 128.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-buffer"><code>buffer</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionBuffer;
-
-/**
- An `NSNumber` object containing a double; specifies the Douglas-Peucker
- simplification tolerance. A greater value produces simpler geometries and
- improves performance. The default value is 0.375.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-tolerance"><code>tolerance</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionSimplificationTolerance;
-
-/**
- An `NSNumber` object containing a Boolean enabling or disabling calculating line distance metrics.
-
- Set this property to `YES` in order for the `MGLLineStyleLayer.lineGradient` property to have its intended effect.
- The default value is `NO`.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-geojson-lineMetrics"><code>lineMetrics</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionLineDistanceMetrics;
-
-/**
- `MGLShapeSource` is a map content source that supplies vector shapes to be
- shown on the map. The shapes may be instances of `MGLShape` or `MGLFeature`,
- or they may be defined by local or external
- <a href="http://geojson.org/">GeoJSON</a> code. A shape source is added to an
- `MGLStyle` object along with an `MGLVectorStyleLayer` object. The vector style
- layer defines the appearance of any content supplied by the shape source. You
- can update a shape source by setting its `shape` or `URL` property.
-
- `MGLShapeSource` is optimized for data sets that change dynamically and fit
- completely in memory. For large data sets that do not fit completely in memory,
- use the `MGLComputedShapeSource` or `MGLVectorTileSource` class.
-
- Each
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson"><code>geojson</code></a>
- source defined by the style JSON file is represented at runtime by an
- `MGLShapeSource` object that you can use to refine the map’s content and
- initialize new style layers. You can also add and remove sources dynamically
- using methods such as `-[MGLStyle addSource:]` and
- `-[MGLStyle sourceWithIdentifier:]`.
-
- Any vector style layer initialized with a shape source should have a `nil`
- value in its `sourceLayerIdentifier` property.
-
- ### Example
-
- ```swift
- var coordinates: [CLLocationCoordinate2D] = [
- CLLocationCoordinate2D(latitude: 37.77, longitude: -122.42),
- CLLocationCoordinate2D(latitude: 38.91, longitude: -77.04),
- ]
- let polyline = MGLPolylineFeature(coordinates: &coordinates, count: UInt(coordinates.count))
- let source = MGLShapeSource(identifier: "lines", features: [polyline], options: nil)
- mapView.style?.addSource(source)
- ```
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">Cluster point data</a>, <a href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">Use images to cluster point data</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/live-data/">Add live data</a> examples to learn how to add data to your map using this `MGLSource` object.
- */
-MGL_EXPORT
-@interface MGLShapeSource : MGLSource
-
-#pragma mark Initializing a Source
-
-/**
- Returns a shape source with an identifier, URL, and dictionary of options for
- the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- @param identifier A string that uniquely identifies the source.
- @param url An HTTP(S) URL, absolute file URL, or local file URL relative to the
- current application’s resource bundle.
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/live-data/">
- Add live data</a> example to learn how to add live data to your map by
- updating the an `MGLShapeSource` object's `URL` property.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier URL:(NSURL *)url options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options NS_DESIGNATED_INITIALIZER;
-
-/**
- Returns a shape source with an identifier, a shape, and dictionary of options
- for the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- To specify attributes about the shape, use an instance of an `MGLShape`
- subclass that conforms to the `MGLFeature` protocol, such as `MGLPointFeature`.
- To include multiple shapes in the source, use an `MGLShapeCollection` or
- `MGLShapeCollectionFeature` object, or use the
- `-initWithIdentifier:features:options:` or
- `-initWithIdentifier:shapes:options:` methods.
-
- To create a shape from GeoJSON source code, use the
- `+[MGLShape shapeWithData:encoding:error:]` method.
-
- @param identifier A string that uniquely identifies the source.
- @param shape A concrete subclass of `MGLShape`
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-animate-line/">
- Animate a line</a> example to learn how to animate line data by continously
- updating an `MGLShapeSource`'s `shape` attribute.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier shape:(nullable MGLShape *)shape options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options NS_DESIGNATED_INITIALIZER;
-
-/**
- Returns a shape source with an identifier, an array of features, and a dictionary
- of options for the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- Unlike `-initWithIdentifier:shapes:options:`, this method accepts `MGLFeature`
- instances, such as `MGLPointFeature` objects, whose attributes you can use when
- applying a predicate to `MGLVectorStyleLayer` or configuring a style layer’s
- appearance.
-
- To create a shape from GeoJSON source code, use the
- `+[MGLShape shapeWithData:encoding:error:]` method.
-
- @param identifier A string that uniquely identifies the source.
- @param features An array of objects that conform to the MGLFeature protocol.
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier features:(NSArray<MGLShape<MGLFeature> *> *)features options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options;
-
-/**
- Returns a shape source with an identifier, an array of shapes, and a dictionary of
- options for the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- Any `MGLFeature` instance passed into this initializer is treated as an ordinary
- shape, causing any attributes to be inaccessible to an `MGLVectorStyleLayer` when
- evaluating a predicate or configuring certain layout or paint attributes. To
- preserve the attributes associated with each feature, use the
- `-initWithIdentifier:features:options:` method instead.
-
- To create a shape from GeoJSON source code, use the
- `+[MGLShape shapeWithData:encoding:error:]` method.
-
- @param identifier A string that uniquely identifies the source.
- @param shapes An array of shapes; each shape is a member of a concrete subclass of MGLShape.
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier shapes:(NSArray<MGLShape *> *)shapes options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options;
-
-#pragma mark Accessing a Source’s Content
-
-/**
- The contents of the source. A shape can represent a GeoJSON geometry, a
- feature, or a collection of features.
-
- If the receiver was initialized using `-initWithIdentifier:URL:options:`, this
- property is set to `nil`. This property is unavailable until the receiver is
- passed into `-[MGLStyle addSource:]`.
-
- You can get/set the shapes within a collection via this property. Actions must
- be performed on the application's main thread.
- */
-@property (nonatomic, copy, nullable) MGLShape *shape;
-
-/**
- The URL to the GeoJSON document that specifies the contents of the source.
-
- If the receiver was initialized using `-initWithIdentifier:shape:options:`,
- this property is set to `nil`.
- */
-@property (nonatomic, copy, nullable) NSURL *URL;
-
-/**
- Returns an array of map features for this source, filtered by the given
- predicate.
-
- Each object in the returned array represents a feature for the current style
- and provides access to attributes specified via the `shape` property.
-
- Features come from tiled GeoJSON data that is converted to tiles internally,
- so feature geometries are clipped at tile boundaries and features
- may appear duplicated across tiles. For example, suppose this source contains a
- long polyline representing a road. The resulting array includes those parts of
- the road that lie within the map tiles that the source has loaded, even if the
- road extends into other tiles. The portion of the road within each map tile is
- included individually.
-
- Returned features may not necessarily be visible to the user at the time they
- are loaded: the style may lack a layer that draws the features in question. To
- obtain only _visible_ features, use the
- `-[MGLMapView visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:predicate:]`
- or
- `-[MGLMapView visibleFeaturesInRect:inStyleLayersWithIdentifiers:predicate:]`
- method.
-
- @param predicate A predicate to filter the returned features. Use `nil` to
- include all features in the source.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the source that match the predicate.
- */
-- (NSArray<id <MGLFeature>> *)featuresMatchingPredicate:(nullable NSPredicate *)predicate;
-
-/**
- Returns an array of map features that are the leaves of the specified cluster.
- ("Leaves" are the original points that belong to the cluster.)
-
- This method supports pagination; you supply an offset (number of features to skip)
- and a maximum number of features to return.
-
- @param cluster An object of type `MGLPointFeatureCluster` (that conforms to the `MGLCluster` protocol).
- @param offset Number of features to skip.
- @param limit The maximum number of features to return
-
- @return An array of objects that conform to the `MGLFeature` protocol.
- */
-- (NSArray<id <MGLFeature>> *)leavesOfCluster:(MGLPointFeatureCluster *)cluster offset:(NSUInteger)offset limit:(NSUInteger)limit;
-
-/**
- Returns an array of map features that are the immediate children of the specified
- cluster *on the next zoom level*. The may include features that also conform to
- the `MGLCluster` protocol (currently only objects of type `MGLPointFeatureCluster`).
-
- @param cluster An object of type `MGLPointFeatureCluster` (that conforms to the `MGLCluster` protocol).
-
- @return An array of objects that conform to the `MGLFeature` protocol.
-
- @note The returned array may contain the `cluster` that was passed in, if the next
- zoom level doesn't match the zoom level for expanding that cluster. See
- `-[MGLShapeSource zoomLevelForExpandingCluster:]`.
- */
-- (NSArray<id<MGLFeature>> *)childrenOfCluster:(MGLPointFeatureCluster *)cluster;
-
-/**
- Returns the zoom level at which the given cluster expands.
-
- @param cluster An object of type `MGLPointFeatureCluster` (that conforms to the `MGLCluster` protocol).
-
- @return Zoom level. This should be >= 0; any negative return value should be
- considered an error.
- */
-- (double)zoomLevelForExpandingCluster:(MGLPointFeatureCluster *)cluster;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLShapeSource.mm b/platform/darwin/src/MGLShapeSource.mm
deleted file mode 100644
index 2590865ac2..0000000000
--- a/platform/darwin/src/MGLShapeSource.mm
+++ /dev/null
@@ -1,355 +0,0 @@
-#import "MGLFoundation_Private.h"
-#import "MGLShapeSource_Private.h"
-
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLStyle_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLMapView_Private.h"
-#import "MGLSource_Private.h"
-#import "MGLFeature_Private.h"
-#import "MGLShape_Private.h"
-#import "MGLCluster.h"
-
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSURL+MGLAdditions.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/style/sources/geojson_source.hpp>
-#include <mbgl/renderer/renderer.hpp>
-
-const MGLShapeSourceOption MGLShapeSourceOptionBuffer = @"MGLShapeSourceOptionBuffer";
-const MGLShapeSourceOption MGLShapeSourceOptionClusterRadius = @"MGLShapeSourceOptionClusterRadius";
-const MGLShapeSourceOption MGLShapeSourceOptionClustered = @"MGLShapeSourceOptionClustered";
-const MGLShapeSourceOption MGLShapeSourceOptionClusterProperties = @"MGLShapeSourceOptionClusterProperties";
-const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevel = @"MGLShapeSourceOptionMaximumZoomLevel";
-const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevelForClustering = @"MGLShapeSourceOptionMaximumZoomLevelForClustering";
-const MGLShapeSourceOption MGLShapeSourceOptionMinimumZoomLevel = @"MGLShapeSourceOptionMinimumZoomLevel";
-const MGLShapeSourceOption MGLShapeSourceOptionSimplificationTolerance = @"MGLShapeSourceOptionSimplificationTolerance";
-const MGLShapeSourceOption MGLShapeSourceOptionLineDistanceMetrics = @"MGLShapeSourceOptionLineDistanceMetrics";
-
-mbgl::Immutable<mbgl::style::GeoJSONOptions> MGLGeoJSONOptionsFromDictionary(NSDictionary<MGLShapeSourceOption, id> *options) {
- auto geoJSONOptions = mbgl::makeMutable<mbgl::style::GeoJSONOptions>();
-
- if (NSNumber *value = options[MGLShapeSourceOptionMinimumZoomLevel]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionMaximumZoomLevel must be an NSNumber."];
- }
- geoJSONOptions->minzoom = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionMaximumZoomLevel]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionMaximumZoomLevel must be an NSNumber."];
- }
- geoJSONOptions->maxzoom = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionBuffer]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionBuffer must be an NSNumber."];
- }
- geoJSONOptions->buffer = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionSimplificationTolerance]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionSimplificationTolerance must be an NSNumber."];
- }
- geoJSONOptions->tolerance = value.doubleValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionClusterRadius]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClusterRadius must be an NSNumber."];
- }
- geoJSONOptions->clusterRadius = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionMaximumZoomLevelForClustering]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionMaximumZoomLevelForClustering must be an NSNumber."];
- }
- geoJSONOptions->clusterMaxZoom = value.integerValue;
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionClustered]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClustered must be an NSNumber."];
- }
- geoJSONOptions->cluster = value.boolValue;
- }
-
- if (NSDictionary *value = options[MGLShapeSourceOptionClusterProperties]) {
- if (![value isKindOfClass:[NSDictionary<NSString *, NSArray *> class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClusterProperties must be an NSDictionary with an NSString as a key and an array containing two NSExpression objects as a value."];
- }
-
- NSEnumerator *stringEnumerator = [value keyEnumerator];
- NSString *key;
-
- while (key = [stringEnumerator nextObject]) {
- NSArray *expressionsArray = value[key];
- if (![expressionsArray isKindOfClass:[NSArray class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClusterProperties dictionary member value must be an array containing two objects."];
- }
- // Check that the array has 2 values. One should be a the reduce expression and one should be the map expression.
- if ([expressionsArray count] != 2) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClusterProperties member value requires array of two objects."];
- }
-
- // reduceExpression should be a valid NSExpression
- NSExpression *reduceExpression = expressionsArray[0];
- if (![reduceExpression isKindOfClass:[NSExpression class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClusterProperties array value requires two expression objects."];
- }
- auto reduce = MGLClusterPropertyFromNSExpression(reduceExpression);
- if (!reduce) {
- [NSException raise:NSInvalidArgumentException
- format:@"Failed to convert MGLShapeSourceOptionClusterProperties reduce expression."];
- }
-
- // mapExpression should be a valid NSExpression
- NSExpression *mapExpression = expressionsArray[1];
- if (![mapExpression isKindOfClass:[NSExpression class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionClusterProperties member value must contain a valid NSExpression."];
- }
- auto map = MGLClusterPropertyFromNSExpression(mapExpression);
- if (!map) {
- [NSException raise:NSInvalidArgumentException
- format:@"Failed to convert MGLShapeSourceOptionClusterProperties map expression."];
- }
-
- std::string keyString = std::string([key UTF8String]);
-
- geoJSONOptions->clusterProperties.emplace(keyString, std::make_pair(std::move(map), std::move(reduce)));
- }
- }
-
- if (NSNumber *value = options[MGLShapeSourceOptionLineDistanceMetrics]) {
- if (![value isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLShapeSourceOptionLineDistanceMetrics must be an NSNumber."];
- }
- geoJSONOptions->lineMetrics = value.boolValue;
- }
-
- return geoJSONOptions;
-}
-
-@interface MGLShapeSource ()
-
-@property (nonatomic, readwrite) NSDictionary *options;
-@property (nonatomic, readonly) mbgl::style::GeoJSONSource *rawSource;
-
-@end
-
-@implementation MGLShapeSource
-
-- (instancetype)initWithIdentifier:(NSString *)identifier URL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options {
- auto geoJSONOptions = MGLGeoJSONOptionsFromDictionary(options);
- auto source = std::make_unique<mbgl::style::GeoJSONSource>(identifier.UTF8String, std::move(geoJSONOptions));
- if (self = [super initWithPendingSource:std::move(source)]) {
- self.URL = url;
- }
- return self;
-}
-
-- (instancetype)initWithIdentifier:(NSString *)identifier shape:(nullable MGLShape *)shape options:(NSDictionary<MGLShapeSourceOption, id> *)options {
- auto geoJSONOptions = MGLGeoJSONOptionsFromDictionary(options);
- auto source = std::make_unique<mbgl::style::GeoJSONSource>(identifier.UTF8String, std::move(geoJSONOptions));
- if (self = [super initWithPendingSource:std::move(source)]) {
- if ([shape isMemberOfClass:[MGLShapeCollection class]]) {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSLog(@"MGLShapeCollection initialized with MGLFeatures will not retain attributes."
- @"Use MGLShapeCollectionFeature to retain attributes instead."
- @"This will be logged only once.");
- });
- }
- self.shape = shape;
- }
- return self;
-}
-
-- (instancetype)initWithIdentifier:(NSString *)identifier features:(NSArray<MGLShape<MGLFeature> *> *)features options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options {
- for (id <MGLFeature> feature in features) {
- if (![feature conformsToProtocol:@protocol(MGLFeature)]) {
- [NSException raise:NSInvalidArgumentException format:@"The object %@ included in the features argument does not conform to the MGLFeature protocol.", feature];
- }
- }
- MGLShapeCollectionFeature *shapeCollectionFeature = [MGLShapeCollectionFeature shapeCollectionWithShapes:features];
- return [self initWithIdentifier:identifier shape:shapeCollectionFeature options:options];
-}
-
-- (instancetype)initWithIdentifier:(NSString *)identifier shapes:(NSArray<MGLShape *> *)shapes options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options {
- MGLShapeCollection *shapeCollection = [MGLShapeCollection shapeCollectionWithShapes:shapes];
- return [self initWithIdentifier:identifier shape:shapeCollection options:options];
-}
-
-- (mbgl::style::GeoJSONSource *)rawSource {
- return (mbgl::style::GeoJSONSource *)super.rawSource;
-}
-
-- (NSURL *)URL {
- MGLAssertStyleSourceIsValid();
- auto url = self.rawSource->getURL();
- return url ? [NSURL URLWithString:@(url->c_str())] : nil;
-}
-
-- (void)setURL:(NSURL *)url {
- MGLAssertStyleSourceIsValid();
- if (url) {
- self.rawSource->setURL(url.mgl_URLByStandardizingScheme.absoluteString.UTF8String);
- _shape = nil;
- } else {
- self.shape = nil;
- }
-}
-
-- (void)setShape:(MGLShape *)shape {
- MGLAssertStyleSourceIsValid();
- self.rawSource->setGeoJSON({ shape.geoJSONObject });
- _shape = shape;
-}
-
-- (NSString *)description {
- if (self.rawSource) {
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@; URL = %@; shape = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier, self.URL, self.shape];
- }
- else {
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@; URL = <unknown>; shape = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier, self.shape];
- }
-}
-
-- (NSArray<id <MGLFeature>> *)featuresMatchingPredicate:(nullable NSPredicate *)predicate {
- MGLAssertStyleSourceIsValid();
- mbgl::optional<mbgl::style::Filter> optionalFilter;
- if (predicate) {
- optionalFilter = predicate.mgl_filter;
- }
-
- std::vector<mbgl::Feature> features;
- if (self.mapView) {
- features = self.mapView.renderer->querySourceFeatures(self.rawSource->getID(), { {}, optionalFilter });
- }
- return MGLFeaturesFromMBGLFeatures(features);
-}
-
-#pragma mark - MGLCluster management
-
-- (mbgl::optional<mbgl::FeatureExtensionValue>)featureExtensionValueOfCluster:(MGLShape<MGLCluster> *)cluster extension:(std::string)extension options:(const std::map<std::string, mbgl::Value>)options {
- MGLAssertStyleSourceIsValid();
- mbgl::optional<mbgl::FeatureExtensionValue> extensionValue;
-
- // Check parameters
- if (!self.rawSource || !self.mapView || !cluster) {
- return extensionValue;
- }
-
- auto geoJSON = [cluster geoJSONObject];
-
- if (!geoJSON.is<mbgl::GeoJSONFeature>()) {
- MGLAssert(0, @"cluster geoJSON object is not a feature.");
- return extensionValue;
- }
-
- auto clusterFeature = geoJSON.get<mbgl::GeoJSONFeature>();
-
- extensionValue = self.mapView.renderer->queryFeatureExtensions(self.rawSource->getID(),
- clusterFeature,
- "supercluster",
- extension,
- options);
- return extensionValue;
-}
-
-- (NSArray<id <MGLFeature>> *)leavesOfCluster:(MGLPointFeatureCluster *)cluster offset:(NSUInteger)offset limit:(NSUInteger)limit {
- const std::map<std::string, mbgl::Value> options = {
- { "limit", static_cast<uint64_t>(limit) },
- { "offset", static_cast<uint64_t>(offset) }
- };
-
- auto featureExtension = [self featureExtensionValueOfCluster:cluster extension:"leaves" options:options];
-
- if (!featureExtension) {
- return @[];
- }
-
- if (!featureExtension->is<mbgl::FeatureCollection>()) {
- return @[];
- }
-
- std::vector<mbgl::GeoJSONFeature> leaves = featureExtension->get<mbgl::FeatureCollection>();
- return MGLFeaturesFromMBGLFeatures(leaves);
-}
-
-- (NSArray<id <MGLFeature>> *)childrenOfCluster:(MGLPointFeatureCluster *)cluster {
- auto featureExtension = [self featureExtensionValueOfCluster:cluster extension:"children" options:{}];
-
- if (!featureExtension) {
- return @[];
- }
-
- if (!featureExtension->is<mbgl::FeatureCollection>()) {
- return @[];
- }
-
- std::vector<mbgl::GeoJSONFeature> leaves = featureExtension->get<mbgl::FeatureCollection>();
- return MGLFeaturesFromMBGLFeatures(leaves);
-}
-
-- (double)zoomLevelForExpandingCluster:(MGLPointFeatureCluster *)cluster {
- auto featureExtension = [self featureExtensionValueOfCluster:cluster extension:"expansion-zoom" options:{}];
-
- if (!featureExtension) {
- return -1.0;
- }
-
- if (!featureExtension->is<mbgl::Value>()) {
- return -1.0;
- }
-
- auto value = featureExtension->get<mbgl::Value>();
- if (value.is<uint64_t>()) {
- auto zoom = value.get<uint64_t>();
- return static_cast<double>(zoom);
- }
-
- return -1.0;
-}
-
-- (void)debugRecursiveLogForFeature:(id <MGLFeature>)feature indent:(NSUInteger)indent {
- NSString *description = feature.description;
-
- // Want our recursive log on a single line
- NSString *log = [description stringByReplacingOccurrencesOfString:@"\\s+"
- withString:@" "
- options:NSRegularExpressionSearch
- range:NSMakeRange(0, description.length)];
-
- printf("%*s%s\n", (int)indent, "", log.UTF8String);
-
- MGLPointFeatureCluster *cluster = MGL_OBJC_DYNAMIC_CAST(feature, MGLPointFeatureCluster);
-
- if (cluster) {
- for (id <MGLFeature> child in [self childrenOfCluster:cluster]) {
- [self debugRecursiveLogForFeature:child indent:indent + 4];
- }
- }
-}
-
-@end
diff --git a/platform/darwin/src/MGLShapeSource_Private.h b/platform/darwin/src/MGLShapeSource_Private.h
deleted file mode 100644
index 940c80a17d..0000000000
--- a/platform/darwin/src/MGLShapeSource_Private.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#import "MGLFoundation.h"
-#import "MGLShapeSource.h"
-
-#include <mbgl/util/immutable.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-namespace mbgl {
- namespace style {
- struct GeoJSONOptions;
- }
-}
-
-MGL_EXPORT
-mbgl::Immutable<mbgl::style::GeoJSONOptions> MGLGeoJSONOptionsFromDictionary(NSDictionary<MGLShapeSourceOption, id> *options);
-
-@interface MGLShapeSource (Private)
-
-/**
- :nodoc:
- Debug log showing structure of an `MGLFeature`. This method recurses in the case
- that the feature conforms to `MGLCluster`. This method is used for testing and
- should be considered experimental, likely to be removed or changed in future
- releases.
-
- @param feature An object that conforms to the `MGLFeature` protocol.
- @param indent Used during recursion. Specify 0.
- */
-
-- (void)debugRecursiveLogForFeature:(id<MGLFeature>)feature indent:(NSUInteger)indent;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLShape_Private.h b/platform/darwin/src/MGLShape_Private.h
deleted file mode 100644
index 9821d49176..0000000000
--- a/platform/darwin/src/MGLShape_Private.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#import "MGLShape.h"
-
-#import <mbgl/util/geojson.hpp>
-#import <mbgl/util/geometry.hpp>
-#import <mbgl/util/geo.hpp>
-
-bool operator==(const CLLocationCoordinate2D lhs, const CLLocationCoordinate2D rhs);
-
-@interface MGLShape (Private)
-
-/**
- Returns an `mbgl::GeoJSON` representation of the `MGLShape`.
- */
-- (mbgl::GeoJSON)geoJSONObject;
-
-/**
- Returns an `mbgl::Geometry<double>` representation of the `MGLShape`.
- */
-- (mbgl::Geometry<double>)geometryObject;
-
-/**
- Returns a dictionary with the GeoJSON geometry member object.
- */
-- (NSDictionary *)geoJSONDictionary;
-
-@end
diff --git a/platform/darwin/src/MGLSource.h b/platform/darwin/src/MGLSource.h
deleted file mode 100644
index dc92e652e8..0000000000
--- a/platform/darwin/src/MGLSource.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLInvalidStyleSourceException;
-
-/**
- `MGLSource` is an abstract base class for map content sources. A map content
- source supplies content to be shown on the map. A source is added to an
- `MGLStyle` object along with an `MGLForegroundStyleLayer` object. The
- foreground style layer defines the appearance of any content supplied by the
- source.
-
- Each source defined by the style JSON file is represented at runtime by an
- `MGLSource` object that you can use to refine the map’s content. You can also
- add and remove sources dynamically using methods such as
- `-[MGLStyle addSource:]` and `-[MGLStyle sourceWithIdentifier:]`.
-
- Create instances of `MGLShapeSource`, `MGLComputedShapeSource`,
- `MGLImageSource`, and the concrete subclasses of `MGLTileSource`
- (`MGLVectorTileSource` and `MGLRasterTileSource`) in order to use `MGLSource`’s
- properties and methods. Do not create instances of `MGLSource` directly, and do
- not create your own subclasses of this class.
- */
-MGL_EXPORT
-@interface MGLSource : NSObject
-
-#pragma mark Initializing a Source
-
-- (instancetype)init __attribute__((unavailable("Use -initWithIdentifier: instead.")));
-
-/**
- Returns a source initialized with an identifier.
-
- After initializing and configuring the source, add it to a map view’s style
- using the `-[MGLStyle addSource:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @return An initialized source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier;
-
-#pragma mark Identifying a Source
-
-/**
- A string that uniquely identifies the source in the style to which it is added.
- */
-@property (nonatomic, copy) NSString *identifier;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLSource.mm b/platform/darwin/src/MGLSource.mm
deleted file mode 100644
index 1d7b46e1cc..0000000000
--- a/platform/darwin/src/MGLSource.mm
+++ /dev/null
@@ -1,120 +0,0 @@
-#import "MGLSource_Private.h"
-#import "MGLStyle_Private.h"
-#import "MGLMapView_Private.h"
-#import "NSBundle+MGLAdditions.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MMEEventsManager.h"
-#endif
-
-#include <mbgl/style/style.hpp>
-#include <mbgl/map/map.hpp>
-#include <mbgl/style/source.hpp>
-
-const MGLExceptionName MGLInvalidStyleSourceException = @"MGLInvalidStyleSourceException";
-
-@interface MGLSource ()
-
-// Even though this class is abstract, MGLStyle uses it to represent some
-// special internal source types like mbgl::AnnotationSource.
-@property (nonatomic, readonly) mbgl::style::Source *rawSource;
-
-@property (nonatomic, readonly, weak) MGLMapView *mapView;
-
-@end
-
-@implementation MGLSource {
- std::unique_ptr<mbgl::style::Source> _pendingSource;
- mapbox::base::WeakPtr<mbgl::style::Source> _weakSource;
-}
-
-
-- (instancetype)initWithIdentifier:(NSString *)identifier
-{
- if (self = [super init]) {
- _identifier = [identifier copy];
- }
- return self;
-}
-
-- (instancetype)initWithRawSource:(mbgl::style::Source *)rawSource mapView:(MGLMapView *)mapView {
- NSString *identifier = @(rawSource->getID().c_str());
- if (self = [self initWithIdentifier:identifier]) {
- _weakSource = rawSource->makeWeakPtr();
- rawSource->peer = SourceWrapper { self };
- _mapView = mapView;
- }
- return self;
-}
-
-- (mbgl::style::Source *)rawSource
-{
- return _weakSource.get();
-}
-
-- (instancetype)initWithPendingSource:(std::unique_ptr<mbgl::style::Source>)pendingSource {
- if (self = [self initWithRawSource:pendingSource.get() mapView:nil]) {
- _pendingSource = std::move(pendingSource);
- }
- return self;
-}
-
-- (void)addToMapView:(MGLMapView *)mapView {
- if (_pendingSource == nullptr) {
- [NSException raise:MGLRedundantSourceException
- format:@"This instance %@ was already added to %@. Adding the same source instance " \
- "to the style more than once is invalid.", self, mapView.style];
- }
-
- _mapView = mapView;
- _mapView.style.rawStyle->addSource(std::move(_pendingSource));
-}
-
-- (BOOL)removeFromMapView:(MGLMapView *)mapView error:(NSError * __nullable * __nullable)outError {
- MGLAssertStyleSourceIsValid();
- BOOL removed = NO;
-
- if (self.rawSource == mapView.style.rawStyle->getSource(self.identifier.UTF8String)) {
-
- auto removedSource = mapView.style.rawStyle->removeSource(self.identifier.UTF8String);
-
- if (removedSource) {
- removed = YES;
- _pendingSource = std::move(removedSource);
- _mapView = nil;
- } else if (outError) {
- NSString *localizedDescription = [NSString stringWithFormat:
- NSLocalizedStringWithDefaultValue(@"REMOVE_SRC_FAIL_IN_USE_FMT", @"Foundation", nil, @"The source “%@” can’t be removed while it is in use.", @"User-friendly error description; first placeholder is the source’s identifier"),
- self.identifier];
-
- *outError = [NSError errorWithDomain:MGLErrorDomain
- code:MGLErrorCodeSourceIsInUseCannotRemove
- userInfo:@{ NSLocalizedDescriptionKey : localizedDescription }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:*outError];
-#endif
-
- }
- } else if (outError) {
- // TODO: Consider raising an exception here
- NSString *localizedDescription = [NSString stringWithFormat:
- NSLocalizedStringWithDefaultValue(@"REMOVE_SRC_FAIL_MISMATCH_FMT", @"Foundation", nil, @"The source can’t be removed because its identifier, “%@”, belongs to a different source in this style.", @"User-friendly error description"),
- self.identifier];
-
- *outError = [NSError errorWithDomain:MGLErrorDomain
- code:MGLErrorCodeSourceIdentifierMismatch
- userInfo:@{ NSLocalizedDescriptionKey : localizedDescription }];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:*outError];
-#endif
- }
-
- return removed;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier];
-}
-
-@end
diff --git a/platform/darwin/src/MGLSource_Private.h b/platform/darwin/src/MGLSource_Private.h
deleted file mode 100644
index 4a7c31694d..0000000000
--- a/platform/darwin/src/MGLSource_Private.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#import "MGLSource.h"
-
-#include <memory>
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-namespace mbgl {
- namespace style {
- class Source;
- }
-}
-
-// A struct to be stored in the `peer` member of mbgl::style::Source, in order to implement
-// object identity. We don't store a MGLSource pointer directly because that doesn't
-// interoperate with ARC. The inner pointer is weak in order to avoid a reference cycle for
-// "pending" MGLSources, which have a strong owning pointer to the mbgl::style::Source.
-struct SourceWrapper {
- __weak MGLSource *source;
-};
-
-/**
- Assert that the style source is valid.
-
- This macro should be used at the beginning of any public-facing instance method
- of `MGLSource` and its subclasses. For private methods, an assertion is more appropriate.
- */
-#define MGLAssertStyleSourceIsValid() \
-do { \
- if (!self.rawSource) { \
- [NSException raise:MGLInvalidStyleSourceException \
- format:@"This source got invalidated after the style change"]; \
- } \
-} while (NO);
-
-@class MGLMapView;
-
-@interface MGLSource (Private)
-
-/**
- Initializes and returns a source with a raw pointer to the backing store,
- associated with a style.
- */
-- (instancetype)initWithRawSource:(mbgl::style::Source *)rawSource mapView:(nullable MGLMapView *)mapView;
-
-/**
- Initializes and returns a source with an owning pointer to the backing store,
- unassociated from a style.
- */
-- (instancetype)initWithPendingSource:(std::unique_ptr<mbgl::style::Source>)pendingSource;
-
-/**
- A raw pointer to the mbgl object, which is always initialized, either to the
- value returned by `mbgl::Map getSource`, or for independently created objects,
- to the pointer value held in `pendingSource`. In the latter case, this raw
- pointer value stays even after ownership of the object is transferred via
- `mbgl::Map addSource`.
- */
-@property (nonatomic, readonly) mbgl::style::Source *rawSource;
-
-/**
- The map view whose style currently contains the source.
- If the source is not currently part of any map view’s style, this property is
- set to `nil`.
- */
-@property (nonatomic, readonly, weak) MGLMapView *mapView;
-
-/**
- Adds the mbgl source that this object represents to the mbgl map.
- Once a mbgl source is added, ownership of the object is transferred to the
- `mbgl::Map` and this object no longer has an active unique_ptr reference to the
- `mbgl::Source`. If this object's mbgl source is in that state, the mbgl source
- can still be changed but the changes will not be visible until the `MGLSource`
- is added back to the map via `-[MGLStyle addSource:]` and styled with a
- `MGLLayer`.
- */
-- (void)addToMapView:(MGLMapView *)mapView;
-
-/**
- Removes the mbgl source that this object represents from the mbgl map.
- When a mbgl source is removed, ownership of the object is transferred back
- to the `MGLSource` instance and the unique_ptr reference is valid again. It is
- safe to add the source back to the style after it is removed.
- */
-- (BOOL)removeFromMapView:(MGLMapView *)mapView error:(NSError * __nullable * __nullable)outError;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLStyle.h b/platform/darwin/src/MGLStyle.h
deleted file mode 100644
index ac5f749920..0000000000
--- a/platform/darwin/src/MGLStyle.h
+++ /dev/null
@@ -1,542 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLStyleLayer.h"
-
-#import "MGLTypes.h"
-
-@class MGLSource;
-@class MGLLight;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- A version number identifying the default version of the Mapbox Streets style
- obtained through the `MGLStyle.streetsStyleURL` method. This version number may also be
- passed into the `+[MGLStyle streetsStyleURLWithVersion:]` method.
-
- The value of this constant generally corresponds to the latest released version
- as of the date on which this SDK was published. You can use this constant to
- ascertain the style used by `MGLMapView` and `MGLTilePyramidOfflineRegion` when
- no style URL is specified. Consult the
- <a href="https://docs.mapbox.com/api/maps/#styles">Mapbox Styles API documentation</a>
- for the most up-to-date style versioning information.
-
- @warning The value of this constant may change in a future release of the SDK.
- If you use any feature that depends on a specific aspect of a default style
- — for instance, the minimum zoom level that includes roads — you may use the
- current value of this constant or the underlying style URL, but do not use
- the constant itself. Such details may change significantly from version to
- version.
- */
-static MGL_EXPORT const NSInteger MGLStyleDefaultVersion = 11;
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLInvalidStyleURLException;
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLRedundantLayerException;
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLRedundantLayerIdentifierException;
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLRedundantSourceException;
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLRedundantSourceIdentifierException;
-
-/**
- The proxy object for the current map style.
-
- MGLStyle provides a set of convenience methods for changing Mapbox
- default styles using `MGLMapView.styleURL`.
- <a href="https://www.mapbox.com/maps/">Learn more about Mapbox default styles</a>.
-
- It is also possible to directly manipulate the current map style
- via `MGLMapView.style` by updating the style's data sources or layers.
-
- @note Wait until the map style has finished loading before modifying a map's
- style via any of the `MGLStyle` instance methods below. You can use the
- `-[MGLMapViewDelegate mapView:didFinishLoadingStyle:]` or
- `-[MGLMapViewDelegate mapViewDidFinishLoadingMap:]` methods as indicators
- that it's safe to modify the map's style.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/default-styles/">
- Default styles</a> example to learn how to initialize an `MGLMapView` object
- with a Mapbox default style using `MGLStyle`'s class methods.
- */
-MGL_EXPORT
-@interface MGLStyle : NSObject
-
-#pragma mark Accessing Default Styles
-
-/**
- Returns the URL to the current version of the
- <a href="https://www.mapbox.com/maps/streets/">Mapbox Streets</a> style as of
- publication.
-
- Streets is a general-purpose style with detailed road and transit networks.
-
- `MGLMapView` and `MGLTilePyramidOfflineRegion` use Mapbox Streets when no style
- is specified explicitly.
-
- @warning The return value may change in a future release of the SDK. If you use
- any feature that depends on a specific aspect of a default style — for
- instance, the minimum zoom level that includes roads — use the
- `+streetsStyleURLWithVersion:` method instead. Such details may change
- significantly from version to version.
- */
-@property (class, nonatomic, readonly) NSURL *streetsStyleURL;
-
-/**
- Returns the URL to the given version of the
- <a href="https://www.mapbox.com/maps/streets/">Mapbox Streets</a> style.
-
- Streets is a general-purpose style with detailed road and transit networks.
-
- `MGLMapView` and `MGLTilePyramidOfflineRegion` use Mapbox Streets when no style
- is specified explicitly.
-
- @param version A specific version of the style.
- */
-+ (NSURL *)streetsStyleURLWithVersion:(NSInteger)version;
-
-/**
- Returns the URL to the current version of the
- <a href="https://www.mapbox.com/maps/outdoors/">Mapbox Outdoors</a> style as of
- publication.
-
- Outdoors is a general-purpose style tailored to outdoor activities.
-
- @warning The return value may change in a future release of the SDK. If you use
- any feature that depends on a specific aspect of a default style — for
- instance, the minimum zoom level that includes roads — use the
- `+outdoorsStyleURLWithVersion:` method instead. Such details may change
- significantly from version to version.
- */
-@property (class, nonatomic, readonly) NSURL *outdoorsStyleURL;
-
-/**
- Returns the URL to the given version of the
- <a href="https://www.mapbox.com/maps/outdoors/">Mapbox Outdoors</a> style.
-
- Outdoors is a general-purpose style tailored to outdoor activities.
-
- @param version A specific version of the style.
- */
-+ (NSURL *)outdoorsStyleURLWithVersion:(NSInteger)version;
-
-/**
- Returns the URL to the current version of the
- <a href="https://www.mapbox.com/maps/light-dark/">Mapbox Light</a> style.
-
- Light is a subtle, light-colored backdrop for data visualizations.
-
- @warning The return value may change in a future release of the SDK. If you use
- any feature that depends on a specific aspect of a default style — for
- instance, the minimum zoom level that includes roads — use the
- `+lightStyleURLWithVersion:` method instead. Such details may change
- significantly from version to version.
- */
-@property (class, nonatomic, readonly) NSURL *lightStyleURL;
-
-/**
- Returns the URL to the given version of the
- <a href="https://www.mapbox.com/maps/light-dark/">Mapbox Light</a> style as of
- publication.
-
- Light is a subtle, light-colored backdrop for data visualizations.
-
- @param version A specific version of the style.
- */
-+ (NSURL *)lightStyleURLWithVersion:(NSInteger)version;
-
-/**
- Returns the URL to the current version of the
- <a href="https://www.mapbox.com/maps/light-dark/">Mapbox Dark</a> style.
-
- Dark is a subtle, dark-colored backdrop for data visualizations.
-
- @warning The return value may change in a future release of the SDK. If you use
- any feature that depends on a specific aspect of a default style — for
- instance, the minimum zoom level that includes roads — use the
- `+darkStyleURLWithVersion:` method instead. Such details may change
- significantly from version to version.
- */
-@property (class, nonatomic, readonly) NSURL *darkStyleURL;
-
-/**
- Returns the URL to the given version of the
- <a href="https://www.mapbox.com/maps/light-dark/">Mapbox Dark</a> style as of
- publication.
-
- Dark is a subtle, dark-colored backdrop for data visualizations.
-
- @param version A specific version of the style.
- */
-+ (NSURL *)darkStyleURLWithVersion:(NSInteger)version;
-
-/**
- Returns the URL to the current version of the
- <a href="https://www.mapbox.com/maps/satellite/">Mapbox Satellite</a> style.
-
- Satellite is high-resolution satellite and aerial imagery.
-
- @warning The return value may change in a future release of the SDK. If you use
- any feature that depends on a specific aspect of a default style — for
- instance, the raster tile sets included in the style — use the
- `+satelliteStyleURLWithVersion:` method instead. Such details may change
- significantly from version to version.
-
- #### Related example
- See the <a href="https://docs.mapbox.com/ios/maps/examples/satellite-style/">
- Satellite styles</a> example to learn how to initialize a map with the Mapbox
- Satellite style.
- */
-@property (class, nonatomic, readonly) NSURL *satelliteStyleURL;
-
-/**
- Returns the URL to the given version of the
- <a href="https://www.mapbox.com/maps/satellite/">Mapbox Satellite</a> style as
- of publication.
-
- Satellite is high-resolution satellite and aerial imagery.
-
- @param version A specific version of the style.
- */
-+ (NSURL *)satelliteStyleURLWithVersion:(NSInteger)version;
-
-/**
- Returns the URL to the current version of the
- <a href="https://www.mapbox.com/maps/satellite/">Mapbox Satellite Streets</a>
- style as of publication.
-
- Satellite Streets combines the high-resolution satellite and aerial imagery of
- Mapbox Satellite with unobtrusive labels and translucent roads from Mapbox
- Streets.
-
- @warning The return value may change in a future release of the SDK. If you use
- any feature that depends on a specific aspect of a default style — for
- instance, the minimum zoom level that includes roads — use the
- `+satelliteStreetsStyleURLWithVersion:` method instead. Such details may
- change significantly from version to version.
-
- #### Related example
- See the <a href="https://docs.mapbox.com/ios/maps/examples/satellite-style/">
- Satellite styles</a> example to learn how to initialize a map with the Mapbox
- Satellite Streets style.
- */
-@property (class, nonatomic, readonly) NSURL *satelliteStreetsStyleURL;
-
-/**
- Returns the URL to the given version of the
- <a href="https://www.mapbox.com/maps/satellite/">Mapbox Satellite Streets</a>
- style.
-
- Satellite Streets combines the high-resolution satellite and aerial imagery of
- Mapbox Satellite with unobtrusive labels and translucent roads from Mapbox
- Streets.
-
- @param version A specific version of the style.
- */
-+ (NSURL *)satelliteStreetsStyleURLWithVersion:(NSInteger)version;
-
-#pragma mark Accessing Metadata About the Style
-
-/**
- The name of the style.
-
- You can customize the style’s name in Mapbox Studio.
- */
-@property (readonly, copy, nullable) NSString *name;
-
-#pragma mark Managing Sources
-
-/**
- A set containing the style’s sources.
- */
-@property (nonatomic, strong) NSSet<__kindof MGLSource *> *sources;
-
-/**
- Values describing animated transitions to changes on a style's individual
- paint properties.
- */
-@property (nonatomic) MGLTransition transition;
-
-/**
- A boolean value indicating whether label placement transitions are enabled.
-
- The default value of this property is `YES`.
- */
-@property (nonatomic, assign) BOOL performsPlacementTransitions;
-
-/**
- Returns a source with the given identifier in the current style.
-
- @note Source identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set the
- style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids source identifer name changes that will occur in the default
- style’s sources over time.
-
- @return An instance of a concrete subclass of `MGLSource` associated with the
- given identifier, or `nil` if the current style contains no such source.
- */
-- (nullable MGLSource *)sourceWithIdentifier:(NSString *)identifier;
-
-/**
- Adds a new source to the current style.
-
- @note Adding the same source instance more than once will result in a
- `MGLRedundantSourceException`. Reusing the same source identifier, even with
- different source instances, will result in a
- `MGLRedundantSourceIdentifierException`.
-
- @note Sources should be added in
- `-[MGLMapViewDelegate mapView:didFinishLoadingStyle:]` or
- `-[MGLMapViewDelegate mapViewDidFinishLoadingMap:]` to ensure that the map
- has loaded the style and is ready to accept a new source.
-
- @param source The source to add to the current style.
- */
-- (void)addSource:(MGLSource *)source;
-
-/**
- Removes a source from the current style.
-
- @note Source identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set the
- style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids source identifer name changes that will occur in the default
- style’s sources over time.
-
- @param source The source to remove from the current style.
- */
-- (void)removeSource:(MGLSource *)source;
-
-/**
- Removes a source from the current style.
-
- @note Source identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set the
- style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids source identifer name changes that will occur in the default
- style’s sources over time.
-
- @param source The source to remove from the current style.
- @param outError Upon return, if an error has occurred, a pointer to an `NSError`
- object describing the error. Pass in `NULL` to ignore any error.
-
- @return `YES` if `source` was removed successfully. If `NO`, `outError` contains
- an `NSError` object describing the problem.
- */
-- (BOOL)removeSource:(MGLSource *)source error:(NSError * __nullable * __nullable)outError;
-
-
-#pragma mark Managing Style Layers
-
-/**
- The layers included in the style, arranged according to their back-to-front
- ordering on the screen.
- */
-@property (nonatomic, strong) NSArray<__kindof MGLStyleLayer *> *layers;
-
-/**
- Returns a style layer with the given identifier in the current style.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the default
- style’s layers over time.
-
- @return An instance of a concrete subclass of `MGLStyleLayer` associated with
- the given identifier, or `nil` if the current style contains no such style
- layer.
- */
-- (nullable MGLStyleLayer *)layerWithIdentifier:(NSString *)identifier;
-
-/**
- Adds a new layer on top of existing layers.
-
- @note Adding the same layer instance more than once will result in a
- `MGLRedundantLayerException`. Reusing the same layer identifer, even with
- different layer instances, will also result in an exception.
-
- @note Layers should be added in
- `-[MGLMapViewDelegate mapView:didFinishLoadingStyle:]` or
- `-[MGLMapViewDelegate mapViewDidFinishLoadingMap:]` to ensure that the map
- has loaded the style and is ready to accept a new layer.
-
- @param layer The layer object to add to the map view. This object must be an
- instance of a concrete subclass of `MGLStyleLayer`.
- */
-- (void)addLayer:(MGLStyleLayer *)layer;
-
-/**
- Inserts a new layer into the style at the given index.
-
- @note Adding the same layer instance more than once will result in a
- `MGLRedundantLayerException`. Reusing the same layer identifer, even with
- different layer instances, will also result in an exception.
-
- @note Layers should be added in
- `-[MGLMapViewDelegate mapView:didFinishLoadingStyle:]` or
- `-[MGLMapViewDelegate mapViewDidFinishLoadingMap:]` to ensure that the map
- has loaded the style and is ready to accept a new layer.
-
- @param layer The layer to insert.
- @param index The index at which to insert the layer. An index of 0 would send
- the layer to the back; an index equal to the number of objects in the
- `layers` property would bring the layer to the front.
- */
-- (void)insertLayer:(MGLStyleLayer *)layer atIndex:(NSUInteger)index;
-
-/**
- Inserts a new layer below another layer.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the default
- style’s layers over time.
-
- Inserting the same layer instance more than once will result in a
- `MGLRedundantLayerException`. Reusing the same layer identifer, even with
- different layer instances, will also result in an exception.
-
- @param layer The layer to insert.
- @param sibling An existing layer in the style.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/shape-collection/">
- Add multiple shapes from a single shape source</a> example to learn how to
- add a layer to your map below an existing layer.
- */
-- (void)insertLayer:(MGLStyleLayer *)layer belowLayer:(MGLStyleLayer *)sibling;
-
-/**
- Inserts a new layer above another layer.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the default
- style’s layers over time.
-
- Inserting the same layer instance more than once will result in a
- `MGLRedundantLayerException`. Reusing the same layer identifer, even with
- different layer instances, will also result in an exception.
-
- @param layer The layer to insert.
- @param sibling An existing layer in the style.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/image-source/">
- Add an image</a> example to learn how to add a layer to your map above an
- existing layer.
- */
-- (void)insertLayer:(MGLStyleLayer *)layer aboveLayer:(MGLStyleLayer *)sibling;
-
-/**
- Removes a layer from the map view.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the default
- style’s layers over time.
-
- @param layer The layer object to remove from the map view. This object
- must conform to the `MGLStyleLayer` protocol.
- */
-- (void)removeLayer:(MGLStyleLayer *)layer;
-
-#pragma mark Managing a Style’s Images
-
-/**
- Returns the image associated with the given name in the style.
-
- @note Names and their associated images are not guaranteed to exist across
- styles or different versions of the same style. Applications that use this
- API must first set the style URL to an explicitly versioned style using a
- convenience method like `+[MGLStyle outdoorsStyleURLWithVersion:]`,
- `MGLMapView`’s “Style URL” inspectable in Interface Builder, or a manually
- constructed `NSURL`. This approach also avoids image name changes that will
- occur in the default style over time.
-
- @param name The name associated with the image you want to obtain.
- @return The image associated with the given name, or `nil` if no image is
- associated with that name.
- */
-- (nullable MGLImage *)imageForName:(NSString *)name;
-
-/**
- Adds or overrides an image used by the style’s layers.
-
- To use an image in a style layer, give it a unique name using this method, then
- set the `iconImageName` property of an `MGLSymbolStyleLayer` object to that
- name.
-
- @param image The image for the name.
- @param name The name of the image to set to the style.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">
- Use images to cluster point data</a> and <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">
- Cluster point data</a> examples to learn how to add images to your map using
- an `MGLStyle` object.
- */
-- (void)setImage:(MGLImage *)image forName:(NSString *)name;
-
-/**
- Removes a name and its associated image from the style.
-
- @note Names and their associated images are not guaranteed to exist across
- styles or different versions of the same style. Applications that use this
- API must first set the style URL to an explicitly versioned style using a
- convenience method like `+[MGLStyle outdoorsStyleURLWithVersion:]`,
- `MGLMapView`’s “Style URL” inspectable in Interface Builder, or a manually
- constructed `NSURL`. This approach also avoids image name changes that will
- occur in the default style over time.
-
- @param name The name of the image to remove.
- */
-- (void)removeImageForName:(NSString *)name;
-
-
-#pragma mark Managing the Style's Light
-
-/**
- Provides global light source for the style.
- */
-@property (nonatomic, strong) MGLLight *light;
-
-#pragma mark Localizing Map Content
-
-/**
- Attempts to localize labels in the style into the given locale.
-
- This method automatically modifies the text property of any symbol style layer
- in the style whose source is the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets-v8/#overview">Mapbox Streets source</a>.
- On iOS, the user can set the system’s preferred language in Settings, General
- Settings, Language & Region. On macOS, the user can set the system’s preferred
- language in the Language & Region pane of System Preferences.
-
- @param locale The locale into which labels should be localized. To use the
- system’s preferred language, if supported, specify `nil`. To use the local
- language, specify a locale with the identifier `mul`.
- */
-- (void)localizeLabelsIntoLocale:(nullable NSLocale *)locale;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLStyle.mm b/platform/darwin/src/MGLStyle.mm
deleted file mode 100644
index 6a496dc3c0..0000000000
--- a/platform/darwin/src/MGLStyle.mm
+++ /dev/null
@@ -1,636 +0,0 @@
-#import "MGLStyle_Private.h"
-
-#import "MGLMapView_Private.h"
-#import "MGLStyleLayer.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLFillStyleLayer.h"
-#import "MGLFillExtrusionStyleLayer.h"
-#import "MGLLineStyleLayer.h"
-#import "MGLCircleStyleLayer.h"
-#import "MGLSymbolStyleLayer.h"
-#import "MGLHeatmapStyleLayer.h"
-#import "MGLHillshadeStyleLayer.h"
-#import "MGLRasterStyleLayer.h"
-#import "MGLBackgroundStyleLayer.h"
-#import "MGLOpenGLStyleLayer.h"
-#import "MGLStyleLayerManager.h"
-
-#import "MGLSource.h"
-#import "MGLSource_Private.h"
-#import "MGLLight_Private.h"
-#import "MGLTileSource_Private.h"
-#import "MGLVectorTileSource_Private.h"
-#import "MGLRasterTileSource.h"
-#import "MGLRasterDEMSource.h"
-#import "MGLShapeSource.h"
-#import "MGLImageSource.h"
-
-#import "MGLAttributionInfo_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/util/default_styles.hpp>
-#include <mbgl/style/style.hpp>
-#include <mbgl/style/image.hpp>
-#include <mbgl/style/light.hpp>
-#include <mbgl/style/sources/geojson_source.hpp>
-#include <mbgl/style/sources/vector_source.hpp>
-#include <mbgl/style/sources/raster_source.hpp>
-#include <mbgl/style/sources/raster_dem_source.hpp>
-#include <mbgl/style/sources/image_source.hpp>
-
-#import "NSDate+MGLAdditions.h"
-
-#if TARGET_OS_IPHONE
- #import "UIImage+MGLAdditions.h"
-#else
- #import "NSImage+MGLAdditions.h"
-#endif
-
-const MGLExceptionName MGLInvalidStyleURLException = @"MGLInvalidStyleURLException";
-const MGLExceptionName MGLRedundantLayerException = @"MGLRedundantLayerException";
-const MGLExceptionName MGLRedundantLayerIdentifierException = @"MGLRedundantLayerIdentifierException";
-const MGLExceptionName MGLRedundantSourceException = @"MGLRedundantSourceException";
-const MGLExceptionName MGLRedundantSourceIdentifierException = @"MGLRedundantSourceIdentifierException";
-
-/**
- Model class for localization changes.
- */
-@interface MGLTextLanguage: NSObject
-@property (strong, nonatomic) NSString *originalTextField;
-@property (strong, nonatomic) NSString *updatedTextField;
-
-- (instancetype)initWithTextLanguage:(NSString *)originalTextField updatedTextField:(NSString *)updatedTextField;
-
-@end
-
-@implementation MGLTextLanguage
-- (instancetype)initWithTextLanguage:(NSString *)originalTextField updatedTextField:(NSString *)updatedTextField
-{
- if (self = [super init]) {
- _originalTextField = originalTextField;
- _updatedTextField = updatedTextField;
- }
- return self;
-}
-@end
-
-@interface MGLStyle()
-
-@property (nonatomic, readonly, weak) MGLMapView *mapView;
-@property (nonatomic, readonly) mbgl::style::Style *rawStyle;
-@property (readonly, copy, nullable) NSURL *URL;
-@property (nonatomic, readwrite, strong) NSMutableDictionary<NSString *, MGLOpenGLStyleLayer *> *openGLLayers;
-@property (nonatomic) NSMutableDictionary<NSString *, NSDictionary<NSObject *, MGLTextLanguage *> *> *localizedLayersByIdentifier;
-
-@end
-
-@implementation MGLStyle
-
-#pragma mark Default style URLs
-
-/// @param name The style’s marketing name, written in lower camelCase.
-/// @param fileName The last path component in the style’s URL, excluding the version suffix.
-#define MGL_DEFINE_STYLE(name, fileName) \
- static NSURL *MGLStyleURL_##name; \
- + (NSURL *)name##StyleURL { \
- static dispatch_once_t onceToken; \
- dispatch_once(&onceToken, ^{ \
- MGLStyleURL_##name = [self name##StyleURLWithVersion:mbgl::util::default_styles::name.currentVersion]; \
- }); \
- return MGLStyleURL_##name; \
- } \
- \
- + (NSURL *)name##StyleURL##WithVersion:(NSInteger)version { \
- return [NSURL URLWithString:[@"mapbox://styles/mapbox/" #fileName "-v" stringByAppendingFormat:@"%li", (long)version]]; \
- }
-
-MGL_DEFINE_STYLE(streets, streets)
-MGL_DEFINE_STYLE(outdoors, outdoors)
-MGL_DEFINE_STYLE(light, light)
-MGL_DEFINE_STYLE(dark, dark)
-MGL_DEFINE_STYLE(satellite, satellite)
-MGL_DEFINE_STYLE(satelliteStreets, satellite-streets)
-
-// Make sure all the styles listed in mbgl::util::default_styles::orderedStyles
-// are defined above and also declared in MGLStyle.h.
-static_assert(6 == mbgl::util::default_styles::numOrderedStyles,
- "mbgl::util::default_styles::orderedStyles and MGLStyle have different numbers of styles.");
-
-#pragma mark -
-
-- (instancetype)initWithRawStyle:(mbgl::style::Style *)rawStyle mapView:(MGLMapView *)mapView {
- MGLLogInfo(@"Initializing %@ with mapView: %@", NSStringFromClass([self class]), mapView);
- if (self = [super init]) {
- _mapView = mapView;
- _rawStyle = rawStyle;
- _openGLLayers = [NSMutableDictionary dictionary];
- _localizedLayersByIdentifier = [NSMutableDictionary dictionary];
- MGLLogDebug(@"Initializing with style name: %@ mapView: %@", self.name, mapView);
- }
- return self;
-}
-
-- (NSURL *)URL {
- return [NSURL URLWithString:@(self.rawStyle->getURL().c_str())];
-}
-
-- (NSString *)name {
- std::string name = self.rawStyle->getName();
- return name.empty() ? nil : @(name.c_str());
-}
-
-#pragma mark Sources
-
-- (NSSet<__kindof MGLSource *> *)sources {
- auto rawSources = self.rawStyle->getSources();
- NSMutableSet<__kindof MGLSource *> *sources = [NSMutableSet setWithCapacity:rawSources.size()];
- for (auto rawSource = rawSources.begin(); rawSource != rawSources.end(); ++rawSource) {
- MGLSource *source = [self sourceFromMBGLSource:*rawSource];
- [sources addObject:source];
- }
- return sources;
-}
-
-- (void)setSources:(NSSet<__kindof MGLSource *> *)sources {
- MGLLogDebug(@"Setting: %lu sources", sources.count);
- for (MGLSource *source in self.sources) {
- [self removeSource:source];
- }
- for (MGLSource *source in sources) {
- [self addSource:source];
- }
-}
-
-- (NSUInteger)countOfSources {
- return self.rawStyle->getSources().size();
-}
-
-- (MGLSource *)memberOfSources:(MGLSource *)object {
- return [self sourceWithIdentifier:object.identifier];
-}
-
-- (MGLSource *)sourceWithIdentifier:(NSString *)identifier
-{
- MGLLogDebug(@"Querying source with identifier: %@", identifier);
- auto rawSource = self.rawStyle->getSource(identifier.UTF8String);
-
- return rawSource ? [self sourceFromMBGLSource:rawSource] : nil;
-}
-
-- (MGLSource *)sourceFromMBGLSource:(mbgl::style::Source *)rawSource {
- if (MGLSource *source = rawSource->peer.has_value() ? rawSource->peer.get<SourceWrapper>().source : nil) {
- return source;
- }
-
- // TODO: Fill in options specific to the respective source classes
- // https://github.com/mapbox/mapbox-gl-native/issues/6584
- if (auto vectorSource = rawSource->as<mbgl::style::VectorSource>()) {
- return [[MGLVectorTileSource alloc] initWithRawSource:vectorSource mapView:self.mapView];
- } else if (auto geoJSONSource = rawSource->as<mbgl::style::GeoJSONSource>()) {
- return [[MGLShapeSource alloc] initWithRawSource:geoJSONSource mapView:self.mapView];
- } else if (auto rasterSource = rawSource->as<mbgl::style::RasterSource>()) {
- return [[MGLRasterTileSource alloc] initWithRawSource:rasterSource mapView:self.mapView];
- } else if (auto rasterDEMSource = rawSource->as<mbgl::style::RasterDEMSource>()) {
- return [[MGLRasterDEMSource alloc] initWithRawSource:rasterDEMSource mapView:self.mapView];
- } else if (auto imageSource = rawSource->as<mbgl::style::ImageSource>()) {
- return [[MGLImageSource alloc] initWithRawSource:imageSource mapView:self.mapView];
- } else {
- return [[MGLSource alloc] initWithRawSource:rawSource mapView:self.mapView];
- }
-}
-
-- (void)addSource:(MGLSource *)source
-{
- MGLLogDebug(@"Adding source: %@", source);
- if (!source.rawSource) {
- [NSException raise:NSInvalidArgumentException format:
- @"The source %@ cannot be added to the style. "
- @"Make sure the source was created as a member of a concrete subclass of MGLSource.",
- source];
- }
-
- try {
- [source addToMapView:self.mapView];
- } catch (std::runtime_error & err) {
- [NSException raise:MGLRedundantSourceIdentifierException format:@"%s", err.what()];
- }
-}
-
-- (void)removeSource:(MGLSource *)source
-{
- [self removeSource:source error:nil];
-}
-
-- (BOOL)removeSource:(MGLSource *)source error:(NSError * __nullable * __nullable)outError {
- MGLLogDebug(@"Removing source: %@", source);
-
- if (!source.rawSource) {
- NSString *errorMessage = [NSString stringWithFormat:
- @"The source %@ cannot be removed from the style. "
- @"Make sure the source was created as a member of a concrete subclass of MGLSource."
- @"Automatic re-addition of sources after style changes is not currently supported.",
- source];
-
- if (outError) {
- *outError = [NSError errorWithDomain:MGLErrorDomain
- code:MGLErrorCodeSourceCannotBeRemovedFromStyle
- userInfo:@{ NSLocalizedDescriptionKey : errorMessage }];
- return NO;
- }
- else {
- [NSException raise:NSInvalidArgumentException format:@"%@", errorMessage];
- }
- }
-
- return [source removeFromMapView:self.mapView error:outError];
-}
-
-
-- (nullable NSArray<MGLAttributionInfo *> *)attributionInfosWithFontSize:(CGFloat)fontSize linkColor:(nullable MGLColor *)linkColor {
- // It’d be incredibly convenient to use -sources here, but this operation
- // depends on the sources being sorted in ascending order by creation, as
- // with the std::vector used in mbgl.
- auto rawSources = self.rawStyle->getSources();
- NSMutableArray *infos = [NSMutableArray arrayWithCapacity:rawSources.size()];
- for (auto rawSource = rawSources.begin(); rawSource != rawSources.end(); ++rawSource) {
- MGLTileSource *source = (MGLTileSource *)[self sourceFromMBGLSource:*rawSource];
- if (![source isKindOfClass:[MGLTileSource class]]) {
- continue;
- }
-
- NSArray *tileSetInfos = [source attributionInfosWithFontSize:fontSize linkColor:linkColor];
- [infos growArrayByAddingAttributionInfosFromArray:tileSetInfos];
- }
- return infos;
-}
-
-#pragma mark Style layers
-
-- (NSArray<__kindof MGLStyleLayer *> *)layers
-{
- auto layers = self.rawStyle->getLayers();
- NSMutableArray<__kindof MGLStyleLayer *> *styleLayers = [NSMutableArray arrayWithCapacity:layers.size()];
- for (auto layer : layers) {
- MGLStyleLayer *styleLayer = [self layerFromMBGLLayer:layer];
- [styleLayers addObject:styleLayer];
- }
- return styleLayers;
-}
-
-- (void)setLayers:(NSArray<__kindof MGLStyleLayer *> *)layers {
- MGLLogDebug(@"Setting: %lu layers", layers.count);
- for (MGLStyleLayer *layer in self.layers) {
- [self removeLayer:layer];
- }
- for (MGLStyleLayer *layer in layers) {
- [self addLayer:layer];
- }
-}
-
-- (NSUInteger)countOfLayers
-{
- return self.rawStyle->getLayers().size();
-}
-
-- (MGLStyleLayer *)objectInLayersAtIndex:(NSUInteger)index
-{
- auto layers = self.rawStyle->getLayers();
- if (index >= layers.size()) {
- [NSException raise:NSRangeException
- format:@"No style layer at index %lu.", (unsigned long)index];
- return nil;
- }
- auto layer = layers.at(index);
- return [self layerFromMBGLLayer:layer];
-}
-
-- (void)getLayers:(MGLStyleLayer **)buffer range:(NSRange)inRange
-{
- auto layers = self.rawStyle->getLayers();
- if (NSMaxRange(inRange) > layers.size()) {
- [NSException raise:NSRangeException
- format:@"Style layer range %@ is out of bounds.", NSStringFromRange(inRange)];
- }
- NSUInteger i = 0;
- for (auto layer = *(layers.rbegin() + inRange.location); i < inRange.length; ++layer, ++i) {
- MGLStyleLayer *styleLayer = [self layerFromMBGLLayer:layer];
- buffer[i] = styleLayer;
- }
-}
-
-- (void)insertObject:(MGLStyleLayer *)styleLayer inLayersAtIndex:(NSUInteger)index
-{
- if (!styleLayer.rawLayer) {
- [NSException raise:NSInvalidArgumentException format:
- @"The style layer %@ cannot be inserted into the style. "
- @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.",
- styleLayer];
- }
- auto layers = self.rawStyle->getLayers();
- if (index > layers.size()) {
- [NSException raise:NSRangeException
- format:@"Cannot insert style layer at out-of-bounds index %lu.", (unsigned long)index];
- } else if (index == 0) {
- try {
- MGLStyleLayer *sibling = layers.size() ? [self layerFromMBGLLayer:layers.at(0)] : nil;
- [styleLayer addToStyle:self belowLayer:sibling];
- } catch (const std::runtime_error & err) {
- [NSException raise:MGLRedundantLayerIdentifierException format:@"%s", err.what()];
- }
- } else {
- try {
- MGLStyleLayer *sibling = [self layerFromMBGLLayer:layers.at(index)];
- [styleLayer addToStyle:self belowLayer:sibling];
- } catch (std::runtime_error & err) {
- [NSException raise:MGLRedundantLayerIdentifierException format:@"%s", err.what()];
- }
- }
-}
-
-- (void)removeObjectFromLayersAtIndex:(NSUInteger)index
-{
- auto layers = self.rawStyle->getLayers();
- if (index >= layers.size()) {
- [NSException raise:NSRangeException
- format:@"Cannot remove style layer at out-of-bounds index %lu.", (unsigned long)index];
- }
- auto layer = layers.at(index);
- MGLStyleLayer *styleLayer = [self layerFromMBGLLayer:layer];
- [styleLayer removeFromStyle:self];
-}
-
-- (MGLStyleLayer *)layerFromMBGLLayer:(mbgl::style::Layer *)rawLayer
-{
- NSParameterAssert(rawLayer);
-
- if (MGLStyleLayer *layer = rawLayer->peer.has_value() ? rawLayer->peer.get<LayerWrapper>().layer : nil) {
- return layer;
- }
-
- return mbgl::LayerManagerDarwin::get()->createPeer(rawLayer);
-}
-
-- (MGLStyleLayer *)layerWithIdentifier:(NSString *)identifier
-{
- MGLLogDebug(@"Querying layerWithIdentifier: %@", identifier);
- auto mbglLayer = self.rawStyle->getLayer(identifier.UTF8String);
- return mbglLayer ? [self layerFromMBGLLayer:mbglLayer] : nil;
-}
-
-- (void)removeLayer:(MGLStyleLayer *)layer
-{
- MGLLogDebug(@"Removing layer: %@", layer);
- if (!layer.rawLayer) {
- [NSException raise:NSInvalidArgumentException format:
- @"The style layer %@ cannot be removed from the style. "
- @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.",
- layer];
- }
- [self willChangeValueForKey:@"layers"];
- [layer removeFromStyle:self];
- [self didChangeValueForKey:@"layers"];
-}
-
-- (void)addLayer:(MGLStyleLayer *)layer
-{
- MGLLogDebug(@"Adding layer: %@", layer);
- if (!layer.rawLayer) {
- [NSException raise:NSInvalidArgumentException format:
- @"The style layer %@ cannot be added to the style. "
- @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.",
- layer];
- }
- [self willChangeValueForKey:@"layers"];
- try {
- [layer addToStyle:self belowLayer:nil];
- } catch (std::runtime_error & err) {
- [NSException raise:MGLRedundantLayerIdentifierException format:@"%s", err.what()];
- }
- [self didChangeValueForKey:@"layers"];
-}
-
-- (void)insertLayer:(MGLStyleLayer *)layer atIndex:(NSUInteger)index {
- [self insertObject:layer inLayersAtIndex:index];
-}
-
-- (void)insertLayer:(MGLStyleLayer *)layer belowLayer:(MGLStyleLayer *)sibling
-{
- MGLLogDebug(@"Inseting layer: %@ belowLayer: %@", layer, sibling);
- if (!layer.rawLayer) {
- [NSException raise:NSInvalidArgumentException
- format:
- @"The style layer %@ cannot be added to the style. "
- @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.",
- layer];
- }
- if (!sibling.rawLayer) {
- [NSException raise:NSInvalidArgumentException
- format:
- @"A style layer cannot be placed below %@ in the style. "
- @"Make sure sibling was obtained using -[MGLStyle layerWithIdentifier:].",
- sibling];
- }
- [self willChangeValueForKey:@"layers"];
- try {
- [layer addToStyle:self belowLayer:sibling];
- } catch (std::runtime_error & err) {
- [NSException raise:MGLRedundantLayerIdentifierException format:@"%s", err.what()];
- }
- [self didChangeValueForKey:@"layers"];
-}
-
-- (void)insertLayer:(MGLStyleLayer *)layer aboveLayer:(MGLStyleLayer *)sibling {
- MGLLogDebug(@"Inseting layer: %@ aboveLayer: %@", layer, sibling);
- if (!layer.rawLayer) {
- [NSException raise:NSInvalidArgumentException
- format:
- @"The style layer %@ cannot be added to the style. "
- @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.",
- layer];
- }
- if (!sibling.rawLayer) {
- [NSException raise:NSInvalidArgumentException
- format:
- @"A style layer cannot be placed above %@ in the style. "
- @"Make sure sibling was obtained using -[MGLStyle layerWithIdentifier:].",
- sibling];
- }
-
- auto layers = self.rawStyle->getLayers();
- std::string siblingIdentifier = sibling.identifier.UTF8String;
- NSUInteger index = 0;
- for (auto siblingLayer : layers) {
- if (siblingLayer->getID() == siblingIdentifier) {
- break;
- }
- index++;
- }
-
- [self willChangeValueForKey:@"layers"];
- if (index + 1 > layers.size()) {
- [NSException raise:NSInvalidArgumentException
- format:
- @"A style layer cannot be placed above %@ in the style. "
- @"Make sure sibling was obtained using -[MGLStyle layerWithIdentifier:].",
- sibling];
- } else if (index + 1 == layers.size()) {
- try {
- [layer addToStyle:self belowLayer:nil];
- } catch (std::runtime_error & err) {
- [NSException raise:MGLRedundantLayerIdentifierException format:@"%s", err.what()];
- }
- } else {
- MGLStyleLayer *nextSibling = [self layerFromMBGLLayer:layers.at(index + 1)];
- try {
- [layer addToStyle:self belowLayer:nextSibling];
- } catch (std::runtime_error & err) {
- [NSException raise:MGLRedundantLayerIdentifierException format:@"%s", err.what()];
- }
- }
- [self didChangeValueForKey:@"layers"];
-}
-
-#pragma mark Style images
-
-- (void)setImage:(MGLImage *)image forName:(NSString *)name
-{
- MGLLogDebug(@"Setting image: %@ forName: %@", image, name);
- if (!image) {
- [NSException raise:NSInvalidArgumentException
- format:@"Cannot assign nil image to “%@”.", name];
- }
- if (!name) {
- [NSException raise:NSInvalidArgumentException
- format:@"Cannot assign image %@ to a nil name.", image];
- }
-
- self.rawStyle->addImage([image mgl_styleImageWithIdentifier:name]);
-}
-
-- (void)removeImageForName:(NSString *)name
-{
- MGLLogDebug(@"Removing imageForName: %@", name);
- if (!name) {
- [NSException raise:NSInvalidArgumentException
- format:@"Cannot remove image with nil name."];
- }
-
- self.rawStyle->removeImage([name UTF8String]);
-}
-
-- (MGLImage *)imageForName:(NSString *)name
-{
- MGLLogDebug(@"Querying imageForName: %@", name);
- if (!name) {
- [NSException raise:NSInvalidArgumentException
- format:@"Cannot get image with nil name."];
- }
-
- auto styleImage = self.rawStyle->getImage([name UTF8String]);
- return styleImage ? [[MGLImage alloc] initWithMGLStyleImage:&(*styleImage)] : nil;
-}
-
-#pragma mark Style transitions
-
-- (void)setTransition:(MGLTransition)transition
-{
- self.rawStyle->setTransitionOptions(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)transition
-{
- const mbgl::style::TransitionOptions transitionOptions = self.rawStyle->getTransitionOptions();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setPerformsPlacementTransitions:(BOOL)performsPlacementTransitions
-{
- mbgl::style::TransitionOptions transitionOptions = self.rawStyle->getTransitionOptions();
- transitionOptions.enablePlacementTransitions = static_cast<bool>(performsPlacementTransitions);
- self.rawStyle->setTransitionOptions(transitionOptions);
-}
-
-- (BOOL)performsPlacementTransitions
-{
- mbgl::style::TransitionOptions transitionOptions = self.rawStyle->getTransitionOptions();
- return transitionOptions.enablePlacementTransitions;
-}
-
-#pragma mark Style light
-
-- (void)setLight:(MGLLight *)light
-{
- std::unique_ptr<mbgl::style::Light> mbglLight = std::make_unique<mbgl::style::Light>([light mbglLight]);
- self.rawStyle->setLight(std::move(mbglLight));
-}
-
-- (MGLLight *)light
-{
- auto mbglLight = self.rawStyle->getLight();
- MGLLight *light = [[MGLLight alloc] initWithMBGLLight:mbglLight];
- return light;
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; name = %@, URL = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.name ? [NSString stringWithFormat:@"\"%@\"", self.name] : self.name,
- self.URL ? [NSString stringWithFormat:@"\"%@\"", self.URL] : self.URL];
-}
-
-#pragma mark Mapbox Streets source introspection
-
-- (void)localizeLabelsIntoLocale:(nullable NSLocale *)locale {
- NSSet<MGLVectorTileSource *> *streetsSources =
- [self.sources filteredSetUsingPredicate:
- [NSPredicate predicateWithBlock:^BOOL(MGLVectorTileSource * _Nullable source, NSDictionary<NSString *, id> * _Nullable bindings) {
- return [source isKindOfClass:[MGLVectorTileSource class]] && [source isMapboxStreets];
- }]];
- NSSet<NSString *> *streetsSourceIdentifiers = [streetsSources valueForKey:@"identifier"];
-
- for (MGLSymbolStyleLayer *layer in self.layers) {
- if (![layer isKindOfClass:[MGLSymbolStyleLayer class]]) {
- continue;
- }
- if (![streetsSourceIdentifiers containsObject:layer.sourceIdentifier]) {
- continue;
- }
-
- NSExpression *text = layer.text;
- NSExpression *localizedText = [text mgl_expressionLocalizedIntoLocale:locale];
- if (![localizedText isEqual:text]) {
- layer.text = localizedText;
- }
- }
-}
-
-- (NSSet<MGLVectorTileSource *> *)mapboxStreetsSources {
- return [self.sources objectsPassingTest:^BOOL (__kindof MGLVectorTileSource * _Nonnull source, BOOL * _Nonnull stop) {
- return [source isKindOfClass:[MGLVectorTileSource class]] && source.mapboxStreets;
- }];
-}
-
-- (NSArray<MGLStyleLayer *> *)placeStyleLayers {
- NSSet *streetsSourceIdentifiers = [self.mapboxStreetsSources valueForKey:@"identifier"];
-
- NSSet *placeSourceLayerIdentifiers = [NSSet setWithObjects:@"marine_label", @"country_label", @"state_label", @"place_label", @"water_label", @"poi_label", @"rail_station_label", @"mountain_peak_label", @"natural_label", @"transit_stop_label", nil];
- NSPredicate *isPlacePredicate = [NSPredicate predicateWithBlock:^BOOL (MGLVectorStyleLayer * _Nullable layer, NSDictionary<NSString *, id> * _Nullable bindings) {
- return [layer isKindOfClass:[MGLVectorStyleLayer class]] && [streetsSourceIdentifiers containsObject:layer.sourceIdentifier] && [placeSourceLayerIdentifiers containsObject:layer.sourceLayerIdentifier];
- }];
- return [self.layers filteredArrayUsingPredicate:isPlacePredicate];
-}
-
-- (NSArray<MGLStyleLayer *> *)roadStyleLayers {
- NSSet *streetsSourceIdentifiers = [self.mapboxStreetsSources valueForKey:@"identifier"];
-
- NSSet *roadStyleLayerIdentifiers = [NSSet setWithObjects:@"road_label", @"road", nil];
- NSPredicate *isPlacePredicate = [NSPredicate predicateWithBlock:^BOOL (MGLVectorStyleLayer * _Nullable layer, NSDictionary<NSString *, id> * _Nullable bindings) {
- return [layer isKindOfClass:[MGLVectorStyleLayer class]] && [streetsSourceIdentifiers containsObject:layer.sourceIdentifier] && [roadStyleLayerIdentifiers containsObject:layer.sourceLayerIdentifier];
- }];
- return [self.layers filteredArrayUsingPredicate:isPlacePredicate];
-}
-
-@end
diff --git a/platform/darwin/src/MGLStyleLayer.h b/platform/darwin/src/MGLStyleLayer.h
deleted file mode 100644
index 785a8db7b3..0000000000
--- a/platform/darwin/src/MGLStyleLayer.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLInvalidStyleLayerException;
-
-/**
- `MGLStyleLayer` is an abstract base class for style layers. A style layer
- manages the layout and appearance of content at a specific z-index in a style.
- An `MGLStyle` object consists of one or more `MGLStyleLayer` objects.
-
- Each style layer defined by the style JSON file is represented at runtime by an
- `MGLStyleLayer` object, which you can use to refine the map’s appearance. You
- can also add and remove style layers dynamically.
-
- Create instances of `MGLBackgroundStyleLayer` and the concrete subclasses of
- `MGLForegroundStyleLayer` in order to use `MGLStyleLayer`'s properties and methods.
- You do not create instances of `MGLStyleLayer` directly, and do not
- create your own subclasses of this class.
-
- Do not add `MGLStyleLayer` objects to the `style` property of a `MGLMapView` before
- `-mapView:didFinishLoadingStyle:` is called.
- */
-MGL_EXPORT
-@interface MGLStyleLayer : NSObject
-
-#pragma mark Initializing a Style Layer
-
-- (instancetype)init __attribute__((unavailable("Use -init methods of concrete subclasses instead.")));
-
-#pragma mark Identifying a Style Layer
-
-/**
- A string that uniquely identifies the style layer in the style to which it is
- added.
- */
-@property (nonatomic, copy, readonly) NSString *identifier;
-
-#pragma mark Configuring a Style Layer’s Visibility
-
-/**
- Whether this layer is displayed. A value of `NO` hides the layer.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-toggle-layer/">
- Show and hide a layer</a> example to learn how to toggle an `MGLStyleLayer`
- object's visibility.
- */
-@property (nonatomic, assign, getter=isVisible) BOOL visible;
-
-/**
- The maximum zoom level at which the layer gets parsed and appears. This value is a floating-point number.
- */
-@property (nonatomic, assign) float maximumZoomLevel;
-
-/**
- The minimum zoom level at which the layer gets parsed and appears. This value is a floating-point number.
- */
-@property (nonatomic, assign) float minimumZoomLevel;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLStyleLayer.h.ejs b/platform/darwin/src/MGLStyleLayer.h.ejs
deleted file mode 100644
index 91ba813b17..0000000000
--- a/platform/darwin/src/MGLStyleLayer.h.ejs
+++ /dev/null
@@ -1,199 +0,0 @@
-<%
- const doc = locals.doc;
- const type = locals.type;
- const examples = locals.examples;
- const layoutProperties = locals.layoutProperties;
- const paintProperties = locals.paintProperties;
- const enumProperties = locals.enumProperties;
--%>
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGL<%-
-(type === 'background' ? '' :
- (type === 'raster' || type === 'hillshade' ? 'Foreground' :
- 'Vector'))
-%>StyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-<% for (const property of layoutProperties) { -%>
-<% if (definesEnum(property, layoutProperties)) { -%>
-/**
-<%- propertyDoc(enumName(property), property, type, 'enum').wrap(80, 1) %>
-
- Values of this type are used in the `MGL<%- camelize(type) %>StyleLayer.<%- camelizeWithLeadingLowercase(property.name) %>`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGL<%- camelize(enumName(property)) %>) {
-<% for (const value in property.values) { -%>
- /**
-<%- propertyDoc(enumName(property), property.values[value], type, 'enum').wrap(80, 4+1) %>
- */
- MGL<%- camelize(enumName(property)) %><%- camelize(value) %>,
-<% } -%>
-};
-
-<% } -%>
-<% } -%>
-<% for (const property of paintProperties) { -%>
-<% if (definesEnum(property, paintProperties)) { -%>
-/**
-<%- propertyDoc(enumName(property), property, type, 'enum').wrap(80, 1) %>
-
- Values of this type are used in the `MGL<%- camelize(type) %>StyleLayer.<%- camelizeWithLeadingLowercase(enumName(property)) %>`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGL<%- camelize(enumName(property)) %>) {
-<% for (const value in property.values) { -%>
- /**
-<%- propertyDoc(enumName(property), property.values[value], type, 'enum').wrap(80, 4+1) %>
- */
- MGL<%- camelize(enumName(property)) %><%- camelize(value) %>,
-<% } -%>
-};
-
-<% } -%>
-<% } -%>
-<% if (type == 'background') { -%>
-/**
-<%- doc.wrap(80, 1) %>
- */
-<% } else { -%>
-/**
-<%- doc.wrap(80, 1) %>
-
- You can access an existing <%- type %> style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new <%- type %> style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-<% if (examples) { -%>
-
- #### Related examples
-<%- examples.wrap(80, 1) %>
-<% } -%>
-
- ### Example
-
- ```swift
- ```
- */
-<% } -%>
-MGL_EXPORT
-@interface MGL<%- camelize(type) %>StyleLayer : MGL<%-
-(type === 'background' ? '' :
- (type === 'raster' || type === 'hillshade' ? 'Foreground' :
- 'Vector'))
-%>StyleLayer
-<% if (type === 'background') { -%>
-
-/**
-Returns a <%- type %> style layer initialized with an identifier.
-
-After initializing and configuring the style layer, add it to a map view’s
-style using the `-[MGLStyle addLayer:]` or
-`-[MGLStyle insertLayer:belowLayer:]` method.
-
-@param identifier A string that uniquely identifies the source in the style to
-which it is added.
-*/
-- (instancetype)initWithIdentifier:(NSString *)identifier;
-<% } else { -%>
-
-/**
- Returns a <%- type %> style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-<% } -%>
-
-<% if (layoutProperties.length) { -%>
-#pragma mark - Accessing the Layout Attributes
-
-<% for (const property of layoutProperties) { -%>
-/**
-<%- propertyDoc(property.name, property, type, 'layout').wrap(80, 1) %>
-<% if (property.examples) { -%>
-
- #### Related examples
-<%- propertyExample(property).wrap(80, 1) %>
-<% } -%>
- */
-@property (nonatomic<% if (!property.required) { %>, null_resettable<% } if (property.getter) { %>, getter=<%- objCGetter(property) -%><% } %>) NSExpression *<%- camelizeWithLeadingLowercase(property.name) %>;
-
-<% if (property.original) { %>
-@property (nonatomic<% if (!property.required) { %>, null_resettable<% } %>) NSExpression *<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %> __attribute__((unavailable("Use <%- camelizeWithLeadingLowercase(property.name) %> instead.")));
-
-<% } -%>
-<% } -%>
-<% } -%>
-<% if (paintProperties.length) { -%>
-#pragma mark - Accessing the Paint Attributes
-
-<% for (const property of paintProperties) { -%>
-/**
-<%- propertyDoc(property.name, property, type, 'paint').wrap(80, 1) %>
-<% if (property.examples) { -%>
-
- #### Related examples
-<%- propertyExample(property).wrap(80, 1) %>
-<% } -%>
- */
-@property (nonatomic<% if (!property.required) { %>, null_resettable<% } if (property.getter) { %>, getter=<%- objCGetter(property) -%><% } %>) NSExpression *<%- camelizeWithLeadingLowercase(property.name) %>;
-
-<% if (property["transition"]) { -%>
-/**
- The transition affecting any changes to this layer’s `<%- camelizeWithLeadingLowercase(property.name) %>` property.
-
- This property corresponds to the `<%- originalPropertyName(property) %>-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition <%- camelizeWithLeadingLowercase(property.name) %>Transition;
-
-<% } -%>
-<% if (property.original) { -%>
-@property (nonatomic<% if (!property.required) { %>, null_resettable<% } %>) NSExpression *<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %> __attribute__((unavailable("Use <%- camelizeWithLeadingLowercase(property.name) %> instead.")));
-
-<% } -%>
-<% } -%>
-<% } -%>
-@end
-
-<% if (enumProperties) { -%>
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGL<%- camelize(type) %>StyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGL<%- camelize(type) %>StyleLayerAdditions)
-
-#pragma mark Working with <%- camelize(unhyphenate(type)) %> Style Layer Attribute Values
-
-<% for (let property of enumProperties) { -%>
-/**
- Creates a new value object containing the given `MGL<%- camelize(enumName(property)) %>` enumeration.
-
- @param <%- objCName(property) %> The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGL<%- camelize(enumName(property)) %>:(MGL<%- camelize(enumName(property)) %>)<%- objCName(property) %>;
-
-/**
- The `MGL<%- camelize(enumName(property)) %>` enumeration representation of the value.
- */
-@property (readonly) MGL<%- camelize(enumName(property)) %> MGL<%- camelize(enumName(property)) %>Value;
-
-<% } -%>
-@end
-
-<% } -%>
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLStyleLayer.mm b/platform/darwin/src/MGLStyleLayer.mm
deleted file mode 100644
index 7847cbb319..0000000000
--- a/platform/darwin/src/MGLStyleLayer.mm
+++ /dev/null
@@ -1,123 +0,0 @@
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyle_Private.h"
-
-#include <mbgl/style/style.hpp>
-#include <mbgl/style/layer.hpp>
-
-const MGLExceptionName MGLInvalidStyleLayerException = @"MGLInvalidStyleLayerException";
-
-@interface MGLStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::Layer *rawLayer;
-
-@end
-
-@implementation MGLStyleLayer {
- std::unique_ptr<mbgl::style::Layer> _pendingLayer;
- mapbox::base::WeakPtr<mbgl::style::Layer> _weakLayer;
-}
-
-- (instancetype)initWithRawLayer:(mbgl::style::Layer *)rawLayer {
- if (self = [super init]) {
- _identifier = @(rawLayer->getID().c_str());
- _weakLayer = rawLayer->makeWeakPtr();
- rawLayer->peer = LayerWrapper { self };
- }
- return self;
-}
-
-- (instancetype)initWithPendingLayer:(std::unique_ptr<mbgl::style::Layer>)pendingLayer {
- if (self = [self initWithRawLayer:pendingLayer.get()]) {
- _pendingLayer = std::move(pendingLayer);
- }
- return self;
-}
-
-- (mbgl::style::Layer *)rawLayer
-{
- return _weakLayer.get();
-}
-
-- (void)addToStyle:(MGLStyle *)style belowLayer:(MGLStyleLayer *)otherLayer
-{
- if (_pendingLayer == nullptr) {
- [NSException raise:MGLRedundantLayerException
- format:@"This instance %@ was already added to %@. Adding the same layer instance " \
- "to the style more than once is invalid.", self, style];
- }
-
- if (otherLayer) {
- const mbgl::optional<std::string> belowLayerId{otherLayer.identifier.UTF8String};
- style.rawStyle->addLayer(std::move(_pendingLayer), belowLayerId);
- } else {
- style.rawStyle->addLayer(std::move(_pendingLayer));
- }
-}
-
-- (void)removeFromStyle:(MGLStyle *)style
-{
- if (self.rawLayer == style.rawStyle->getLayer(self.identifier.UTF8String)) {
- _pendingLayer = style.rawStyle->removeLayer(self.identifier.UTF8String);
- }
-}
-
-- (void)setVisible:(BOOL)visible
-{
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::VisibilityType v = visible
- ? mbgl::style::VisibilityType::Visible
- : mbgl::style::VisibilityType::None;
- self.rawLayer->setVisibility(v);
-}
-
-- (BOOL)isVisible
-{
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::VisibilityType v = self.rawLayer->getVisibility();
- return (v == mbgl::style::VisibilityType::Visible);
-}
-
-- (void)setMaximumZoomLevel:(float)maximumZoomLevel
-{
- MGLAssertStyleLayerIsValid();
-
- self.rawLayer->setMaxZoom(maximumZoomLevel);
-}
-
-- (float)maximumZoomLevel
-{
- MGLAssertStyleLayerIsValid();
-
- return self.rawLayer->getMaxZoom();
-}
-
-- (void)setMinimumZoomLevel:(float)minimumZoomLevel
-{
- MGLAssertStyleLayerIsValid();
-
- self.rawLayer->setMinZoom(minimumZoomLevel);
-}
-
-- (float)minimumZoomLevel
-{
- MGLAssertStyleLayerIsValid();
-
- return self.rawLayer->getMinZoom();
-}
-
-- (NSString *)description
-{
- if (self.rawLayer) {
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@; visible = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier,
- self.visible ? @"YES" : @"NO"];
- }
- else {
- return [NSString stringWithFormat:@"<%@: %p; identifier = %@; visible = NO>",
- NSStringFromClass([self class]), (void *)self, self.identifier];
- }
-}
-
-@end
diff --git a/platform/darwin/src/MGLStyleLayer.mm.ejs b/platform/darwin/src/MGLStyleLayer.mm.ejs
deleted file mode 100644
index 5664f7fd45..0000000000
--- a/platform/darwin/src/MGLStyleLayer.mm.ejs
+++ /dev/null
@@ -1,265 +0,0 @@
-<%
- const type = locals.type;
- const layoutProperties = locals.layoutProperties;
- const paintProperties = locals.paintProperties;
- const enumProperties = locals.enumProperties;
--%>
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGL<%- camelize(type) %>StyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGL<%- camelize(type) %>StyleLayer_Private.h"
-
-#include <mbgl/style/layers/<%- type.replace('-', '_') %>_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-<% if (enumProperties) { -%>
-
-namespace mbgl {
-
-<% if (layoutProperties.length) { -%>
-<% for (const property of layoutProperties) { -%>
-<% if (definesEnum(property, layoutProperties)) { -%>
- MBGL_DEFINE_ENUM(MGL<%- camelize(enumName(property)) %>, {
-<% for (const value in property.values) { -%>
- { MGL<%- camelize(enumName(property)) %><%- camelize(value) %>, "<%-value%>" },
-<% } -%>
- });
-
-<% } -%>
-<% } -%>
-<% } -%>
-<% if (paintProperties.length) { -%>
-<% for (const property of paintProperties) { -%>
-<% if (definesEnum(property, paintProperties)) { -%>
- MBGL_DEFINE_ENUM(MGL<%- camelize(enumName(property)) %>, {
-<% for (const value in property.values) { -%>
- { MGL<%- camelize(enumName(property)) %><%- camelize(value) %>, "<%-value%>" },
-<% } -%>
- });
-
-<% } -%>
-<% } -%>
-<% } -%>
-}
-<% } -%>
-
-@interface MGL<%- camelize(type) %>StyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::<%- camelize(type) %>Layer *rawLayer;
-
-@end
-
-@implementation MGL<%- camelize(type) %>StyleLayer
-
-<% if (type == 'background') { -%>
-- (instancetype)initWithIdentifier:(NSString *)identifier
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@", NSStringFromClass([self class]), identifier);
- auto layer = std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-<% } else { -%>
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-<% } -%>
-- (mbgl::style::<%- camelize(type) %>Layer *)rawLayer
-{
- return (mbgl::style::<%- camelize(type) %>Layer *)super.rawLayer;
-}
-
-<% if (type !== 'background') { -%>
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-<% if (type !== 'raster' && type !== 'hillshade') { -%>
-- (NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- auto layerID = self.rawLayer->getSourceLayer();
- return layerID.empty() ? nil : @(layerID.c_str());
-}
-
-- (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting sourceLayerIdentifier: %@", sourceLayerIdentifier);
-
- self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: "");
-}
-
-- (void)setPredicate:(NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting predicate: %@", predicate);
-
- self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::Filter());
-}
-
-- (NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
-
- return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()];
-}
-
-<% }} -%>
-<% if (layoutProperties.length) { -%>
-#pragma mark - Accessing the Layout Attributes
-
-<% for (const property of layoutProperties) { -%>
-- (void)set<%- camelize(property.name) %>:(NSExpression *)<%- objCName(property) %> {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting <%- objCName(property) %>: %@", <%- objCName(property) %>);
-
-<% if (property.tokens) { -%>
- if (<%- objCName(property) %> && <%- objCName(property) %>.expressionType == NSConstantValueExpressionType) {
- std::string string = ((NSString *)<%- objCName(property) %>.constantValue).UTF8String;
- if (mbgl::style::conversion::hasTokens(string)) {
-<% if (property.type === 'formatted') { -%>
- self.rawLayer->set<%- camelize(originalPropertyName(property)) %>(mbgl::style::PropertyValue<mbgl::style::expression::Formatted>(
- mbgl::style::conversion::convertTokenStringToFormatExpression(string)));
-<% } else if (property.type === 'resolvedImage') { -%>
- self.rawLayer->set<%- camelize(originalPropertyName(property)) %>(mbgl::style::PropertyValue<mbgl::style::expression::Image>(
- mbgl::style::conversion::convertTokenStringToImageExpression(string)));
-<% } else { -%>
- self.rawLayer->set<%- camelize(originalPropertyName(property)) %>(mbgl::style::PropertyValue<std::string>(
- mbgl::style::conversion::convertTokenStringToExpression(string)));
-<% } -%>
- return;
- }
- }
-<% } -%>
-<% if (isDataDriven(property)) { -%>
- auto mbglValue = MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toPropertyValue<mbgl::style::PropertyValue<<%- valueTransformerArguments(property)[0] %>>>(<%- objCName(property) %>, true);
-<% } else { -%>
- auto mbglValue = MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toPropertyValue<mbgl::style::PropertyValue<<%- valueTransformerArguments(property)[0] %>>>(<%- objCName(property) %>, false);
-<% } -%>
- self.rawLayer->set<%- camelize(originalPropertyName(property)) %>(mbglValue);
-}
-
-- (NSExpression *)<%- objCGetter(property) %> {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->get<%- camelize(originalPropertyName(property)) %>();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefault<%- camelize(originalPropertyName(property)) %>();
- }
- return MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toExpression(propertyValue);
-}
-
-<% if (property.original) { -%>
-- (void)set<%- camelize(originalPropertyName(property)) %>:(NSExpression *)<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %> {
-}
-
-- (NSExpression *)<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %> {
- return self.<%- objCGetter(property) %>;
-}
-
-<% } -%>
-<% } -%>
-<% } -%>
-<% if (paintProperties.length) { -%>
-#pragma mark - Accessing the Paint Attributes
-<% for (const property of paintProperties) { -%>
-
-- (void)set<%- camelize(property.name) %>:(NSExpression *)<%- objCName(property) %> {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting <%- objCName(property) %>: %@", <%- objCName(property) %>);
-
-<% switch (property['property-type']) {
- case 'color-ramp': -%>
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::ColorRampPropertyValue>(<%- objCName(property) %>);
-<% break
- case 'data-driven':
- case 'cross-faded-data-driven': -%>
- auto mbglValue = MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toPropertyValue<mbgl::style::PropertyValue<<%- valueTransformerArguments(property)[0] %>>>(<%- objCName(property) %>, true);
-<% break
- default: -%>
- auto mbglValue = MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toPropertyValue<mbgl::style::PropertyValue<<%- valueTransformerArguments(property)[0] %>>>(<%- objCName(property) %>, false);
-<% } -%>
- self.rawLayer->set<%- camelize(originalPropertyName(property)) %>(mbglValue);
-}
-
-- (NSExpression *)<%- objCGetter(property) %> {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->get<%- camelize(originalPropertyName(property)) %>();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefault<%- camelize(originalPropertyName(property)) %>();
- }
- return MGLStyleValueTransformer<<%- valueTransformerArguments(property).join(', ') %>>().toExpression(propertyValue);
-}
-<% if (property["transition"]) { -%>
-
-- (void)set<%- camelize(property.name) %>Transition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting <%- objCName(property) %>Transition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->set<%- camelize(originalPropertyName(property)) %>Transition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)<%- objCGetter(property) %>Transition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->get<%- camelize(originalPropertyName(property)) %>Transition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-<% } -%>
-<% if (property.original) { -%>
-
-- (void)set<%- camelize(originalPropertyName(property)) %>:(NSExpression *)<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %> {
-}
-
-- (NSExpression *)<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %> {
- return self.<%- objCGetter(property) %>;
-}
-<% } -%>
-<% } -%>
-<% } -%>
-
-@end
-<% if (enumProperties) { -%>
-
-@implementation NSValue (MGL<%- camelize(type) %>StyleLayerAdditions)
-
-<% for (let property of enumProperties) { -%>
-+ (NSValue *)valueWithMGL<%- camelize(enumName(property)) %>:(MGL<%- camelize(enumName(property)) %>)<%- objCName(property) %> {
- return [NSValue value:&<%- objCName(property) %> withObjCType:@encode(MGL<%- camelize(enumName(property)) %>)];
-}
-
-- (MGL<%- camelize(enumName(property)) %>)MGL<%- camelize(enumName(property)) %>Value {
- MGL<%- camelize(enumName(property)) %> <%- objCName(property) %>;
- [self getValue:&<%- objCName(property) %>];
- return <%- objCName(property) %>;
-}
-
-<% } -%>
-@end
-<% } -%>
-
-namespace mbgl {
-
-MGLStyleLayer* <%- camelize(type) %>StyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGL<%- camelize(type) %>StyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLStyleLayerManager.h b/platform/darwin/src/MGLStyleLayerManager.h
deleted file mode 100644
index 95fecd0252..0000000000
--- a/platform/darwin/src/MGLStyleLayerManager.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#pragma once
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/layer_manager.hpp>
-#include <mbgl/style/layer.hpp>
-
-#include <map>
-#include <string>
-#include <vector>
-
-namespace mbgl {
-
-class LayerManagerDarwin : public LayerManager {
-public:
- static LayerManagerDarwin* get() noexcept;
- ~LayerManagerDarwin();
-
- MGLStyleLayer* createPeer(style::Layer*);
-
-private:
- LayerManagerDarwin();
- /**
- * Enables a layer type for both JSON style and runtime API.
- */
- void addLayerType(std::unique_ptr<LayerPeerFactory>);
- /**
- * Enables a layer type for JSON style only.
- *
- * We might not want to expose runtime API for some layer types
- * in order to save binary size (the corresponding SDK layer wrappers
- * should be excluded from the project build).
- */
- void addLayerTypeCoreOnly(std::unique_ptr<mbgl::LayerFactory>);
-
- void registerCoreFactory(LayerFactory*);
- LayerPeerFactory* getPeerFactory(const style::LayerTypeInfo* typeInfo);
- // mbgl::LayerManager overrides.
- LayerFactory* getFactory(const std::string& type) noexcept final;
- LayerFactory* getFactory(const mbgl::style::LayerTypeInfo* info) noexcept final;
-
- std::vector<std::unique_ptr<LayerPeerFactory>> peerFactories;
- std::vector<std::unique_ptr<LayerFactory>> coreFactories;
- std::map<std::string, LayerFactory*> typeToFactory;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLStyleLayerManager.mm b/platform/darwin/src/MGLStyleLayerManager.mm
deleted file mode 100644
index 72673d4c23..0000000000
--- a/platform/darwin/src/MGLStyleLayerManager.mm
+++ /dev/null
@@ -1,147 +0,0 @@
-#import "MGLStyleLayerManager.h"
-
-#import "MGLBackgroundStyleLayer_Private.h"
-#import "MGLCircleStyleLayer_Private.h"
-#import "MGLFillExtrusionStyleLayer_Private.h"
-#import "MGLFillStyleLayer_Private.h"
-#import "MGLHeatmapStyleLayer_Private.h"
-#import "MGLHillshadeStyleLayer_Private.h"
-#import "MGLLineStyleLayer_Private.h"
-#import "MGLRasterStyleLayer_Private.h"
-#import "MGLSymbolStyleLayer_Private.h"
-#import "MGLOpenGLStyleLayer_Private.h"
-
-#include <vector>
-
-namespace mbgl {
-
-LayerManagerDarwin::LayerManagerDarwin() {
-#if defined(MBGL_LAYER_FILL_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<FillLayerFactory>());
-#elif !defined(MBGL_LAYER_FILL_DISABLE_ALL)
- addLayerType(std::make_unique<FillStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_LINE_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<LineLayerFactory>());
-#elif !defined(MBGL_LAYER_LINE_DISABLE_ALL)
- addLayerType(std::make_unique<LineStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_CIRCLE_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<CircleLayerFactory>());
-#elif !defined(MBGL_LAYER_CIRCLE_DISABLE_ALL)
- addLayerType(std::make_unique<CircleStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_SYMBOL_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<SymbolLayerFactory>());
-#elif !defined(MBGL_LAYER_SYMBOL_DISABLE_ALL)
- addLayerType(std::make_unique<SymbolStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_RASTER_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<RasterLayerFactory>());
-#elif !defined(MBGL_LAYER_RASTER_DISABLE_ALL)
- addLayerType(std::make_unique<RasterStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_BACKGROUND_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<BackgroundLayerFactory>());
-#elif !defined(MBGL_LAYER_BACKGROUND_DISABLE_ALL)
- addLayerType(std::make_unique<BackgroundStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_HILLSHADE_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<HillshadeLayerFactory>());
-#elif !defined(MBGL_LAYER_HILLSHADE_DISABLE_ALL)
- addLayerType(std::make_unique<HillshadeStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_FILL_EXTRUSION_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<FillExtrusionLayerFactory>());
-#elif !defined(MBGL_LAYER_FILL_EXTRUSION_DISABLE_ALL)
- addLayerType(std::make_unique<FillExtrusionStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_HEATMAP_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<HeatmapLayerFactory>());
-#elif !defined(MBGL_LAYER_HEATMAP_DISABLE_ALL)
- addLayerType(std::make_unique<HeatmapStyleLayerPeerFactory>());
-#endif
-#if defined(MBGL_LAYER_CUSTOM_DISABLE_RUNTIME)
- addLayerTypeCoreOnly(std::make_unique<CustomLayerFactory>());
-#elif !defined(MBGL_LAYER_CUSTOM_DISABLE_ALL)
- addLayerType(std::make_unique<OpenGLStyleLayerPeerFactory>());
-#endif
-}
-
-LayerManagerDarwin::~LayerManagerDarwin() = default;
-
-MGLStyleLayer* LayerManagerDarwin::createPeer(style::Layer* layer) {
- if (auto* factory = getPeerFactory(layer->getTypeInfo())) {
- return factory->createPeer(layer);
- }
- return nullptr;
-}
-
-void LayerManagerDarwin::addLayerType(std::unique_ptr<LayerPeerFactory> factory) {
- NSCAssert(getFactory(factory->getCoreLayerFactory()->getTypeInfo()) == nullptr,
- @"A layer factory with the given info is already added.");
- registerCoreFactory(factory->getCoreLayerFactory());
- peerFactories.emplace_back(std::move(factory));
-}
-
-void LayerManagerDarwin::addLayerTypeCoreOnly(std::unique_ptr<LayerFactory> factory) {
- NSCAssert(getFactory(factory->getTypeInfo()) == nullptr,
- @"A layer factory with the given info is already added.");
- registerCoreFactory(factory.get());
- coreFactories.emplace_back(std::move(factory));
-}
-
-void LayerManagerDarwin::registerCoreFactory(LayerFactory* factory) {
- std::string type{factory->getTypeInfo()->type};
- if (!type.empty()) {
- NSCAssert(typeToFactory.find(type) == typeToFactory.end(), @"A layer type can be registered only once.");
- typeToFactory.emplace(std::make_pair(std::move(type), factory));
- }
-}
-
-LayerPeerFactory* LayerManagerDarwin::getPeerFactory(const mbgl::style::LayerTypeInfo* typeInfo) {
- for (const auto& factory: peerFactories) {
- if (factory->getCoreLayerFactory()->getTypeInfo() == typeInfo) {
- return factory.get();
- }
- }
- return nullptr;
-}
-
-LayerFactory* LayerManagerDarwin::getFactory(const std::string& type) noexcept {
- auto search = typeToFactory.find(type);
- return (search != typeToFactory.end()) ? search->second : nullptr;
-}
-
-LayerFactory* LayerManagerDarwin::getFactory(const mbgl::style::LayerTypeInfo* info) noexcept {
- if (LayerPeerFactory* peerFactory = getPeerFactory(info)) {
- return peerFactory->getCoreLayerFactory();
- }
-
- for (const auto& factory: coreFactories) {
- if (factory->getTypeInfo() == info) {
- return factory.get();
- }
- }
-
- return nullptr;
-}
-
-// static
-LayerManagerDarwin* LayerManagerDarwin::get() noexcept {
- static LayerManagerDarwin impl;
- return &impl;
-}
-
-// static
-LayerManager* LayerManager::get() noexcept {
- return LayerManagerDarwin::get();
-}
-
-#if defined(MBGL_LAYER_LINE_DISABLE_ALL) || defined(MBGL_LAYER_SYMBOL_DISABLE_ALL) || defined(MBGL_LAYER_FILL_DISABLE_ALL)
-const bool LayerManager::annotationsEnabled = false;
-#else
-const bool LayerManager::annotationsEnabled = true;
-#endif
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLStyleLayer_Private.h b/platform/darwin/src/MGLStyleLayer_Private.h
deleted file mode 100644
index 52254f78c6..0000000000
--- a/platform/darwin/src/MGLStyleLayer_Private.h
+++ /dev/null
@@ -1,104 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLStyleLayer.h"
-#import "MGLStyleValue_Private.h"
-
-#include <mbgl/layermanager/layer_factory.hpp>
-#include <mbgl/style/layer.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-// A struct to be stored in the `peer` member of mbgl::style::Layer, in order to implement
-// object identity. We don't store a MGLStyleLayer pointer directly because that doesn't
-// interoperate with ARC. The inner pointer is weak in order to avoid a reference cycle for
-// "pending" MGLStyleLayers, which have a strong owning pointer to the mbgl::style::Layer.
-struct LayerWrapper {
- __weak MGLStyleLayer *layer;
-};
-
-/**
- Assert that the style layer is valid.
-
- This macro should be used at the beginning of any public-facing instance method
- of `MGLStyleLayer` and its subclasses. For private methods, an assertion is more appropriate.
- */
-#define MGLAssertStyleLayerIsValid() \
- do { \
- if (!self.rawLayer) { \
- [NSException raise:MGLInvalidStyleLayerException \
- format: \
- @"Either this layer got invalidated after the style change or " \
- @"-[MGLStyle removeLayer:] has been called " \
- @"with this instance but another style layer instance was added with the same identifer. It is an " \
- @"error to send any message to this layer since it cannot be recovered after removal due to the " \
- @"identifier collision. Use unique identifiers for all layer instances including layers of " \
- @"different types."]; \
- } \
- } while (NO);
-
-@class MGLStyle;
-
-@interface MGLStyleLayer (Private)
-
-/**
- Initializes and returns a layer with a raw pointer to the backing store,
- associated with a style.
- */
-- (instancetype)initWithRawLayer:(mbgl::style::Layer *)rawLayer;
-
-/**
- Initializes and returns a layer with an owning pointer to the backing store,
- unassociated from a style.
- */
-- (instancetype)initWithPendingLayer:(std::unique_ptr<mbgl::style::Layer>)pendingLayer;
-
-@property (nonatomic, readwrite, copy) NSString *identifier;
-
-/**
- A raw pointer to the mbgl object, which is always initialized, either to the
- value returned by `mbgl::Map getLayer`, or for independently created objects,
- to the pointer value held in `pendingLayer`. In the latter case, this raw
- pointer value stays even after ownership of the object is transferred via
- `mbgl::Map addLayer`.
- */
-@property (nonatomic, readonly) mbgl::style::Layer *rawLayer;
-
-/**
- Adds the mbgl style layer that this object represents to the mbgl map below the
- specified `otherLayer`.
-
- Once a mbgl style layer is added, ownership of the object is transferred to the
- `mbgl::Map` and this object no longer has an active unique_ptr reference to the
- `mbgl::style::Layer`.
- */
-- (void)addToStyle:(MGLStyle *)style belowLayer:(nullable MGLStyleLayer *)otherLayer;
-
-/**
- Removes the mbgl style layer that this object represents from the mbgl map.
-
- When a mbgl style layer is removed, ownership of the object is transferred back
- to the `MGLStyleLayer` instance and the unique_ptr reference is valid again. It
- is safe to add the layer back to the style after it is removed.
- */
-- (void)removeFromStyle:(MGLStyle *)style;
-
-@end
-
-namespace mbgl {
-
-class LayerPeerFactory {
-public:
- virtual ~LayerPeerFactory() = default;
- /**
- Get the corresponding core layer factory.
- */
- virtual LayerFactory* getCoreLayerFactory() = 0;
- /**
- Creates an MGLStyleLayer instance with a raw pointer to the backing store.
- */
- virtual MGLStyleLayer* createPeer(style::Layer*) = 0;
-};
-
-} // namespace mbgl
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLStyleLayer_Private.h.ejs b/platform/darwin/src/MGLStyleLayer_Private.h.ejs
deleted file mode 100644
index a6e6b9cd87..0000000000
--- a/platform/darwin/src/MGLStyleLayer_Private.h.ejs
+++ /dev/null
@@ -1,24 +0,0 @@
-<%
- const doc = locals.doc;
- const type = locals.type;
- const layoutProperties = locals.layoutProperties;
- const paintProperties = locals.paintProperties;
- const enumProperties = locals.enumProperties;
--%>
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/<%- type.replace('-', '_') %>_layer_factory.hpp>
-
-namespace mbgl {
-
-class <%- camelize(type) %>StyleLayerPeerFactory : public LayerPeerFactory, public mbgl::<%- camelize(type) %>LayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLStyleValue.h b/platform/darwin/src/MGLStyleValue.h
deleted file mode 100644
index 2a90472b02..0000000000
--- a/platform/darwin/src/MGLStyleValue.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreGraphics/CoreGraphics.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString *MGLStyleFunctionOption NS_STRING_ENUM NS_UNAVAILABLE;
-
-FOUNDATION_EXTERN MGL_EXPORT const MGLStyleFunctionOption MGLStyleFunctionOptionInterpolationBase __attribute__((unavailable("Use NSExpression instead, applying the mgl_interpolate:withCurveType:parameters:stops: function with a curve type of “exponential” and a non-nil parameter.")));
-
-FOUNDATION_EXTERN MGL_EXPORT const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue __attribute__((unavailable("Use +[NSExpression expressionForConditional:trueExpression:falseExpression:] instead.")));
-
-typedef NS_ENUM(NSUInteger, MGLInterpolationMode) {
- MGLInterpolationModeExponential __attribute__((unavailable("Use NSExpression instead, applying the mgl_interpolate:withCurveType:parameters:stops: function with a curve type of “exponential”."))) = 0,
- MGLInterpolationModeInterval __attribute__((unavailable("Use NSExpression instead, calling the mgl_step:from:stops: function."))),
- MGLInterpolationModeCategorical __attribute__((unavailable("Use NSExpression instead."))),
- MGLInterpolationModeIdentity __attribute__((unavailable("Use +[NSExpression expressionForKeyPath:] instead.")))
-} __attribute__((unavailable("Use NSExpression instead.")));
-
-MGL_EXPORT __attribute__((unavailable("Use NSExpression instead.")))
-@interface MGLStyleValue<T> : NSObject
-@end
-
-MGL_EXPORT __attribute__((unavailable("Use +[NSExpression expressionForConstantValue:] instead.")))
-@interface MGLConstantStyleValue<T> : MGLStyleValue<T>
-@end
-
-@compatibility_alias MGLStyleConstantValue MGLConstantStyleValue;
-
-MGL_EXPORT __attribute__((unavailable("Use NSExpression instead, calling the mgl_step:from:stops: or mgl_interpolate:withCurveType:parameters:stops: function.")))
-@interface MGLStyleFunction<T> : MGLStyleValue<T>
-@end
-
-MGL_EXPORT __attribute__((unavailable("Use NSExpression instead, applying the mgl_step:from:stops: or mgl_interpolate:withCurveType:parameters:stops: function to the $zoomLevel variable.")))
-@interface MGLCameraStyleFunction<T> : MGLStyleFunction<T>
-@end
-
-MGL_EXPORT __attribute__((unavailable("Use NSExpression instead, applying the mgl_step:from:stops: or mgl_interpolate:withCurveType:parameters:stops: function to a key path expression.")))
-@interface MGLSourceStyleFunction<T> : MGLStyleFunction<T>
-@end
-
-MGL_EXPORT __attribute__((unavailable("Use a NSExpression instead with nested mgl_step:from:stops: or mgl_interpolate:withCurveType:parameters:stops: function calls.")))
-@interface MGLCompositeStyleFunction<T> : MGLStyleFunction<T>
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLStyleValue.mm b/platform/darwin/src/MGLStyleValue.mm
deleted file mode 100644
index 01ad108d7f..0000000000
--- a/platform/darwin/src/MGLStyleValue.mm
+++ /dev/null
@@ -1,59 +0,0 @@
-#import "MGLStyleValue_Private.h"
-
-#include <mbgl/style/expression/expression.hpp>
-
-const MGLStyleFunctionOption MGLStyleFunctionOptionInterpolationBase = @"MGLStyleFunctionOptionInterpolationBase";
-const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunctionOptionDefaultValue";
-
-id MGLJSONObjectFromMBGLValue(const mbgl::Value &value) {
- return value.match([](const mbgl::NullValue) -> id {
- return [NSNull null];
- }, [](const bool value) {
- return @(value);
- }, [](const float value) {
- return @(value);
- }, [](const int64_t value) {
- return @(value);
- }, [](const double value) {
- return @(value);
- }, [](const std::string &value) {
- return @(value.c_str());
- }, [](const mbgl::Color &value) {
- return [MGLColor mgl_colorWithColor:value];
- }, [](const mbgl::style::Position &value) {
- std::array<float, 3> spherical = value.getSpherical();
- MGLSphericalPosition position = MGLSphericalPositionMake(spherical[0], spherical[1], spherical[2]);
- return [NSValue valueWithMGLSphericalPosition:position];
- }, [&](const std::vector<mbgl::Value> &vector) {
- NSMutableArray *array = [NSMutableArray arrayWithCapacity:vector.size()];
- for (auto value : vector) {
- [array addObject:MGLJSONObjectFromMBGLValue(value)];
- }
- return array;
- }, [&](const std::unordered_map<std::string, mbgl::Value> &map) {
- NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:map.size()];
- for (auto &item : map) {
- dictionary[@(item.first.c_str())] = MGLJSONObjectFromMBGLValue(item.second);
- }
- return dictionary;
- }, [](const auto &) -> id {
- return nil;
- });
-}
-
-id MGLJSONObjectFromMBGLExpression(const mbgl::style::expression::Expression &mbglExpression) {
- return MGLJSONObjectFromMBGLValue(mbglExpression.serialize());
-}
-
-
-std::unique_ptr<mbgl::style::expression::Expression> MGLClusterPropertyFromNSExpression(NSExpression *expression) {
- if (!expression) {
- return nullptr;
- }
-
- NSArray *jsonExpression = expression.mgl_jsonExpressionObject;
-
- auto expr = mbgl::style::expression::dsl::createExpression(mbgl::style::conversion::makeConvertible(jsonExpression));
-
- return expr;
-}
diff --git a/platform/darwin/src/MGLStyleValue_Private.h b/platform/darwin/src/MGLStyleValue_Private.h
deleted file mode 100644
index 43f0b9d282..0000000000
--- a/platform/darwin/src/MGLStyleValue_Private.h
+++ /dev/null
@@ -1,348 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLStyleValue.h"
-
-#import "NSValue+MGLStyleAttributeAdditions.h"
-#import "NSValue+MGLAdditions.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLTypes.h"
-
-#import "MGLConversion.h"
-#include <mbgl/style/conversion/color_ramp_property_value.hpp>
-#include <mbgl/style/conversion/property_value.hpp>
-#include <mbgl/style/conversion/position.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-#import <mbgl/style/transition_options.hpp>
-#import <mbgl/style/types.hpp>
-
-#import <mbgl/util/enum.hpp>
-#include <mbgl/util/interpolate.hpp>
-
-#include <memory>
-
-#if TARGET_OS_IPHONE
- #import "UIColor+MGLAdditions.h"
-#else
- #import "NSColor+MGLAdditions.h"
-#endif
-
-namespace mbgl {
- namespace style {
- namespace expression {
- class Expression;
- }
- }
-}
-
-NS_INLINE MGLTransition MGLTransitionFromOptions(const mbgl::style::TransitionOptions& options) {
- MGLTransition transition;
- transition.duration = MGLTimeIntervalFromDuration(options.duration.value_or(mbgl::Duration::zero()));
- transition.delay = MGLTimeIntervalFromDuration(options.delay.value_or(mbgl::Duration::zero()));
-
- return transition;
-}
-
-NS_INLINE mbgl::style::TransitionOptions MGLOptionsFromTransition(MGLTransition transition) {
- mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } };
- return options;
-}
-
-std::unique_ptr<mbgl::style::expression::Expression> MGLClusterPropertyFromNSExpression(NSExpression *expression);
-
-id MGLJSONObjectFromMBGLExpression(const mbgl::style::expression::Expression &mbglExpression);
-
-template <typename MBGLType, typename ObjCType, typename MBGLElement = MBGLType, typename ObjCEnum = ObjCType>
-class MGLStyleValueTransformer {
-public:
-
- /// Convert an mbgl property value into an mgl style value
- NSExpression *toExpression(const mbgl::style::PropertyValue<MBGLType> &mbglValue) {
- PropertyExpressionEvaluator evaluator;
- return mbglValue.evaluate(evaluator);
- }
-
- // Convert an mbgl heatmap color property value into an mgl style value
- NSExpression *toExpression(const mbgl::style::ColorRampPropertyValue &mbglValue) {
- if (mbglValue.isUndefined()) {
- return nil;
- }
- return [NSExpression expressionWithMGLJSONObject:MGLJSONObjectFromMBGLExpression(mbglValue.getExpression())];
- }
-
- /**
- Converts an NSExpression to an mbgl property value.
- */
- template <typename MBGLValue>
- typename std::enable_if_t<!std::is_same<MBGLValue, mbgl::style::ColorRampPropertyValue>::value,
- MBGLValue> toPropertyValue(NSExpression *expression, bool allowDataExpressions) {
- if (!expression) {
- return {};
- }
-
- if (expression.expressionType == NSConstantValueExpressionType) {
- MBGLType mbglValue;
- getMBGLValue(expression.constantValue, mbglValue);
- return mbglValue;
- }
- if (expression.expressionType == NSAggregateExpressionType) {
- MBGLType mbglValue;
- getMBGLValue(expression.collection, mbglValue);
- return mbglValue;
- }
-
- NSArray *jsonExpression = expression.mgl_jsonExpressionObject;
-
- mbgl::style::conversion::Error valueError;
- auto value = mbgl::style::conversion::convert<MBGLValue>(
- mbgl::style::conversion::makeConvertible(jsonExpression), valueError, allowDataExpressions, false);
- if (!value) {
- [NSException raise:NSInvalidArgumentException
- format:@"Invalid property value: %@", @(valueError.message.c_str())];
- return {};
- }
-
- return *value;
- }
-
- /**
- Converts an NSExpression to an mbgl property value.
- */
- template <typename MBGLValue>
- typename std::enable_if_t<std::is_same<MBGLValue, mbgl::style::ColorRampPropertyValue>::value,
- MBGLValue> toPropertyValue(NSExpression *expression) {
- if (!expression) {
- return {};
- }
-
- NSArray *jsonExpression = expression.mgl_jsonExpressionObject;
-
- mbgl::style::conversion::Error valueError;
- auto value = mbgl::style::conversion::convert<mbgl::style::ColorRampPropertyValue>(
- mbgl::style::conversion::makeConvertible(jsonExpression), valueError);
- if (!value) {
- [NSException raise:NSInvalidArgumentException
- format:@"Invalid property value: %@", @(valueError.message.c_str())];
- return {};
- }
-
- return *value;
- }
-
-private: // Private utilities for converting from mgl to mbgl values
-
- /**
- As hack to allow converting enum => string values, we accept a second, dummy parameter in
- the toRawStyleSpecValue() methods for converting 'atomic' (non-style-function) values.
- This allows us to use `std::enable_if` to test (at compile time) whether or not MBGLType is an Enum.
- */
- template <typename MBGLEnum = MBGLType,
- class = typename std::enable_if<!std::is_enum<MBGLEnum>::value>::type,
- typename MGLEnum = ObjCEnum,
- class = typename std::enable_if<!std::is_enum<MGLEnum>::value>::type>
- NSObject* toRawStyleSpecValue(NSObject *rawMGLValue, MBGLEnum &) {
- if ([rawMGLValue isKindOfClass:[NSValue class]]) {
- const auto rawNSValue = (NSValue *)rawMGLValue;
- if (strcmp([rawNSValue objCType], @encode(CGVector)) == 0) {
- // offset [x, y]
- std::array<float, 2> mglValue = rawNSValue.mgl_offsetArrayValue;
- return [NSArray arrayWithObjects:@(mglValue[0]), @(mglValue[1]), nil];
- }
- }
- // noop pass-through plain NSObject-based items
- return rawMGLValue;
- }
-
- template <typename MBGLEnum = MBGLType,
- class = typename std::enable_if<std::is_enum<MBGLEnum>::value>::type,
- typename MGLEnum = ObjCEnum,
- class = typename std::enable_if<std::is_enum<MGLEnum>::value>::type>
- NSString* toRawStyleSpecValue(ObjCType rawValue, MBGLEnum &) {
- MGLEnum mglEnum;
- [rawValue getValue:&mglEnum];
- return @(mbgl::Enum<MGLEnum>::toString(mglEnum));
- }
-
- NSObject* toRawStyleSpecValue(MGLColor *color, MBGLType &) {
- return @(color.mgl_color.stringify().c_str());
- }
-
- // Bool
- void getMBGLValue(NSNumber *rawValue, bool &mbglValue) {
- mbglValue = !!rawValue.boolValue;
- }
-
- // Float
- void getMBGLValue(NSNumber *rawValue, float &mbglValue) {
- mbglValue = rawValue.floatValue;
- }
-
- // String
- void getMBGLValue(NSString *rawValue, std::string &mbglValue) {
- mbglValue = rawValue.UTF8String;
- }
-
- // Formatted
- void getMBGLValue(NSString *rawValue, mbgl::style::expression::Formatted &mbglValue) {
- mbglValue = mbgl::style::expression::Formatted(rawValue.UTF8String);
- }
-
- // Offsets
- void getMBGLValue(id rawValue, std::array<float, 2> &mbglValue) {
- if ([rawValue isKindOfClass:[NSValue class]]) {
- mbglValue = [rawValue mgl_offsetArrayValue];
- } else if ([rawValue isKindOfClass:[NSArray class]]) {
- NSArray *array = (NSArray *)rawValue;
- getMBGLValue(array[0], mbglValue[0]);
- getMBGLValue(array[1], mbglValue[1]);
- }
- }
-
- // Padding
- void getMBGLValue(id rawValue, std::array<float, 4> &mbglValue) {
- if ([rawValue isKindOfClass:[NSValue class]]) {
- mbglValue = [rawValue mgl_paddingArrayValue];
- } else if ([rawValue isKindOfClass:[NSArray class]]) {
- NSArray *array = (NSArray *)rawValue;
- getMBGLValue(array[0], mbglValue[0]);
- getMBGLValue(array[1], mbglValue[1]);
- getMBGLValue(array[2], mbglValue[2]);
- getMBGLValue(array[3], mbglValue[3]);
- getMBGLValue(array[4], mbglValue[4]);
- }
- }
-
- // Color
- void getMBGLValue(MGLColor *rawValue, mbgl::Color &mbglValue) {
- mbglValue = rawValue.mgl_color;
- }
-
- // Image
- void getMBGLValue(NSString *rawValue, mbgl::style::expression::Image &mbglValue) {
- mbglValue = mbgl::style::expression::Image(rawValue.UTF8String);
- }
-
- // Array
- void getMBGLValue(ObjCType rawValue, std::vector<MBGLElement> &mbglValue) {
- mbglValue.reserve(rawValue.count);
- for (id obj in rawValue) {
- id constantObject = obj;
- if ([obj isKindOfClass:[NSExpression class]] && [obj expressionType] == NSConstantValueExpressionType) {
- constantObject = [constantObject constantValue];
- }
- MBGLElement mbglElement;
- getMBGLValue(constantObject, mbglElement);
- mbglValue.push_back(mbglElement);
- }
- }
-
- void getMBGLValue(NSValue *rawValue, mbgl::style::Position &mbglValue) {
- auto spherical = rawValue.mgl_lightPositionArrayValue;
- mbgl::style::Position position(spherical);
- mbglValue = position;
- }
-
- // Enumerations
- template <typename MBGLEnum = MBGLType,
- class = typename std::enable_if<std::is_enum<MBGLEnum>::value>::type,
- typename MGLEnum = ObjCEnum,
- class = typename std::enable_if<std::is_enum<MGLEnum>::value>::type>
- void getMBGLValue(id rawValue, MBGLEnum &mbglValue) {
- if ([rawValue isKindOfClass:[NSString class]]) {
- mbglValue = *mbgl::Enum<MBGLEnum>::toEnum([(NSString *)rawValue UTF8String]);
- } else {
- MGLEnum mglEnum;
- [(NSValue *)rawValue getValue:&mglEnum];
- auto str = mbgl::Enum<MGLEnum>::toString(mglEnum);
- mbglValue = *mbgl::Enum<MBGLEnum>::toEnum(str);
- }
- }
-
-private: // Private utilities for converting from mbgl to mgl values
-
- // Bool
- static NSNumber *toMGLRawStyleValue(const bool mbglStopValue) {
- return @(mbglStopValue);
- }
-
- // Float
- static NSNumber *toMGLRawStyleValue(const float mbglStopValue) {
- return @(mbglStopValue);
- }
-
- // Integer
- static NSNumber *toMGLRawStyleValue(const int64_t mbglStopValue) {
- return @(mbglStopValue);
- }
-
- // String
- static NSString *toMGLRawStyleValue(const std::string &mbglStopValue) {
- return @(mbglStopValue.c_str());
- }
-
- // Formatted
- static NSString *toMGLRawStyleValue(const mbgl::style::expression::Formatted &mbglStopValue) {
- return @(mbglStopValue.toString().c_str());
- }
-
- // Offsets
- static NSValue *toMGLRawStyleValue(const std::array<float, 2> &mbglStopValue) {
- return [NSValue mgl_valueWithOffsetArray:mbglStopValue];
- }
-
- // Padding
- static NSValue *toMGLRawStyleValue(const std::array<float, 4> &mbglStopValue) {
- return [NSValue mgl_valueWithPaddingArray:mbglStopValue];
- }
-
- // Color
- static MGLColor *toMGLRawStyleValue(const mbgl::Color mbglStopValue) {
- return [MGLColor mgl_colorWithColor:mbglStopValue];
- }
-
- // Image
- static NSString *toMGLRawStyleValue(const mbgl::style::expression::Image &mbglImageValue) {
- return @(mbglImageValue.id().c_str());
- }
-
- // Array
- static NSArray<NSExpression*> *toMGLRawStyleValue(const std::vector<MBGLElement> &mbglStopValue) {
- NSMutableArray *array = [NSMutableArray arrayWithCapacity:mbglStopValue.size()];
- for (const auto &mbglElement: mbglStopValue) {
- [array addObject:[NSExpression expressionForConstantValue:toMGLRawStyleValue(mbglElement)]];
- }
- return array;
- }
-
- static NSValue *toMGLRawStyleValue(const mbgl::style::Position &mbglStopValue) {
- std::array<float, 3> spherical = mbglStopValue.getSpherical();
- MGLSphericalPosition position = MGLSphericalPositionMake(spherical[0], spherical[1], spherical[2]);
- return [NSValue valueWithMGLSphericalPosition:position];
- }
-
- // Enumerations
- template <typename MBGLEnum = MBGLType, typename MGLEnum = ObjCEnum>
- static NSString *toMGLRawStyleValue(const MBGLEnum &value) {
- return @(mbgl::Enum<MBGLEnum>::toString(value));
- }
-
- /// Converts all types of mbgl property values into an equivalent NSExpression.
- class PropertyExpressionEvaluator {
- public:
- NSExpression *operator()(const mbgl::style::Undefined) const {
- return nil;
- }
-
- NSExpression *operator()(const MBGLType &value) const {
- id constantValue = toMGLRawStyleValue(value);
- if ([constantValue isKindOfClass:[NSArray class]]) {
- return [NSExpression expressionForAggregate:constantValue];
- }
- return [NSExpression expressionForConstantValue:constantValue];
- }
-
- NSExpression *operator()(const mbgl::style::PropertyExpression<MBGLType> &mbglValue) const {
- return [NSExpression expressionWithMGLJSONObject:MGLJSONObjectFromMBGLExpression(mbglValue.getExpression())];
- }
- };
-};
diff --git a/platform/darwin/src/MGLStyle_Private.h b/platform/darwin/src/MGLStyle_Private.h
deleted file mode 100644
index 1294b9ad1c..0000000000
--- a/platform/darwin/src/MGLStyle_Private.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#import "MGLStyle.h"
-
-#import "MGLStyleLayer.h"
-#import "MGLFillStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-namespace mbgl {
- namespace style {
- class Style;
- }
-}
-
-@class MGLAttributionInfo;
-@class MGLMapView;
-@class MGLOpenGLStyleLayer;
-@class MGLVectorTileSource;
-@class MGLVectorStyleLayer;
-
-@interface MGLStyle (Private)
-
-- (instancetype)initWithRawStyle:(mbgl::style::Style *)rawStyle mapView:(MGLMapView *)mapView;
-
-@property (nonatomic, readonly, weak) MGLMapView *mapView;
-@property (nonatomic, readonly) mbgl::style::Style *rawStyle;
-
-- (nullable NSArray<MGLAttributionInfo *> *)attributionInfosWithFontSize:(CGFloat)fontSize linkColor:(nullable MGLColor *)linkColor;
-@property (nonatomic, readonly, strong) NSMutableDictionary<NSString *, MGLOpenGLStyleLayer *> *openGLLayers;
-- (void)setStyleClasses:(NSArray<NSString *> *)appliedClasses transitionDuration:(NSTimeInterval)transitionDuration;
-
-@end
-
-@interface MGLStyle (MGLStreetsAdditions)
-
-@property (nonatomic, readonly, copy) NSArray<MGLVectorStyleLayer *> *placeStyleLayers;
-@property (nonatomic, readonly, copy) NSArray<MGLVectorStyleLayer *> *roadStyleLayers;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLSymbolStyleLayer.h b/platform/darwin/src/MGLSymbolStyleLayer.h
deleted file mode 100644
index 8b6bef3c54..0000000000
--- a/platform/darwin/src/MGLSymbolStyleLayer.h
+++ /dev/null
@@ -1,2488 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLFoundation.h"
-#import "MGLVectorStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Part of the icon placed closest to the anchor.
-
- Values of this type are used in the `MGLSymbolStyleLayer.iconAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLIconAnchor) {
- /**
- The center of the icon is placed closest to the anchor.
- */
- MGLIconAnchorCenter,
- /**
- The left side of the icon is placed closest to the anchor.
- */
- MGLIconAnchorLeft,
- /**
- The right side of the icon is placed closest to the anchor.
- */
- MGLIconAnchorRight,
- /**
- The top of the icon is placed closest to the anchor.
- */
- MGLIconAnchorTop,
- /**
- The bottom of the icon is placed closest to the anchor.
- */
- MGLIconAnchorBottom,
- /**
- The top left corner of the icon is placed closest to the anchor.
- */
- MGLIconAnchorTopLeft,
- /**
- The top right corner of the icon is placed closest to the anchor.
- */
- MGLIconAnchorTopRight,
- /**
- The bottom left corner of the icon is placed closest to the anchor.
- */
- MGLIconAnchorBottomLeft,
- /**
- The bottom right corner of the icon is placed closest to the anchor.
- */
- MGLIconAnchorBottomRight,
-};
-
-/**
- Orientation of icon when map is pitched.
-
- Values of this type are used in the `MGLSymbolStyleLayer.iconPitchAlignment`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLIconPitchAlignment) {
- /**
- The icon is aligned to the plane of the map.
- */
- MGLIconPitchAlignmentMap,
- /**
- The icon is aligned to the plane of the viewport.
- */
- MGLIconPitchAlignmentViewport,
- /**
- Automatically matches the value of
- `MGLSymbolStyleLayer.iconRotationAlignment`.
- */
- MGLIconPitchAlignmentAuto,
-};
-
-/**
- In combination with `MGLSymbolStyleLayer.symbolPlacement`, determines the
- rotation behavior of icons.
-
- Values of this type are used in the `MGLSymbolStyleLayer.iconRotationAlignment`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLIconRotationAlignment) {
- /**
- When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, aligns icons
- east-west. When `symbolPlacement` is set to `MGLSymbolPlacementLine` or
- `MGLSymbolPlacementLineCenter`, aligns icon x-axes with the line.
- */
- MGLIconRotationAlignmentMap,
- /**
- Produces icons whose x-axes are aligned with the x-axis of the viewport,
- regardless of the value of `MGLSymbolStyleLayer.symbolPlacement`.
- */
- MGLIconRotationAlignmentViewport,
- /**
- When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, this is
- equivalent to `MGLIconRotationAlignmentViewport`. When `symbolPlacement` is
- set to `MGLSymbolPlacementLine` or `MGLSymbolPlacementLineCenter`, this is
- equivalent to `MGLIconRotationAlignmentMap`.
- */
- MGLIconRotationAlignmentAuto,
-};
-
-/**
- Scales the icon to fit around the associated text.
-
- Values of this type are used in the `MGLSymbolStyleLayer.iconTextFit`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLIconTextFit) {
- /**
- The icon is displayed at its intrinsic aspect ratio.
- */
- MGLIconTextFitNone,
- /**
- The icon is scaled in the x-dimension to fit the width of the text.
- */
- MGLIconTextFitWidth,
- /**
- The icon is scaled in the y-dimension to fit the height of the text.
- */
- MGLIconTextFitHeight,
- /**
- The icon is scaled in both x- and y-dimensions.
- */
- MGLIconTextFitBoth,
-};
-
-/**
- Label placement relative to its geometry.
-
- Values of this type are used in the `MGLSymbolStyleLayer.symbolPlacement`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLSymbolPlacement) {
- /**
- The label is placed at the point where the geometry is located.
- */
- MGLSymbolPlacementPoint,
- /**
- The label is placed along the line of the geometry. Can only be used on
- `LineString` and `Polygon` geometries.
- */
- MGLSymbolPlacementLine,
- /**
- The label is placed at the center of the line of the geometry. Can only be
- used on `LineString` and `Polygon` geometries. Note that a single feature
- in a vector tile may contain multiple line geometries.
- */
- MGLSymbolPlacementLineCenter,
-};
-
-/**
- Controls the order in which overlapping symbols in the same layer are rendered
-
- Values of this type are used in the `MGLSymbolStyleLayer.symbolZOrder`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLSymbolZOrder) {
- /**
- If `MGLSymbolStyleLayer.symbolSortKey` is set, sort based on that.
- Otherwise sort symbols by their y-position relative to the viewport.
- */
- MGLSymbolZOrderAuto,
- /**
- Specify this z order if symbols’ appearance relies on lower features
- overlapping higher features. For example, symbols with a pin-like
- appearance would require this z order.
- */
- MGLSymbolZOrderViewportY,
- /**
- Specify this z order if the order in which features appear in the source is
- significant.
- */
- MGLSymbolZOrderSource,
-};
-
-/**
- Part of the text placed closest to the anchor.
-
- Values of this type are used in the `MGLSymbolStyleLayer.textAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLTextAnchor) {
- /**
- The center of the text is placed closest to the anchor.
- */
- MGLTextAnchorCenter,
- /**
- The left side of the text is placed closest to the anchor.
- */
- MGLTextAnchorLeft,
- /**
- The right side of the text is placed closest to the anchor.
- */
- MGLTextAnchorRight,
- /**
- The top of the text is placed closest to the anchor.
- */
- MGLTextAnchorTop,
- /**
- The bottom of the text is placed closest to the anchor.
- */
- MGLTextAnchorBottom,
- /**
- The top left corner of the text is placed closest to the anchor.
- */
- MGLTextAnchorTopLeft,
- /**
- The top right corner of the text is placed closest to the anchor.
- */
- MGLTextAnchorTopRight,
- /**
- The bottom left corner of the text is placed closest to the anchor.
- */
- MGLTextAnchorBottomLeft,
- /**
- The bottom right corner of the text is placed closest to the anchor.
- */
- MGLTextAnchorBottomRight,
-};
-
-/**
- Text justification options.
-
- Values of this type are used in the `MGLSymbolStyleLayer.textJustification`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLTextJustification) {
- /**
- The text is aligned towards the anchor position.
- */
- MGLTextJustificationAuto,
- /**
- The text is aligned to the left.
- */
- MGLTextJustificationLeft,
- /**
- The text is centered.
- */
- MGLTextJustificationCenter,
- /**
- The text is aligned to the right.
- */
- MGLTextJustificationRight,
-};
-
-/**
- Orientation of text when map is pitched.
-
- Values of this type are used in the `MGLSymbolStyleLayer.textPitchAlignment`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLTextPitchAlignment) {
- /**
- The text is aligned to the plane of the map.
- */
- MGLTextPitchAlignmentMap,
- /**
- The text is aligned to the plane of the viewport.
- */
- MGLTextPitchAlignmentViewport,
- /**
- Automatically matches the value of
- `MGLSymbolStyleLayer.textRotationAlignment`.
- */
- MGLTextPitchAlignmentAuto,
-};
-
-/**
- In combination with `MGLSymbolStyleLayer.symbolPlacement`, determines the
- rotation behavior of the individual glyphs forming the text.
-
- Values of this type are used in the `MGLSymbolStyleLayer.textRotationAlignment`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLTextRotationAlignment) {
- /**
- When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, aligns text
- east-west. When `symbolPlacement` is set to `MGLSymbolPlacementLine` or
- `MGLSymbolPlacementLineCenter`, aligns text x-axes with the line.
- */
- MGLTextRotationAlignmentMap,
- /**
- Produces glyphs whose x-axes are aligned with the x-axis of the viewport,
- regardless of the value of `MGLSymbolStyleLayer.symbolPlacement`.
- */
- MGLTextRotationAlignmentViewport,
- /**
- When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, this is
- equivalent to `MGLTextRotationAlignmentViewport`. When `symbolPlacement` is
- set to `MGLSymbolPlacementLine` or `MGLSymbolPlacementLineCenter`, this is
- equivalent to `MGLTextRotationAlignmentMap`.
- */
- MGLTextRotationAlignmentAuto,
-};
-
-/**
- Specifies how to capitalize text.
-
- Values of this type are used in the `MGLSymbolStyleLayer.textTransform`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLTextTransform) {
- /**
- The text is not altered.
- */
- MGLTextTransformNone,
- /**
- Forces all letters to be displayed in uppercase.
- */
- MGLTextTransformUppercase,
- /**
- Forces all letters to be displayed in lowercase.
- */
- MGLTextTransformLowercase,
-};
-
-/**
- The property allows control over a symbol's orientation. Note that the property
- values act as a hint, so that a symbol whose language doesn’t support the
- provided orientation will be laid out in its natural orientation. Example:
- English point symbol will be rendered horizontally even if array value contains
- single 'vertical' enum value. The order of elements in an array define priority
- order for the placement of an orientation variant.
-
- Values of this type are used in the `MGLSymbolStyleLayer.textWritingModes`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLTextWritingMode) {
- /**
- If a text's language supports horizontal writing mode, symbols with point
- placement would be laid out horizontally.
- */
- MGLTextWritingModeHorizontal,
- /**
- If a text's language supports vertical writing mode, symbols with point
- placement would be laid out vertically.
- */
- MGLTextWritingModeVertical,
-};
-
-/**
- Controls the frame of reference for `MGLSymbolStyleLayer.iconTranslation`.
-
- Values of this type are used in the `MGLSymbolStyleLayer.iconTranslationAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLIconTranslationAnchor) {
- /**
- Icons are translated relative to the map.
- */
- MGLIconTranslationAnchorMap,
- /**
- Icons are translated relative to the viewport.
- */
- MGLIconTranslationAnchorViewport,
-};
-
-/**
- Controls the frame of reference for `MGLSymbolStyleLayer.textTranslation`.
-
- Values of this type are used in the `MGLSymbolStyleLayer.textTranslationAnchor`
- property.
- */
-typedef NS_ENUM(NSUInteger, MGLTextTranslationAnchor) {
- /**
- The text is translated relative to the map.
- */
- MGLTextTranslationAnchorMap,
- /**
- The text is translated relative to the viewport.
- */
- MGLTextTranslationAnchorViewport,
-};
-
-/**
- An `MGLSymbolStyleLayer` is a style layer that renders icon and text labels at
- points or along lines on the map.
-
- Use a symbol style layer to configure the visual appearance of feature labels.
- These features can come from vector tiles loaded by an `MGLVectorTileSource`
- object, or they can be `MGLShape` or `MGLFeature` instances in an
- `MGLShapeSource` or `MGLComputedShapeSource` object.
-
- You can access an existing symbol style layer using the
- `-[MGLStyle layerWithIdentifier:]` method if you know its identifier;
- otherwise, find it using the `MGLStyle.layers` property. You can also create a
- new symbol style layer and add it to the style using a method such as
- `-[MGLStyle addLayer:]`.
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/">Dynamically
- style interactive points</a> and <a
- href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">Use
- images to cluster point data</a> examples learn how to style data on your map
- using this layer.
-
- ### Example
-
- ```swift
- let layer = MGLSymbolStyleLayer(identifier: "coffeeshops", source: pois)
- layer.sourceLayerIdentifier = "pois"
- layer.iconImageName = NSExpression(forConstantValue: "coffee")
- layer.iconScale = NSExpression(forConstantValue: 0.5)
- layer.text = NSExpression(forKeyPath: "name")
- layer.textTranslation = NSExpression(forConstantValue: NSValue(cgVector: CGVector(dx: 10, dy: 0)))
- layer.textJustification = NSExpression(forConstantValue: "left")
- layer.textAnchor = NSExpression(forConstantValue: "left")
- layer.predicate = NSPredicate(format: "%K == %@", "venue-type", "coffee")
- mapView.style?.addLayer(layer)
- ```
- */
-MGL_EXPORT
-@interface MGLSymbolStyleLayer : MGLVectorStyleLayer
-
-/**
- Returns a symbol style layer initialized with an identifier and source.
-
- After initializing and configuring the style layer, add it to a map view’s
- style using the `-[MGLStyle addLayer:]` or
- `-[MGLStyle insertLayer:belowLayer:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param source The source from which to obtain the data to style. If the source
- has not yet been added to the current style, the behavior is undefined.
- @return An initialized foreground style layer.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source;
-
-#pragma mark - Accessing the Layout Attributes
-
-/**
- If true, the icon will be visible even if it collides with other previously
- drawn symbols.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-allow-overlap"><code>icon-allow-overlap</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconAllowsOverlap;
-
-
-@property (nonatomic, null_resettable) NSExpression *iconAllowOverlap __attribute__((unavailable("Use iconAllowsOverlap instead.")));
-
-/**
- Part of the icon placed closest to the anchor.
-
- The default value of this property is an expression that evaluates to `center`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLIconAnchor` values
- * Any of the following constant string values:
- * `center`: The center of the icon is placed closest to the anchor.
- * `left`: The left side of the icon is placed closest to the anchor.
- * `right`: The right side of the icon is placed closest to the anchor.
- * `top`: The top of the icon is placed closest to the anchor.
- * `bottom`: The bottom of the icon is placed closest to the anchor.
- * `top-left`: The top left corner of the icon is placed closest to the
- anchor.
- * `top-right`: The top right corner of the icon is placed closest to the
- anchor.
- * `bottom-left`: The bottom left corner of the icon is placed closest to the
- anchor.
- * `bottom-right`: The bottom right corner of the icon is placed closest to
- the anchor.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconAnchor;
-
-/**
- If true, other symbols can be visible even if they collide with the icon.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-ignore-placement"><code>icon-ignore-placement</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconIgnoresPlacement;
-
-
-@property (nonatomic, null_resettable) NSExpression *iconIgnorePlacement __attribute__((unavailable("Use iconIgnoresPlacement instead.")));
-
-/**
- Name of a style image to use for drawing an image background.
-
- Use the `+[MGLStyle setImage:forName:]` method to associate an image with a
- name that you can set this property to.
-
- Within a constant string value, a feature attribute name enclosed in curly
- braces (e.g., `{token}`) is replaced with the value of the named attribute.
- Tokens inside non-constant expressions are ignored; instead, use `mgl_join:`
- and key path expressions.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-image"><code>icon-image</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant string values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
-
- #### Related examples
- See the <a
- href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">Use
- images to cluster point data</a> example to learn how to dynamically set your
- icons with an expression.
- */
-@property (nonatomic, null_resettable) NSExpression *iconImageName;
-
-
-@property (nonatomic, null_resettable) NSExpression *iconImage __attribute__((unavailable("Use iconImageName instead.")));
-
-#if TARGET_OS_IPHONE
-/**
- Offset distance of icon from its anchor.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 rightward and 0
- downward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconOffset;
-#else
-/**
- Offset distance of icon from its anchor.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 rightward and 0
- upward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconOffset;
-#endif
-
-/**
- If true, text will display without their corresponding icons when the icon
- collides with other symbols and the text does not.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`, and
- `text` is non-`nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable, getter=isIconOptional) NSExpression *iconOptional;
-
-/**
- Size of the additional area around the icon bounding box used for detecting
- symbol collisions.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `2`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconPadding;
-
-/**
- Orientation of icon when map is pitched.
-
- The default value of this property is an expression that evaluates to `auto`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLIconPitchAlignment` values
- * Any of the following constant string values:
- * `map`: The icon is aligned to the plane of the map.
- * `viewport`: The icon is aligned to the plane of the viewport.
- * `auto`: Automatically matches the value of `icon-rotation-alignment`.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconPitchAlignment;
-
-/**
- Rotates the icon clockwise.
-
- This property is measured in degrees.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-rotate"><code>icon-rotate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconRotation;
-
-
-@property (nonatomic, null_resettable) NSExpression *iconRotate __attribute__((unavailable("Use iconRotation instead.")));
-
-/**
- In combination with `symbolPlacement`, determines the rotation behavior of
- icons.
-
- The default value of this property is an expression that evaluates to `auto`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLIconRotationAlignment` values
- * Any of the following constant string values:
- * `map`: When `symbol-placement` is set to `point`, aligns icons east-west.
- When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes
- with the line.
- * `viewport`: Produces icons whose x-axes are aligned with the x-axis of the
- viewport, regardless of the value of `symbol-placement`.
- * `auto`: When `symbol-placement` is set to `point`, this is equivalent to
- `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is
- equivalent to `map`.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconRotationAlignment;
-
-/**
- Scales the original size of the icon by the provided factor. The new point size
- of the image will be the original point size multiplied by `iconScale`. 1 is
- the original size; 3 triples the size of the image.
-
- This property is measured in factor of the original icon sizes.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-size"><code>icon-size</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconScale;
-
-
-@property (nonatomic, null_resettable) NSExpression *iconSize __attribute__((unavailable("Use iconScale instead.")));
-
-/**
- Scales the icon to fit around the associated text.
-
- The default value of this property is an expression that evaluates to `none`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`, and
- `text` is non-`nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLIconTextFit` values
- * Any of the following constant string values:
- * `none`: The icon is displayed at its intrinsic aspect ratio.
- * `width`: The icon is scaled in the x-dimension to fit the width of the
- text.
- * `height`: The icon is scaled in the y-dimension to fit the height of the
- text.
- * `both`: The icon is scaled in both x- and y-dimensions.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconTextFit;
-
-#if TARGET_OS_IPHONE
-/**
- Size of the additional area added to dimensions determined by `iconTextFit`.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing `UIEdgeInsetsZero`. Set this property to `nil` to
- reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`, and
- `text` is non-`nil`, and `iconTextFit` is set to an expression that evaluates
- to `MGLIconTextFitBoth`, `MGLIconTextFitWidth`, or `MGLIconTextFitHeight`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIEdgeInsets` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconTextFitPadding;
-#else
-/**
- Size of the additional area added to dimensions determined by `iconTextFit`.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing `NSEdgeInsetsZero`. Set this property to `nil` to
- reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`, and
- `text` is non-`nil`, and `iconTextFit` is set to an expression that evaluates
- to `MGLIconTextFitBoth`, `MGLIconTextFitWidth`, or `MGLIconTextFitHeight`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSEdgeInsets` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconTextFitPadding;
-#endif
-
-/**
- If true, the icon may be flipped to prevent it from being rendered upside-down.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`, and
- `iconRotationAlignment` is set to an expression that evaluates to `map`, and
- `symbolPlacement` is set to an expression that evaluates to either
- `MGLSymbolPlacementLine` or `MGLSymbolPlacementLineCenter`. Otherwise, it is
- ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-keep-upright"><code>icon-keep-upright</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *keepsIconUpright;
-
-
-@property (nonatomic, null_resettable) NSExpression *iconKeepUpright __attribute__((unavailable("Use keepsIconUpright instead.")));
-
-/**
- If true, the text may be flipped vertically to prevent it from being rendered
- upside-down.
-
- The default value of this property is an expression that evaluates to `YES`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `textRotationAlignment` is set to an expression that evaluates to `map`, and
- `symbolPlacement` is set to an expression that evaluates to either
- `MGLSymbolPlacementLine` or `MGLSymbolPlacementLineCenter`. Otherwise, it is
- ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-keep-upright"><code>text-keep-upright</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *keepsTextUpright;
-
-
-@property (nonatomic, null_resettable) NSExpression *textKeepUpright __attribute__((unavailable("Use keepsTextUpright instead.")));
-
-/**
- Maximum angle change between adjacent characters.
-
- This property is measured in degrees.
-
- The default value of this property is an expression that evaluates to the float
- `45`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `symbolPlacement` is set to an expression that evaluates to either
- `MGLSymbolPlacementLine` or `MGLSymbolPlacementLineCenter`. Otherwise, it is
- ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-max-angle"><code>text-max-angle</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *maximumTextAngle;
-
-
-@property (nonatomic, null_resettable) NSExpression *textMaxAngle __attribute__((unavailable("Use maximumTextAngle instead.")));
-
-/**
- The maximum line width for text wrapping.
-
- This property is measured in ems.
-
- The default value of this property is an expression that evaluates to the float
- `10`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-max-width"><code>text-max-width</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *maximumTextWidth;
-
-
-@property (nonatomic, null_resettable) NSExpression *textMaxWidth __attribute__((unavailable("Use maximumTextWidth instead.")));
-
-/**
- If true, the symbols will not cross tile edges to avoid mutual collisions.
- Recommended in layers that don't have enough padding in the vector tile to
- prevent collisions, or if it is a point symbol layer placed after a line symbol
- layer. When using a client that supports global collision detection, like
- Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to
- prevent clipped labels at tile boundaries.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-symbol-avoid-edges"><code>symbol-avoid-edges</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *symbolAvoidsEdges;
-
-
-@property (nonatomic, null_resettable) NSExpression *symbolAvoidEdges __attribute__((unavailable("Use symbolAvoidsEdges instead.")));
-
-/**
- Label placement relative to its geometry.
-
- The default value of this property is an expression that evaluates to `point`.
- Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLSymbolPlacement` values
- * Any of the following constant string values:
- * `point`: The label is placed at the point where the geometry is located.
- * `line`: The label is placed along the line of the geometry. Can only be
- used on `LineString` and `Polygon` geometries.
- * `line-center`: The label is placed at the center of the line of the
- geometry. Can only be used on `LineString` and `Polygon` geometries. Note that
- a single feature in a vector tile may contain multiple line geometries.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *symbolPlacement;
-
-/**
- Sorts features in ascending order based on this value. Features with a higher
- sort key will appear above features with a lower sort key when they overlap.
- Features with a lower sort key will have priority over other features when
- doing placement.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *symbolSortKey;
-
-/**
- Distance between two symbol anchors.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `250`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `symbolPlacement` is set to an
- expression that evaluates to `line`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 1
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *symbolSpacing;
-
-/**
- Controls the order in which overlapping symbols in the same layer are rendered
-
- The default value of this property is an expression that evaluates to `auto`.
- Set this property to `nil` to reset it to the default value.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLSymbolZOrder` values
- * Any of the following constant string values:
- * `auto`: If `symbol-sort-key` is set, sort based on that. Otherwise sort
- symbols by their y-position relative to the viewport.
- * `viewport-y`: Specify this z order if symbols’ appearance relies on lower
- features overlapping higher features. For example, symbols with a pin-like
- appearance would require this z order.
- * `source`: Specify this z order if the order in which features appear in the
- source is significant.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *symbolZOrder;
-
-/**
- Value to use for a text label.
-
- Within a constant string value, a feature attribute name enclosed in curly
- braces (e.g., `{token}`) is replaced with the value of the named attribute.
- Tokens inside non-constant expressions are ignored; instead, use `mgl_join:`
- and key path expressions.
-
- The default value of this property is an expression that evaluates to the empty
- string. Set this property to `nil` to reset it to the default value.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-field"><code>text-field</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant string values
- * Formatted expressions.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">Cluster
- point data</a> and <a
- href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">Use
- images to cluster point data</a> to learn how to use an expression to set this
- attribute to the number of markers within a cluster.
- */
-@property (nonatomic, null_resettable) NSExpression *text;
-
-
-@property (nonatomic, null_resettable) NSExpression *textField __attribute__((unavailable("Use text instead.")));
-
-/**
- If true, the text will be visible even if it collides with other previously
- drawn symbols.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-allow-overlap"><code>text-allow-overlap</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textAllowsOverlap;
-
-
-@property (nonatomic, null_resettable) NSExpression *textAllowOverlap __attribute__((unavailable("Use textAllowsOverlap instead.")));
-
-/**
- Part of the text placed closest to the anchor.
-
- The default value of this property is an expression that evaluates to `center`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `textVariableAnchor` is set to `nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextAnchor` values
- * Any of the following constant string values:
- * `center`: The center of the text is placed closest to the anchor.
- * `left`: The left side of the text is placed closest to the anchor.
- * `right`: The right side of the text is placed closest to the anchor.
- * `top`: The top of the text is placed closest to the anchor.
- * `bottom`: The bottom of the text is placed closest to the anchor.
- * `top-left`: The top left corner of the text is placed closest to the
- anchor.
- * `top-right`: The top right corner of the text is placed closest to the
- anchor.
- * `bottom-left`: The bottom left corner of the text is placed closest to the
- anchor.
- * `bottom-right`: The bottom right corner of the text is placed closest to
- the anchor.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textAnchor;
-
-/**
- An array of font face names used to display the text.
-
- Each font name must be included in the `{fontstack}` portion of the JSON
- stylesheet’s <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#glyphs"><code>glyphs</code></a>
- property. You can register a custom font when designing the style in Mapbox
- Studio. Fonts installed on the system are not used.
-
- The first font named in the array is applied to the text. For each character in
- the text, if the first font lacks a glyph for the character, the next font is
- applied as a fallback, and so on.
-
- The default value of this property is an expression that evaluates to the array
- `Open Sans Regular`, `Arial Unicode MS Regular`. Set this property to `nil` to
- reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-font"><code>text-font</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant array values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textFontNames;
-
-
-@property (nonatomic, null_resettable) NSExpression *textFont __attribute__((unavailable("Use textFontNames instead.")));
-
-/**
- Font size.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `16`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-size"><code>text-size</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textFontSize;
-
-
-@property (nonatomic, null_resettable) NSExpression *textSize __attribute__((unavailable("Use textFontSize instead.")));
-
-/**
- If true, other symbols can be visible even if they collide with the text.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-ignore-placement"><code>text-ignore-placement</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textIgnoresPlacement;
-
-
-@property (nonatomic, null_resettable) NSExpression *textIgnorePlacement __attribute__((unavailable("Use textIgnoresPlacement instead.")));
-
-/**
- Text justification options.
-
- The default value of this property is an expression that evaluates to `center`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-justify"><code>text-justify</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextJustification` values
- * Any of the following constant string values:
- * `auto`: The text is aligned towards the anchor position.
- * `left`: The text is aligned to the left.
- * `center`: The text is centered.
- * `right`: The text is aligned to the right.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textJustification;
-
-
-@property (nonatomic, null_resettable) NSExpression *textJustify __attribute__((unavailable("Use textJustification instead.")));
-
-/**
- Text tracking amount.
-
- This property is measured in ems.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textLetterSpacing;
-
-/**
- Text leading value for multi-line text.
-
- This property is measured in ems.
-
- The default value of this property is an expression that evaluates to the float
- `1.2`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textLineHeight;
-
-#if TARGET_OS_IPHONE
-/**
- Offset distance of text from its anchor.
-
- This property is measured in ems.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 ems rightward and 0
- ems downward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `textRadialOffset` is set to `nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textOffset;
-#else
-/**
- Offset distance of text from its anchor.
-
- This property is measured in ems.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 ems rightward and 0
- ems upward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `textRadialOffset` is set to `nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textOffset;
-#endif
-
-/**
- If true, icons will display without their corresponding text when the text
- collides with other symbols and the icon does not.
-
- The default value of this property is an expression that evaluates to `NO`. Set
- this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `iconImageName` is non-`nil`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant Boolean values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable, getter=isTextOptional) NSExpression *textOptional;
-
-/**
- Size of the additional area around the text bounding box used for detecting
- symbol collisions.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `2`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textPadding;
-
-/**
- Orientation of text when map is pitched.
-
- The default value of this property is an expression that evaluates to `auto`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextPitchAlignment` values
- * Any of the following constant string values:
- * `map`: The text is aligned to the plane of the map.
- * `viewport`: The text is aligned to the plane of the viewport.
- * `auto`: Automatically matches the value of `text-rotation-alignment`.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textPitchAlignment;
-
-/**
- Radial offset of text, in the direction of the symbol's anchor. Useful in
- combination with `textVariableAnchor`, which defaults to using the
- two-dimensional `textOffset` if present.
-
- This property is measured in ems.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textRadialOffset;
-
-/**
- Rotates the text clockwise.
-
- This property is measured in degrees.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-rotate"><code>text-rotate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textRotation;
-
-
-@property (nonatomic, null_resettable) NSExpression *textRotate __attribute__((unavailable("Use textRotation instead.")));
-
-/**
- In combination with `symbolPlacement`, determines the rotation behavior of the
- individual glyphs forming the text.
-
- The default value of this property is an expression that evaluates to `auto`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextRotationAlignment` values
- * Any of the following constant string values:
- * `map`: When `symbol-placement` is set to `point`, aligns text east-west.
- When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes
- with the line.
- * `viewport`: Produces glyphs whose x-axes are aligned with the x-axis of the
- viewport, regardless of the value of `symbol-placement`.
- * `auto`: When `symbol-placement` is set to `point`, this is equivalent to
- `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is
- equivalent to `map`.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textRotationAlignment;
-
-/**
- Specifies how to capitalize text.
-
- The default value of this property is an expression that evaluates to `none`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextTransform` values
- * Any of the following constant string values:
- * `none`: The text is not altered.
- * `uppercase`: Forces all letters to be displayed in uppercase.
- * `lowercase`: Forces all letters to be displayed in lowercase.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textTransform;
-
-/**
- To increase the chance of placing high-priority labels on the map, you can
- provide an array of `textAnchor` locations: the renderer will attempt to place
- the label at each location, in order, before moving onto the next label. Use
- `textJustify: auto` to choose justification based on anchor position. To apply
- an offset, use the `textRadialOffset` or the two-dimensional `textOffset`.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `symbolPlacement` is set to an expression that evaluates to or
- `MGLSymbolPlacementPoint`. Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextAnchor` array values
- * Constant array, in which each element is any of the following constant string
- values:
- * `center`: The center of the text is placed closest to the anchor.
- * `left`: The left side of the text is placed closest to the anchor.
- * `right`: The right side of the text is placed closest to the anchor.
- * `top`: The top of the text is placed closest to the anchor.
- * `bottom`: The bottom of the text is placed closest to the anchor.
- * `top-left`: The top left corner of the text is placed closest to the
- anchor.
- * `top-right`: The top right corner of the text is placed closest to the
- anchor.
- * `bottom-left`: The bottom left corner of the text is placed closest to the
- anchor.
- * `bottom-right`: The bottom right corner of the text is placed closest to
- the anchor.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textVariableAnchor;
-
-/**
- The property allows control over a symbol's orientation. Note that the property
- values act as a hint, so that a symbol whose language doesn’t support the
- provided orientation will be laid out in its natural orientation. Example:
- English point symbol will be rendered horizontally even if array value contains
- single 'vertical' enum value. The order of elements in an array define priority
- order for the placement of an orientation variant.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `symbolPlacement` is set to an expression that evaluates to or
- `MGLSymbolPlacementPoint`. Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-writing-mode"><code>text-writing-mode</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextWritingMode` array values
- * Constant array, in which each element is any of the following constant string
- values:
- * `horizontal`: If a text's language supports horizontal writing mode,
- symbols with point placement would be laid out horizontally.
- * `vertical`: If a text's language supports vertical writing mode, symbols
- with point placement would be laid out vertically.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textWritingModes;
-
-
-@property (nonatomic, null_resettable) NSExpression *textWritingMode __attribute__((unavailable("Use textWritingModes instead.")));
-
-#pragma mark - Accessing the Paint Attributes
-
-#if TARGET_OS_IPHONE
-/**
- The tint color to apply to the icon. The `iconImageName` property must be set
- to a template image.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconColor;
-#else
-/**
- The tint color to apply to the icon. The `iconImageName` property must be set
- to a template image.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `iconColor` property.
-
- This property corresponds to the `icon-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition iconColorTransition;
-
-/**
- Fade out the halo towards the outside.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconHaloBlur;
-
-/**
- The transition affecting any changes to this layer’s `iconHaloBlur` property.
-
- This property corresponds to the `icon-halo-blur-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition iconHaloBlurTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The color of the icon’s halo. The `iconImageName` property must be set to a
- template image.
-
- The default value of this property is an expression that evaluates to
- `UIColor.clearColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconHaloColor;
-#else
-/**
- The color of the icon’s halo. The `iconImageName` property must be set to a
- template image.
-
- The default value of this property is an expression that evaluates to
- `NSColor.clearColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconHaloColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `iconHaloColor` property.
-
- This property corresponds to the `icon-halo-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition iconHaloColorTransition;
-
-/**
- Distance of halo to the icon outline.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconHaloWidth;
-
-/**
- The transition affecting any changes to this layer’s `iconHaloWidth` property.
-
- This property corresponds to the `icon-halo-width-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition iconHaloWidthTransition;
-
-/**
- The opacity at which the icon will be drawn.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *iconOpacity;
-
-/**
- The transition affecting any changes to this layer’s `iconOpacity` property.
-
- This property corresponds to the `icon-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition iconOpacityTransition;
-
-#if TARGET_OS_IPHONE
-/**
- Distance that the icon's anchor is moved from its original placement.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points downward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-icon-translate"><code>icon-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconTranslation;
-#else
-/**
- Distance that the icon's anchor is moved from its original placement.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points upward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`.
- Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-icon-translate"><code>icon-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconTranslation;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `iconTranslation` property.
-
- This property corresponds to the `icon-translate-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition iconTranslationTransition;
-
-@property (nonatomic, null_resettable) NSExpression *iconTranslate __attribute__((unavailable("Use iconTranslation instead.")));
-
-/**
- Controls the frame of reference for `iconTranslation`.
-
- The default value of this property is an expression that evaluates to `map`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `iconImageName` is non-`nil`, and
- `iconTranslation` is non-`nil`. Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-icon-translate-anchor"><code>icon-translate-anchor</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLIconTranslationAnchor` values
- * Any of the following constant string values:
- * `map`: Icons are translated relative to the map.
- * `viewport`: Icons are translated relative to the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *iconTranslationAnchor;
-
-@property (nonatomic, null_resettable) NSExpression *iconTranslateAnchor __attribute__((unavailable("Use iconTranslationAnchor instead.")));
-
-#if TARGET_OS_IPHONE
-/**
- The color with which the text will be drawn.
-
- The default value of this property is an expression that evaluates to
- `UIColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textColor;
-#else
-/**
- The color with which the text will be drawn.
-
- The default value of this property is an expression that evaluates to
- `NSColor.blackColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `textColor` property.
-
- This property corresponds to the `text-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition textColorTransition;
-
-/**
- The halo's fadeout distance towards the outside.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textHaloBlur;
-
-/**
- The transition affecting any changes to this layer’s `textHaloBlur` property.
-
- This property corresponds to the `text-halo-blur-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition textHaloBlurTransition;
-
-#if TARGET_OS_IPHONE
-/**
- The color of the text's halo, which helps it stand out from backgrounds.
-
- The default value of this property is an expression that evaluates to
- `UIColor.clearColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `UIColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textHaloColor;
-#else
-/**
- The color of the text's halo, which helps it stand out from backgrounds.
-
- The default value of this property is an expression that evaluates to
- `NSColor.clearColor`. Set this property to `nil` to reset it to the default
- value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `NSColor` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textHaloColor;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `textHaloColor` property.
-
- This property corresponds to the `text-halo-color-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition textHaloColorTransition;
-
-/**
- Distance of halo to the font outline. Max text halo width is 1/4 of the
- font-size.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to the float
- `0`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values no less than 0
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textHaloWidth;
-
-/**
- The transition affecting any changes to this layer’s `textHaloWidth` property.
-
- This property corresponds to the `text-halo-width-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition textHaloWidthTransition;
-
-/**
- The opacity at which the text will be drawn.
-
- The default value of this property is an expression that evaluates to the float
- `1`. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- You can set this property to an expression containing any of the following:
-
- * Constant numeric values between 0 and 1 inclusive
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable and/or
- feature attributes
- */
-@property (nonatomic, null_resettable) NSExpression *textOpacity;
-
-/**
- The transition affecting any changes to this layer’s `textOpacity` property.
-
- This property corresponds to the `text-opacity-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition textOpacityTransition;
-
-#if TARGET_OS_IPHONE
-/**
- Distance that the text's anchor is moved from its original placement.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points downward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-text-translate"><code>text-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textTranslation;
-#else
-/**
- Distance that the text's anchor is moved from its original placement.
-
- This property is measured in points.
-
- The default value of this property is an expression that evaluates to an
- `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0
- points upward. Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`. Otherwise,
- it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-text-translate"><code>text-translate</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `CGVector` values
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Interpolation and step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation or step functions to
- feature attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textTranslation;
-#endif
-
-/**
- The transition affecting any changes to this layer’s `textTranslation` property.
-
- This property corresponds to the `text-translate-transition` property in the style JSON file format.
-*/
-@property (nonatomic) MGLTransition textTranslationTransition;
-
-@property (nonatomic, null_resettable) NSExpression *textTranslate __attribute__((unavailable("Use textTranslation instead.")));
-
-/**
- Controls the frame of reference for `textTranslation`.
-
- The default value of this property is an expression that evaluates to `map`.
- Set this property to `nil` to reset it to the default value.
-
- This property is only applied to the style if `text` is non-`nil`, and
- `textTranslation` is non-`nil`. Otherwise, it is ignored.
-
- This attribute corresponds to the <a
- href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-text-translate-anchor"><code>text-translate-anchor</code></a>
- layout property in the Mapbox Style Specification.
-
- You can set this property to an expression containing any of the following:
-
- * Constant `MGLTextTranslationAnchor` values
- * Any of the following constant string values:
- * `map`: The text is translated relative to the map.
- * `viewport`: The text is translated relative to the viewport.
- * Predefined functions, including mathematical and string operators
- * Conditional expressions
- * Variable assignments and references to assigned variables
- * Step functions applied to the `$zoomLevel` variable
-
- This property does not support applying interpolation functions to the
- `$zoomLevel` variable or applying interpolation or step functions to feature
- attributes.
- */
-@property (nonatomic, null_resettable) NSExpression *textTranslationAnchor;
-
-@property (nonatomic, null_resettable) NSExpression *textTranslateAnchor __attribute__((unavailable("Use textTranslationAnchor instead.")));
-
-@end
-
-/**
- Methods for wrapping an enumeration value for a style layer attribute in an
- `MGLSymbolStyleLayer` object and unwrapping its raw value.
- */
-@interface NSValue (MGLSymbolStyleLayerAdditions)
-
-#pragma mark Working with Symbol Style Layer Attribute Values
-
-/**
- Creates a new value object containing the given `MGLIconAnchor` enumeration.
-
- @param iconAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLIconAnchor:(MGLIconAnchor)iconAnchor;
-
-/**
- The `MGLIconAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLIconAnchor MGLIconAnchorValue;
-
-/**
- Creates a new value object containing the given `MGLIconPitchAlignment` enumeration.
-
- @param iconPitchAlignment The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLIconPitchAlignment:(MGLIconPitchAlignment)iconPitchAlignment;
-
-/**
- The `MGLIconPitchAlignment` enumeration representation of the value.
- */
-@property (readonly) MGLIconPitchAlignment MGLIconPitchAlignmentValue;
-
-/**
- Creates a new value object containing the given `MGLIconRotationAlignment` enumeration.
-
- @param iconRotationAlignment The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLIconRotationAlignment:(MGLIconRotationAlignment)iconRotationAlignment;
-
-/**
- The `MGLIconRotationAlignment` enumeration representation of the value.
- */
-@property (readonly) MGLIconRotationAlignment MGLIconRotationAlignmentValue;
-
-/**
- Creates a new value object containing the given `MGLIconTextFit` enumeration.
-
- @param iconTextFit The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLIconTextFit:(MGLIconTextFit)iconTextFit;
-
-/**
- The `MGLIconTextFit` enumeration representation of the value.
- */
-@property (readonly) MGLIconTextFit MGLIconTextFitValue;
-
-/**
- Creates a new value object containing the given `MGLSymbolPlacement` enumeration.
-
- @param symbolPlacement The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLSymbolPlacement:(MGLSymbolPlacement)symbolPlacement;
-
-/**
- The `MGLSymbolPlacement` enumeration representation of the value.
- */
-@property (readonly) MGLSymbolPlacement MGLSymbolPlacementValue;
-
-/**
- Creates a new value object containing the given `MGLSymbolZOrder` enumeration.
-
- @param symbolZOrder The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLSymbolZOrder:(MGLSymbolZOrder)symbolZOrder;
-
-/**
- The `MGLSymbolZOrder` enumeration representation of the value.
- */
-@property (readonly) MGLSymbolZOrder MGLSymbolZOrderValue;
-
-/**
- Creates a new value object containing the given `MGLTextAnchor` enumeration.
-
- @param textAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLTextAnchor:(MGLTextAnchor)textAnchor;
-
-/**
- The `MGLTextAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLTextAnchor MGLTextAnchorValue;
-
-/**
- Creates a new value object containing the given `MGLTextJustification` enumeration.
-
- @param textJustification The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLTextJustification:(MGLTextJustification)textJustification;
-
-/**
- The `MGLTextJustification` enumeration representation of the value.
- */
-@property (readonly) MGLTextJustification MGLTextJustificationValue;
-
-/**
- Creates a new value object containing the given `MGLTextPitchAlignment` enumeration.
-
- @param textPitchAlignment The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLTextPitchAlignment:(MGLTextPitchAlignment)textPitchAlignment;
-
-/**
- The `MGLTextPitchAlignment` enumeration representation of the value.
- */
-@property (readonly) MGLTextPitchAlignment MGLTextPitchAlignmentValue;
-
-/**
- Creates a new value object containing the given `MGLTextRotationAlignment` enumeration.
-
- @param textRotationAlignment The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLTextRotationAlignment:(MGLTextRotationAlignment)textRotationAlignment;
-
-/**
- The `MGLTextRotationAlignment` enumeration representation of the value.
- */
-@property (readonly) MGLTextRotationAlignment MGLTextRotationAlignmentValue;
-
-/**
- Creates a new value object containing the given `MGLTextTransform` enumeration.
-
- @param textTransform The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLTextTransform:(MGLTextTransform)textTransform;
-
-/**
- The `MGLTextTransform` enumeration representation of the value.
- */
-@property (readonly) MGLTextTransform MGLTextTransformValue;
-
-/**
- Creates a new value object containing the given `MGLTextWritingMode` enumeration.
-
- @param textWritingModes The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLTextWritingMode:(MGLTextWritingMode)textWritingModes;
-
-/**
- The `MGLTextWritingMode` enumeration representation of the value.
- */
-@property (readonly) MGLTextWritingMode MGLTextWritingModeValue;
-
-/**
- Creates a new value object containing the given `MGLIconTranslationAnchor` enumeration.
-
- @param iconTranslationAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLIconTranslationAnchor:(MGLIconTranslationAnchor)iconTranslationAnchor;
-
-/**
- The `MGLIconTranslationAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLIconTranslationAnchor MGLIconTranslationAnchorValue;
-
-/**
- Creates a new value object containing the given `MGLTextTranslationAnchor` enumeration.
-
- @param textTranslationAnchor The value for the new object.
- @return A new value object that contains the enumeration value.
- */
-+ (instancetype)valueWithMGLTextTranslationAnchor:(MGLTextTranslationAnchor)textTranslationAnchor;
-
-/**
- The `MGLTextTranslationAnchor` enumeration representation of the value.
- */
-@property (readonly) MGLTextTranslationAnchor MGLTextTranslationAnchorValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLSymbolStyleLayer.mm b/platform/darwin/src/MGLSymbolStyleLayer.mm
deleted file mode 100644
index 966386e0f2..0000000000
--- a/platform/darwin/src/MGLSymbolStyleLayer.mm
+++ /dev/null
@@ -1,1670 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLSource.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLSymbolStyleLayer.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLSymbolStyleLayer_Private.h"
-
-#include <mbgl/style/layers/symbol_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-
-namespace mbgl {
-
- MBGL_DEFINE_ENUM(MGLIconAnchor, {
- { MGLIconAnchorCenter, "center" },
- { MGLIconAnchorLeft, "left" },
- { MGLIconAnchorRight, "right" },
- { MGLIconAnchorTop, "top" },
- { MGLIconAnchorBottom, "bottom" },
- { MGLIconAnchorTopLeft, "top-left" },
- { MGLIconAnchorTopRight, "top-right" },
- { MGLIconAnchorBottomLeft, "bottom-left" },
- { MGLIconAnchorBottomRight, "bottom-right" },
- });
-
- MBGL_DEFINE_ENUM(MGLIconPitchAlignment, {
- { MGLIconPitchAlignmentMap, "map" },
- { MGLIconPitchAlignmentViewport, "viewport" },
- { MGLIconPitchAlignmentAuto, "auto" },
- });
-
- MBGL_DEFINE_ENUM(MGLIconRotationAlignment, {
- { MGLIconRotationAlignmentMap, "map" },
- { MGLIconRotationAlignmentViewport, "viewport" },
- { MGLIconRotationAlignmentAuto, "auto" },
- });
-
- MBGL_DEFINE_ENUM(MGLIconTextFit, {
- { MGLIconTextFitNone, "none" },
- { MGLIconTextFitWidth, "width" },
- { MGLIconTextFitHeight, "height" },
- { MGLIconTextFitBoth, "both" },
- });
-
- MBGL_DEFINE_ENUM(MGLSymbolPlacement, {
- { MGLSymbolPlacementPoint, "point" },
- { MGLSymbolPlacementLine, "line" },
- { MGLSymbolPlacementLineCenter, "line-center" },
- });
-
- MBGL_DEFINE_ENUM(MGLSymbolZOrder, {
- { MGLSymbolZOrderAuto, "auto" },
- { MGLSymbolZOrderViewportY, "viewport-y" },
- { MGLSymbolZOrderSource, "source" },
- });
-
- MBGL_DEFINE_ENUM(MGLTextAnchor, {
- { MGLTextAnchorCenter, "center" },
- { MGLTextAnchorLeft, "left" },
- { MGLTextAnchorRight, "right" },
- { MGLTextAnchorTop, "top" },
- { MGLTextAnchorBottom, "bottom" },
- { MGLTextAnchorTopLeft, "top-left" },
- { MGLTextAnchorTopRight, "top-right" },
- { MGLTextAnchorBottomLeft, "bottom-left" },
- { MGLTextAnchorBottomRight, "bottom-right" },
- });
-
- MBGL_DEFINE_ENUM(MGLTextJustification, {
- { MGLTextJustificationAuto, "auto" },
- { MGLTextJustificationLeft, "left" },
- { MGLTextJustificationCenter, "center" },
- { MGLTextJustificationRight, "right" },
- });
-
- MBGL_DEFINE_ENUM(MGLTextPitchAlignment, {
- { MGLTextPitchAlignmentMap, "map" },
- { MGLTextPitchAlignmentViewport, "viewport" },
- { MGLTextPitchAlignmentAuto, "auto" },
- });
-
- MBGL_DEFINE_ENUM(MGLTextRotationAlignment, {
- { MGLTextRotationAlignmentMap, "map" },
- { MGLTextRotationAlignmentViewport, "viewport" },
- { MGLTextRotationAlignmentAuto, "auto" },
- });
-
- MBGL_DEFINE_ENUM(MGLTextTransform, {
- { MGLTextTransformNone, "none" },
- { MGLTextTransformUppercase, "uppercase" },
- { MGLTextTransformLowercase, "lowercase" },
- });
-
- MBGL_DEFINE_ENUM(MGLTextWritingMode, {
- { MGLTextWritingModeHorizontal, "horizontal" },
- { MGLTextWritingModeVertical, "vertical" },
- });
-
- MBGL_DEFINE_ENUM(MGLIconTranslationAnchor, {
- { MGLIconTranslationAnchorMap, "map" },
- { MGLIconTranslationAnchorViewport, "viewport" },
- });
-
- MBGL_DEFINE_ENUM(MGLTextTranslationAnchor, {
- { MGLTextTranslationAnchorMap, "map" },
- { MGLTextTranslationAnchorViewport, "viewport" },
- });
-
-}
-
-@interface MGLSymbolStyleLayer ()
-
-@property (nonatomic, readonly) mbgl::style::SymbolLayer *rawLayer;
-
-@end
-
-@implementation MGLSymbolStyleLayer
-
-- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source
-{
- MGLLogDebug(@"Initializing %@ with identifier: %@ source: %@", NSStringFromClass([self class]), identifier, source);
- auto layer = std::make_unique<mbgl::style::SymbolLayer>(identifier.UTF8String, source.identifier.UTF8String);
- return self = [super initWithPendingLayer:std::move(layer)];
-}
-
-- (mbgl::style::SymbolLayer *)rawLayer
-{
- return (mbgl::style::SymbolLayer *)super.rawLayer;
-}
-
-- (NSString *)sourceIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- return @(self.rawLayer->getSourceID().c_str());
-}
-
-- (NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
-
- auto layerID = self.rawLayer->getSourceLayer();
- return layerID.empty() ? nil : @(layerID.c_str());
-}
-
-- (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting sourceLayerIdentifier: %@", sourceLayerIdentifier);
-
- self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: "");
-}
-
-- (void)setPredicate:(NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting predicate: %@", predicate);
-
- self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::Filter());
-}
-
-- (NSPredicate *)predicate
-{
- MGLAssertStyleLayerIsValid();
-
- return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()];
-}
-
-#pragma mark - Accessing the Layout Attributes
-
-- (void)setIconAllowsOverlap:(NSExpression *)iconAllowsOverlap {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconAllowsOverlap: %@", iconAllowsOverlap);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(iconAllowsOverlap, false);
- self.rawLayer->setIconAllowOverlap(mbglValue);
-}
-
-- (NSExpression *)iconAllowsOverlap {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconAllowOverlap();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconAllowOverlap();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconAllowOverlap:(NSExpression *)iconAllowOverlap {
-}
-
-- (NSExpression *)iconAllowOverlap {
- return self.iconAllowsOverlap;
-}
-
-- (void)setIconAnchor:(NSExpression *)iconAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconAnchor: %@", iconAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::SymbolAnchorType, NSValue *, mbgl::style::SymbolAnchorType, MGLIconAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::SymbolAnchorType>>(iconAnchor, true);
- self.rawLayer->setIconAnchor(mbglValue);
-}
-
-- (NSExpression *)iconAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::SymbolAnchorType, NSValue *, mbgl::style::SymbolAnchorType, MGLIconAnchor>().toExpression(propertyValue);
-}
-
-- (void)setIconIgnoresPlacement:(NSExpression *)iconIgnoresPlacement {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconIgnoresPlacement: %@", iconIgnoresPlacement);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(iconIgnoresPlacement, false);
- self.rawLayer->setIconIgnorePlacement(mbglValue);
-}
-
-- (NSExpression *)iconIgnoresPlacement {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconIgnorePlacement();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconIgnorePlacement();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconIgnorePlacement:(NSExpression *)iconIgnorePlacement {
-}
-
-- (NSExpression *)iconIgnorePlacement {
- return self.iconIgnoresPlacement;
-}
-
-- (void)setIconImageName:(NSExpression *)iconImageName {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconImageName: %@", iconImageName);
-
- if (iconImageName && iconImageName.expressionType == NSConstantValueExpressionType) {
- std::string string = ((NSString *)iconImageName.constantValue).UTF8String;
- if (mbgl::style::conversion::hasTokens(string)) {
- self.rawLayer->setIconImage(mbgl::style::PropertyValue<mbgl::style::expression::Image>(
- mbgl::style::conversion::convertTokenStringToImageExpression(string)));
- return;
- }
- }
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::expression::Image>>(iconImageName, true);
- self.rawLayer->setIconImage(mbglValue);
-}
-
-- (NSExpression *)iconImageName {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconImage();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconImage();
- }
- return MGLStyleValueTransformer<mbgl::style::expression::Image, NSString *>().toExpression(propertyValue);
-}
-
-- (void)setIconImage:(NSExpression *)iconImage {
-}
-
-- (NSExpression *)iconImage {
- return self.iconImageName;
-}
-
-- (void)setIconOffset:(NSExpression *)iconOffset {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconOffset: %@", iconOffset);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(iconOffset, true);
- self.rawLayer->setIconOffset(mbglValue);
-}
-
-- (NSExpression *)iconOffset {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconOffset();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconOffset();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setIconOptional:(NSExpression *)iconOptional {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconOptional: %@", iconOptional);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(iconOptional, false);
- self.rawLayer->setIconOptional(mbglValue);
-}
-
-- (NSExpression *)isIconOptional {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconOptional();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconOptional();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconPadding:(NSExpression *)iconPadding {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconPadding: %@", iconPadding);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(iconPadding, false);
- self.rawLayer->setIconPadding(mbglValue);
-}
-
-- (NSExpression *)iconPadding {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconPadding();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconPadding();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconPitchAlignment:(NSExpression *)iconPitchAlignment {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconPitchAlignment: %@", iconPitchAlignment);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLIconPitchAlignment>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::AlignmentType>>(iconPitchAlignment, false);
- self.rawLayer->setIconPitchAlignment(mbglValue);
-}
-
-- (NSExpression *)iconPitchAlignment {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconPitchAlignment();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconPitchAlignment();
- }
- return MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLIconPitchAlignment>().toExpression(propertyValue);
-}
-
-- (void)setIconRotation:(NSExpression *)iconRotation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconRotation: %@", iconRotation);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(iconRotation, true);
- self.rawLayer->setIconRotate(mbglValue);
-}
-
-- (NSExpression *)iconRotation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconRotate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconRotate();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconRotate:(NSExpression *)iconRotate {
-}
-
-- (NSExpression *)iconRotate {
- return self.iconRotation;
-}
-
-- (void)setIconRotationAlignment:(NSExpression *)iconRotationAlignment {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconRotationAlignment: %@", iconRotationAlignment);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLIconRotationAlignment>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::AlignmentType>>(iconRotationAlignment, false);
- self.rawLayer->setIconRotationAlignment(mbglValue);
-}
-
-- (NSExpression *)iconRotationAlignment {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconRotationAlignment();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconRotationAlignment();
- }
- return MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLIconRotationAlignment>().toExpression(propertyValue);
-}
-
-- (void)setIconScale:(NSExpression *)iconScale {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconScale: %@", iconScale);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(iconScale, true);
- self.rawLayer->setIconSize(mbglValue);
-}
-
-- (NSExpression *)iconScale {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconSize();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconSize();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconSize:(NSExpression *)iconSize {
-}
-
-- (NSExpression *)iconSize {
- return self.iconScale;
-}
-
-- (void)setIconTextFit:(NSExpression *)iconTextFit {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconTextFit: %@", iconTextFit);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::IconTextFitType, NSValue *, mbgl::style::IconTextFitType, MGLIconTextFit>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::IconTextFitType>>(iconTextFit, false);
- self.rawLayer->setIconTextFit(mbglValue);
-}
-
-- (NSExpression *)iconTextFit {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconTextFit();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconTextFit();
- }
- return MGLStyleValueTransformer<mbgl::style::IconTextFitType, NSValue *, mbgl::style::IconTextFitType, MGLIconTextFit>().toExpression(propertyValue);
-}
-
-- (void)setIconTextFitPadding:(NSExpression *)iconTextFitPadding {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconTextFitPadding: %@", iconTextFitPadding);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 4>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 4>>>(iconTextFitPadding, false);
- self.rawLayer->setIconTextFitPadding(mbglValue);
-}
-
-- (NSExpression *)iconTextFitPadding {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconTextFitPadding();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconTextFitPadding();
- }
- return MGLStyleValueTransformer<std::array<float, 4>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setKeepsIconUpright:(NSExpression *)keepsIconUpright {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting keepsIconUpright: %@", keepsIconUpright);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(keepsIconUpright, false);
- self.rawLayer->setIconKeepUpright(mbglValue);
-}
-
-- (NSExpression *)keepsIconUpright {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconKeepUpright();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconKeepUpright();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconKeepUpright:(NSExpression *)iconKeepUpright {
-}
-
-- (NSExpression *)iconKeepUpright {
- return self.keepsIconUpright;
-}
-
-- (void)setKeepsTextUpright:(NSExpression *)keepsTextUpright {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting keepsTextUpright: %@", keepsTextUpright);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(keepsTextUpright, false);
- self.rawLayer->setTextKeepUpright(mbglValue);
-}
-
-- (NSExpression *)keepsTextUpright {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextKeepUpright();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextKeepUpright();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextKeepUpright:(NSExpression *)textKeepUpright {
-}
-
-- (NSExpression *)textKeepUpright {
- return self.keepsTextUpright;
-}
-
-- (void)setMaximumTextAngle:(NSExpression *)maximumTextAngle {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting maximumTextAngle: %@", maximumTextAngle);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(maximumTextAngle, false);
- self.rawLayer->setTextMaxAngle(mbglValue);
-}
-
-- (NSExpression *)maximumTextAngle {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextMaxAngle();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextMaxAngle();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextMaxAngle:(NSExpression *)textMaxAngle {
-}
-
-- (NSExpression *)textMaxAngle {
- return self.maximumTextAngle;
-}
-
-- (void)setMaximumTextWidth:(NSExpression *)maximumTextWidth {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting maximumTextWidth: %@", maximumTextWidth);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(maximumTextWidth, true);
- self.rawLayer->setTextMaxWidth(mbglValue);
-}
-
-- (NSExpression *)maximumTextWidth {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextMaxWidth();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextMaxWidth();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextMaxWidth:(NSExpression *)textMaxWidth {
-}
-
-- (NSExpression *)textMaxWidth {
- return self.maximumTextWidth;
-}
-
-- (void)setSymbolAvoidsEdges:(NSExpression *)symbolAvoidsEdges {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting symbolAvoidsEdges: %@", symbolAvoidsEdges);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(symbolAvoidsEdges, false);
- self.rawLayer->setSymbolAvoidEdges(mbglValue);
-}
-
-- (NSExpression *)symbolAvoidsEdges {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getSymbolAvoidEdges();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultSymbolAvoidEdges();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setSymbolAvoidEdges:(NSExpression *)symbolAvoidEdges {
-}
-
-- (NSExpression *)symbolAvoidEdges {
- return self.symbolAvoidsEdges;
-}
-
-- (void)setSymbolPlacement:(NSExpression *)symbolPlacement {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting symbolPlacement: %@", symbolPlacement);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::SymbolPlacementType, NSValue *, mbgl::style::SymbolPlacementType, MGLSymbolPlacement>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::SymbolPlacementType>>(symbolPlacement, false);
- self.rawLayer->setSymbolPlacement(mbglValue);
-}
-
-- (NSExpression *)symbolPlacement {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getSymbolPlacement();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultSymbolPlacement();
- }
- return MGLStyleValueTransformer<mbgl::style::SymbolPlacementType, NSValue *, mbgl::style::SymbolPlacementType, MGLSymbolPlacement>().toExpression(propertyValue);
-}
-
-- (void)setSymbolSortKey:(NSExpression *)symbolSortKey {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting symbolSortKey: %@", symbolSortKey);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(symbolSortKey, true);
- self.rawLayer->setSymbolSortKey(mbglValue);
-}
-
-- (NSExpression *)symbolSortKey {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getSymbolSortKey();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultSymbolSortKey();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setSymbolSpacing:(NSExpression *)symbolSpacing {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting symbolSpacing: %@", symbolSpacing);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(symbolSpacing, false);
- self.rawLayer->setSymbolSpacing(mbglValue);
-}
-
-- (NSExpression *)symbolSpacing {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getSymbolSpacing();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultSymbolSpacing();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setSymbolZOrder:(NSExpression *)symbolZOrder {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting symbolZOrder: %@", symbolZOrder);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::SymbolZOrderType, NSValue *, mbgl::style::SymbolZOrderType, MGLSymbolZOrder>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::SymbolZOrderType>>(symbolZOrder, false);
- self.rawLayer->setSymbolZOrder(mbglValue);
-}
-
-- (NSExpression *)symbolZOrder {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getSymbolZOrder();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultSymbolZOrder();
- }
- return MGLStyleValueTransformer<mbgl::style::SymbolZOrderType, NSValue *, mbgl::style::SymbolZOrderType, MGLSymbolZOrder>().toExpression(propertyValue);
-}
-
-- (void)setText:(NSExpression *)text {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting text: %@", text);
-
- if (text && text.expressionType == NSConstantValueExpressionType) {
- std::string string = ((NSString *)text.constantValue).UTF8String;
- if (mbgl::style::conversion::hasTokens(string)) {
- self.rawLayer->setTextField(mbgl::style::PropertyValue<mbgl::style::expression::Formatted>(
- mbgl::style::conversion::convertTokenStringToFormatExpression(string)));
- return;
- }
- }
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::expression::Formatted, NSString *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::expression::Formatted>>(text, true);
- self.rawLayer->setTextField(mbglValue);
-}
-
-- (NSExpression *)text {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextField();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextField();
- }
- return MGLStyleValueTransformer<mbgl::style::expression::Formatted, NSString *>().toExpression(propertyValue);
-}
-
-- (void)setTextField:(NSExpression *)textField {
-}
-
-- (NSExpression *)textField {
- return self.text;
-}
-
-- (void)setTextAllowsOverlap:(NSExpression *)textAllowsOverlap {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textAllowsOverlap: %@", textAllowsOverlap);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(textAllowsOverlap, false);
- self.rawLayer->setTextAllowOverlap(mbglValue);
-}
-
-- (NSExpression *)textAllowsOverlap {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextAllowOverlap();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextAllowOverlap();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextAllowOverlap:(NSExpression *)textAllowOverlap {
-}
-
-- (NSExpression *)textAllowOverlap {
- return self.textAllowsOverlap;
-}
-
-- (void)setTextAnchor:(NSExpression *)textAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textAnchor: %@", textAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::SymbolAnchorType, NSValue *, mbgl::style::SymbolAnchorType, MGLTextAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::SymbolAnchorType>>(textAnchor, true);
- self.rawLayer->setTextAnchor(mbglValue);
-}
-
-- (NSExpression *)textAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::SymbolAnchorType, NSValue *, mbgl::style::SymbolAnchorType, MGLTextAnchor>().toExpression(propertyValue);
-}
-
-- (void)setTextFontNames:(NSExpression *)textFontNames {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textFontNames: %@", textFontNames);
-
- auto mbglValue = MGLStyleValueTransformer<std::vector<std::string>, NSArray<NSString *> *, std::string>().toPropertyValue<mbgl::style::PropertyValue<std::vector<std::string>>>(textFontNames, true);
- self.rawLayer->setTextFont(mbglValue);
-}
-
-- (NSExpression *)textFontNames {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextFont();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextFont();
- }
- return MGLStyleValueTransformer<std::vector<std::string>, NSArray<NSString *> *, std::string>().toExpression(propertyValue);
-}
-
-- (void)setTextFont:(NSExpression *)textFont {
-}
-
-- (NSExpression *)textFont {
- return self.textFontNames;
-}
-
-- (void)setTextFontSize:(NSExpression *)textFontSize {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textFontSize: %@", textFontSize);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textFontSize, true);
- self.rawLayer->setTextSize(mbglValue);
-}
-
-- (NSExpression *)textFontSize {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextSize();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextSize();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextSize:(NSExpression *)textSize {
-}
-
-- (NSExpression *)textSize {
- return self.textFontSize;
-}
-
-- (void)setTextIgnoresPlacement:(NSExpression *)textIgnoresPlacement {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textIgnoresPlacement: %@", textIgnoresPlacement);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(textIgnoresPlacement, false);
- self.rawLayer->setTextIgnorePlacement(mbglValue);
-}
-
-- (NSExpression *)textIgnoresPlacement {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextIgnorePlacement();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextIgnorePlacement();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextIgnorePlacement:(NSExpression *)textIgnorePlacement {
-}
-
-- (NSExpression *)textIgnorePlacement {
- return self.textIgnoresPlacement;
-}
-
-- (void)setTextJustification:(NSExpression *)textJustification {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textJustification: %@", textJustification);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TextJustifyType, NSValue *, mbgl::style::TextJustifyType, MGLTextJustification>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TextJustifyType>>(textJustification, true);
- self.rawLayer->setTextJustify(mbglValue);
-}
-
-- (NSExpression *)textJustification {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextJustify();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextJustify();
- }
- return MGLStyleValueTransformer<mbgl::style::TextJustifyType, NSValue *, mbgl::style::TextJustifyType, MGLTextJustification>().toExpression(propertyValue);
-}
-
-- (void)setTextJustify:(NSExpression *)textJustify {
-}
-
-- (NSExpression *)textJustify {
- return self.textJustification;
-}
-
-- (void)setTextLetterSpacing:(NSExpression *)textLetterSpacing {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textLetterSpacing: %@", textLetterSpacing);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textLetterSpacing, true);
- self.rawLayer->setTextLetterSpacing(mbglValue);
-}
-
-- (NSExpression *)textLetterSpacing {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextLetterSpacing();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextLetterSpacing();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextLineHeight:(NSExpression *)textLineHeight {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textLineHeight: %@", textLineHeight);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textLineHeight, false);
- self.rawLayer->setTextLineHeight(mbglValue);
-}
-
-- (NSExpression *)textLineHeight {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextLineHeight();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextLineHeight();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextOffset:(NSExpression *)textOffset {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textOffset: %@", textOffset);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(textOffset, true);
- self.rawLayer->setTextOffset(mbglValue);
-}
-
-- (NSExpression *)textOffset {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextOffset();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextOffset();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setTextOptional:(NSExpression *)textOptional {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textOptional: %@", textOptional);
-
- auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(textOptional, false);
- self.rawLayer->setTextOptional(mbglValue);
-}
-
-- (NSExpression *)isTextOptional {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextOptional();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextOptional();
- }
- return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextPadding:(NSExpression *)textPadding {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textPadding: %@", textPadding);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textPadding, false);
- self.rawLayer->setTextPadding(mbglValue);
-}
-
-- (NSExpression *)textPadding {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextPadding();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextPadding();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextPitchAlignment:(NSExpression *)textPitchAlignment {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textPitchAlignment: %@", textPitchAlignment);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLTextPitchAlignment>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::AlignmentType>>(textPitchAlignment, false);
- self.rawLayer->setTextPitchAlignment(mbglValue);
-}
-
-- (NSExpression *)textPitchAlignment {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextPitchAlignment();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextPitchAlignment();
- }
- return MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLTextPitchAlignment>().toExpression(propertyValue);
-}
-
-- (void)setTextRadialOffset:(NSExpression *)textRadialOffset {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textRadialOffset: %@", textRadialOffset);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textRadialOffset, true);
- self.rawLayer->setTextRadialOffset(mbglValue);
-}
-
-- (NSExpression *)textRadialOffset {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextRadialOffset();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextRadialOffset();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextRotation:(NSExpression *)textRotation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textRotation: %@", textRotation);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textRotation, true);
- self.rawLayer->setTextRotate(mbglValue);
-}
-
-- (NSExpression *)textRotation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextRotate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextRotate();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextRotate:(NSExpression *)textRotate {
-}
-
-- (NSExpression *)textRotate {
- return self.textRotation;
-}
-
-- (void)setTextRotationAlignment:(NSExpression *)textRotationAlignment {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textRotationAlignment: %@", textRotationAlignment);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLTextRotationAlignment>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::AlignmentType>>(textRotationAlignment, false);
- self.rawLayer->setTextRotationAlignment(mbglValue);
-}
-
-- (NSExpression *)textRotationAlignment {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextRotationAlignment();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextRotationAlignment();
- }
- return MGLStyleValueTransformer<mbgl::style::AlignmentType, NSValue *, mbgl::style::AlignmentType, MGLTextRotationAlignment>().toExpression(propertyValue);
-}
-
-- (void)setTextTransform:(NSExpression *)textTransform {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textTransform: %@", textTransform);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TextTransformType, NSValue *, mbgl::style::TextTransformType, MGLTextTransform>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TextTransformType>>(textTransform, true);
- self.rawLayer->setTextTransform(mbglValue);
-}
-
-- (NSExpression *)textTransform {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextTransform();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextTransform();
- }
- return MGLStyleValueTransformer<mbgl::style::TextTransformType, NSValue *, mbgl::style::TextTransformType, MGLTextTransform>().toExpression(propertyValue);
-}
-
-- (void)setTextVariableAnchor:(NSExpression *)textVariableAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textVariableAnchor: %@", textVariableAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<std::vector<mbgl::style::SymbolAnchorType>, NSArray<NSValue *> *, mbgl::style::SymbolAnchorType, MGLTextAnchor>().toPropertyValue<mbgl::style::PropertyValue<std::vector<mbgl::style::SymbolAnchorType>>>(textVariableAnchor, false);
- self.rawLayer->setTextVariableAnchor(mbglValue);
-}
-
-- (NSExpression *)textVariableAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextVariableAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextVariableAnchor();
- }
- return MGLStyleValueTransformer<std::vector<mbgl::style::SymbolAnchorType>, NSArray<NSValue *> *, mbgl::style::SymbolAnchorType, MGLTextAnchor>().toExpression(propertyValue);
-}
-
-- (void)setTextWritingModes:(NSExpression *)textWritingModes {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textWritingModes: %@", textWritingModes);
-
- auto mbglValue = MGLStyleValueTransformer<std::vector<mbgl::style::TextWritingModeType>, NSArray<NSValue *> *, mbgl::style::TextWritingModeType, MGLTextWritingMode>().toPropertyValue<mbgl::style::PropertyValue<std::vector<mbgl::style::TextWritingModeType>>>(textWritingModes, false);
- self.rawLayer->setTextWritingMode(mbglValue);
-}
-
-- (NSExpression *)textWritingModes {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextWritingMode();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextWritingMode();
- }
- return MGLStyleValueTransformer<std::vector<mbgl::style::TextWritingModeType>, NSArray<NSValue *> *, mbgl::style::TextWritingModeType, MGLTextWritingMode>().toExpression(propertyValue);
-}
-
-- (void)setTextWritingMode:(NSExpression *)textWritingMode {
-}
-
-- (NSExpression *)textWritingMode {
- return self.textWritingModes;
-}
-
-#pragma mark - Accessing the Paint Attributes
-
-- (void)setIconColor:(NSExpression *)iconColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconColor: %@", iconColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(iconColor, true);
- self.rawLayer->setIconColor(mbglValue);
-}
-
-- (NSExpression *)iconColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setIconColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setIconColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)iconColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getIconColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setIconHaloBlur:(NSExpression *)iconHaloBlur {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconHaloBlur: %@", iconHaloBlur);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(iconHaloBlur, true);
- self.rawLayer->setIconHaloBlur(mbglValue);
-}
-
-- (NSExpression *)iconHaloBlur {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconHaloBlur();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconHaloBlur();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconHaloBlurTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconHaloBlurTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setIconHaloBlurTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)iconHaloBlurTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getIconHaloBlurTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setIconHaloColor:(NSExpression *)iconHaloColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconHaloColor: %@", iconHaloColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(iconHaloColor, true);
- self.rawLayer->setIconHaloColor(mbglValue);
-}
-
-- (NSExpression *)iconHaloColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconHaloColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconHaloColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setIconHaloColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconHaloColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setIconHaloColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)iconHaloColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getIconHaloColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setIconHaloWidth:(NSExpression *)iconHaloWidth {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconHaloWidth: %@", iconHaloWidth);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(iconHaloWidth, true);
- self.rawLayer->setIconHaloWidth(mbglValue);
-}
-
-- (NSExpression *)iconHaloWidth {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconHaloWidth();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconHaloWidth();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconHaloWidthTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconHaloWidthTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setIconHaloWidthTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)iconHaloWidthTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getIconHaloWidthTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setIconOpacity:(NSExpression *)iconOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconOpacity: %@", iconOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(iconOpacity, true);
- self.rawLayer->setIconOpacity(mbglValue);
-}
-
-- (NSExpression *)iconOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setIconOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setIconOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)iconOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getIconOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setIconTranslation:(NSExpression *)iconTranslation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconTranslation: %@", iconTranslation);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(iconTranslation, false);
- self.rawLayer->setIconTranslate(mbglValue);
-}
-
-- (NSExpression *)iconTranslation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconTranslate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconTranslate();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setIconTranslationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconTranslationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setIconTranslateTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)iconTranslationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getIconTranslateTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setIconTranslate:(NSExpression *)iconTranslate {
-}
-
-- (NSExpression *)iconTranslate {
- return self.iconTranslation;
-}
-
-- (void)setIconTranslationAnchor:(NSExpression *)iconTranslationAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting iconTranslationAnchor: %@", iconTranslationAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLIconTranslationAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType>>(iconTranslationAnchor, false);
- self.rawLayer->setIconTranslateAnchor(mbglValue);
-}
-
-- (NSExpression *)iconTranslationAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getIconTranslateAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultIconTranslateAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLIconTranslationAnchor>().toExpression(propertyValue);
-}
-
-- (void)setIconTranslateAnchor:(NSExpression *)iconTranslateAnchor {
-}
-
-- (NSExpression *)iconTranslateAnchor {
- return self.iconTranslationAnchor;
-}
-
-- (void)setTextColor:(NSExpression *)textColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textColor: %@", textColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(textColor, true);
- self.rawLayer->setTextColor(mbglValue);
-}
-
-- (NSExpression *)textColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setTextColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setTextColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)textColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getTextColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setTextHaloBlur:(NSExpression *)textHaloBlur {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textHaloBlur: %@", textHaloBlur);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textHaloBlur, true);
- self.rawLayer->setTextHaloBlur(mbglValue);
-}
-
-- (NSExpression *)textHaloBlur {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextHaloBlur();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextHaloBlur();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextHaloBlurTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textHaloBlurTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setTextHaloBlurTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)textHaloBlurTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getTextHaloBlurTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setTextHaloColor:(NSExpression *)textHaloColor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textHaloColor: %@", textHaloColor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toPropertyValue<mbgl::style::PropertyValue<mbgl::Color>>(textHaloColor, true);
- self.rawLayer->setTextHaloColor(mbglValue);
-}
-
-- (NSExpression *)textHaloColor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextHaloColor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextHaloColor();
- }
- return MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toExpression(propertyValue);
-}
-
-- (void)setTextHaloColorTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textHaloColorTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setTextHaloColorTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)textHaloColorTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getTextHaloColorTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setTextHaloWidth:(NSExpression *)textHaloWidth {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textHaloWidth: %@", textHaloWidth);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textHaloWidth, true);
- self.rawLayer->setTextHaloWidth(mbglValue);
-}
-
-- (NSExpression *)textHaloWidth {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextHaloWidth();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextHaloWidth();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextHaloWidthTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textHaloWidthTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setTextHaloWidthTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)textHaloWidthTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getTextHaloWidthTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setTextOpacity:(NSExpression *)textOpacity {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textOpacity: %@", textOpacity);
-
- auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<float>>(textOpacity, true);
- self.rawLayer->setTextOpacity(mbglValue);
-}
-
-- (NSExpression *)textOpacity {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextOpacity();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextOpacity();
- }
- return MGLStyleValueTransformer<float, NSNumber *>().toExpression(propertyValue);
-}
-
-- (void)setTextOpacityTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textOpacityTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setTextOpacityTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)textOpacityTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getTextOpacityTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setTextTranslation:(NSExpression *)textTranslation {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textTranslation: %@", textTranslation);
-
- auto mbglValue = MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toPropertyValue<mbgl::style::PropertyValue<std::array<float, 2>>>(textTranslation, false);
- self.rawLayer->setTextTranslate(mbglValue);
-}
-
-- (NSExpression *)textTranslation {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextTranslate();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextTranslate();
- }
- return MGLStyleValueTransformer<std::array<float, 2>, NSValue *>().toExpression(propertyValue);
-}
-
-- (void)setTextTranslationTransition:(MGLTransition )transition {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textTranslationTransition: %@", MGLStringFromMGLTransition(transition));
-
- self.rawLayer->setTextTranslateTransition(MGLOptionsFromTransition(transition));
-}
-
-- (MGLTransition)textTranslationTransition {
- MGLAssertStyleLayerIsValid();
-
- mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getTextTranslateTransition();
-
- return MGLTransitionFromOptions(transitionOptions);
-}
-
-- (void)setTextTranslate:(NSExpression *)textTranslate {
-}
-
-- (NSExpression *)textTranslate {
- return self.textTranslation;
-}
-
-- (void)setTextTranslationAnchor:(NSExpression *)textTranslationAnchor {
- MGLAssertStyleLayerIsValid();
- MGLLogDebug(@"Setting textTranslationAnchor: %@", textTranslationAnchor);
-
- auto mbglValue = MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLTextTranslationAnchor>().toPropertyValue<mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType>>(textTranslationAnchor, false);
- self.rawLayer->setTextTranslateAnchor(mbglValue);
-}
-
-- (NSExpression *)textTranslationAnchor {
- MGLAssertStyleLayerIsValid();
-
- auto propertyValue = self.rawLayer->getTextTranslateAnchor();
- if (propertyValue.isUndefined()) {
- propertyValue = self.rawLayer->getDefaultTextTranslateAnchor();
- }
- return MGLStyleValueTransformer<mbgl::style::TranslateAnchorType, NSValue *, mbgl::style::TranslateAnchorType, MGLTextTranslationAnchor>().toExpression(propertyValue);
-}
-
-- (void)setTextTranslateAnchor:(NSExpression *)textTranslateAnchor {
-}
-
-- (NSExpression *)textTranslateAnchor {
- return self.textTranslationAnchor;
-}
-
-@end
-
-@implementation NSValue (MGLSymbolStyleLayerAdditions)
-
-+ (NSValue *)valueWithMGLIconAnchor:(MGLIconAnchor)iconAnchor {
- return [NSValue value:&iconAnchor withObjCType:@encode(MGLIconAnchor)];
-}
-
-- (MGLIconAnchor)MGLIconAnchorValue {
- MGLIconAnchor iconAnchor;
- [self getValue:&iconAnchor];
- return iconAnchor;
-}
-
-+ (NSValue *)valueWithMGLIconPitchAlignment:(MGLIconPitchAlignment)iconPitchAlignment {
- return [NSValue value:&iconPitchAlignment withObjCType:@encode(MGLIconPitchAlignment)];
-}
-
-- (MGLIconPitchAlignment)MGLIconPitchAlignmentValue {
- MGLIconPitchAlignment iconPitchAlignment;
- [self getValue:&iconPitchAlignment];
- return iconPitchAlignment;
-}
-
-+ (NSValue *)valueWithMGLIconRotationAlignment:(MGLIconRotationAlignment)iconRotationAlignment {
- return [NSValue value:&iconRotationAlignment withObjCType:@encode(MGLIconRotationAlignment)];
-}
-
-- (MGLIconRotationAlignment)MGLIconRotationAlignmentValue {
- MGLIconRotationAlignment iconRotationAlignment;
- [self getValue:&iconRotationAlignment];
- return iconRotationAlignment;
-}
-
-+ (NSValue *)valueWithMGLIconTextFit:(MGLIconTextFit)iconTextFit {
- return [NSValue value:&iconTextFit withObjCType:@encode(MGLIconTextFit)];
-}
-
-- (MGLIconTextFit)MGLIconTextFitValue {
- MGLIconTextFit iconTextFit;
- [self getValue:&iconTextFit];
- return iconTextFit;
-}
-
-+ (NSValue *)valueWithMGLSymbolPlacement:(MGLSymbolPlacement)symbolPlacement {
- return [NSValue value:&symbolPlacement withObjCType:@encode(MGLSymbolPlacement)];
-}
-
-- (MGLSymbolPlacement)MGLSymbolPlacementValue {
- MGLSymbolPlacement symbolPlacement;
- [self getValue:&symbolPlacement];
- return symbolPlacement;
-}
-
-+ (NSValue *)valueWithMGLSymbolZOrder:(MGLSymbolZOrder)symbolZOrder {
- return [NSValue value:&symbolZOrder withObjCType:@encode(MGLSymbolZOrder)];
-}
-
-- (MGLSymbolZOrder)MGLSymbolZOrderValue {
- MGLSymbolZOrder symbolZOrder;
- [self getValue:&symbolZOrder];
- return symbolZOrder;
-}
-
-+ (NSValue *)valueWithMGLTextAnchor:(MGLTextAnchor)textAnchor {
- return [NSValue value:&textAnchor withObjCType:@encode(MGLTextAnchor)];
-}
-
-- (MGLTextAnchor)MGLTextAnchorValue {
- MGLTextAnchor textAnchor;
- [self getValue:&textAnchor];
- return textAnchor;
-}
-
-+ (NSValue *)valueWithMGLTextJustification:(MGLTextJustification)textJustification {
- return [NSValue value:&textJustification withObjCType:@encode(MGLTextJustification)];
-}
-
-- (MGLTextJustification)MGLTextJustificationValue {
- MGLTextJustification textJustification;
- [self getValue:&textJustification];
- return textJustification;
-}
-
-+ (NSValue *)valueWithMGLTextPitchAlignment:(MGLTextPitchAlignment)textPitchAlignment {
- return [NSValue value:&textPitchAlignment withObjCType:@encode(MGLTextPitchAlignment)];
-}
-
-- (MGLTextPitchAlignment)MGLTextPitchAlignmentValue {
- MGLTextPitchAlignment textPitchAlignment;
- [self getValue:&textPitchAlignment];
- return textPitchAlignment;
-}
-
-+ (NSValue *)valueWithMGLTextRotationAlignment:(MGLTextRotationAlignment)textRotationAlignment {
- return [NSValue value:&textRotationAlignment withObjCType:@encode(MGLTextRotationAlignment)];
-}
-
-- (MGLTextRotationAlignment)MGLTextRotationAlignmentValue {
- MGLTextRotationAlignment textRotationAlignment;
- [self getValue:&textRotationAlignment];
- return textRotationAlignment;
-}
-
-+ (NSValue *)valueWithMGLTextTransform:(MGLTextTransform)textTransform {
- return [NSValue value:&textTransform withObjCType:@encode(MGLTextTransform)];
-}
-
-- (MGLTextTransform)MGLTextTransformValue {
- MGLTextTransform textTransform;
- [self getValue:&textTransform];
- return textTransform;
-}
-
-+ (NSValue *)valueWithMGLTextWritingMode:(MGLTextWritingMode)textWritingModes {
- return [NSValue value:&textWritingModes withObjCType:@encode(MGLTextWritingMode)];
-}
-
-- (MGLTextWritingMode)MGLTextWritingModeValue {
- MGLTextWritingMode textWritingModes;
- [self getValue:&textWritingModes];
- return textWritingModes;
-}
-
-+ (NSValue *)valueWithMGLIconTranslationAnchor:(MGLIconTranslationAnchor)iconTranslationAnchor {
- return [NSValue value:&iconTranslationAnchor withObjCType:@encode(MGLIconTranslationAnchor)];
-}
-
-- (MGLIconTranslationAnchor)MGLIconTranslationAnchorValue {
- MGLIconTranslationAnchor iconTranslationAnchor;
- [self getValue:&iconTranslationAnchor];
- return iconTranslationAnchor;
-}
-
-+ (NSValue *)valueWithMGLTextTranslationAnchor:(MGLTextTranslationAnchor)textTranslationAnchor {
- return [NSValue value:&textTranslationAnchor withObjCType:@encode(MGLTextTranslationAnchor)];
-}
-
-- (MGLTextTranslationAnchor)MGLTextTranslationAnchorValue {
- MGLTextTranslationAnchor textTranslationAnchor;
- [self getValue:&textTranslationAnchor];
- return textTranslationAnchor;
-}
-
-@end
-
-namespace mbgl {
-
-MGLStyleLayer* SymbolStyleLayerPeerFactory::createPeer(style::Layer* rawLayer) {
- return [[MGLSymbolStyleLayer alloc] initWithRawLayer:rawLayer];
-}
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLSymbolStyleLayer_Private.h b/platform/darwin/src/MGLSymbolStyleLayer_Private.h
deleted file mode 100644
index 4c3505a9d4..0000000000
--- a/platform/darwin/src/MGLSymbolStyleLayer_Private.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#pragma once
-
-#include "MGLStyleLayer_Private.h"
-
-#include <mbgl/layermanager/symbol_layer_factory.hpp>
-
-namespace mbgl {
-
-class SymbolStyleLayerPeerFactory : public LayerPeerFactory, public mbgl::SymbolLayerFactory {
- // LayerPeerFactory overrides.
- LayerFactory* getCoreLayerFactory() final { return this; }
- virtual MGLStyleLayer* createPeer(style::Layer*) final;
-};
-
-} // namespace mbgl
diff --git a/platform/darwin/src/MGLTilePyramidOfflineRegion.h b/platform/darwin/src/MGLTilePyramidOfflineRegion.h
deleted file mode 100644
index 41fc200154..0000000000
--- a/platform/darwin/src/MGLTilePyramidOfflineRegion.h
+++ /dev/null
@@ -1,88 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLOfflineRegion.h"
-#import "MGLGeometry.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An offline region defined by a style URL, geographic coordinate bounds, and
- range of zoom levels.
-
- To minimize the resources required by an irregularly shaped offline region,
- use the MGLShapeOfflineRegion class instead.
-
- ### Example
- ```swift
- let northeast = CLLocationCoordinate2D(latitude: 40.989329, longitude: -102.062592)
- let southwest = CLLocationCoordinate2D(latitude: 36.986207, longitude: -109.049896)
- let bbox = MGLCoordinateBounds(sw: southwest, ne: northeast)
-
- let region = MGLTilePyramidOfflineRegion(styleURL: MGLStyle.lightStyleURL, bounds: bbox, fromZoomLevel: 11, toZoomLevel: 14)
- let context = "Tile Pyramid Region".data(using: .utf8)
- MGLOfflineStorage.shared.addPack(for: region, withContext: context!)
- ```
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/offline-pack/">
- Download an offline map</a> example to learn how to define an offline region
- to be downloaded to a user's device.
- */
-MGL_EXPORT
-@interface MGLTilePyramidOfflineRegion : NSObject <MGLOfflineRegion, NSSecureCoding, NSCopying>
-
-/**
- The coordinate bounds for the geographic region covered by the downloaded
- tiles.
- */
-@property (nonatomic, readonly) MGLCoordinateBounds bounds;
-
-/**
- The minimum zoom level for which to download tiles and other resources.
-
- For more information about zoom levels, `-[MGLMapView zoomLevel]`.
- */
-@property (nonatomic, readonly) double minimumZoomLevel;
-
-/**
- The maximum zoom level for which to download tiles and other resources.
-
- For more information about zoom levels, `-[MGLMapView zoomLevel]`.
- */
-@property (nonatomic, readonly) double maximumZoomLevel;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- Initializes a newly created offline region with the given style URL, geographic
- coordinate bounds, and range of zoom levels.
-
- This is the designated initializer for `MGLTilePyramidOfflineRegion`.
-
- @param styleURL URL of the map style for which to download resources. The URL
- may be a full HTTP or HTTPS URL or a Mapbox
- style URL (`mapbox://styles/{user}/{style}`). Specify `nil` for the default style.
- Relative file URLs cannot be used as offline style URLs. To download the
- online resources required by a local style, specify a URL to an online copy
- of the style.
- @param bounds The coordinate bounds for the geographic region to be covered by
- the downloaded tiles.
- @param minimumZoomLevel The minimum zoom level to be covered by the downloaded
- tiles. This parameter should be set to at least 0 but no greater than the
- value of the `maximumZoomLevel` parameter. For each required tile source, if
- this parameter is set to a value less than the tile source’s minimum zoom
- level, the download covers zoom levels down to the tile source’s minimum
- zoom level.
- @param maximumZoomLevel The maximum zoom level to be covered by the downloaded
- tiles. This parameter should be set to at least the value of the
- `minimumZoomLevel` parameter. For each required tile source, if this
- parameter is set to a value greater than the tile source’s minimum zoom
- level, the download covers zoom levels up to the tile source’s maximum zoom
- level.
- */
-- (instancetype)initWithStyleURL:(nullable NSURL *)styleURL bounds:(MGLCoordinateBounds)bounds fromZoomLevel:(double)minimumZoomLevel toZoomLevel:(double)maximumZoomLevel NS_DESIGNATED_INITIALIZER;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLTilePyramidOfflineRegion.mm b/platform/darwin/src/MGLTilePyramidOfflineRegion.mm
deleted file mode 100644
index 73fcaa91d8..0000000000
--- a/platform/darwin/src/MGLTilePyramidOfflineRegion.mm
+++ /dev/null
@@ -1,154 +0,0 @@
-#import "MGLTilePyramidOfflineRegion.h"
-
-#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
- #import <Cocoa/Cocoa.h>
-#endif
-
-#import "MGLOfflineRegion_Private.h"
-#import "MGLTilePyramidOfflineRegion_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLStyle.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MMEConstants.h"
-#endif
-
-@interface MGLTilePyramidOfflineRegion () <MGLOfflineRegion_Private, MGLTilePyramidOfflineRegion_Private>
-
-@end
-
-@implementation MGLTilePyramidOfflineRegion {
- NSURL *_styleURL;
-}
-
-@synthesize styleURL = _styleURL;
-@synthesize includesIdeographicGlyphs = _includesIdeographicGlyphs;
-
--(NSDictionary *)offlineStartEventAttributes {
- return @{
- #if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- MMEEventKeyShapeForOfflineRegion: @"tileregion",
- MMEEventKeyMinZoomLevel: @(self.minimumZoomLevel),
- MMEEventKeyMaxZoomLevel: @(self.maximumZoomLevel),
- MMEEventKeyStyleURL: self.styleURL.absoluteString ?: [NSNull null]
- #endif
- };
-}
-
-+ (BOOL)supportsSecureCoding {
- return YES;
-}
-
-- (instancetype)init {
- MGLLogInfo(@"Calling this initializer is not allowed.");
- [NSException raise:NSGenericException format:
- @"-[MGLTilePyramidOfflineRegion init] is unavailable. "
- @"Use -initWithStyleURL:bounds:fromZoomLevel:toZoomLevel: instead."];
- return nil;
-}
-
-- (instancetype)initWithStyleURL:(NSURL *)styleURL bounds:(MGLCoordinateBounds)bounds fromZoomLevel:(double)minimumZoomLevel toZoomLevel:(double)maximumZoomLevel {
- MGLLogDebug(@"Initializing styleURL: %@ bounds: %@ fromZoomLevel: %f toZoomLevel: %f", styleURL, MGLStringFromCoordinateBounds(bounds), minimumZoomLevel, maximumZoomLevel);
- if (self = [super init]) {
- if (!styleURL) {
- styleURL = [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion];
- }
-
- if (!styleURL.scheme) {
- [NSException raise:MGLInvalidStyleURLException format:
- @"%@ does not support setting a relative file URL as the style URL. "
- @"To download the online resources required by this style, "
- @"specify a URL to an online copy of this style. "
- @"For Mapbox-hosted styles, use the mapbox: scheme.",
- NSStringFromClass([self class])];
- }
-
- _styleURL = styleURL;
- _bounds = bounds;
- _minimumZoomLevel = minimumZoomLevel;
- _maximumZoomLevel = maximumZoomLevel;
- _includesIdeographicGlyphs = NO;
- }
- return self;
-}
-
-- (instancetype)initWithOfflineRegionDefinition:(const mbgl::OfflineTilePyramidRegionDefinition &)definition {
- NSURL *styleURL = [NSURL URLWithString:@(definition.styleURL.c_str())];
- MGLCoordinateBounds bounds = MGLCoordinateBoundsFromLatLngBounds(definition.bounds);
- MGLTilePyramidOfflineRegion* result = [self initWithStyleURL:styleURL bounds:bounds fromZoomLevel:definition.minZoom toZoomLevel:definition.maxZoom];
- result.includesIdeographicGlyphs = definition.includeIdeographs;
- return result;
-}
-
-- (const mbgl::OfflineRegionDefinition)offlineRegionDefinition {
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- const float scaleFactor = [UIScreen instancesRespondToSelector:@selector(nativeScale)] ? [[UIScreen mainScreen] nativeScale] : [[UIScreen mainScreen] scale];
-#elif TARGET_OS_MAC
- const float scaleFactor = [NSScreen mainScreen].backingScaleFactor;
-#endif
- return mbgl::OfflineTilePyramidRegionDefinition(_styleURL.absoluteString.UTF8String,
- MGLLatLngBoundsFromCoordinateBounds(_bounds),
- _minimumZoomLevel, _maximumZoomLevel,
- scaleFactor, _includesIdeographicGlyphs);
-}
-
-- (nullable instancetype)initWithCoder:(NSCoder *)coder {
- MGLLogInfo(@"Initializing with coder.");
- NSURL *styleURL = [coder decodeObjectForKey:@"styleURL"];
- CLLocationCoordinate2D sw = CLLocationCoordinate2DMake([coder decodeDoubleForKey:@"southWestLatitude"],
- [coder decodeDoubleForKey:@"southWestLongitude"]);
- CLLocationCoordinate2D ne = CLLocationCoordinate2DMake([coder decodeDoubleForKey:@"northEastLatitude"],
- [coder decodeDoubleForKey:@"northEastLongitude"]);
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(sw, ne);
- double minimumZoomLevel = [coder decodeDoubleForKey:@"minimumZoomLevel"];
- double maximumZoomLevel = [coder decodeDoubleForKey:@"maximumZoomLevel"];
-
- MGLTilePyramidOfflineRegion* result = [self initWithStyleURL:styleURL bounds:bounds fromZoomLevel:minimumZoomLevel toZoomLevel:maximumZoomLevel];
- result.includesIdeographicGlyphs = [coder decodeBoolForKey:@"includesIdeographicGlyphs"];
- return result;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [coder encodeObject:_styleURL forKey:@"styleURL"];
- [coder encodeDouble:_bounds.sw.latitude forKey:@"southWestLatitude"];
- [coder encodeDouble:_bounds.sw.longitude forKey:@"southWestLongitude"];
- [coder encodeDouble:_bounds.ne.latitude forKey:@"northEastLatitude"];
- [coder encodeDouble:_bounds.ne.longitude forKey:@"northEastLongitude"];
- [coder encodeDouble:_maximumZoomLevel forKey:@"maximumZoomLevel"];
- [coder encodeDouble:_minimumZoomLevel forKey:@"minimumZoomLevel"];
- [coder encodeBool:_includesIdeographicGlyphs forKey:@"includesIdeographicGlyphs"];
-}
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- MGLTilePyramidOfflineRegion* result = [[[self class] allocWithZone:zone] initWithStyleURL:_styleURL bounds:_bounds fromZoomLevel:_minimumZoomLevel toZoomLevel:_maximumZoomLevel];
- result.includesIdeographicGlyphs = _includesIdeographicGlyphs;
- return result;
-}
-
-- (BOOL)isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[self class]]) {
- return NO;
- }
-
- MGLTilePyramidOfflineRegion *otherRegion = other;
- return (_minimumZoomLevel == otherRegion->_minimumZoomLevel
- && _maximumZoomLevel == otherRegion->_maximumZoomLevel
- && MGLCoordinateBoundsEqualToCoordinateBounds(_bounds, otherRegion->_bounds)
- && [_styleURL isEqual:otherRegion->_styleURL]
- && _includesIdeographicGlyphs == otherRegion->_includesIdeographicGlyphs);
-}
-
-- (NSUInteger)hash {
- return (_styleURL.hash
- + @(_bounds.sw.latitude).hash + @(_bounds.sw.longitude).hash
- + @(_bounds.ne.latitude).hash + @(_bounds.ne.longitude).hash
- + @(_minimumZoomLevel).hash + @(_maximumZoomLevel).hash
- + @(_includesIdeographicGlyphs).hash);
-}
-
-@end
diff --git a/platform/darwin/src/MGLTilePyramidOfflineRegion_Private.h b/platform/darwin/src/MGLTilePyramidOfflineRegion_Private.h
deleted file mode 100644
index 90d8e05477..0000000000
--- a/platform/darwin/src/MGLTilePyramidOfflineRegion_Private.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLOfflineRegion.h"
-
-#include <mbgl/storage/offline.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLTilePyramidOfflineRegion_Private <MGLOfflineRegion>
-
-/**
- Initializes and returns an offline region backed by the given C++ region
- definition object.
-
- @param definition A reference to an offline region definition backing the
- offline region.
- */
-- (instancetype)initWithOfflineRegionDefinition:(const mbgl::OfflineTilePyramidRegionDefinition &)definition;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLTileSource.h b/platform/darwin/src/MGLTileSource.h
deleted file mode 100644
index f22babc8ca..0000000000
--- a/platform/darwin/src/MGLTileSource.h
+++ /dev/null
@@ -1,206 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLSource.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLAttributionInfo;
-
-/**
- Options for `MGLTileSource` objects.
- */
-typedef NSString *MGLTileSourceOption NS_STRING_ENUM;
-
-/**
- An `NSNumber` object containing an unsigned integer that specifies the minimum
- zoom level at which to display tiles from the source.
-
- The value should be between 0 and 22, inclusive, and less than
- `MGLTileSourceOptionMaximumZoomLevel`, if specified. The default value for this
- option is 0.
-
- This option corresponds to the `minzoom` key in the
- <a href="https://github.com/mapbox/tilejson-spec/tree/master/2.1.0">TileJSON</a>
- specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionMinimumZoomLevel;
-
-/**
- An `NSNumber` object containing an unsigned integer that specifies the maximum
- zoom level at which to display tiles from the source.
-
- The value should be between 0 and 22, inclusive, and less than
- `MGLTileSourceOptionMinimumZoomLevel`, if specified. The default value for this
- option is 22.
-
- This option corresponds to the `maxzoom` key in the
- <a href="https://github.com/mapbox/tilejson-spec/tree/master/2.1.0">TileJSON</a>
- specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionMaximumZoomLevel;
-
-/**
- An `NSValue` object containing an `MGLCoordinateBounds` struct that specifies
- the geographic extent of the source.
-
- If this option is specified, the SDK avoids requesting any tile that falls
- outside of the coordinate bounds. Otherwise, the SDK requests any tile needed
- to cover the viewport, as it does by default.
-
- This option corresponds to the `bounds` key in the
- <a href="https://github.com/mapbox/tilejson-spec/tree/master/2.1.0">TileJSON</a>
- specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionCoordinateBounds;
-
-#if TARGET_OS_IPHONE
-/**
- An HTML string defining the buttons to be displayed in an action sheet when the
- source is part of a map view’s style and the map view’s attribution button is
- pressed.
-
- By default, no attribution statements are displayed. If the
- `MGLTileSourceOptionAttributionInfos` option is specified, this option is
- ignored.
-
- This option corresponds to the `attribution` key in the
- <a href="https://github.com/mapbox/tilejson-spec/tree/master/2.1.0">TileJSON</a>
- specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionAttributionHTMLString;
-
-/**
- An array of `MGLAttributionInfo` objects defining the buttons to be displayed
- in an action sheet when the source is part of a map view’s style and the map
- view’s attribution button is pressed.
-
- By default, no attribution statements are displayed.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionAttributionInfos;
-#else
-/**
- An HTML string defining the buttons to be displayed in the map view’s
- attribution view when the source is part of the map view’s style.
-
- By default, no attribution statements are displayed. If the
- `MGLTileSourceOptionAttributionInfos` option is specified, this option is
- ignored.
-
- This option corresponds to the `attribution` key in the
- <a href="https://github.com/mapbox/tilejson-spec/tree/master/2.1.0">TileJSON</a>
- specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionAttributionHTMLString;
-
-/**
- An array of `MGLAttributionInfo` objects defining the buttons to be displayed
- in the map view’s attribution view when the source is part of the map view’s
- style.
-
- By default, no attribution statements are displayed.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionAttributionInfos;
-#endif
-
-/**
- An `NSNumber` object containing an unsigned integer that specifies the tile
- coordinate system for the source’s tile URLs. The integer corresponds to one of
- the constants described in `MGLTileCoordinateSystem`.
-
- The default value for this option is `MGLTileCoordinateSystemXYZ`.
-
- This option corresponds to the `scheme` key in the
- <a href="https://github.com/mapbox/tilejson-spec/tree/master/2.1.0">TileJSON</a>
- specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionTileCoordinateSystem;
-
-/**
- Tile coordinate systems that determine how tile coordinates in tile URLs are
- interpreted.
- */
-typedef NS_ENUM(NSUInteger, MGLTileCoordinateSystem) {
- /**
- The origin is at the top-left (northwest), and `y` values increase
- southwards.
-
- This tile coordinate system is used by Mapbox and OpenStreetMap tile
- servers.
- */
- MGLTileCoordinateSystemXYZ = 0,
-
- /**
- The origin is at the bottom-left (southwest), and `y` values increase
- northwards.
-
- This tile coordinate system is used by tile servers that conform to the
- <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">Tile Map Service Specification</a>.
- */
- MGLTileCoordinateSystemTMS
-};
-
-/**
- The encoding formula used to generate the raster-dem tileset
-*/
-
-typedef NS_ENUM(NSUInteger, MGLDEMEncoding) {
-
- /**
- Raster tiles generated with the [Mapbox encoding formula](https://docs.mapbox.com/help/troubleshooting/access-elevation-data/#mapbox-terrain-rgb).
- */
- MGLDEMEncodingMapbox = 0,
-
- /**
- Raster tiles generated with the [Mapzen Terrarium encoding formula](https://aws.amazon.com/public-datasets/terrain/).
- */
- MGLDEMEncodingTerrarium
-};
-
-/**
- `MGLTileSource` is a map content source that supplies map tiles to be shown on
- the map. The location of and metadata about the tiles are defined either by an
- option dictionary or by an external file that conforms to the
- <a href="https://github.com/mapbox/tilejson-spec/">TileJSON specification</a>.
- A tile source is added to an `MGLStyle` object along with one or more
- `MGLRasterStyleLayer` or `MGLVectorStyleLayer` objects. Use a style layer to
- control the appearance of content supplied by the tile source.
-
- A tile source is also known as a tile set. To learn about the structure of a
- Mapbox-hosted tile set, view it in
- <a href="https://www.mapbox.com/studio/tilesets/">Mapbox Studio’s Tilesets editor</a>.
-
- Create instances of `MGLRasterTileSource` and `MGLVectorTileSource` in order
- to use `MGLTileSource`'s properties and methods. Do not create instances of
- `MGLTileSource` directly, and do not create your own subclasses of this class.
- */
-MGL_EXPORT
-@interface MGLTileSource : MGLSource
-
-#pragma mark Accessing a Source’s Content
-
-/**
- The URL to the TileJSON configuration file that specifies the contents of the
- source.
-
- If the receiver was initialized using
- `-initWithIdentifier:tileURLTemplates:options`, this property is set to `nil`.
- */
-@property (nonatomic, copy, nullable, readonly) NSURL *configurationURL;
-
-#pragma mark Accessing Attribution Strings
-
-/**
- An array of `MGLAttributionInfo` objects that define the attribution
- statements to be displayed when the map is shown to the user.
-
- By default, this array is empty. If the source is initialized with a
- configuration URL, this array is also empty until the configuration JSON file
- is loaded.
- */
-@property (nonatomic, copy, readonly) NSArray<MGLAttributionInfo *> *attributionInfos;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLTileSource.mm b/platform/darwin/src/MGLTileSource.mm
deleted file mode 100644
index eef3b33430..0000000000
--- a/platform/darwin/src/MGLTileSource.mm
+++ /dev/null
@@ -1,152 +0,0 @@
-#import "MGLTileSource_Private.h"
-
-#import "MGLAttributionInfo_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLRasterDEMSource.h"
-#import "NSString+MGLAdditions.h"
-#import "NSValue+MGLAdditions.h"
-
-#if TARGET_OS_IPHONE
- #import <UIKit/UIKit.h>
-#else
- #import <Cocoa/Cocoa.h>
-#endif
-
-#include <mbgl/util/tileset.hpp>
-
-const MGLTileSourceOption MGLTileSourceOptionMinimumZoomLevel = @"MGLTileSourceOptionMinimumZoomLevel";
-const MGLTileSourceOption MGLTileSourceOptionMaximumZoomLevel = @"MGLTileSourceOptionMaximumZoomLevel";
-const MGLTileSourceOption MGLTileSourceOptionCoordinateBounds = @"MGLTileSourceOptionCoordinateBounds";
-const MGLTileSourceOption MGLTileSourceOptionAttributionHTMLString = @"MGLTileSourceOptionAttributionHTMLString";
-const MGLTileSourceOption MGLTileSourceOptionAttributionInfos = @"MGLTileSourceOptionAttributionInfos";
-const MGLTileSourceOption MGLTileSourceOptionTileCoordinateSystem = @"MGLTileSourceOptionTileCoordinateSystem";
-const MGLTileSourceOption MGLTileSourceOptionDEMEncoding = @"MGLTileSourceOptionDEMEncoding";
-
-@implementation MGLTileSource
-
-- (NSURL *)configurationURL {
- [NSException raise:MGLAbstractClassException
- format:@"MGLTileSource is an abstract class"];
- return nil;
-}
-
-- (NSArray<MGLAttributionInfo *> *)attributionInfos {
- return [self attributionInfosWithFontSize:0 linkColor:nil];
-}
-
-- (NSArray<MGLAttributionInfo *> *)attributionInfosWithFontSize:(CGFloat)fontSize linkColor:(nullable MGLColor *)linkColor {
- return [MGLAttributionInfo attributionInfosFromHTMLString:self.attributionHTMLString
- fontSize:fontSize
- linkColor:linkColor];
-}
-
-- (NSString *)attributionHTMLString {
- [NSException raise:MGLAbstractClassException
- format:@"MGLTileSource is an abstract class"];
- return nil;
-}
-
-@end
-
-mbgl::Tileset MGLTileSetFromTileURLTemplates(NSArray<NSString *> *tileURLTemplates, NSDictionary<MGLTileSourceOption, id> * _Nullable options) {
- mbgl::Tileset tileSet;
-
- for (NSString *tileURLTemplate in tileURLTemplates) {
- tileSet.tiles.push_back(tileURLTemplate.UTF8String);
- }
-
- // set the minimum / maximum zoom range to the values specified by this class if they
- // were set. otherwise, use the core objects default values
- if (NSNumber *minimumZoomLevel = options[MGLTileSourceOptionMinimumZoomLevel]) {
- if (![minimumZoomLevel isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionMinimumZoomLevel must be set to an NSNumber."];
- }
- tileSet.zoomRange.min = minimumZoomLevel.integerValue;
- }
- if (NSNumber *maximumZoomLevel = options[MGLTileSourceOptionMaximumZoomLevel]) {
- if (![maximumZoomLevel isKindOfClass:[NSNumber class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionMinimumZoomLevel must be set to an NSNumber."];
- }
- tileSet.zoomRange.max = maximumZoomLevel.integerValue;
- }
- if (tileSet.zoomRange.min > tileSet.zoomRange.max) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionMinimumZoomLevel must be less than MGLTileSourceOptionMaximumZoomLevel."];
- }
-
- if (NSValue *coordinateBounds = options[MGLTileSourceOptionCoordinateBounds]) {
- if (![coordinateBounds isKindOfClass:[NSValue class]]
- && strcmp(coordinateBounds.objCType, @encode(MGLCoordinateBounds)) == 0) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionCoordinateBounds must be set to an NSValue containing an MGLCoordinateBounds."];
- }
- tileSet.bounds = MGLLatLngBoundsFromCoordinateBounds(coordinateBounds.MGLCoordinateBoundsValue);
- }
-
- if (NSString *attribution = options[MGLTileSourceOptionAttributionHTMLString]) {
- if (![attribution isKindOfClass:[NSString class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionAttributionHTMLString must be set to a string."];
- }
- tileSet.attribution = attribution.UTF8String;
- }
-
- if (NSArray *attributionInfos = options[MGLTileSourceOptionAttributionInfos]) {
- if (![attributionInfos isKindOfClass:[NSArray class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionAttributionInfos must be set to a string."];
- }
-
- NSAttributedString *attributedString = [MGLAttributionInfo attributedStringForAttributionInfos:attributionInfos];
-#if TARGET_OS_IPHONE
- static NSString * const NSExcludedElementsDocumentAttribute = @"ExcludedElements";
-#endif
- NSDictionary *documentAttributes = @{
- NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
- NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding),
- // The attribution string is meant to be a simple, inline fragment, not a full-fledged, validating document.
- NSExcludedElementsDocumentAttribute: @[@"XML", @"DOCTYPE", @"html", @"head", @"meta", @"title", @"style", @"body", @"p"],
- };
- NSData *data = [attributedString dataFromRange:attributedString.mgl_wholeRange documentAttributes:documentAttributes error:NULL];
- NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
- tileSet.attribution = html.UTF8String;
- }
-
- if (NSNumber *tileCoordinateSystemNumber = options[MGLTileSourceOptionTileCoordinateSystem]) {
- if (![tileCoordinateSystemNumber isKindOfClass:[NSValue class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionTileCoordinateSystem must be set to an NSValue or NSNumber."];
- }
- MGLTileCoordinateSystem tileCoordinateSystem;
- [tileCoordinateSystemNumber getValue:&tileCoordinateSystem];
- switch (tileCoordinateSystem) {
- case MGLTileCoordinateSystemXYZ:
- tileSet.scheme = mbgl::Tileset::Scheme::XYZ;
- break;
- case MGLTileCoordinateSystemTMS:
- tileSet.scheme = mbgl::Tileset::Scheme::TMS;
- break;
- }
- }
-
- if (NSNumber *demEncodingNumber = options[MGLTileSourceOptionDEMEncoding]) {
- if (![demEncodingNumber isKindOfClass:[NSValue class]]) {
- [NSException raise:NSInvalidArgumentException
- format:@"MGLTileSourceOptionDEMEncoding must be set to an NSValue or NSNumber."];
- }
- MGLDEMEncoding demEncoding;
- [demEncodingNumber getValue:&demEncoding];
- switch (demEncoding) {
- case MGLDEMEncodingMapbox:
- tileSet.encoding = mbgl::Tileset::DEMEncoding::Mapbox;
- break;
- case MGLDEMEncodingTerrarium:
- tileSet.encoding = mbgl::Tileset::DEMEncoding::Terrarium;
- break;
- }
- }
-
- return tileSet;
-}
diff --git a/platform/darwin/src/MGLTileSource_Private.h b/platform/darwin/src/MGLTileSource_Private.h
deleted file mode 100644
index 1b260ca86a..0000000000
--- a/platform/darwin/src/MGLTileSource_Private.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#import <CoreGraphics/CoreGraphics.h>
-
-#import "MGLFoundation.h"
-#import "MGLTileSource.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-namespace mbgl {
- class Tileset;
-}
-
-@class MGLAttributionInfo;
-
-@interface MGLTileSource (Private)
-
-/**
- An HTML string to be displayed as attribution when the map is shown to a user.
-
- The default value is `nil`. If the source is initialized with a configuration
- URL, this property is also `nil` until the configuration JSON file is loaded.
- */
-@property (nonatomic, copy, nullable, readonly) NSString *attributionHTMLString;
-
-/**
- A structured representation of the `attribution` property. The default value is
- `nil`.
-
- @param fontSize The default text size in points, or 0 to use the default.
- @param linkColor The default link color, or `nil` to use the default.
- */
-- (NSArray<MGLAttributionInfo *> *)attributionInfosWithFontSize:(CGFloat)fontSize linkColor:(nullable MGLColor *)linkColor;
-
-@end
-
-MGL_EXPORT
-mbgl::Tileset MGLTileSetFromTileURLTemplates(NSArray<NSString *> *tileURLTemplates, NSDictionary<MGLTileSourceOption, id> * _Nullable options);
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLTypes.h b/platform/darwin/src/MGLTypes.h
deleted file mode 100644
index 963eda384b..0000000000
--- a/platform/darwin/src/MGLTypes.h
+++ /dev/null
@@ -1,140 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreGraphics/CoreGraphics.h>
-
-#import "MGLFoundation.h"
-
-#pragma once
-
-#if TARGET_OS_IPHONE
-@class UIImage;
-#define MGLImage UIImage
-#else
-@class NSImage;
-#define MGLImage NSImage
-#endif
-
-#if TARGET_OS_IPHONE
-@class UIColor;
-#define MGLColor UIColor
-#else
-@class NSColor;
-#define MGLColor NSColor
-#endif
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString *MGLExceptionName NS_TYPED_EXTENSIBLE_ENUM;
-
-/**
- :nodoc: Generic exceptions used across multiple disparate classes. Exceptions
- that are unique to a class or class-cluster should be defined in those headers.
- */
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLAbstractClassException;
-
-/** Indicates an error occurred in the Mapbox SDK. */
-FOUNDATION_EXTERN MGL_EXPORT NSErrorDomain const MGLErrorDomain;
-
-/** Error constants for the Mapbox SDK. */
-typedef NS_ENUM(NSInteger, MGLErrorCode) {
- /** An unknown error occurred. */
- MGLErrorCodeUnknown = -1,
- /** The resource could not be found. */
- MGLErrorCodeNotFound = 1,
- /** The connection received an invalid server response. */
- MGLErrorCodeBadServerResponse = 2,
- /** An attempt to establish a connection failed. */
- MGLErrorCodeConnectionFailed = 3,
- /** A style parse error occurred while attempting to load the map. */
- MGLErrorCodeParseStyleFailed = 4,
- /** An attempt to load the style failed. */
- MGLErrorCodeLoadStyleFailed = 5,
- /** An error occurred while snapshotting the map. */
- MGLErrorCodeSnapshotFailed = 6,
- /** Source is in use and cannot be removed */
- MGLErrorCodeSourceIsInUseCannotRemove = 7,
- /** Source is in use and cannot be removed */
- MGLErrorCodeSourceIdentifierMismatch = 8,
- /** An error occurred while modifying the offline storage database */
- MGLErrorCodeModifyingOfflineStorageFailed = 9,
- /** Source is invalid and cannot be removed from the style (e.g. after a style change) */
- MGLErrorCodeSourceCannotBeRemovedFromStyle = 10,
- /** An error occurred while rendering */
- MGLErrorCodeRenderingError = 11,
-};
-
-/** Options for enabling debugging features in an `MGLMapView` instance. */
-typedef NS_OPTIONS(NSUInteger, MGLMapDebugMaskOptions) {
- /** Edges of tile boundaries are shown as thick, red lines to help diagnose
- tile clipping issues. */
- MGLMapDebugTileBoundariesMask = 1 << 1,
- /** Each tile shows its tile coordinate (x/y/z) in the upper-left corner. */
- MGLMapDebugTileInfoMask = 1 << 2,
- /** Each tile shows a timestamp indicating when it was loaded. */
- MGLMapDebugTimestampsMask = 1 << 3,
- /** Edges of glyphs and symbols are shown as faint, green lines to help
- diagnose collision and label placement issues. */
- MGLMapDebugCollisionBoxesMask = 1 << 4,
- /** Each drawing operation is replaced by a translucent fill. Overlapping
- drawing operations appear more prominent to help diagnose overdrawing.
- @note This option does nothing in Release builds of the SDK. */
- MGLMapDebugOverdrawVisualizationMask = 1 << 5,
-#if !TARGET_OS_IPHONE
- /** The stencil buffer is shown instead of the color buffer.
- @note This option does nothing in Release builds of the SDK. */
- MGLMapDebugStencilBufferMask = 1 << 6,
- /** The depth buffer is shown instead of the color buffer.
- @note This option does nothing in Release builds of the SDK. */
- MGLMapDebugDepthBufferMask = 1 << 7,
-#endif
-};
-
-/**
- A structure containing information about a transition.
- */
-typedef struct __attribute__((objc_boxable)) MGLTransition {
- /**
- The amount of time the animation should take, not including the delay.
- */
- NSTimeInterval duration;
-
- /**
- The amount of time in seconds to wait before beginning the animation.
- */
- NSTimeInterval delay;
-} MGLTransition;
-
-NS_INLINE NSString *MGLStringFromMGLTransition(MGLTransition transition) {
- return [NSString stringWithFormat:@"transition { duration: %f, delay: %f }", transition.duration, transition.delay];
-}
-
-/**
- Creates a new `MGLTransition` from the given duration and delay.
-
- @param duration The amount of time the animation should take, not including
- the delay.
- @param delay The amount of time in seconds to wait before beginning the
- animation.
-
- @return Returns a `MGLTransition` struct containing the transition attributes.
- */
-NS_INLINE MGLTransition MGLTransitionMake(NSTimeInterval duration, NSTimeInterval delay) {
- MGLTransition transition;
- transition.duration = duration;
- transition.delay = delay;
-
- return transition;
-}
-
-/**
- Constants indicating the visibility of different map ornaments.
- */
-typedef NS_ENUM(NSInteger, MGLOrnamentVisibility) {
- /** A constant indicating that the ornament adapts to the current map state. */
- MGLOrnamentVisibilityAdaptive,
- /** A constant indicating that the ornament is always hidden. */
- MGLOrnamentVisibilityHidden,
- /** A constant indicating that the ornament is always visible. */
- MGLOrnamentVisibilityVisible
-};
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLTypes.m b/platform/darwin/src/MGLTypes.m
deleted file mode 100644
index 89f88a9c1d..0000000000
--- a/platform/darwin/src/MGLTypes.m
+++ /dev/null
@@ -1,5 +0,0 @@
-#import "MGLTypes.h"
-
-const MGLExceptionName MGLAbstractClassException = @"MGLAbstractClassException";
-
-NSString * const MGLErrorDomain = @"MGLErrorDomain";
diff --git a/platform/darwin/src/MGLValueEvaluator.h b/platform/darwin/src/MGLValueEvaluator.h
deleted file mode 100644
index 2779deba90..0000000000
--- a/platform/darwin/src/MGLValueEvaluator.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import <mbgl/util/geometry.hpp>
-
-/**
- Recursively transforms a C++ type into the corresponding Foundation type.
- */
-class ValueEvaluator {
-public:
- id operator()(const mbgl::NullValue &) const {
- return [NSNull null];
- }
-
- id operator()(const bool &value) const {
- return value ? @YES : @NO;
- }
-
- id operator()(const uint64_t &value) const {
- return @(value);
- }
-
- id operator()(const int64_t &value) const {
- return @(value);
- }
-
- id operator()(const double &value) const {
- return @(value);
- }
-
- id operator()(const std::string &value) const {
- return @(value.c_str());
- }
-
- id operator()(const std::vector<mbgl::Value> &values) const {
- NSMutableArray *objects = [NSMutableArray arrayWithCapacity:values.size()];
- for (const auto &v : values) {
- [objects addObject:mbgl::Value::visit(v, *this)];
- }
- return objects;
- }
-
- id operator()(const std::unordered_map<std::string, mbgl::Value> &items) const {
- NSMutableDictionary *attributes = [NSMutableDictionary dictionaryWithCapacity:items.size()];
- for (auto &item : items) {
- attributes[@(item.first.c_str())] = mbgl::Value::visit(item.second, *this);
- }
- return attributes;
- }
-};
diff --git a/platform/darwin/src/MGLVectorStyleLayer.h b/platform/darwin/src/MGLVectorStyleLayer.h
deleted file mode 100644
index d9431215a1..0000000000
--- a/platform/darwin/src/MGLVectorStyleLayer.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#import "MGLForegroundStyleLayer.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- `MGLVectorStyleLayer` is an abstract superclass for style layers whose content
- is defined by an `MGLShapeSource` or `MGLVectorTileSource` object.
-
- Create instances of `MGLCircleStyleLayer`, `MGLFillStyleLayer`,
- `MGLFillExtrusionStyleLayer`, `MGLHeatmapStyleLayer`, `MGLLineStyleLayer`, and
- `MGLSymbolStyleLayer` in order to use `MGLVectorStyleLayer`'s properties and
- methods. Do not create instances of `MGLVectorStyleLayer` directly, and do not
- create your own subclasses of this class.
- */
-MGL_EXPORT
-@interface MGLVectorStyleLayer : MGLForegroundStyleLayer
-
-#pragma mark Refining a Style Layer’s Content
-
-/**
- Identifier of the layer within the source identified by the `sourceIdentifier`
- property from which the receiver obtains the data to style.
- */
-@property (nonatomic, nullable) NSString *sourceLayerIdentifier;
-
-/**
- The style layer’s predicate.
-
- Use the style layer’s predicate to include only the features in the source
- layer that satisfy a condition that you define. If the style layer initially
- comes from the style, its predicate corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layer-filter">`filter`</a>
- property in the style JSON.
-
- See the “<a href="../predicates-and-expressions.html">Predicates and Expressions</a>”
- guide for details about the predicate syntax supported by this class.
-
- ### Example
-
- To filter the layer to include only the features whose `index` attribute is 5
- or 10 and whose `ele` attribute is at least 1,500, you could create an
- `NSCompoundPredicate` along these lines:
-
- ```swift
- let layer = MGLLineStyleLayer(identifier: "contour", source: terrain)
- layer.sourceLayerIdentifier = "contours"
- layer.predicate = NSPredicate(format: "(index == 5 || index == 10) && CAST(ele, 'NSNumber') >= 1500.0")
- mapView.style?.addLayer(layer)
- ```
- */
-@property (nonatomic, nullable) NSPredicate *predicate;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLVectorStyleLayer.mm b/platform/darwin/src/MGLVectorStyleLayer.mm
deleted file mode 100644
index 691668629a..0000000000
--- a/platform/darwin/src/MGLVectorStyleLayer.mm
+++ /dev/null
@@ -1,34 +0,0 @@
-#import "MGLVectorStyleLayer.h"
-#import "MGLStyleLayer_Private.h"
-
-@implementation MGLVectorStyleLayer
-
-- (void)setPredicate:(NSPredicate *)predicate {
- [NSException raise:MGLAbstractClassException
- format:@"MGLVectorStyleLayer is an abstract class"];
-}
-
-- (NSPredicate *)predicate {
- [NSException raise:MGLAbstractClassException
- format:@"MGLVectorStyleLayer is an abstract class"];
- return nil;
-}
-
-- (NSString *)description {
- if (self.rawLayer) {
- return [NSString stringWithFormat:
- @"<%@: %p; identifier = %@; sourceIdentifier = %@; "
- @"sourceLayerIdentifier = %@; predicate = %@; visible = %@>",
- NSStringFromClass([self class]), (void *)self, self.identifier,
- self.sourceIdentifier, self.sourceLayerIdentifier, self.predicate,
- self.visible ? @"YES" : @"NO"];
- }
- else {
- return [NSString stringWithFormat:
- @"<%@: %p; identifier = %@; sourceIdentifier = <unknown>; "
- @"sourceLayerIdentifier = <unknown>; predicate = <unknown>; visible = <unknown>>",
- NSStringFromClass([self class]), (void *)self, self.identifier];
- }
-}
-
-@end
diff --git a/platform/darwin/src/MGLVectorTileSource.h b/platform/darwin/src/MGLVectorTileSource.h
deleted file mode 100644
index f198d7ad2c..0000000000
--- a/platform/darwin/src/MGLVectorTileSource.h
+++ /dev/null
@@ -1,150 +0,0 @@
-#import "MGLFeature.h"
-#import "MGLFoundation.h"
-#import "MGLTileSource.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- `MGLVectorTileSource` is a map content source that supplies tiled vector data
- in <a href="https://www.mapbox.com/vector-tiles/">Mapbox Vector Tile</a> format
- to be shown on the map. The location of and metadata about the tiles are
- defined either by an option dictionary or by an external file that conforms to
- the
- <a href="https://github.com/mapbox/tilejson-spec/">TileJSON specification</a>.
- A vector tile source is added to an `MGLStyle` object along with one or more
- `MGLVectorStyleLayer` objects. A vector style layer defines the appearance of
- any content supplied by the vector tile source.
-
- `MGLVectorTileSource` is optimized for data sets that are too large to fit
- completely in memory, such as vector tile sets or data sets managed in
- <a href="https://www.mapbox.com/studio/">Mapbox Studio</a>. For
- <a href="http://geojson.org/">GeoJSON</a> data, use the `MGLShapeSource`
- class. For tiled data that changes dynamically, the `MGLComputedShapeSource`
- class may be a suitable alternative.
-
- Each
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-vector"><code>vector</code></a>
- source defined by the style JSON file is represented at runtime by an
- `MGLVectorTileSource` object that you can use to initialize new style layers.
- You can also add and remove sources dynamically using methods such as
- `-[MGLStyle addSource:]` and `-[MGLStyle sourceWithIdentifier:]`.
-
- Within each vector tile, each geometric coordinate must lie between
- −1&nbsp;×&nbsp;<var>extent</var> and
- (<var>extent</var>&nbsp;×&nbsp;2)&nbsp;−&nbsp;1, inclusive. Any vector style
- layer initialized with a vector tile source must have a non-`nil` value in its
- `sourceLayerIdentifier` property.
-
- Commonly used vector tile sources include
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets</a>,
- <a href="https://www.mapbox.com/vector-tiles/mapbox-terrain/">Mapbox Terrain</a>,
- and
- <a href="https://www.mapbox.com/vector-tiles/mapbox-traffic-v1/">Mapbox Traffic</a>.
-
- ### Example
-
- ```swift
- let source = MGLVectorTileSource(identifier: "pois", tileURLTemplates: ["https://example.com/vector-tiles/{z}/{x}/{y}.mvt"], options: [
- .minimumZoomLevel: 9,
- .maximumZoomLevel: 16,
- .attributionInfos: [
- MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "https://mapbox.com"))
- ]
- ])
- mapView.style?.addSource(source)
- ```
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/dds-circle-layer/">
- Data-driven circles</a> example to learn how to add data to your map using
- an `MGLVectorTileSource` object.
- */
-MGL_EXPORT
-@interface MGLVectorTileSource : MGLTileSource
-
-#pragma mark Initializing a Source
-
-/**
- Returns a vector tile source initialized with an identifier and configuration
- URL.
-
- After initializing and configuring the source, add it to a map view’s style
- using the `-[MGLStyle addSource:]` method.
-
- The URL may be a full HTTP or HTTPS URL or, for tilesets hosted by Mapbox, a
- Mapbox URL indicating a tileset ID (`mapbox://<tilesetid>`). The URL should
- point to a JSON file that conforms to the
- <a href="https://github.com/mapbox/tilejson-spec/">TileJSON specification</a>.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param configurationURL A URL to a TileJSON configuration file describing the
- source’s contents and other metadata.
- @return An initialized vector tile source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL NS_DESIGNATED_INITIALIZER;
-
-/**
- Returns a vector tile source initialized an identifier, tile URL templates, and
- options.
-
- Tile URL templates are strings that specify the URLs of the vector tiles to
- load. See the “<a href="../tile-url-templates.html">Tile URL Templates</a>”
- guide for information about the format of a tile URL template.
-
- After initializing and configuring the source, add it to a map view’s style
- using the `-[MGLStyle addSource:]` method.
-
- @param identifier A string that uniquely identifies the source in the style to
- which it is added.
- @param tileURLTemplates An array of tile URL template strings. Only the first
- string is used; any additional strings are ignored.
- @param options A dictionary containing configuration options. See
- `MGLTileSourceOption` for available keys and values. Pass in `nil` to use
- the default values.
- @return An initialized tile source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NSArray<NSString *> *)tileURLTemplates options:(nullable NSDictionary<MGLTileSourceOption, id> *)options NS_DESIGNATED_INITIALIZER;
-
-#pragma mark Accessing a Source’s Content
-
-/**
- Returns an array of map features loaded by this source, restricted to the given
- source layers and filtered by the given predicate.
-
- Each object in the returned array represents a feature loaded by the source and
- provides access to attributes specified as part of the loaded feature. The
- source loads a feature if the source is added to an `MGLMapView`’s style; that
- style has a layer that uses the source; and the map view has recently scrolled
- to the region containing the feature.
-
- Features come from tiled vector data that is converted to tiles internally, so
- feature geometries are clipped at tile boundaries and features may appear
- duplicated across tiles. For example, suppose part of a lengthy polyline
- representing a road has recently scrolled into view. The resulting array
- includes those parts of the road that lie within the map tiles that the source
- has loaded, even if the road extends into other tiles. The portion of the road
- within each map tile is included individually.
-
- Returned features may not necessarily be visible to the user at the time they
- are loaded: the style may contain a layer that forces the source’s tiles to
- load but filters out the features in question, preventing them from being
- drawn. To obtain only _visible_ features, use the
- `-[MGLMapView visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:predicate:]`
- or
- `-[MGLMapView visibleFeaturesInRect:inStyleLayersWithIdentifiers:predicate:]`
- method.
-
- @param sourceLayerIdentifiers The source layers to include in the query. Only
- the features contained in these source layers are included in the returned
- array. This array may not be empty.
- @param predicate A predicate to filter the returned features. Use `nil` to
- include all loaded features.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features loaded by the source that match the predicate.
- */
-- (NSArray<id <MGLFeature>> *)featuresInSourceLayersWithIdentifiers:(NSSet<NSString *> *)sourceLayerIdentifiers predicate:(nullable NSPredicate *)predicate NS_SWIFT_NAME(features(sourceLayerIdentifiers:predicate:));
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLVectorTileSource.mm b/platform/darwin/src/MGLVectorTileSource.mm
deleted file mode 100644
index 9ab11e2e56..0000000000
--- a/platform/darwin/src/MGLVectorTileSource.mm
+++ /dev/null
@@ -1,154 +0,0 @@
-#import "MGLVectorTileSource_Private.h"
-
-#import "MGLFeature_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLSource_Private.h"
-#import "MGLTileSource_Private.h"
-#import "MGLStyle_Private.h"
-#import "MGLMapView_Private.h"
-
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSURL+MGLAdditions.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/style/sources/vector_source.hpp>
-#include <mbgl/renderer/renderer.hpp>
-
-@interface MGLVectorTileSource ()
-
-@property (nonatomic, readonly) mbgl::style::VectorSource *rawSource;
-
-@end
-
-@implementation MGLVectorTileSource
-
-- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL {
- auto source = std::make_unique<mbgl::style::VectorSource>(identifier.UTF8String,
- configurationURL.mgl_URLByStandardizingScheme.absoluteString.UTF8String);
- return self = [super initWithPendingSource:std::move(source)];
-}
-
-- (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NSArray<NSString *> *)tileURLTemplates options:(nullable NSDictionary<MGLTileSourceOption, id> *)options {
- mbgl::Tileset tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, options);
- auto source = std::make_unique<mbgl::style::VectorSource>(identifier.UTF8String, tileSet);
- return self = [super initWithPendingSource:std::move(source)];
-}
-
-- (mbgl::style::VectorSource *)rawSource {
- return (mbgl::style::VectorSource *)super.rawSource;
-}
-
-- (NSURL *)configurationURL {
- MGLAssertStyleSourceIsValid();
- auto url = self.rawSource->getURL();
- return url ? [NSURL URLWithString:@(url->c_str())] : nil;
-}
-
-- (NSString *)attributionHTMLString {
- if (!self.rawSource) {
- MGLAssert(0, @"Source with identifier `%@` was invalidated after a style change", self.identifier);
- return nil;
- }
-
- auto attribution = self.rawSource->getAttribution();
- return attribution ? @(attribution->c_str()) : nil;
-}
-
-- (NSArray<id <MGLFeature>> *)featuresInSourceLayersWithIdentifiers:(NSSet<NSString *> *)sourceLayerIdentifiers predicate:(nullable NSPredicate *)predicate {
- MGLAssertStyleSourceIsValid();
- mbgl::optional<std::vector<std::string>> optionalSourceLayerIDs;
- if (sourceLayerIdentifiers) {
- __block std::vector<std::string> layerIDs;
- layerIDs.reserve(sourceLayerIdentifiers.count);
- [sourceLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop) {
- layerIDs.push_back(identifier.UTF8String);
- }];
- optionalSourceLayerIDs = layerIDs;
- }
-
- mbgl::optional<mbgl::style::Filter> optionalFilter;
- if (predicate) {
- optionalFilter = predicate.mgl_filter;
- }
-
- std::vector<mbgl::Feature> features;
- if (self.mapView) {
- features = self.mapView.renderer->querySourceFeatures(self.rawSource->getID(), { optionalSourceLayerIDs, optionalFilter });
- }
- return MGLFeaturesFromMBGLFeatures(features);
-}
-
-@end
-
-@implementation MGLVectorTileSource (Private)
-
-/**
- An array of locale codes with dedicated name fields in the Mapbox Streets
- source.
-
- https://www.mapbox.com/vector-tiles/mapbox-streets-v8/
- */
-static NSArray * const MGLMapboxStreetsLanguages = @[
- @"ar", @"de", @"en", @"es", @"fr", @"ja", @"ko", @"pt", @"ru", @"zh",
- @"zh-Hans",
-];
-
-/**
- Like `MGLMapboxStreetsLanguages`, but deanglicized for use with
- `+[NSBundle preferredLocalizationsFromArray:forPreferences:]`.
- */
-static NSArray * const MGLMapboxStreetsAlternativeLanguages = @[
- @"mul", @"ar", @"de", @"es", @"fr", @"ja", @"ko", @"pt", @"ru", @"zh",
- @"zh-Hans",
-];
-
-+ (NSSet<NSString *> *)mapboxStreetsLanguages {
- static dispatch_once_t onceToken;
- static NSSet<NSString *> *mapboxStreetsLanguages;
- dispatch_once(&onceToken, ^{
- mapboxStreetsLanguages = [NSSet setWithArray:MGLMapboxStreetsLanguages];
- });
- return mapboxStreetsLanguages;
-}
-
-+ (NSString *)preferredMapboxStreetsLanguage {
- return [self preferredMapboxStreetsLanguageForPreferences:[NSLocale preferredLanguages]];
-}
-
-+ (NSString *)preferredMapboxStreetsLanguageForPreferences:(NSArray<NSString *> *)preferencesArray {
- BOOL acceptsEnglish = [preferencesArray filteredArrayUsingPredicate:
- [NSPredicate predicateWithBlock:^BOOL(NSString * _Nullable language, NSDictionary<NSString *,id> * _Nullable bindings) {
- NSString *languageCode;
-
- if (@available(iOS 10.0, macOS 10.12.0, *)) {
- languageCode = [NSLocale localeWithLocaleIdentifier:language].languageCode;
- }
- else {
- languageCode = [[NSLocale localeWithLocaleIdentifier:language] objectForKey:NSLocaleLanguageCode];
- }
-
- return [languageCode isEqualToString:@"en"];
- }]].count;
-
- NSArray<NSString *> *availableLanguages = acceptsEnglish ? MGLMapboxStreetsLanguages : MGLMapboxStreetsAlternativeLanguages;
- NSArray<NSString *> *preferredLanguages = [NSBundle preferredLocalizationsFromArray:availableLanguages
- forPreferences:preferencesArray];
- NSString *mostSpecificLanguage;
- for (NSString *language in preferredLanguages) {
- if (language.length > mostSpecificLanguage.length) {
- mostSpecificLanguage = language;
- }
- }
- return [mostSpecificLanguage isEqualToString:@"mul"] ? nil : mostSpecificLanguage;
-}
-
-- (BOOL)isMapboxStreets {
- NSURL *url = self.configurationURL;
- if (![url.scheme isEqualToString:@"mapbox"]) {
- return NO;
- }
- NSArray *identifiers = [url.host componentsSeparatedByString:@","];
- return [identifiers containsObject:@"mapbox.mapbox-streets-v8"] || [identifiers containsObject:@"mapbox.mapbox-streets-v7"];
-}
-
-@end
diff --git a/platform/darwin/src/MGLVectorTileSource_Private.h b/platform/darwin/src/MGLVectorTileSource_Private.h
deleted file mode 100644
index 8d287ae4c4..0000000000
--- a/platform/darwin/src/MGLVectorTileSource_Private.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#import "MGLVectorTileSource.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLVectorTileSource (Private)
-
-@property (nonatomic, readonly, getter=isMapboxStreets) BOOL mapboxStreets;
-
-+ (NSSet<NSString *> *)mapboxStreetsLanguages;
-
-+ (nullable NSString *)preferredMapboxStreetsLanguage;
-+ (nullable NSString *)preferredMapboxStreetsLanguageForPreferences:(NSArray<NSString *> *)preferencesArray;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSArray+MGLAdditions.h b/platform/darwin/src/NSArray+MGLAdditions.h
deleted file mode 100644
index c4dfd8207b..0000000000
--- a/platform/darwin/src/NSArray+MGLAdditions.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import <mbgl/util/feature.hpp>
-
-@interface NSArray (MGLAdditions)
-
-- (std::vector<mbgl::Value>)mgl_vector;
-
-/** Returns a string resulting from inserting a separator between each attributed string in the array */
-- (NSAttributedString *)mgl_attributedComponentsJoinedByString:(NSString *)separator;
-
-/**
- Converts std::vector<CLLocationCoordinate> into an NSArray containing dictionary
- representations of coordinates with the following structure:
- [{"latitude": lat, "longitude": lng}]
- */
-+ (NSArray *)mgl_coordinatesFromCoordinates:(std::vector<CLLocationCoordinate2D>)coords;
-
-/**
- Converts the receiver into a std::vector<CLLocationCoordinate>.
- Receiver must conform to the following structure:
- [{"latitude": lat, "longitude": lng}]
- */
-- (std::vector<CLLocationCoordinate2D>)mgl_coordinates;
-
-@end
diff --git a/platform/darwin/src/NSArray+MGLAdditions.mm b/platform/darwin/src/NSArray+MGLAdditions.mm
deleted file mode 100644
index c5f25c83b6..0000000000
--- a/platform/darwin/src/NSArray+MGLAdditions.mm
+++ /dev/null
@@ -1,66 +0,0 @@
-#import "NSArray+MGLAdditions.h"
-
-#import "NSDictionary+MGLAdditions.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-@implementation NSArray (MGLAdditions)
-
-- (std::vector<mbgl::Value>)mgl_vector {
- std::vector<mbgl::Value> vector;
- vector.reserve(self.count);
- for (id value in self) {
- if ([value isKindOfClass:[NSArray class]]) {
- std::vector<mbgl::Value> innerVector = [value mgl_vector];
- vector.push_back(innerVector);
- } else if ([value isKindOfClass:[NSDictionary class]]) {
- mbgl::PropertyMap propertyMap = [value mgl_propertyMap];
- vector.push_back(propertyMap);
- } else {
- NSExpression *expression = [NSExpression expressionForConstantValue:value];
- vector.push_back(expression.mgl_constantMBGLValue);
- }
- }
- return vector;
-}
-
-- (NSAttributedString *)mgl_attributedComponentsJoinedByString:(NSString *)separator {
- NSAttributedString *attributedSeparator = [[NSAttributedString alloc] initWithString:separator];
- NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init];
- BOOL isSubsequentItem = NO;
- for (NSAttributedString *component in self) {
- MGLAssert([component isKindOfClass:[NSAttributedString class]], @"Items in array must be attributed strings.");
- if (isSubsequentItem) {
- [attributedString appendAttributedString:attributedSeparator];
- }
- isSubsequentItem = YES;
- [attributedString appendAttributedString:component];
- }
- return attributedString;
-}
-
-+ (NSArray *)mgl_coordinatesFromCoordinates:(std::vector<CLLocationCoordinate2D>)coords {
- NSMutableArray *coordinates = [NSMutableArray array];
- for (auto coord : coords) {
- [coordinates addObject:@{@"latitude": @(coord.latitude),
- @"longitude": @(coord.longitude)}];
- }
- return coordinates;
-}
-
-- (std::vector<CLLocationCoordinate2D>)mgl_coordinates {
- NSUInteger numberOfCoordinates = [self count];
- CLLocationCoordinate2D *coords = (CLLocationCoordinate2D *)malloc(numberOfCoordinates * sizeof(CLLocationCoordinate2D));
-
- for (NSUInteger i = 0; i < numberOfCoordinates; i++) {
- coords[i] = CLLocationCoordinate2DMake([self[i][@"latitude"] doubleValue],
- [self[i][@"longitude"] doubleValue]);
- }
-
- std::vector<CLLocationCoordinate2D> coordinates = { coords, coords + numberOfCoordinates };
- free(coords);
-
- return coordinates;
-}
-
-@end
diff --git a/platform/darwin/src/NSBundle+MGLAdditions.h b/platform/darwin/src/NSBundle+MGLAdditions.h
deleted file mode 100644
index dcafefedec..0000000000
--- a/platform/darwin/src/NSBundle+MGLAdditions.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-// Strings in the SDK targets must be retrieved from the framework bundle rather
-// than the main bundle, which is usually the application bundle. Redefining
-// these macros ensures that the framework bundle’s string tables are used at
-// runtime yet tools like genstrings and Xcode can still find the localizable
-// string identifiers. (genstrings has an -s option that would allow us to
-// define our own macros, but Xcode’s Export Localization feature lacks support
-// for it.)
-//
-// As a consequence of this approach, this header must be included in all SDK
-// files that include localizable strings.
-
-#undef NSLocalizedString
-#define NSLocalizedString(key, comment) \
- [[NSBundle mgl_frameworkBundle] localizedStringForKey:(key) value:@"" table:nil]
-
-#undef NSLocalizedStringFromTable
-#define NSLocalizedStringFromTable(key, tbl, comment) \
- [[NSBundle mgl_frameworkBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
-
-#undef NSLocalizedStringWithDefaultValue
-#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
- [[NSBundle mgl_frameworkBundle] localizedStringForKey:(key) value:(val) table:(tbl)]
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLBundleNotFoundException;
-
-@interface NSBundle (MGLAdditions)
-
-/// Returns the bundle containing the SDK’s classes and Info.plist file.
-+ (instancetype)mgl_frameworkBundle;
-
-+ (nullable NSString *)mgl_frameworkBundleIdentifier;
-
-+ (nullable NSDictionary<NSString *, id> *)mgl_frameworkInfoDictionary;
-
-+ (nullable NSString *)mgl_applicationBundleIdentifier;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSBundle+MGLAdditions.m b/platform/darwin/src/NSBundle+MGLAdditions.m
deleted file mode 100644
index da70a95373..0000000000
--- a/platform/darwin/src/NSBundle+MGLAdditions.m
+++ /dev/null
@@ -1,50 +0,0 @@
-#import "NSBundle+MGLAdditions.h"
-
-#import "MGLAccountManager.h"
-
-const MGLExceptionName MGLBundleNotFoundException = @"MGLBundleNotFoundException";
-
-@implementation NSBundle (MGLAdditions)
-
-+ (instancetype)mgl_frameworkBundle {
- NSBundle *bundle = [self bundleForClass:[MGLAccountManager class]];
-
- if (![bundle.infoDictionary[@"CFBundlePackageType"] isEqualToString:@"FMWK"]) {
- // For static frameworks, the bundle is the containing application
- // bundle but the resources are in Mapbox.bundle.
- NSString *bundlePath = [bundle pathForResource:@"Mapbox" ofType:@"bundle"];
- if (bundlePath) {
- bundle = [self bundleWithPath:bundlePath];
- } else {
- [NSException raise:MGLBundleNotFoundException
- format:@"The Mapbox framework bundle could not be found. If using the Mapbox Maps SDK for iOS as a static framework, make sure that Mapbox.bundle is copied into the root of the app bundle."];
- }
- }
-
- return bundle;
-}
-
-+ (nullable NSString *)mgl_frameworkBundleIdentifier {
- return self.mgl_frameworkInfoDictionary[@"CFBundleIdentifier"];
-}
-
-+ (nullable NSDictionary<NSString *, id> *)mgl_frameworkInfoDictionary {
- NSBundle *bundle = self.mgl_frameworkBundle;
- return bundle.infoDictionary;
-}
-
-+ (nullable NSString *)mgl_applicationBundleIdentifier {
- NSString *bundleIdentifier = [NSBundle mainBundle].bundleIdentifier;
-
-#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED < 120200)) || \
- (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && (__MAC_OS_X_VERSION_MAX_ALLOWED < 101404))
- // Before SDK 12.2 (bundled with Xcode 10.2): There’s no main bundle identifier when running in a unit test bundle.
- // 12.2 and after: the above bundle identifier is: com.apple.dt.xctest.tool
- if (!bundleIdentifier) {
- bundleIdentifier = [NSBundle bundleForClass:[MGLAccountManager class]].bundleIdentifier;
- }
-#endif
- return bundleIdentifier;
-}
-
-@end
diff --git a/platform/darwin/src/NSCoder+MGLAdditions.h b/platform/darwin/src/NSCoder+MGLAdditions.h
deleted file mode 100644
index 036a99c5af..0000000000
--- a/platform/darwin/src/NSCoder+MGLAdditions.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import <mbgl/util/feature.hpp>
-
-@interface NSCoder (MGLAdditions)
-
-- (void)encodeMGLCoordinate:(CLLocationCoordinate2D)coordinate forKey:(NSString *)key;
-
-- (CLLocationCoordinate2D)decodeMGLCoordinateForKey:(NSString *)key;
-
-- (void)mgl_encodeLocationCoordinates2D:(std::vector<CLLocationCoordinate2D>)coordinates forKey:(NSString *)key;
-
-- (std::vector<CLLocationCoordinate2D>)mgl_decodeLocationCoordinates2DForKey:(NSString *)key;
-
-@end
diff --git a/platform/darwin/src/NSCoder+MGLAdditions.mm b/platform/darwin/src/NSCoder+MGLAdditions.mm
deleted file mode 100644
index 4af6c7588b..0000000000
--- a/platform/darwin/src/NSCoder+MGLAdditions.mm
+++ /dev/null
@@ -1,26 +0,0 @@
-#import "NSCoder+MGLAdditions.h"
-
-#import "NSArray+MGLAdditions.h"
-#import "NSValue+MGLAdditions.h"
-
-@implementation NSCoder (MGLAdditions)
-
-- (void)mgl_encodeLocationCoordinates2D:(std::vector<CLLocationCoordinate2D>)coordinates forKey:(NSString *)key {
- [self encodeObject:[NSArray mgl_coordinatesFromCoordinates:coordinates] forKey:key];
-}
-
-- (std::vector<CLLocationCoordinate2D>)mgl_decodeLocationCoordinates2DForKey:(NSString *)key {
- NSArray *coordinates = [self decodeObjectOfClass:[NSArray class] forKey:key];
- return [coordinates mgl_coordinates];
-}
-
-- (void)encodeMGLCoordinate:(CLLocationCoordinate2D)coordinate forKey:(NSString *)key {
- [self encodeObject:@{@"latitude": @(coordinate.latitude), @"longitude": @(coordinate.longitude)} forKey:key];
-}
-
-- (CLLocationCoordinate2D)decodeMGLCoordinateForKey:(NSString *)key {
- NSDictionary *coordinate = [self decodeObjectForKey:key];
- return CLLocationCoordinate2DMake([coordinate[@"latitude"] doubleValue], [coordinate[@"longitude"] doubleValue]);
-}
-
-@end
diff --git a/platform/darwin/src/NSComparisonPredicate+MGLAdditions.h b/platform/darwin/src/NSComparisonPredicate+MGLAdditions.h
deleted file mode 100644
index 2cd4dd1577..0000000000
--- a/platform/darwin/src/NSComparisonPredicate+MGLAdditions.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#include <mbgl/style/filter.hpp>
-
-@interface NSComparisonPredicate (MGLAdditions)
-
-@end
diff --git a/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm b/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
deleted file mode 100644
index af9216f9ce..0000000000
--- a/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
+++ /dev/null
@@ -1,157 +0,0 @@
-#import "NSComparisonPredicate+MGLAdditions.h"
-
-#import "MGLStyleValue_Private.h"
-
-#import "NSPredicate+MGLAdditions.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-
-@implementation NSComparisonPredicate (MGLAdditions)
-
-- (NSString *)mgl_keyPath {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- return leftExpression.keyPath;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- return rightExpression.keyPath;
- }
-
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- return nil;
-}
-
-- (mbgl::Value)mgl_constantValue {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- mbgl::Value value;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- value = rightExpression.mgl_constantMBGLValue;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- value = leftExpression.mgl_constantMBGLValue;
- } else {
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- }
- return value;
-}
-
-- (mbgl::FeatureType)mgl_featureType {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- mbgl::FeatureType type;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- type = rightExpression.mgl_featureType;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- type = leftExpression.mgl_featureType;
- } else {
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- }
- return type;
-}
-
-- (mbgl::FeatureIdentifier)mgl_featureIdentifier {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- mbgl::FeatureIdentifier identifier;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- identifier = rightExpression.mgl_featureIdentifier;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- identifier = leftExpression.mgl_featureIdentifier;
- } else {
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- }
- return identifier;
-}
-
-@end
-
-@implementation NSComparisonPredicate (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- NSString *op;
- switch (self.predicateOperatorType) {
- case NSLessThanPredicateOperatorType:
- op = @"<";
- break;
- case NSLessThanOrEqualToPredicateOperatorType:
- op = @"<=";
- break;
- case NSGreaterThanPredicateOperatorType:
- op = @">";
- break;
- case NSGreaterThanOrEqualToPredicateOperatorType:
- op = @">=";
- break;
- case NSEqualToPredicateOperatorType:
- op = @"==";
- break;
- case NSNotEqualToPredicateOperatorType:
- op = @"!=";
- break;
- case NSBetweenPredicateOperatorType: {
- op = @"all";
- NSArray *limits = self.rightExpression.constantValue;
- NSPredicate *leftHandPredicate = [NSComparisonPredicate predicateWithLeftExpression:limits[0]
- rightExpression:self.leftExpression
- modifier:NSDirectPredicateModifier
- type:NSLessThanOrEqualToPredicateOperatorType
- options:0];
- NSPredicate *rightHandPredicate = [NSComparisonPredicate predicateWithLeftExpression:self.leftExpression
- rightExpression:limits[1]
- modifier:NSDirectPredicateModifier
- type:NSLessThanOrEqualToPredicateOperatorType
- options:0];
- return @[op, leftHandPredicate.mgl_jsonExpressionObject, rightHandPredicate.mgl_jsonExpressionObject];
- }
- case NSInPredicateOperatorType: {
-
- NSExpression *matchExpression = [NSExpression expressionForFunction:@"MGL_MATCH"
- arguments:@[self.leftExpression,
- self.rightExpression,
- [NSExpression expressionForConstantValue:@YES],
- [NSExpression expressionForConstantValue:@NO]]];
-
- return matchExpression.mgl_jsonExpressionObject;
- }
- case NSContainsPredicateOperatorType: {
- NSPredicate *inPredicate = [NSComparisonPredicate predicateWithLeftExpression:self.rightExpression
- rightExpression:self.leftExpression
- modifier:self.comparisonPredicateModifier
- type:NSInPredicateOperatorType
- options:self.options];
- return inPredicate.mgl_jsonExpressionObject;
- }
- case NSMatchesPredicateOperatorType:
- case NSLikePredicateOperatorType:
- case NSBeginsWithPredicateOperatorType:
- case NSEndsWithPredicateOperatorType:
- case NSCustomSelectorPredicateOperatorType:
- [NSException raise:NSInvalidArgumentException
- format:@"NSPredicateOperatorType:%lu is not supported.", (unsigned long)self.predicateOperatorType];
- }
- if (!op) {
- return nil;
- }
- NSArray *comparisonArray = @[op, self.leftExpression.mgl_jsonExpressionObject, self.rightExpression.mgl_jsonExpressionObject];
- if (self.options) {
- NSDictionary *collatorObject = @{
- @"case-sensitive": @(!(self.options & NSCaseInsensitivePredicateOption)),
- @"diacritic-sensitive": @(!(self.options & NSDiacriticInsensitivePredicateOption)),
- };
- return [comparisonArray arrayByAddingObject:@[@"collator", collatorObject]];
- }
- return comparisonArray;
-}
-
-@end
diff --git a/platform/darwin/src/NSCompoundPredicate+MGLAdditions.h b/platform/darwin/src/NSCompoundPredicate+MGLAdditions.h
deleted file mode 100644
index 0f9909255d..0000000000
--- a/platform/darwin/src/NSCompoundPredicate+MGLAdditions.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#include <mbgl/style/filter.hpp>
-
-@interface NSCompoundPredicate (MGLAdditions)
-
-@end
diff --git a/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm b/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
deleted file mode 100644
index 5eb20da846..0000000000
--- a/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
+++ /dev/null
@@ -1,50 +0,0 @@
-#import "NSCompoundPredicate+MGLAdditions.h"
-
-#import "MGLStyleValue_Private.h"
-
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#include <mbgl/style/conversion/property_value.hpp>
-
-@implementation NSCompoundPredicate (MGLAdditions)
-
-- (std::vector<mbgl::style::Filter>)mgl_subfilters
-{
- std::vector<mbgl::style::Filter>filters;
- for (NSPredicate *predicate in self.subpredicates) {
- filters.push_back(predicate.mgl_filter);
- }
- return filters;
-}
-
-@end
-
-@implementation NSCompoundPredicate (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- switch (self.compoundPredicateType) {
- case NSNotPredicateType: {
- MGLAssert(self.subpredicates.count <= 1, @"NOT predicate cannot have multiple subpredicates.");
- NSPredicate *subpredicate = self.subpredicates.firstObject;
- return @[@"!", subpredicate.mgl_jsonExpressionObject];
- }
-
- case NSAndPredicateType: {
- NSArray *subarrays = [self.subpredicates valueForKeyPath:@"mgl_jsonExpressionObject"];
- return [@[@"all"] arrayByAddingObjectsFromArray:subarrays];
- }
-
- case NSOrPredicateType: {
- NSArray *subarrays = [self.subpredicates valueForKeyPath:@"mgl_jsonExpressionObject"];
- return [@[@"any"] arrayByAddingObjectsFromArray:subarrays];
- }
- }
-
- [NSException raise:@"Compound predicate type not handled"
- format:@""];
- return nil;
-}
-
-@end
diff --git a/platform/darwin/src/NSDate+MGLAdditions.h b/platform/darwin/src/NSDate+MGLAdditions.h
deleted file mode 100644
index 1da03fda62..0000000000
--- a/platform/darwin/src/NSDate+MGLAdditions.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-#include <mbgl/util/chrono.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-
-/// Converts from a duration in seconds to a duration object usable in mbgl.
-MGL_EXPORT
-mbgl::Duration MGLDurationFromTimeInterval(NSTimeInterval duration);
-
-/// Converts from an mbgl duration object to a duration in seconds.
-MGL_EXPORT
-NSTimeInterval MGLTimeIntervalFromDuration(mbgl::Duration duration);
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSDate+MGLAdditions.mm b/platform/darwin/src/NSDate+MGLAdditions.mm
deleted file mode 100644
index b45b41f836..0000000000
--- a/platform/darwin/src/NSDate+MGLAdditions.mm
+++ /dev/null
@@ -1,11 +0,0 @@
-#import "NSDate+MGLAdditions.h"
-
-mbgl::Duration MGLDurationFromTimeInterval(NSTimeInterval duration)
-{
- return std::chrono::duration_cast<mbgl::Duration>(std::chrono::duration<NSTimeInterval>(duration));
-}
-
-NSTimeInterval MGLTimeIntervalFromDuration(mbgl::Duration duration)
-{
- return std::chrono::duration<NSTimeInterval, std::ratio<1>>(duration).count();
-}
diff --git a/platform/darwin/src/NSDictionary+MGLAdditions.h b/platform/darwin/src/NSDictionary+MGLAdditions.h
deleted file mode 100644
index 556f21992b..0000000000
--- a/platform/darwin/src/NSDictionary+MGLAdditions.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import <mbgl/util/feature.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface NSDictionary (MGLAdditions)
-
-- (mbgl::PropertyMap)mgl_propertyMap;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSDictionary+MGLAdditions.mm b/platform/darwin/src/NSDictionary+MGLAdditions.mm
deleted file mode 100644
index 4bc7ddb3cf..0000000000
--- a/platform/darwin/src/NSDictionary+MGLAdditions.mm
+++ /dev/null
@@ -1,24 +0,0 @@
-#import "NSDictionary+MGLAdditions.h"
-
-#import "NSExpression+MGLPrivateAdditions.h"
-#import "NSArray+MGLAdditions.h"
-
-@implementation NSDictionary (MGLAdditions)
-
-- (mbgl::PropertyMap)mgl_propertyMap {
- mbgl::PropertyMap propertyMap;
- for (NSString *key in self.allKeys) {
- if ([self[key] isKindOfClass:[NSDictionary class]]) {
- propertyMap[[key UTF8String]] = [self[key] mgl_propertyMap];
- } else if ([self[key] isKindOfClass:[NSArray class]]) {
- NSArray *array = self[key];
- propertyMap[[key UTF8String]] = [array mgl_vector];
- } else {
- NSExpression *expression = [NSExpression expressionForConstantValue:self[key]];
- propertyMap[[key UTF8String]] = expression.mgl_constantMBGLValue;
- }
- }
- return propertyMap;
-}
-
-@end
diff --git a/platform/darwin/src/NSException+MGLAdditions.h b/platform/darwin/src/NSException+MGLAdditions.h
deleted file mode 100644
index 274ca50a89..0000000000
--- a/platform/darwin/src/NSException+MGLAdditions.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#import <Foundation/Foundation.h>
-#import "MGLLoggingConfiguration_Private.h"
-
-#define MGLAssertIsMainThread() MGLAssert([[NSThread currentThread] isMainThread], @"%s must be accessed on the main thread, not %@", __PRETTY_FUNCTION__, [NSThread currentThread])
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.h b/platform/darwin/src/NSExpression+MGLAdditions.h
deleted file mode 100644
index 2109310e69..0000000000
--- a/platform/darwin/src/NSExpression+MGLAdditions.h
+++ /dev/null
@@ -1,237 +0,0 @@
-#import <Foundation/Foundation.h>
-#if TARGET_OS_IPHONE
- #import <UIKit/UIKit.h>
-#else
- #import <Cocoa/Cocoa.h>
-#endif
-
-#import "MGLTypes.h"
-
-@class MGLAttributedExpression;
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString *MGLExpressionInterpolationMode NS_TYPED_ENUM;
-
-/**
- An `NSString` identifying the `linear` interpolation type in an `NSExpression`.
-
- This attribute corresponds to the `linear` value in the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-interpolate"><code>interpolate</code></a>
- expression operator in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLExpressionInterpolationMode MGLExpressionInterpolationModeLinear;
-
-/**
- An `NSString` identifying the `expotential` interpolation type in an `NSExpression`.
-
- This attribute corresponds to the `exponential` value in the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-interpolate"><code>interpolate</code></a>
- expression operator in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLExpressionInterpolationMode MGLExpressionInterpolationModeExponential;
-
-/**
- An `NSString` identifying the `cubic-bezier` interpolation type in an `NSExpression`.
-
- This attribute corresponds to the `cubic-bezier` value in the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-interpolate"><code>interpolate</code></a>
- expression operator in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLExpressionInterpolationMode MGLExpressionInterpolationModeCubicBezier;
-
-/**
- Methods for creating expressions that use Mapbox-specific functionality and for
- converting to and from the JSON format defined in the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions">Mapbox Style Specification</a>.
- */
-@interface NSExpression (MGLAdditions)
-
-#pragma mark Creating Variable Expressions
-
-/**
- `NSExpression` variable that corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-zoom"><code>zoom</code></a>
- expression operator in the Mapbox Style Specification.
- */
-@property (class, nonatomic, readonly) NSExpression *zoomLevelVariableExpression;
-
-/**
- `NSExpression` variable that corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-heatmap-density"><code>heatmap-density</code></a>
- expression operator in the Mapbox Style Specification.
- */
-@property (class, nonatomic, readonly) NSExpression *heatmapDensityVariableExpression;
-
-/**
- `NSExpression` variable that corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-line-progress"><code>line-progress</code></a>
- expression operator in the Mapbox Style Specification.
- */
-@property (class, nonatomic, readonly) NSExpression *lineProgressVariableExpression;
-
-/**
- `NSExpression` variable that corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#eexpressions-geometry-type"><code>geometry-type</code></a>
- expression operator in the Mapbox Style Specification.
- */
-@property (class, nonatomic, readonly) NSExpression *geometryTypeVariableExpression;
-
-/**
- `NSExpression` variable that corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-id"><code>id</code></a>
- expression operator in the Mapbox Style Specification.
- */
-@property (class, nonatomic, readonly) NSExpression *featureIdentifierVariableExpression;
-
-/**
- `NSExpression` variable that corresponds to the
- <a href="https://docs.mapbox.com/mapbox-gl-js/style-spec/#accumulated"><code>id</code></a>
- expression operator in the Mapbox Style Specification.
- */
-@property (class, nonatomic, readonly) NSExpression *featureAccumulatedVariableExpression;
-
-/**
- `NSExpression` variable that corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-properties"><code>properties</code></a>
- expression operator in the Mapbox Style Specification.
- */
-@property (class, nonatomic, readonly) NSExpression *featureAttributesVariableExpression;
-
-@property (class, nonatomic, readonly) NSExpression *featurePropertiesVariableExpression __attribute__((deprecated("", "featureAttributesVariableExpression")));
-
-#pragma mark Creating Conditional Expressions
-
-/**
- Returns a conditional function expression specifying the string predicate, and
- expressions for each condition.
-
- @param conditionPredicate The predicate to get evaluated.
- @param trueExpression The expression for conditions equal to true.
- @param falseExpression The expression for conditions equal to false.
- */
-+ (instancetype)mgl_expressionForConditional:(nonnull NSPredicate *)conditionPredicate trueExpression:(nonnull NSExpression *)trueExpression falseExpresssion:(nonnull NSExpression *)falseExpression NS_SWIFT_NAME(init(forMGLConditional:trueExpression:falseExpression:));
-
-#pragma mark Creating Ramp, Scale, and Curve Expressions
-
-/**
- Returns a step function expression specifying the stepping, from expression
- and stops.
-
- @param steppingExpression The stepping expression.
- @param minimumExpression The expression which could be a constant or function expression.
- @param stops The stops must be an `NSDictionary` constant `NSExpression`.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/dds-circle-layer/">
- Data-driven circles</a>, <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">
- Cluster point data</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">
- Use images to cluster point data</a> examples to learn how to use this
- expression to style a map layer based on an attribute value.
- */
-+ (instancetype)mgl_expressionForSteppingExpression:(nonnull NSExpression*)steppingExpression fromExpression:(nonnull NSExpression *)minimumExpression stops:(nonnull NSExpression*)stops NS_SWIFT_NAME(init(forMGLStepping:from:stops:));
-
-/**
- Returns an interpolated function expression specifying the function operator, curve type,
- parameters and steps.
-
- @param inputExpression The interpolating expression input.
- @param curveType The curve type could be `MGLExpressionInterpolationModeLinear`,
- `MGLExpressionInterpolationModeExponential` and
- `MGLExpressionInterpolationModeCubicBezier`.
- @param parameters The parameters expression.
- @param stops The stops expression.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/heatmap-example/">
- Create a heatmap layer</a> example to learn how to style an `MGLHeatmapStyleLayer`
- based on zoom level and point density with this expression.
- */
-+ (instancetype)mgl_expressionForInterpolatingExpression:(nonnull NSExpression*)inputExpression withCurveType:(nonnull MGLExpressionInterpolationMode)curveType parameters:(nullable NSExpression *)parameters stops:(nonnull NSExpression*)stops NS_SWIFT_NAME(init(forMGLInterpolating:curveType:parameters:stops:));
-
-/**
- Returns a match function expression specifying the input, matching values,
- and default value.
-
- @param inputExpression The matching expression.
- @param matchedExpressions The matched values expression dictionary must be condition : value.
- @param defaultExpression The defaultValue expression to be used in case there is no match.
- */
-+ (instancetype)mgl_expressionForMatchingExpression:(nonnull NSExpression *)inputExpression inDictionary:(nonnull NSDictionary<NSExpression *, NSExpression *> *)matchedExpressions defaultExpression:(nonnull NSExpression *)defaultExpression NS_SWIFT_NAME(init(forMGLMatchingKey:in:default:));
-
-/**
- Returns an attributed function expression specifying an `MGLAttributedExpression` constant
- expression array.
-
- @param attributedExpressions The `MGLAttributedExpression` constant expression array.
- */
-+ (instancetype)mgl_expressionForAttributedExpressions:(nonnull NSArray<NSExpression *> *)attributedExpressions NS_SWIFT_NAME(init(forAttributedExpressions:));
-
-#pragma mark Concatenating String Expressions
-
-/**
- Returns a constant expression appending the passed expression.
-
- @note Both the receiver and the given expression must be an `NSString` constant
- expression type; otherwise, an exception is rised.
-
- @param expression The expression to append to the receiver.
- */
-- (instancetype)mgl_expressionByAppendingExpression:(nonnull NSExpression *)expression NS_SWIFT_NAME(mgl_appending(_:));
-
-#pragma mark Converting JSON Expressions
-
-/**
- Returns an expression equivalent to the given Foundation object deserialized
- from JSON data.
-
- The Foundation object is interpreted according to the
- [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions).
- See the
- “[Information for Style Authors](../for-style-authors.html#setting-attribute-values)”
- guide for a correspondence of operators and types between the style
- specification and the `NSExpression` representation used by this SDK.
-
- @param object A Foundation object deserialized from JSON data, for example
- using `NSJSONSerialization`.
- @return An initialized expression equivalent to `object`, suitable for use as
- the value of a style layer attribute.
- */
-+ (instancetype)expressionWithMGLJSONObject:(id)object NS_SWIFT_NAME(init(mglJSONObject:));
-
-/**
- An equivalent Foundation object that can be serialized as JSON.
-
- The Foundation object conforms to the
- [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions).
- See the
- “[Information for Style Authors](../for-style-authors.html#setting-attribute-values)”
- guide for a correspondence of operators and types between the style
- specification and the `NSExpression` representation used by this SDK.
-
- You can use `NSJSONSerialization` to serialize the Foundation object as data to
- write to a file.
- */
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-#pragma mark Localizing the Expression
-
-/**
- Returns a copy of the receiver localized into the given locale.
-
- This method assumes the receiver refers to the feature attributes that are
- available in vector tiles supplied by the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets-v8/#overview">Mapbox Streets source</a>.
- On iOS, the user can set the system’s preferred language in Settings, General
- Settings, Language & Region. On macOS, the user can set the system’s preferred
- language in the Language & Region pane of System Preferences.
-
- @param locale The locale into which labels should be localized. To use the
- system’s preferred language, if supported, specify `nil`. To use the local
- language, specify a locale with the identifier `mul`.
- */
-- (NSExpression *)mgl_expressionLocalizedIntoLocale:(nullable NSLocale *)locale;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm
deleted file mode 100644
index 80008aa69b..0000000000
--- a/platform/darwin/src/NSExpression+MGLAdditions.mm
+++ /dev/null
@@ -1,1605 +0,0 @@
-#import "MGLFoundation_Private.h"
-#import "MGLGeometry_Private.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-
-#import "MGLTypes.h"
-#if TARGET_OS_IPHONE
- #import "UIColor+MGLAdditions.h"
-#else
- #import "NSColor+MGLAdditions.h"
-#endif
-#import "NSPredicate+MGLAdditions.h"
-#import "NSValue+MGLStyleAttributeAdditions.h"
-#import "MGLVectorTileSource_Private.h"
-#import "MGLAttributedExpression.h"
-
-#import <objc/runtime.h>
-
-#import <mbgl/style/expression/expression.hpp>
-
-const MGLExpressionInterpolationMode MGLExpressionInterpolationModeLinear = @"linear";
-const MGLExpressionInterpolationMode MGLExpressionInterpolationModeExponential = @"exponential";
-const MGLExpressionInterpolationMode MGLExpressionInterpolationModeCubicBezier = @"cubic-bezier";
-
-@interface MGLAftermarketExpressionInstaller: NSObject
-@end
-
-@implementation MGLAftermarketExpressionInstaller
-
-+ (void)load {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- [self installFunctions];
- });
-}
-
-/**
- Adds to NSExpression’s built-in repertoire of functions.
- */
-+ (void)installFunctions {
- Class MGLAftermarketExpressionInstaller = [self class];
-
- // NSExpression’s built-in functions are backed by class methods on a
- // private class, so use a function expression to get at the class.
- // http://funwithobjc.tumblr.com/post/2922267976/using-custom-functions-with-nsexpression
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"sum({})"];
- NSString *className = NSStringFromClass([functionExpression.operand.constantValue class]);
-
- // Effectively categorize the class with some extra class methods.
- Class NSPredicateUtilities = objc_getMetaClass(className.UTF8String);
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wundeclared-selector"
- #define INSTALL_METHOD(sel) \
- { \
- Method method = class_getInstanceMethod(MGLAftermarketExpressionInstaller, @selector(sel)); \
- class_addMethod(NSPredicateUtilities, @selector(sel), method_getImplementation(method), method_getTypeEncoding(method)); \
- }
- #define INSTALL_CONTROL_STRUCTURE(sel) \
- { \
- Method method = class_getInstanceMethod(MGLAftermarketExpressionInstaller, @selector(sel:)); \
- class_addMethod(NSPredicateUtilities, @selector(sel), method_getImplementation(method), method_getTypeEncoding(method)); \
- class_addMethod(NSPredicateUtilities, @selector(sel:), method_getImplementation(method), method_getTypeEncoding(method)); \
- }
-
- // Install method-like functions, taking the number of arguments implied by
- // the selector name.
- INSTALL_METHOD(mgl_join:);
- INSTALL_METHOD(mgl_round:);
- INSTALL_METHOD(mgl_interpolate:withCurveType:parameters:stops:);
- INSTALL_METHOD(mgl_step:from:stops:);
- INSTALL_METHOD(mgl_coalesce:);
- INSTALL_METHOD(mgl_does:have:);
- INSTALL_METHOD(mgl_acos:);
- INSTALL_METHOD(mgl_cos:);
- INSTALL_METHOD(mgl_asin:);
- INSTALL_METHOD(mgl_sin:);
- INSTALL_METHOD(mgl_atan:);
- INSTALL_METHOD(mgl_tan:);
- INSTALL_METHOD(mgl_log2:);
- INSTALL_METHOD(mgl_attributed:);
-
- // Install functions that resemble control structures, taking arbitrary
- // numbers of arguments. Vararg aftermarket functions need to be declared
- // with an explicit and implicit first argument.
- INSTALL_CONTROL_STRUCTURE(MGL_LET);
- INSTALL_CONTROL_STRUCTURE(MGL_MATCH);
- INSTALL_CONTROL_STRUCTURE(MGL_IF);
- INSTALL_CONTROL_STRUCTURE(MGL_FUNCTION);
-
- #undef INSTALL_AFTERMARKET_FN
-#pragma clang diagnostic pop
-}
-
-/**
- Joins the given components into a single string by concatenating each component
- in order.
- */
-- (NSString *)mgl_join:(NSArray<NSString *> *)components {
- return [components componentsJoinedByString:@""];
-}
-
-- (NSString *)mgl_attributed:(NSArray<MGLAttributedExpression *> *)attributedExpressions {
- [NSException raise:NSInvalidArgumentException
- format:@"Text format expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-/**
- Rounds the given number to the nearest integer. If the number is halfway
- between two integers, this method rounds it away from zero.
- */
-- (NSNumber *)mgl_round:(NSNumber *)number {
- return @(round(number.doubleValue));
-}
-
-/**
- Computes the principal value of the inverse cosine.
- */
-- (NSNumber *)mgl_acos:(NSNumber *)number {
- return @(acos(number.doubleValue));
-}
-
-/**
- Computes the principal value of the cosine.
- */
-- (NSNumber *)mgl_cos:(NSNumber *)number {
- return @(cos(number.doubleValue));
-}
-
-/**
- Computes the principal value of the inverse sine.
- */
-- (NSNumber *)mgl_asin:(NSNumber *)number {
- return @(asin(number.doubleValue));
-}
-
-/**
- Computes the principal value of the sine.
- */
-- (NSNumber *)mgl_sin:(NSNumber *)number {
- return @(sin(number.doubleValue));
-}
-
-/**
- Computes the principal value of the inverse tangent.
- */
-- (NSNumber *)mgl_atan:(NSNumber *)number {
- return @(atan(number.doubleValue));
-}
-
-/**
- Computes the principal value of the tangent.
- */
-- (NSNumber *)mgl_tan:(NSNumber *)number {
- return @(tan(number.doubleValue));
-}
-
-/**
- Computes the logarithm base two of the value.
- */
-- (NSNumber *)mgl_log2:(NSNumber *)number {
- return @(log2(number.doubleValue));
-}
-
-/**
- A placeholder for a method that evaluates an interpolation expression.
- */
-- (id)mgl_interpolate:(id)inputExpression withCurveType:(NSString *)curveType parameters:(NSDictionary *)params stops:(NSDictionary *)stops {
- [NSException raise:NSInvalidArgumentException
- format:@"Interpolation expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-/**
- A placeholder for a method that evaluates a step expression.
- */
-- (id)mgl_step:(id)inputExpression from:(id)minimumExpression stops:(NSDictionary *)stops {
- [NSException raise:NSInvalidArgumentException
- format:@"Step expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-/**
- A placeholder for a method that evaluates a coalesce expression.
- */
-- (id)mgl_coalesce:(NSArray<NSExpression *> *)elements {
- [NSException raise:NSInvalidArgumentException
- format:@"Coalesce expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-/**
- Returns a Boolean value indicating whether the object has a value for the given
- key.
- */
-- (BOOL)mgl_does:(id)object have:(NSString *)key {
- return [object valueForKey:key] != nil;
-}
-
-/**
- A placeholder for a method that evaluates an expression based on an arbitrary
- number of variable names and assigned expressions.
- */
-- (id)MGL_LET:(NSString *)firstVariableName, ... {
- [NSException raise:NSInvalidArgumentException
- format:@"Assignment expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-/**
- A placeholder for a method that evaluates an expression and returns the matching element.
- */
-- (id)MGL_MATCH:(id)firstCondition, ... {
- [NSException raise:NSInvalidArgumentException
- format:@"Assignment expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-/**
- A placeholder for a method that evaluates an expression and returns the matching element.
- */
-- (id)MGL_IF:(id)firstCondition, ... {
- va_list argumentList;
- va_start(argumentList, firstCondition);
-
- for (id eachExpression = firstCondition; eachExpression; eachExpression = va_arg(argumentList, id)) {
- if ([eachExpression isKindOfClass:[NSComparisonPredicate class]]) {
- id valueExpression = va_arg(argumentList, id);
- if ([eachExpression evaluateWithObject:nil]) {
- return valueExpression;
- }
- } else {
- return eachExpression;
- }
- }
- va_end(argumentList);
-
- return nil;
-}
-
-/**
- A placeholder for a catch-all method that evaluates an arbitrary number of
- arguments as an expression according to the Mapbox Style Specification’s
- expression language.
- */
-- (id)MGL_FUNCTION:(id)firstArgument, ... {
- [NSException raise:NSInvalidArgumentException
- format:@"Mapbox GL function expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-@end
-
-@implementation NSExpression (MGLPrivateAdditions)
-
-- (std::vector<mbgl::Value>)mgl_aggregateMBGLValue {
- if ([self.constantValue isKindOfClass:[NSArray class]] || [self.constantValue isKindOfClass:[NSSet class]]) {
- std::vector<mbgl::Value> convertedValues;
- for (id value in self.constantValue) {
- NSExpression *expression = value;
- if (![expression isKindOfClass:[NSExpression class]]) {
- expression = [NSExpression expressionForConstantValue:expression];
- }
- convertedValues.push_back(expression.mgl_constantMBGLValue);
- }
- return convertedValues;
- }
- [NSException raise:NSInvalidArgumentException
- format:@"Constant value expression must contain an array or set."];
- return {};
-}
-
-- (mbgl::Value)mgl_constantMBGLValue {
- id value = self.constantValue;
- if ([value isKindOfClass:NSString.class]) {
- return { std::string([(NSString *)value UTF8String]) };
- } else if ([value isKindOfClass:NSNumber.class]) {
- NSNumber *number = (NSNumber *)value;
- if ((strcmp([number objCType], @encode(char)) == 0) ||
- (strcmp([number objCType], @encode(BOOL)) == 0)) {
- // char: 32-bit boolean
- // BOOL: 64-bit boolean
- return { (bool)number.boolValue };
- } else if (strcmp([number objCType], @encode(double)) == 0) {
- // Double values on all platforms are interpreted precisely.
- return { (double)number.doubleValue };
- } else if (strcmp([number objCType], @encode(float)) == 0) {
- // Float values when taken as double introduce precision problems,
- // so warn the user to avoid them. This would require them to
- // explicitly use -[NSNumber numberWithFloat:] arguments anyway.
- // We still do this conversion in order to provide a valid value.
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSLog(@"Float value in expression will be converted to a double; some imprecision may result. "
- @"Use double values explicitly when specifying constant expression values and "
- @"when specifying arguments to predicate and expression format strings. "
- @"This will be logged only once.");
- });
- return { (double)number.doubleValue };
- } else if ([number compare:@(0)] == NSOrderedDescending ||
- [number compare:@(0)] == NSOrderedSame) {
- // Positive integer or zero; use uint64_t per mbgl::Value definition.
- // We use unsigned long long here to avoid any truncation.
- return { (uint64_t)number.unsignedLongLongValue };
- } else if ([number compare:@(0)] == NSOrderedAscending) {
- // Negative integer; use int64_t per mbgl::Value definition.
- // We use long long here to avoid any truncation.
- return { (int64_t)number.longLongValue };
- }
- } else if ([value isKindOfClass:[MGLColor class]]) {
- auto hexString = [(MGLColor *)value mgl_color].stringify();
- return { hexString };
- } else if (value && value != [NSNull null]) {
- [NSException raise:NSInvalidArgumentException
- format:@"Can’t convert %s:%@ to mbgl::Value", [value objCType], value];
- }
- return {};
-}
-
-- (std::vector<mbgl::FeatureType>)mgl_aggregateFeatureType {
- if ([self.constantValue isKindOfClass:[NSArray class]] || [self.constantValue isKindOfClass:[NSSet class]]) {
- std::vector<mbgl::FeatureType> convertedValues;
- for (id value in self.constantValue) {
- NSExpression *expression = value;
- if (![expression isKindOfClass:[NSExpression class]]) {
- expression = [NSExpression expressionForConstantValue:expression];
- }
- convertedValues.push_back(expression.mgl_featureType);
- }
- return convertedValues;
- }
- [NSException raise:NSInvalidArgumentException
- format:@"Constant value expression must contain an array or set."];
- return {};
-}
-
-- (mbgl::FeatureType)mgl_featureType {
- id value = self.constantValue;
- if ([value isKindOfClass:NSString.class]) {
- if ([value isEqualToString:@"Point"]) {
- return mbgl::FeatureType::Point;
- }
- if ([value isEqualToString:@"LineString"]) {
- return mbgl::FeatureType::LineString;
- }
- if ([value isEqualToString:@"Polygon"]) {
- return mbgl::FeatureType::Polygon;
- }
- } else if ([value isKindOfClass:NSNumber.class]) {
- switch ([value integerValue]) {
- case 1:
- return mbgl::FeatureType::Point;
- case 2:
- return mbgl::FeatureType::LineString;
- case 3:
- return mbgl::FeatureType::Polygon;
- default:
- break;
- }
- }
- return mbgl::FeatureType::Unknown;
-}
-
-- (std::vector<mbgl::FeatureIdentifier>)mgl_aggregateFeatureIdentifier {
- if ([self.constantValue isKindOfClass:[NSArray class]] || [self.constantValue isKindOfClass:[NSSet class]]) {
- std::vector<mbgl::FeatureIdentifier> convertedValues;
- for (id value in self.constantValue) {
- NSExpression *expression = value;
- if (![expression isKindOfClass:[NSExpression class]]) {
- expression = [NSExpression expressionForConstantValue:expression];
- }
- convertedValues.push_back(expression.mgl_featureIdentifier);
- }
- return convertedValues;
- }
- [NSException raise:NSInvalidArgumentException
- format:@"Constant value expression must contain an array or set."];
- return {};
-}
-
-- (mbgl::FeatureIdentifier)mgl_featureIdentifier {
- mbgl::Value mbglValue = self.mgl_constantMBGLValue;
-
- if (mbglValue.is<std::string>()) {
- return mbglValue.get<std::string>();
- }
- if (mbglValue.is<double>()) {
- return mbglValue.get<double>();
- }
- if (mbglValue.is<uint64_t>()) {
- return mbglValue.get<uint64_t>();
- }
- if (mbglValue.is<int64_t>()) {
- return mbglValue.get<int64_t>();
- }
-
- return {};
-}
-
-@end
-
-@implementation NSObject (MGLExpressionAdditions)
-
-- (NSNumber *)mgl_number {
- return nil;
-}
-
-- (NSNumber *)mgl_numberWithFallbackValues:(id)fallbackValue, ... {
- if (self.mgl_number) {
- return self.mgl_number;
- }
-
- va_list fallbackValues;
- va_start(fallbackValues, fallbackValue);
- for (id value = fallbackValue; value; value = va_arg(fallbackValues, id)) {
- if ([value mgl_number]) {
- return [value mgl_number];
- }
- }
-
- return nil;
-}
-
-@end
-
-@implementation NSNull (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- return self;
-}
-
-@end
-
-@implementation NSString (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- return self;
-}
-
-- (NSNumber *)mgl_number {
- if (self.doubleValue || ![[NSDecimalNumber decimalNumberWithString:self] isEqual:[NSDecimalNumber notANumber]]) {
- return @(self.doubleValue);
- }
-
- return nil;
-}
-
-@end
-
-@implementation NSNumber (MGLExpressionAdditions)
-
-- (id)mgl_interpolateWithCurveType:(NSString *)curveType
- parameters:(NSArray *)parameters
- stops:(NSDictionary<NSNumber *, id> *)stops {
- [NSException raise:NSInvalidArgumentException
- format:@"Interpolation expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-- (id)mgl_stepWithMinimum:(id)minimum stops:(NSDictionary<NSNumber *, id> *)stops {
- [NSException raise:NSInvalidArgumentException
- format:@"Interpolation expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-- (NSNumber *)mgl_number {
- return self;
-}
-
-- (id)mgl_jsonExpressionObject {
- if ([self isEqualToNumber:@(M_E)]) {
- return @[@"e"];
- } else if ([self isEqualToNumber:@(M_PI)]) {
- return @[@"pi"];
- }
- return self;
-}
-
-@end
-
-@implementation MGLColor (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- auto color = [self mgl_color];
- if (color.a == 1) {
- return @[@"rgb", @(color.r * 255), @(color.g * 255), @(color.b * 255)];
- }
- return @[@"rgba", @(color.r * 255), @(color.g * 255), @(color.b * 255), @(color.a)];
-}
-
-@end
-
-@implementation NSArray (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- return [self valueForKeyPath:@"mgl_jsonExpressionObject"];
-}
-
-- (id)mgl_coalesce {
- [NSException raise:NSInvalidArgumentException
- format:@"Coalesce expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-@end
-
-@implementation NSDictionary (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- NSMutableDictionary *expressionObject = [NSMutableDictionary dictionaryWithCapacity:self.count];
- [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- expressionObject[[key mgl_jsonExpressionObject]] = [obj mgl_jsonExpressionObject];
- }];
-
- return expressionObject;
-}
-
-- (id)mgl_has:(id)element {
- [NSException raise:NSInvalidArgumentException
- format:@"Has expressions lack underlying Objective-C implementations."];
- return nil;
-
-}
-
-@end
-
-@implementation NSExpression (MGLExpressionAdditions)
-
-- (NSExpression *)mgl_expressionWithContext:(NSDictionary<NSString *, NSExpression *> *)context {
- [NSException raise:NSInternalInconsistencyException
- format:@"Assignment expressions lack underlying Objective-C implementations."];
- return self;
-}
-
-- (id)mgl_has:(id)element {
- [NSException raise:NSInvalidArgumentException
- format:@"Has expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-@end
-
-@implementation NSExpression (MGLAdditions)
-
-+ (NSExpression *)zoomLevelVariableExpression {
- return [NSExpression expressionForVariable:@"zoomLevel"];
-}
-
-+ (NSExpression *)heatmapDensityVariableExpression {
- return [NSExpression expressionForVariable:@"heatmapDensity"];
-}
-
-+ (NSExpression *)lineProgressVariableExpression {
- return [NSExpression expressionForVariable:@"lineProgress"];
-}
-
-+ (NSExpression *)featureAccumulatedVariableExpression {
- return [NSExpression expressionForVariable:@"featureAccumulated"];
-}
-
-+ (NSExpression *)geometryTypeVariableExpression {
- return [NSExpression expressionForVariable:@"geometryType"];
-}
-
-+ (NSExpression *)featureIdentifierVariableExpression {
- return [NSExpression expressionForVariable:@"featureIdentifier"];
-}
-
-+ (NSExpression *)featureAttributesVariableExpression {
- return [NSExpression expressionForVariable:@"featureAttributes"];
-}
-
-+ (NSExpression *)featurePropertiesVariableExpression {
- return [self featureAttributesVariableExpression];
-}
-
-+ (instancetype)mgl_expressionForConditional:(nonnull NSPredicate *)conditionPredicate trueExpression:(nonnull NSExpression *)trueExpression falseExpresssion:(nonnull NSExpression *)falseExpression {
- return [NSExpression expressionForConditional:conditionPredicate trueExpression:trueExpression falseExpression:falseExpression];
-}
-
-+ (instancetype)mgl_expressionForSteppingExpression:(nonnull NSExpression *)steppingExpression fromExpression:(nonnull NSExpression *)minimumExpression stops:(nonnull NSExpression *)stops {
- return [NSExpression expressionForFunction:@"mgl_step:from:stops:"
- arguments:@[steppingExpression, minimumExpression, stops]];
-}
-
-+ (instancetype)mgl_expressionForInterpolatingExpression:(nonnull NSExpression *)inputExpression withCurveType:(nonnull MGLExpressionInterpolationMode)curveType parameters:(nullable NSExpression *)parameters stops:(nonnull NSExpression *)stops {
- NSExpression *sanitizeParams = parameters ? parameters : [NSExpression expressionForConstantValue:nil];
- return [NSExpression expressionForFunction:@"mgl_interpolate:withCurveType:parameters:stops:"
- arguments:@[inputExpression, [NSExpression expressionForConstantValue:curveType], sanitizeParams, stops]];
-}
-
-+ (instancetype)mgl_expressionForMatchingExpression:(nonnull NSExpression *)inputExpression inDictionary:(nonnull NSDictionary<NSExpression *, NSExpression *> *)matchedExpressions defaultExpression:(nonnull NSExpression *)defaultExpression {
- NSMutableArray *optionsArray = [NSMutableArray arrayWithObjects:inputExpression, nil];
-
- NSEnumerator *matchEnumerator = matchedExpressions.keyEnumerator;
- while (NSExpression *key = matchEnumerator.nextObject) {
- [optionsArray addObject:key];
- [optionsArray addObject:[matchedExpressions objectForKey:key]];
- }
-
- [optionsArray addObject:defaultExpression];
- return [NSExpression expressionForFunction:@"MGL_MATCH"
- arguments:optionsArray];
-}
-
-+ (instancetype)mgl_expressionForAttributedExpressions:(nonnull NSArray<NSExpression *> *)attributedExpressions {
- return [NSExpression expressionForFunction:@"mgl_attributed:" arguments:attributedExpressions];
-}
-
-- (instancetype)mgl_expressionByAppendingExpression:(nonnull NSExpression *)expression {
- NSExpression *subexpression = [NSExpression expressionForAggregate:@[self, expression]];
- return [NSExpression expressionForFunction:@"mgl_join:" arguments:@[subexpression]];
-}
-
-static NSDictionary<NSString *, NSString *> *MGLFunctionNamesByExpressionOperator;
-static NSDictionary<NSString *, NSString *> *MGLExpressionOperatorsByFunctionNames;
-
-NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) {
- NSMutableArray *subexpressions = [NSMutableArray arrayWithCapacity:objects.count];
- for (id object in objects) {
- NSExpression *expression = [NSExpression expressionWithMGLJSONObject:object];
- [subexpressions addObject:expression];
- }
- return subexpressions;
-}
-
-+ (instancetype)expressionWithMGLJSONObject:(id)object {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- MGLFunctionNamesByExpressionOperator = @{
- @"+": @"add:to:",
- @"-": @"from:subtract:",
- @"*": @"multiply:by:",
- @"/": @"divide:by:",
- @"%": @"modulus:by:",
- @"sqrt": @"sqrt:",
- @"log10": @"log:",
- @"ln": @"ln:",
- @"abs": @"abs:",
- @"round": @"mgl_round:",
- @"acos" : @"mgl_acos:",
- @"cos" : @"mgl_cos:",
- @"asin" : @"mgl_asin:",
- @"sin" : @"mgl_sin:",
- @"atan" : @"mgl_atan:",
- @"tan" : @"mgl_tan:",
- @"log2" : @"mgl_log2:",
- @"floor": @"floor:",
- @"ceil": @"ceiling:",
- @"^": @"raise:toPower:",
- @"upcase": @"uppercase:",
- @"downcase": @"lowercase:",
- @"let": @"MGL_LET",
- };
- });
- if (!object || object == [NSNull null]) {
- return [NSExpression expressionForConstantValue:nil];
- }
-
- if ([object isKindOfClass:[NSString class]] ||
- [object isKindOfClass:[NSNumber class]] ||
- [object isKindOfClass:[NSValue class]] ||
- [object isKindOfClass:[MGLColor class]]) {
- return [NSExpression expressionForConstantValue:object];
- }
-
- if ([object isKindOfClass:[NSDictionary class]]) {
- NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:[object count]];
- [object enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- dictionary[key] = [NSExpression expressionWithMGLJSONObject:obj];
- }];
- return [NSExpression expressionForConstantValue:dictionary];
- }
- if ([object isKindOfClass:[NSArray class]]) {
- NSArray *array = (NSArray *)object;
- NSString *op = array.firstObject;
-
- if (![op isKindOfClass:[NSString class]]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(array);
- return [NSExpression expressionForFunction:@"MGL_FUNCTION" arguments:subexpressions];
- }
-
- NSArray *argumentObjects = [array subarrayWithRange:NSMakeRange(1, array.count - 1)];
-
- NSString *functionName = MGLFunctionNamesByExpressionOperator[op];
- if (functionName) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- if ([op isEqualToString:@"+"] && argumentObjects.count > 2) {
- NSExpression *subexpression = [NSExpression expressionForAggregate:subexpressions];
- return [NSExpression expressionForFunction:@"sum:"
- arguments:@[subexpression]];
- } else if ([op isEqualToString:@"^"] && [argumentObjects.firstObject isEqual:@[@"e"]]) {
- functionName = @"exp:";
- subexpressions = [subexpressions subarrayWithRange:NSMakeRange(1, subexpressions.count - 1)];
- }
-
- return [NSExpression expressionForFunction:functionName
- arguments:subexpressions];
- } else if ([op isEqualToString:@"collator"]) {
- // Avoid wrapping collator options object in literal expression.
- return [NSExpression expressionForFunction:@"MGL_FUNCTION" arguments:array];
- } else if ([op isEqualToString:@"literal"]) {
- if ([argumentObjects.firstObject isKindOfClass:[NSArray class]]) {
- return [NSExpression expressionForAggregate:MGLSubexpressionsWithJSONObjects(argumentObjects.firstObject)];
- }
- return [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
- } else if ([op isEqualToString:@"to-boolean"]) {
- NSExpression *operand = [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
- return [NSExpression expressionForFunction:operand selectorName:@"boolValue" arguments:@[]];
- } else if ([op isEqualToString:@"to-number"] || [op isEqualToString:@"number"]) {
- NSExpression *operand = [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
- if (argumentObjects.count == 1) {
- return [NSExpression expressionWithFormat:@"CAST(%@, 'NSNumber')", operand];
- }
- argumentObjects = [argumentObjects subarrayWithRange:NSMakeRange(1, argumentObjects.count - 1)];
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- return [NSExpression expressionForFunction:operand selectorName:@"mgl_numberWithFallbackValues:" arguments:subexpressions];
- } else if ([op isEqualToString:@"to-string"] || [op isEqualToString:@"string"]) {
- NSExpression *operand = [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
- return [NSExpression expressionWithFormat:@"CAST(%@, 'NSString')", operand];
- } else if ([op isEqualToString:@"to-color"]) {
- NSExpression *operand = [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
-
- if (argumentObjects.count == 1) {
-#if TARGET_OS_IPHONE
- return [NSExpression expressionWithFormat:@"CAST(%@, 'UIColor')", operand];
-#else
- return [NSExpression expressionWithFormat:@"CAST(%@, 'NSColor')", operand];
-#endif
- }
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(array);
- return [NSExpression expressionForFunction:@"MGL_FUNCTION" arguments:subexpressions];
-
- } else if ([op isEqualToString:@"to-rgba"]) {
- NSExpression *operand = [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
- return [NSExpression expressionWithFormat:@"CAST(noindex(%@), 'NSArray')", operand];
- } else if ([op isEqualToString:@"get"]) {
- if (argumentObjects.count == 2) {
- NSExpression *operand = [NSExpression expressionWithMGLJSONObject:argumentObjects.lastObject];
- if ([argumentObjects.firstObject isKindOfClass:[NSString class]]) {
- return [NSExpression expressionWithFormat:@"%@.%K", operand, argumentObjects.firstObject];
- }
- NSExpression *key = [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
- return [NSExpression expressionWithFormat:@"%@.%@", operand, key];
- }
- return [NSExpression expressionForKeyPath:argumentObjects.firstObject];
- } else if ([op isEqualToString:@"length"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- NSString *function = @"count:";
- if ([subexpressions.firstObject expressionType] == NSConstantValueExpressionType
- && [[subexpressions.firstObject constantValue] isKindOfClass:[NSString class]]) {
- function = @"length:";
- }
- return [NSExpression expressionForFunction:function arguments:@[subexpressions.firstObject]];
- } else if ([op isEqualToString:@"rgb"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- return [NSExpression mgl_expressionForRGBComponents:subexpressions];
- } else if ([op isEqualToString:@"rgba"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- return [NSExpression mgl_expressionForRGBAComponents:subexpressions];
- } else if ([op isEqualToString:@"min"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- NSExpression *subexpression = [NSExpression expressionForAggregate:subexpressions];
- return [NSExpression expressionForFunction:@"min:" arguments:@[subexpression]];
- } else if ([op isEqualToString:@"max"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- NSExpression *subexpression = [NSExpression expressionForAggregate:subexpressions];
- return [NSExpression expressionForFunction:@"max:" arguments:@[subexpression]];
- } else if ([op isEqualToString:@"e"]) {
- return [NSExpression expressionForConstantValue:@(M_E)];
- } else if ([op isEqualToString:@"pi"]) {
- return [NSExpression expressionForConstantValue:@(M_PI)];
- } else if ([op isEqualToString:@"concat"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- NSExpression *subexpression = [NSExpression expressionForAggregate:subexpressions];
- return [NSExpression expressionForFunction:@"mgl_join:" arguments:@[subexpression]];
- } else if ([op isEqualToString:@"at"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- NSExpression *index = subexpressions.firstObject;
- NSExpression *operand = subexpressions[1];
- return [NSExpression expressionForFunction:@"objectFrom:withIndex:" arguments:@[operand, index]];
- } else if ([op isEqualToString:@"has"]) {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(argumentObjects);
- NSExpression *operand = argumentObjects.count > 1 ? subexpressions[1] : [NSExpression expressionForEvaluatedObject];
- NSExpression *key = subexpressions.firstObject;
- return [NSExpression expressionForFunction:@"mgl_does:have:" arguments:@[operand, key]];
- } else if ([op isEqualToString:@"interpolate"]) {
- NSArray *interpolationOptions = argumentObjects.firstObject;
- NSString *curveType = interpolationOptions.firstObject;
- NSExpression *curveTypeExpression = [NSExpression expressionWithMGLJSONObject:curveType];
- id curveParameters;
- if ([curveType isEqual:@"exponential"]) {
- curveParameters = interpolationOptions[1];
- } else if ([curveType isEqualToString:@"cubic-bezier"]) {
- curveParameters = @[@"literal", [interpolationOptions subarrayWithRange:NSMakeRange(1, 4)]];
- }
- else {
- curveParameters = [NSNull null];
- }
- NSExpression *curveParameterExpression = [NSExpression expressionWithMGLJSONObject:curveParameters];
- argumentObjects = [argumentObjects subarrayWithRange:NSMakeRange(1, argumentObjects.count - 1)];
- NSExpression *inputExpression = [NSExpression expressionWithMGLJSONObject:argumentObjects.firstObject];
- NSArray *stopExpressions = [argumentObjects subarrayWithRange:NSMakeRange(1, argumentObjects.count - 1)];
- NSMutableDictionary *stops = [NSMutableDictionary dictionaryWithCapacity:stopExpressions.count / 2];
- NSEnumerator *stopEnumerator = stopExpressions.objectEnumerator;
- while (NSNumber *key = stopEnumerator.nextObject) {
- NSExpression *valueExpression = stopEnumerator.nextObject;
- stops[key] = [NSExpression expressionWithMGLJSONObject:valueExpression];
- }
- NSExpression *stopExpression = [NSExpression expressionForConstantValue:stops];
- return [NSExpression expressionForFunction:@"mgl_interpolate:withCurveType:parameters:stops:"
- arguments:@[inputExpression, curveTypeExpression, curveParameterExpression, stopExpression]];
- } else if ([op isEqualToString:@"step"]) {
- NSExpression *inputExpression = [NSExpression expressionWithMGLJSONObject:argumentObjects[0]];
- NSArray *stopExpressions = [argumentObjects subarrayWithRange:NSMakeRange(1, argumentObjects.count - 1)];
- NSExpression *minimum;
- if (stopExpressions.count % 2) {
- minimum = [NSExpression expressionWithMGLJSONObject:stopExpressions.firstObject];
- stopExpressions = [stopExpressions subarrayWithRange:NSMakeRange(1, stopExpressions.count - 1)];
- }
- NSMutableDictionary *stops = [NSMutableDictionary dictionaryWithCapacity:stopExpressions.count / 2];
- NSEnumerator *stopEnumerator = stopExpressions.objectEnumerator;
- while (NSNumber *key = stopEnumerator.nextObject) {
- NSExpression *valueExpression = stopEnumerator.nextObject;
- if (minimum) {
- stops[key] = [NSExpression expressionWithMGLJSONObject:valueExpression];
- } else {
- minimum = [NSExpression expressionWithMGLJSONObject:valueExpression];
- }
- }
-
- NSAssert(minimum, @"minimum should be non-nil");
- if (minimum) {
- NSExpression *stopExpression = [NSExpression expressionForConstantValue:stops];
- return [NSExpression expressionForFunction:@"mgl_step:from:stops:"
- arguments:@[inputExpression, minimum, stopExpression]];
- }
-
- } else if ([op isEqualToString:@"zoom"]) {
- return NSExpression.zoomLevelVariableExpression;
- } else if ([op isEqualToString:@"heatmap-density"]) {
- return NSExpression.heatmapDensityVariableExpression;
- } else if ([op isEqualToString:@"line-progress"]) {
- return NSExpression.lineProgressVariableExpression;
- } else if ([op isEqualToString:@"accumulated"]) {
- return NSExpression.featureAccumulatedVariableExpression;
- } else if ([op isEqualToString:@"geometry-type"]) {
- return NSExpression.geometryTypeVariableExpression;
- } else if ([op isEqualToString:@"id"]) {
- return NSExpression.featureIdentifierVariableExpression;
- } else if ([op isEqualToString:@"properties"]) {
- return NSExpression.featureAttributesVariableExpression;
- } else if ([op isEqualToString:@"var"]) {
- return [NSExpression expressionForVariable:argumentObjects.firstObject];
- } else if ([op isEqualToString:@"case"]) {
- NSMutableArray *arguments = [NSMutableArray array];
-
- for (NSUInteger index = 0; index < argumentObjects.count; index++) {
- if (index % 2 == 0 && index != argumentObjects.count - 1) {
- NSPredicate *predicate = [NSPredicate predicateWithMGLJSONObject:argumentObjects[index]];
- NSExpression *argument = [NSExpression expressionForConstantValue:predicate];
- [arguments addObject:argument];
- } else {
- [arguments addObject:[NSExpression expressionWithMGLJSONObject:argumentObjects[index]]];
- }
- }
-
- if (arguments.count == 3) {
- NSPredicate *conditional = [arguments.firstObject constantValue];
- return [NSExpression expressionForConditional:conditional trueExpression:arguments[1] falseExpression:arguments[2]];
- }
- return [NSExpression expressionForFunction:@"MGL_IF" arguments:arguments];
- } else if ([op isEqualToString:@"match"]) {
- NSMutableArray *optionsArray = [NSMutableArray array];
-
- for (NSUInteger index = 0; index < argumentObjects.count; index++) {
- NSExpression *option = [NSExpression expressionWithMGLJSONObject:argumentObjects[index]];
- // match operators with arrays as matching values should not parse arrays as generic functions.
- if (index > 0 && index < argumentObjects.count - 1 && !(index % 2 == 0) && [argumentObjects[index] isKindOfClass:[NSArray class]]) {
- option = [NSExpression expressionForAggregate:MGLSubexpressionsWithJSONObjects(argumentObjects[index])];
- }
- [optionsArray addObject:option];
- }
-
- return [NSExpression expressionForFunction:@"MGL_MATCH"
- arguments:optionsArray];
- } else if ([op isEqualToString:@"format"]) {
- NSMutableArray *attributedExpressions = [NSMutableArray array];
-
- for (NSUInteger index = 0; index < argumentObjects.count; index+=2) {
- NSExpression *expression = [NSExpression expressionWithMGLJSONObject:argumentObjects[index]];
- NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
- if ((index + 1) < argumentObjects.count) {
- attrs = [NSMutableDictionary dictionaryWithDictionary:argumentObjects[index + 1]];
- }
-
- for (NSString *key in attrs.allKeys) {
- attrs[key] = [NSExpression expressionWithMGLJSONObject:attrs[key]];
- }
- MGLAttributedExpression *attributedExpression = [[MGLAttributedExpression alloc] initWithExpression:expression attributes:attrs];
-
- [attributedExpressions addObject:[NSExpression expressionForConstantValue:attributedExpression]];
- }
- return [NSExpression expressionForFunction:@"mgl_attributed:" arguments:attributedExpressions];
-
- } else if ([op isEqualToString:@"coalesce"]) {
- NSMutableArray *expressions = [NSMutableArray array];
- for (id operand in argumentObjects) {
- [expressions addObject:[NSExpression expressionWithMGLJSONObject:operand]];
- }
-
- return [NSExpression expressionWithFormat:@"mgl_coalesce(%@)", expressions];
- } else {
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects(array);
- return [NSExpression expressionForFunction:@"MGL_FUNCTION" arguments:subexpressions];
- }
- }
-
- [NSException raise:NSInvalidArgumentException
- format:@"Unable to convert JSON object %@ to an NSExpression.", object];
-
- return nil;
-}
-
-- (id)mgl_jsonExpressionObject {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- MGLExpressionOperatorsByFunctionNames = @{
- @"add:to:": @"+",
- @"from:subtract:": @"-",
- @"multiply:by:": @"*",
- @"divide:by:": @"/",
- @"modulus:by:": @"%",
- @"sqrt:": @"sqrt",
- @"log:": @"log10",
- @"ln:": @"ln",
- @"raise:toPower:": @"^",
- @"ceiling:": @"ceil",
- @"abs:": @"abs",
- @"floor:": @"floor",
- @"uppercase:": @"upcase",
- @"lowercase:": @"downcase",
- @"length:": @"length",
- @"mgl_round:": @"round",
- @"mgl_acos:" : @"acos",
- @"mgl_cos:" : @"cos",
- @"mgl_asin:" : @"asin",
- @"mgl_sin:" : @"sin",
- @"mgl_atan:" : @"atan",
- @"mgl_tan:" : @"tan",
- @"mgl_log2:" : @"log2",
- // Vararg aftermarket expressions need to be declared with an explicit and implicit first argument.
- @"MGL_LET": @"let",
- @"MGL_LET:": @"let",
- };
- });
-
- switch (self.expressionType) {
- case NSVariableExpressionType: {
- if ([self.variable isEqualToString:@"heatmapDensity"]) {
- return @[@"heatmap-density"];
- }
- if ([self.variable isEqualToString:@"lineProgress"]) {
- return @[@"line-progress"];
- }
- if ([self.variable isEqualToString:@"zoomLevel"]) {
- return @[@"zoom"];
- }
- if ([self.variable isEqualToString:@"featureAccumulated"]) {
- return @[@"accumulated"];
- }
- if ([self.variable isEqualToString:@"geometryType"]) {
- return @[@"geometry-type"];
- }
- if ([self.variable isEqualToString:@"featureIdentifier"]) {
- return @[@"id"];
- }
- if ([self.variable isEqualToString:@"featureAttributes"]) {
- return @[@"properties"];
- }
- return @[@"var", self.variable];
- }
-
- case NSConstantValueExpressionType: {
- id constantValue = self.constantValue;
- if (!constantValue || constantValue == [NSNull null]) {
- return [NSNull null];
- }
- if ([constantValue isEqual:@(M_E)]) {
- return @[@"e"];
- }
- if ([constantValue isEqual:@(M_PI)]) {
- return @[@"pi"];
- }
- if ([constantValue isKindOfClass:[NSArray class]] ||
- [constantValue isKindOfClass:[NSDictionary class]]) {
- NSArray *collection = [constantValue mgl_jsonExpressionObject];
- return @[@"literal", collection];
- }
- if ([constantValue isKindOfClass:[MGLColor class]]) {
- auto color = [constantValue mgl_color];
- if (color.a == 1) {
- return @[@"rgb", @(color.r * 255), @(color.g * 255), @(color.b * 255)];
- }
- return @[@"rgba", @(color.r * 255), @(color.g * 255), @(color.b * 255), @(color.a)];
- }
- if ([constantValue isKindOfClass:[NSValue class]]) {
- const auto boxedValue = (NSValue *)constantValue;
- if (strcmp([boxedValue objCType], @encode(CGVector)) == 0) {
- // offset [x, y]
- std::array<float, 2> mglValue = boxedValue.mgl_offsetArrayValue;
- return @[@"literal", @[@(mglValue[0]), @(mglValue[1])]];
- }
- if (strcmp([boxedValue objCType], @encode(MGLEdgeInsets)) == 0) {
- // padding [x, y]
- std::array<float, 4> mglValue = boxedValue.mgl_paddingArrayValue;
- return @[@"literal", @[@(mglValue[0]), @(mglValue[1]), @(mglValue[2]), @(mglValue[3])]];
- }
- }
- if ([constantValue isKindOfClass:[MGLAttributedExpression class]]) {
- MGLAttributedExpression *attributedExpression = (MGLAttributedExpression *)constantValue;
- id jsonObject = attributedExpression.expression.mgl_jsonExpressionObject;
- NSMutableDictionary<MGLAttributedExpressionKey, NSExpression *> *attributedDictionary = [NSMutableDictionary dictionary];
-
- if (attributedExpression.attributes) {
- attributedDictionary = [NSMutableDictionary dictionaryWithDictionary:attributedExpression.attributes];
-
- for (NSString *key in attributedExpression.attributes.allKeys) {
- attributedDictionary[key] = attributedExpression.attributes[key].mgl_jsonExpressionObject;
- }
-
- }
- return @[jsonObject, attributedDictionary];
- }
- return self.constantValue;
- }
-
- case NSKeyPathExpressionType: {
- NSArray *expressionObject;
- NSArray *keyPath = [self.keyPath componentsSeparatedByString:@"."];
- for (NSString *pathComponent in keyPath) {
- if (expressionObject) {
- expressionObject = @[@"get", pathComponent, expressionObject];
- } else {
- expressionObject = @[@"get", pathComponent];
- }
- }
-
- NSAssert(expressionObject.count > 0, @"expressionObject should be non-empty");
-
- // Return a non-null value to quieten static analysis
- return expressionObject ?: @[];
- }
-
- case NSFunctionExpressionType: {
- NSString *function = self.function;
-
- BOOL hasCollectionProperty = !( ! [self.arguments.firstObject isKindOfClass: [NSExpression class]] || self.arguments.firstObject.expressionType != NSAggregateExpressionType || self.arguments.firstObject.expressionType == NSSubqueryExpressionType);
- NSString *op = MGLExpressionOperatorsByFunctionNames[function];
- if (op) {
- NSArray *arguments = self.arguments.mgl_jsonExpressionObject;
- return [@[op] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"valueForKey:"] || [function isEqualToString:@"valueForKeyPath:"]) {
- return @[@"get", self.arguments.firstObject.mgl_jsonExpressionObject, self.operand.mgl_jsonExpressionObject];
- } else if ([function isEqualToString:@"average:"]) {
- NSExpression *sum = [NSExpression expressionForFunction:@"sum:" arguments:self.arguments];
- NSExpression *count = [NSExpression expressionForFunction:@"count:" arguments:self.arguments];
- return [NSExpression expressionForFunction:@"divide:by:" arguments:@[sum, count]].mgl_jsonExpressionObject;
- } else if ([function isEqualToString:@"sum:"]) {
- NSArray *arguments;
- if (hasCollectionProperty) {
- arguments = [self.arguments.firstObject.collection valueForKeyPath:@"mgl_jsonExpressionObject"];
- } else {
- arguments = [self.arguments valueForKeyPath:@"mgl_jsonExpressionObject"];
- }
- return [@[@"+"] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"count:"]) {
- NSArray *arguments = self.arguments.firstObject.mgl_jsonExpressionObject;
- return @[@"length", arguments];
- } else if ([function isEqualToString:@"min:"]) {
- NSArray *arguments;
- if (!hasCollectionProperty) {
- arguments = [self.arguments valueForKeyPath:@"mgl_jsonExpressionObject"];
- } else {
- arguments = [self.arguments.firstObject.collection valueForKeyPath:@"mgl_jsonExpressionObject"];
- }
- return [@[@"min"] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"max:"]) {
- NSArray *arguments;
- if (!hasCollectionProperty) {
- arguments = [self.arguments valueForKeyPath:@"mgl_jsonExpressionObject"];
- } else {
- arguments = [self.arguments.firstObject.collection valueForKeyPath:@"mgl_jsonExpressionObject"];
- }
- return [@[@"max"] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"exp:"]) {
- return [NSExpression expressionForFunction:@"raise:toPower:" arguments:@[@(M_E), self.arguments.firstObject]].mgl_jsonExpressionObject;
- } else if ([function isEqualToString:@"trunc:"]) {
- return [NSExpression expressionWithFormat:@"%@ - modulus:by:(%@, 1)",
- self.arguments.firstObject, self.arguments.firstObject].mgl_jsonExpressionObject;
- } else if ([function isEqualToString:@"mgl_join:"]) {
- NSArray *arguments;
- if (!hasCollectionProperty) {
- arguments = [self.arguments valueForKeyPath:@"mgl_jsonExpressionObject"];
- } else {
- arguments = [self.arguments.firstObject.collection valueForKeyPath:@"mgl_jsonExpressionObject"];
- }
- return [@[@"concat"] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"stringByAppendingString:"]) {
- NSArray *arguments = self.arguments.mgl_jsonExpressionObject;
- return [@[@"concat", self.operand.mgl_jsonExpressionObject] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"objectFrom:withIndex:"]) {
- id index = self.arguments[1].mgl_jsonExpressionObject;
-
- if ([self.arguments[1] expressionType] == NSConstantValueExpressionType
- && [[self.arguments[1] constantValue] isKindOfClass:[NSString class]]) {
- id value = self.arguments[1].constantValue;
-
- if ([value isEqualToString:@"FIRST"]) {
- index = [NSExpression expressionForConstantValue:@0].mgl_jsonExpressionObject;
- } else if ([value isEqualToString:@"LAST"]) {
- index = [NSExpression expressionWithFormat:@"count(%@) - 1", self.arguments[0]].mgl_jsonExpressionObject;
- } else if ([value isEqualToString:@"SIZE"]) {
- return [NSExpression expressionWithFormat:@"count(%@)", self.arguments[0]].mgl_jsonExpressionObject;
- }
- }
-
- return @[@"at", index, self.arguments[0].mgl_jsonExpressionObject];
- } else if ([function isEqualToString:@"boolValue"]) {
- return @[@"to-boolean", self.operand.mgl_jsonExpressionObject];
- } else if ([function isEqualToString:@"mgl_number"] ||
- [function isEqualToString:@"mgl_numberWithFallbackValues:"] ||
- [function isEqualToString:@"decimalValue"] ||
- [function isEqualToString:@"floatValue"] ||
- [function isEqualToString:@"doubleValue"]) {
- NSArray *arguments = self.arguments.mgl_jsonExpressionObject;
- return [@[@"to-number", self.operand.mgl_jsonExpressionObject] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"stringValue"]) {
- return @[@"to-string", self.operand.mgl_jsonExpressionObject];
- } else if ([function isEqualToString:@"noindex:"]) {
- return self.arguments.firstObject.mgl_jsonExpressionObject;
- } else if ([function isEqualToString:@"mgl_does:have:"] ||
- [function isEqualToString:@"mgl_has:"]) {
- return self.mgl_jsonHasExpressionObject;
- } else if ([function isEqualToString:@"mgl_interpolate:withCurveType:parameters:stops:"]
- || [function isEqualToString:@"mgl_interpolateWithCurveType:parameters:stops:"]) {
- return self.mgl_jsonInterpolationExpressionObject;
- } else if ([function isEqualToString:@"mgl_step:from:stops:"]
- || [function isEqualToString:@"mgl_stepWithMinimum:stops:"]) {
- return self.mgl_jsonStepExpressionObject;
- } else if ([function isEqualToString:@"mgl_expressionWithContext:"]) {
- id context = self.arguments.firstObject;
- if ([context isKindOfClass:[NSExpression class]]) {
- context = [context constantValue];
- }
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"let", nil];
- [context enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, NSExpression * _Nonnull obj, BOOL * _Nonnull stop) {
- [expressionObject addObject:key];
- [expressionObject addObject:obj.mgl_jsonExpressionObject];
- }];
- [expressionObject addObject:self.operand.mgl_jsonExpressionObject];
- return expressionObject;
- } else if ([function isEqualToString:@"MGL_IF"] ||
- [function isEqualToString:@"MGL_IF:"] ||
- [function isEqualToString:@"mgl_if:"]) {
- return self.mgl_jsonIfExpressionObject;
- } else if ([function isEqualToString:@"MGL_MATCH"] ||
- [function isEqualToString:@"MGL_MATCH:"] ||
- [function isEqualToString:@"mgl_match:"]) {
- return self.mgl_jsonMatchExpressionObject;
- } else if ([function isEqualToString:@"mgl_coalesce:"] ||
- [function isEqualToString:@"mgl_coalesce"]) {
-
- return self.mgl_jsonCoalesceExpressionObject;
- } else if ([function isEqualToString:@"castObject:toType:"]) {
- id object = self.arguments.firstObject.mgl_jsonExpressionObject;
- NSString *type = self.arguments[1].mgl_jsonExpressionObject;
- if ([type isEqualToString:@"NSString"]) {
- return @[@"to-string", object];
- } else if ([type isEqualToString:@"NSNumber"]) {
- return @[@"to-number", object];
- }
-#if TARGET_OS_IPHONE
- else if ([type isEqualToString:@"UIColor"] || [type isEqualToString:@"MGLColor"]) {
- return @[@"to-color", object];
- }
-#else
- else if ([type isEqualToString:@"NSColor"] || [type isEqualToString:@"MGLColor"]) {
- return @[@"to-color", object];
- }
-#endif
- else if ([type isEqualToString:@"NSArray"]) {
- NSExpression *operand = self.arguments.firstObject;
- if ([operand expressionType] == NSFunctionExpressionType ) {
- operand = self.arguments.firstObject.arguments.firstObject;
- }
- if (([operand expressionType] != NSConstantValueExpressionType) ||
- ([operand expressionType] == NSConstantValueExpressionType &&
- [[operand constantValue] isKindOfClass:[MGLColor class]])) {
- return @[@"to-rgba", object];
- }
- }
- [NSException raise:NSInvalidArgumentException
- format:@"Casting expression to %@ not yet implemented.", type];
- } else if ([function isEqualToString:@"mgl_attributed:"]) {
- return [self mgl_jsonFormatExpressionObject];
-
- } else if ([function isEqualToString:@"MGL_FUNCTION"] ||
- [function isEqualToString:@"MGL_FUNCTION:"]) {
- NSExpression *firstOp = self.arguments.firstObject;
- if (firstOp.expressionType == NSConstantValueExpressionType
- && [firstOp.constantValue isEqualToString:@"collator"]) {
- // Avoid wrapping collator options object in literal expression.
- return @[@"collator", self.arguments[1].constantValue];
- }
- if (firstOp.expressionType == NSConstantValueExpressionType
- && [firstOp.constantValue isEqualToString:@"format"]) {
- // Avoid wrapping format options object in literal expression.
- NSMutableArray *expressionObject = [NSMutableArray array];
- [expressionObject addObject:@"format"];
-
- for (NSUInteger index = 1; index < self.arguments.count; index++) {
- if (index % 2 == 1) {
- [expressionObject addObject:self.arguments[index].mgl_jsonExpressionObject];
- } else {
- [expressionObject addObject:self.arguments[index].constantValue];
- }
-
- }
-
- return expressionObject;
- }
-
- return self.arguments.mgl_jsonExpressionObject;
- } else if (op == [MGLColor class] && [function isEqualToString:@"colorWithRed:green:blue:alpha:"]) {
- NSArray *arguments = self.arguments.mgl_jsonExpressionObject;
- return [@[@"rgba"] arrayByAddingObjectsFromArray:arguments];
- } else if ([function isEqualToString:@"median:"] ||
- [function isEqualToString:@"mode:"] ||
- [function isEqualToString:@"stddev:"] ||
- [function isEqualToString:@"random"] ||
- [function isEqualToString:@"randomn:"] ||
- [function isEqualToString:@"now"] ||
- [function isEqualToString:@"bitwiseAnd:with:"] ||
- [function isEqualToString:@"bitwiseOr:with:"] ||
- [function isEqualToString:@"bitwiseXor:with:"] ||
- [function isEqualToString:@"leftshift:by:"] ||
- [function isEqualToString:@"rightshift:by:"] ||
- [function isEqualToString:@"onesComplement:"] ||
- [function isEqualToString:@"distanceToLocation:fromLocation:"]) {
- [NSException raise:NSInvalidArgumentException
- format:@"Expression function %@ not yet implemented.", function];
- return nil;
- } else {
- [NSException raise:NSInvalidArgumentException
- format:@"Unrecognized expression function %@.", function];
- return nil;
- }
- }
-
- case NSConditionalExpressionType: {
- NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"case", self.predicate.mgl_jsonExpressionObject, nil];
- [arguments addObject:self.trueExpression.mgl_jsonExpressionObject];
- [arguments addObject:self.falseExpression.mgl_jsonExpressionObject];
-
- return arguments;
- }
-
- case NSAggregateExpressionType: {
- NSArray *collection = [self.collection valueForKeyPath:@"mgl_jsonExpressionObject"];
- return @[@"literal", collection];
- }
-
- case NSEvaluatedObjectExpressionType:
- case NSUnionSetExpressionType:
- case NSIntersectSetExpressionType:
- case NSMinusSetExpressionType:
- case NSSubqueryExpressionType:
- case NSAnyKeyExpressionType:
- case NSBlockExpressionType:
- [NSException raise:NSInvalidArgumentException
- format:@"Expression type %lu not yet implemented.", (unsigned long)self.expressionType];
- }
-
- // NSKeyPathSpecifierExpression
- if (self.expressionType == 10) {
- return self.description;
- }
- // An assignment expression type is present in the BNF grammar, but the
- // corresponding NSExpressionType value and property getters are missing.
- if (self.expressionType == 12) {
- [NSException raise:NSInvalidArgumentException
- format:@"Assignment expressions not yet implemented."];
- }
-
- return nil;
-}
-
-- (id)mgl_jsonInterpolationExpressionObject {
- NSUInteger expectedArgumentCount = [self.function componentsSeparatedByString:@":"].count - 1;
- if (self.arguments.count < expectedArgumentCount) {
- [NSException raise:NSInvalidArgumentException format:
- @"Too few arguments to ‘%@’ function; expected %lu arguments.",
- self.function, (unsigned long)expectedArgumentCount];
- } else if (self.arguments.count > expectedArgumentCount) {
- [NSException raise:NSInvalidArgumentException format:
- @"%lu unexpected arguments to ‘%@’ function; expected %lu arguments.",
- self.arguments.count - (unsigned long)expectedArgumentCount, self.function, (unsigned long)expectedArgumentCount];
- }
-
- BOOL isAftermarketFunction = [self.function isEqualToString:@"mgl_interpolate:withCurveType:parameters:stops:"];
- NSUInteger curveTypeIndex = isAftermarketFunction ? 1 : 0;
- NSString *curveType = self.arguments[curveTypeIndex].constantValue;
- NSMutableArray *interpolationArray = [NSMutableArray arrayWithObject:curveType];
- if ([curveType isEqualToString:@"exponential"]) {
- id base = [self.arguments[curveTypeIndex + 1] mgl_jsonExpressionObject];
- [interpolationArray addObject:base];
- } else if ([curveType isEqualToString:@"cubic-bezier"]) {
- NSArray *controlPoints = [self.arguments[curveTypeIndex + 1].collection mgl_jsonExpressionObject];
- [interpolationArray addObjectsFromArray:controlPoints];
- }
-
- NSDictionary<NSNumber *, NSExpression *> *stops = self.arguments[curveTypeIndex + 2].constantValue;
-
- if (stops.count == 0) {
- [NSException raise:NSInvalidArgumentException format:@"‘stops’ dictionary argument to ‘%@’ function must not be empty.", self.function];
- }
-
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"interpolate", interpolationArray, nil];
- [expressionObject addObject:(isAftermarketFunction ? self.arguments.firstObject : self.operand).mgl_jsonExpressionObject];
- for (NSNumber *key in [stops.allKeys sortedArrayUsingSelector:@selector(compare:)]) {
- [expressionObject addObject:key];
- [expressionObject addObject:[stops[key] mgl_jsonExpressionObject]];
- }
- return expressionObject;
-}
-
-- (id)mgl_jsonStepExpressionObject {
- BOOL isAftermarketFunction = [self.function isEqualToString:@"mgl_step:from:stops:"];
- NSUInteger minimumIndex = isAftermarketFunction ? 1 : 0;
- id minimum = self.arguments[minimumIndex].mgl_jsonExpressionObject;
- NSDictionary<NSNumber *, NSExpression *> *stops = self.arguments[minimumIndex + 1].constantValue;
-
- if (stops.count == 0) {
- [NSException raise:NSInvalidArgumentException format:@"‘stops’ dictionary argument to ‘%@’ function must not be empty.", self.function];
- }
-
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"step", (isAftermarketFunction ? self.arguments.firstObject : self.operand).mgl_jsonExpressionObject, minimum, nil];
-
- for (NSNumber *key in [stops.allKeys sortedArrayUsingSelector:@selector(compare:)]) {
- [expressionObject addObject:key];
- [expressionObject addObject:[stops[key] mgl_jsonExpressionObject]];
- }
- return expressionObject;
-}
-
-- (id)mgl_jsonMatchExpressionObject {
- BOOL isAftermarketFunction = [self.function hasPrefix:@"MGL_MATCH"];
- NSUInteger minimumIndex = isAftermarketFunction ? 1 : 0;
-
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"match", (isAftermarketFunction ? self.arguments.firstObject : self.operand).mgl_jsonExpressionObject, nil];
- NSArray<NSExpression *> *arguments = isAftermarketFunction ? self.arguments : self.arguments[minimumIndex].constantValue;
-
- for (NSUInteger index = minimumIndex; index < arguments.count; index++) {
- NSArray *argumentObject = arguments[index].mgl_jsonExpressionObject;
- // match operators with arrays as matching values should not parse arrays using the literal operator.
- if (index > 0 && index < arguments.count - 1 && !(index % 2 == 0)) {
- NSExpression *expression = arguments[index];
- if (![expression isKindOfClass:[NSExpression class]]) {
- expression = [NSExpression expressionForConstantValue:expression];
- }
- if (expression.expressionType == NSAggregateExpressionType ||
- (expression.expressionType == NSConstantValueExpressionType && [expression.constantValue isKindOfClass:[NSArray class]])) {
- argumentObject = argumentObject.count == 2 ? argumentObject[1] : argumentObject;
- }
- }
- [expressionObject addObject:argumentObject];
- }
-
- return expressionObject;
-}
-
-- (id)mgl_jsonIfExpressionObject {
- BOOL isAftermarketFunction = [self.function hasPrefix:@"MGL_IF"];
- NSUInteger minimumIndex = isAftermarketFunction ? 1 : 0;
- NSExpression *firstCondition;
- id condition;
-
- if (isAftermarketFunction) {
- firstCondition = self.arguments.firstObject;
- } else {
- firstCondition = self.operand;
- }
-
- if ([firstCondition respondsToSelector:@selector(constantValue)] && [firstCondition.constantValue isKindOfClass:[NSComparisonPredicate class]]) {
- NSPredicate *predicate = (NSPredicate *)firstCondition.constantValue;
- condition = predicate.mgl_jsonExpressionObject;
- } else {
- condition = firstCondition.mgl_jsonExpressionObject;
- }
-
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"case", condition, nil];
- NSArray<NSExpression *> *arguments = isAftermarketFunction ? self.arguments : self.arguments[minimumIndex].constantValue;
-
- for (NSUInteger index = minimumIndex; index < arguments.count; index++) {
- if ([arguments[index] respondsToSelector:@selector(constantValue)] && [arguments[index].constantValue isKindOfClass:[NSComparisonPredicate class]]) {
- NSPredicate *predicate = (NSPredicate *)arguments[index].constantValue;
- [expressionObject addObject:predicate.mgl_jsonExpressionObject];
- } else {
- [expressionObject addObject:arguments[index].mgl_jsonExpressionObject];
- }
- }
-
- return expressionObject;
-}
-
-- (id)mgl_jsonCoalesceExpressionObject {
- BOOL isAftermarketFunction = [self.function isEqualToString:@"mgl_coalesce:"];
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"coalesce", nil];
-
- for (NSExpression *expression in (isAftermarketFunction ? self.arguments.firstObject : self.operand).constantValue) {
- [expressionObject addObject:[expression mgl_jsonExpressionObject]];
- }
-
- return expressionObject;
-}
-
-- (id)mgl_jsonHasExpressionObject {
- BOOL isAftermarketFunction = [self.function isEqualToString:@"mgl_does:have:"];
- NSExpression *operand = isAftermarketFunction ? self.arguments[0] : self.operand;
- NSExpression *key = self.arguments[isAftermarketFunction ? 1 : 0];
-
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"has", key.mgl_jsonExpressionObject, nil];
- if (operand.expressionType != NSEvaluatedObjectExpressionType) {
- [expressionObject addObject:operand.mgl_jsonExpressionObject];
- }
- return expressionObject;
-}
-
-- (id)mgl_jsonFormatExpressionObject {
- NSArray<NSExpression *> *attributedExpressions;
- NSExpression *formatArray = self.arguments.firstObject;
-
- if ([formatArray respondsToSelector:@selector(constantValue)] && [formatArray.constantValue isKindOfClass:[NSArray class]]) {
- attributedExpressions = (NSArray *)formatArray.constantValue;
- } else {
- attributedExpressions = self.arguments;
- }
-
- NSMutableArray *expressionObject = [NSMutableArray arrayWithObjects:@"format", nil];
-
- for (NSUInteger index = 0; index < attributedExpressions.count; index++) {
- [expressionObject addObjectsFromArray:attributedExpressions[index].mgl_jsonExpressionObject];
- }
-
- return expressionObject;
-}
-
-#pragma mark Localization
-
-/**
- Returns a localized copy of the given collection.
-
- If no localization takes place, this method returns the original collection.
- */
-NSArray<NSExpression *> *MGLLocalizedCollection(NSArray<NSExpression *> *collection, NSLocale * _Nullable locale) {
- __block NSMutableArray *localizedCollection;
- [collection enumerateObjectsUsingBlock:^(NSExpression * _Nonnull item, NSUInteger idx, BOOL * _Nonnull stop) {
- NSExpression *localizedItem = [item mgl_expressionLocalizedIntoLocale:locale];
- if (localizedItem != item) {
- if (!localizedCollection) {
- localizedCollection = [collection mutableCopy];
- }
- localizedCollection[idx] = localizedItem;
- }
- }];
- return localizedCollection ?: collection;
-};
-
-/**
- Returns a localized copy of the given stop dictionary.
-
- If no localization takes place, this method returns the original stop
- dictionary.
- */
-NSDictionary<NSNumber *, NSExpression *> *MGLLocalizedStopDictionary(NSDictionary<NSNumber *, NSExpression *> *stops, NSLocale * _Nullable locale) {
- __block NSMutableDictionary *localizedStops;
- [stops enumerateKeysAndObjectsUsingBlock:^(id _Nonnull zoomLevel, NSExpression * _Nonnull value, BOOL * _Nonnull stop) {
- if (![value isKindOfClass:[NSExpression class]]) {
- value = [NSExpression expressionForConstantValue:value];
- }
- NSExpression *localizedValue = [value mgl_expressionLocalizedIntoLocale:locale];
- if (localizedValue != value) {
- if (!localizedStops) {
- localizedStops = [stops mutableCopy];
- }
- localizedStops[zoomLevel] = localizedValue;
- }
- }];
- return localizedStops ?: stops;
-};
-
-- (NSExpression *)mgl_expressionLocalizedIntoLocale:(nullable NSLocale *)locale {
- switch (self.expressionType) {
- case NSConstantValueExpressionType: {
- if ([self.constantValue isKindOfClass:[NSDictionary class]]) {
- NSDictionary *localizedStops = MGLLocalizedStopDictionary(self.constantValue, locale);
- if (localizedStops != self.constantValue) {
- return [NSExpression expressionForConstantValue:localizedStops];
- }
- } else if ([self.constantValue isKindOfClass:[NSArray class]]) {
- NSArray *localizedValues = MGLLocalizedCollection(self.constantValue, locale);
- if (localizedValues != self.constantValue) {
- return [NSExpression expressionForConstantValue:localizedValues];
- }
- } else if ([self.constantValue isKindOfClass:[MGLAttributedExpression class]]) {
- MGLAttributedExpression *attributedExpression = (MGLAttributedExpression *)self.constantValue;
- NSExpression *localizedExpression = [attributedExpression.expression mgl_expressionLocalizedIntoLocale:locale];
- MGLAttributedExpression *localizedAttributedExpression = [MGLAttributedExpression attributedExpression:localizedExpression attributes:attributedExpression.attributes];
-
- return [NSExpression expressionForConstantValue:localizedAttributedExpression];
- }
- return self;
- }
-
- case NSKeyPathExpressionType: {
- if ([self.keyPath isEqualToString:@"name"] || [self.keyPath hasPrefix:@"name_"]) {
- NSString *localizedKeyPath = @"name";
- if (![locale.localeIdentifier isEqualToString:@"mul"]) {
- NSArray *preferences = locale ? @[locale.localeIdentifier] : [NSLocale preferredLanguages];
- NSString *preferredLanguage = [MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences];
- if (preferredLanguage) {
- localizedKeyPath = [NSString stringWithFormat:@"name_%@", preferredLanguage];
- }
- }
- // If the keypath is `name`, no need to fallback
- if ([localizedKeyPath isEqualToString:@"name"]) {
- return [NSExpression expressionForKeyPath:localizedKeyPath];
- }
- // If the keypath is `name_zh-Hans`, fallback to `name_zh` to `name`.
- // CN tiles might using `name_zh-CN` for Simplified Chinese.
- if ([localizedKeyPath isEqualToString:@"name_zh-Hans"]) {
- return [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K, %K, %K})",
- localizedKeyPath, @"name_zh-CN", @"name_zh", @"name"];
- }
- // Mapbox Streets v8 has `name_zh-Hant`, we should fallback to Simplified Chinese if the field has no value.
- if ([localizedKeyPath isEqualToString:@"name_zh-Hant"]) {
- return [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K, %K, %K, %K})",
- localizedKeyPath, @"name_zh-Hans", @"name_zh-CN", @"name_zh", @"name"];
- }
-
- // Other keypath fallback to `name`
- return [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", localizedKeyPath, @"name"];
- }
- return self;
- }
-
- case NSFunctionExpressionType: {
- NSExpression *operand = self.operand;
- NSExpression *localizedOperand = [operand mgl_expressionLocalizedIntoLocale:locale];
-
- NSArray *arguments = self.arguments;
- NSArray *localizedArguments = MGLLocalizedCollection(arguments, locale);
- if (localizedArguments != arguments) {
- return [NSExpression expressionForFunction:localizedOperand
- selectorName:self.function
- arguments:localizedArguments];
- }
- if (localizedOperand != operand) {
- return [NSExpression expressionForFunction:localizedOperand
- selectorName:self.function
- arguments:self.arguments];
- }
- return self;
- }
-
- case NSConditionalExpressionType: {
- NSExpression *trueExpression = self.trueExpression;
- NSExpression *localizedTrueExpression = [trueExpression mgl_expressionLocalizedIntoLocale:locale];
- NSExpression *falseExpression = self.falseExpression;
- NSExpression *localizedFalseExpression = [falseExpression mgl_expressionLocalizedIntoLocale:locale];
- if (localizedTrueExpression != trueExpression || localizedFalseExpression != falseExpression) {
- return [NSExpression expressionForConditional:self.predicate
- trueExpression:localizedTrueExpression
- falseExpression:localizedFalseExpression];
- }
- return self;
- }
-
- case NSAggregateExpressionType: {
- NSArray *collection = self.collection;
- if ([collection isKindOfClass:[NSArray class]]) {
- NSArray *localizedCollection = MGLLocalizedCollection(collection, locale);
- if (localizedCollection != collection) {
- return [NSExpression expressionForAggregate:localizedCollection];
- }
- }
- return self;
- }
-
- default:
- return self;
- }
-}
-
-@end
diff --git a/platform/darwin/src/NSExpression+MGLPrivateAdditions.h b/platform/darwin/src/NSExpression+MGLPrivateAdditions.h
deleted file mode 100644
index 54bc9068f4..0000000000
--- a/platform/darwin/src/NSExpression+MGLPrivateAdditions.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#import <Foundation/Foundation.h>
-#if TARGET_OS_IPHONE
- #import <UIKit/UIKit.h>
-#else
- #import <Cocoa/Cocoa.h>
-#endif
-
-#import "NSExpression+MGLAdditions.h"
-
-#include <mbgl/style/filter.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface NSObject (MGLExpressionAdditions)
-
-- (nullable NSNumber *)mgl_number;
-- (nullable NSNumber *)mgl_numberWithFallbackValues:(id)fallbackValue, ... NS_REQUIRES_NIL_TERMINATION;
-
-@end
-
-@interface NSExpression (MGLPrivateAdditions)
-
-@property (nonatomic, readonly) mbgl::Value mgl_constantMBGLValue;
-@property (nonatomic, readonly) std::vector<mbgl::Value> mgl_aggregateMBGLValue;
-@property (nonatomic, readonly) mbgl::FeatureType mgl_featureType;
-@property (nonatomic, readonly) std::vector<mbgl::FeatureType> mgl_aggregateFeatureType;
-@property (nonatomic, readonly) mbgl::FeatureIdentifier mgl_featureIdentifier;
-@property (nonatomic, readonly) std::vector<mbgl::FeatureIdentifier> mgl_aggregateFeatureIdentifier;
-
-@end
-
-@interface NSNull (MGLExpressionAdditions)
-
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-@end
-
-@interface NSString (MGLExpressionAdditions)
-
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-@end
-
-@interface NSNumber (MGLExpressionAdditions)
-
-- (id)mgl_interpolateWithCurveType:(NSString *)curveType parameters:(NSArray *)parameters stops:(NSDictionary<NSNumber *, id> *)stops;
-- (id)mgl_stepWithMinimum:(id)minimum stops:(NSDictionary<NSNumber *, id> *)stops;
-
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-@end
-
-@interface NSArray (MGLExpressionAdditions)
-
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-@end
-
-@interface NSDictionary (MGLExpressionAdditions)
-
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-- (id)mgl_has:(id)element;
-
-@end
-
-@interface MGLColor (MGLExpressionAdditions)
-
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-@end
-
-@interface NSExpression (MGLExpressionAdditions)
-
-- (NSExpression *)mgl_expressionWithContext:(NSDictionary<NSString *, NSExpression *> *)context;
-
-
-- (id)mgl_has:(id)element;
-
-@end
-
-FOUNDATION_EXTERN NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects);
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSPredicate+MGLAdditions.h b/platform/darwin/src/NSPredicate+MGLAdditions.h
deleted file mode 100644
index 6c4b878d37..0000000000
--- a/platform/darwin/src/NSPredicate+MGLAdditions.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface NSPredicate (MGLAdditions)
-
-#pragma mark Converting JSON Expressions
-
-/**
- Returns a predicate equivalent to the given Foundation object deserialized
- from JSON data.
-
- The Foundation object is interpreted according to the
- [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions).
- See the
- “[Predicates and Expressions](../predicates-and-expressions.html)”
- guide for a correspondence of operators and types between the style
- specification and the `NSPredicate` representation used by this SDK.
-
- @param object A Foundation object deserialized from JSON data, for example
- using `NSJSONSerialization`.
- @return An initialized predicate equivalent to `object`, suitable for use
- with the `MGLVectorStyleLayer.predicate` property.
- */
-+ (instancetype)predicateWithMGLJSONObject:(id)object NS_SWIFT_NAME(init(mglJSONObject:));
-
-/**
- An equivalent Foundation object that can be serialized as JSON.
-
- The Foundation object conforms to the
- [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions).
- See the
- “[Predicates and Expressions](../predicates-and-expressions.html)”
- guide for a correspondence of operators and types between the style
- specification and the `NSPredicate` representation used by this SDK.
-
- You can use `NSJSONSerialization` to serialize the Foundation object as data to
- write to a file.
- */
-@property (nonatomic, readonly) id mgl_jsonExpressionObject;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSPredicate+MGLAdditions.mm b/platform/darwin/src/NSPredicate+MGLAdditions.mm
deleted file mode 100644
index 436402c9e0..0000000000
--- a/platform/darwin/src/NSPredicate+MGLAdditions.mm
+++ /dev/null
@@ -1,220 +0,0 @@
-#import "NSPredicate+MGLPrivateAdditions.h"
-
-#import "MGLValueEvaluator.h"
-#import "MGLStyleValue_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#include <mbgl/style/conversion/filter.hpp>
-
-@implementation NSPredicate (MGLPrivateAdditions)
-
-- (mbgl::style::Filter)mgl_filter
-{
- mbgl::style::conversion::Error valueError;
- NSArray *jsonObject = self.mgl_jsonExpressionObject;
- auto value = mbgl::style::conversion::convert<mbgl::style::Filter>(mbgl::style::conversion::makeConvertible(jsonObject), valueError);
-
- if (!value) {
- [NSException raise:NSInvalidArgumentException
- format:@"Invalid filter value: %@", @(valueError.message.c_str())];
- return {};
- }
- mbgl::style::Filter filter = std::move(*value);
-
- return filter;
-}
-
-+ (instancetype)mgl_predicateWithFilter:(mbgl::style::Filter)filter
-{
- if (filter.expression) {
- id jsonObject = MGLJSONObjectFromMBGLExpression(**filter.expression);
- return [NSPredicate predicateWithMGLJSONObject:jsonObject];
- } else {
- return nil;
- }
-}
-
-@end
-
-@implementation NSPredicate (MGLAdditions)
-
-NSArray *MGLSubpredicatesWithJSONObjects(NSArray *objects) {
- NSMutableArray *subpredicates = [NSMutableArray arrayWithCapacity:objects.count];
- for (id object in objects) {
- NSPredicate *predicate = [NSPredicate predicateWithMGLJSONObject:object];
- [subpredicates addObject:predicate];
- }
- return subpredicates;
-}
-
-static NSDictionary * const MGLPredicateOperatorTypesByJSONOperator = @{
- @"==": @(NSEqualToPredicateOperatorType),
- @"!=": @(NSNotEqualToPredicateOperatorType),
- @"<": @(NSLessThanPredicateOperatorType),
- @"<=": @(NSLessThanOrEqualToPredicateOperatorType),
- @">": @(NSGreaterThanPredicateOperatorType),
- @">=": @(NSGreaterThanOrEqualToPredicateOperatorType),
-};
-
-+ (instancetype)predicateWithMGLJSONObject:(id)object {
- if ([object isEqual:@YES]) {
- return [NSPredicate predicateWithValue:YES];
- }
- if ([object isEqual:@NO]) {
- return [NSPredicate predicateWithValue:NO];
- }
-
- MGLAssert([object isKindOfClass:[NSArray class]], @"Condition for case expression should be an expression.");
- NSArray *objects = (NSArray *)object;
- NSString *op = objects.firstObject;
-
- NSNumber *operatorTypeNumber = MGLPredicateOperatorTypesByJSONOperator[op];
- if (operatorTypeNumber) {
- NSPredicateOperatorType operatorType = (NSPredicateOperatorType)[operatorTypeNumber unsignedIntegerValue];
-
- NSComparisonPredicateOptions options = 0;
- if (objects.count > 3) {
- NSArray *collatorExpression = objects[3];
- MGLCAssert([collatorExpression isKindOfClass:[NSArray class]], @"Collators must be dictionaries.");
- MGLCAssert(collatorExpression.count == 2, @"Malformed collator expression");
- NSDictionary *collator = collatorExpression[1];
- MGLCAssert([collator isKindOfClass:[NSDictionary class]], @"Malformed collator in collator expression");
-
- // Predicate options can’t express specific locales as collators can.
- if (!collator[@"locale"]) {
- if ([(collator[@"case-sensitive"] ?: @YES) isEqual:@NO]) {
- options |= NSCaseInsensitivePredicateOption;
- }
- if ([(collator[@"diacritic-sensitive"] ?: @YES) isEqual:@NO]) {
- options |= NSDiacriticInsensitivePredicateOption;
- }
- }
- }
-
- NSArray *subexpressions = MGLSubexpressionsWithJSONObjects([objects subarrayWithRange:NSMakeRange(1, objects.count - 1)]);
- return [NSComparisonPredicate predicateWithLeftExpression:subexpressions[0]
- rightExpression:subexpressions[1]
- modifier:NSDirectPredicateModifier
- type:operatorType
- options:options];
- }
-
- if ([op isEqualToString:@"!"]) {
- NSArray *subpredicates = MGLSubpredicatesWithJSONObjects([objects subarrayWithRange:NSMakeRange(1, objects.count - 1)]);
- if (subpredicates.count > 1) {
- NSCompoundPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:subpredicates];
- return [NSCompoundPredicate notPredicateWithSubpredicate:predicate];
- }
- if (subpredicates.count) {
- return [NSCompoundPredicate notPredicateWithSubpredicate:subpredicates.firstObject];
- }
- return [NSPredicate predicateWithValue:YES];
- }
- if ([op isEqualToString:@"all"]) {
- NSArray<NSPredicate *> *subpredicates = MGLSubpredicatesWithJSONObjects([objects subarrayWithRange:NSMakeRange(1, objects.count - 1)]);
- if (subpredicates.count == 2) {
- // Determine if the expression is of BETWEEN type
- if ([subpredicates[0] isKindOfClass:[NSComparisonPredicate class]] &&
- [subpredicates[1] isKindOfClass:[NSComparisonPredicate class]]) {
- NSComparisonPredicate *leftCondition = (NSComparisonPredicate *)subpredicates[0];
- NSComparisonPredicate *rightCondition = (NSComparisonPredicate *)subpredicates[1];
-
- NSArray *limits;
- NSExpression *leftConditionExpression;
-
- if(leftCondition.predicateOperatorType == NSGreaterThanOrEqualToPredicateOperatorType &&
- rightCondition.predicateOperatorType == NSLessThanOrEqualToPredicateOperatorType) {
- limits = @[leftCondition.rightExpression, rightCondition.rightExpression];
- leftConditionExpression = leftCondition.leftExpression;
-
- } else if (leftCondition.predicateOperatorType == NSLessThanOrEqualToPredicateOperatorType &&
- rightCondition.predicateOperatorType == NSLessThanOrEqualToPredicateOperatorType) {
- limits = @[leftCondition.leftExpression, rightCondition.rightExpression];
- leftConditionExpression = leftCondition.rightExpression;
-
- } else if(leftCondition.predicateOperatorType == NSLessThanOrEqualToPredicateOperatorType &&
- rightCondition.predicateOperatorType == NSGreaterThanOrEqualToPredicateOperatorType) {
- limits = @[leftCondition.leftExpression, rightCondition.leftExpression];
- leftConditionExpression = leftCondition.rightExpression;
-
- } else if(leftCondition.predicateOperatorType == NSGreaterThanOrEqualToPredicateOperatorType &&
- rightCondition.predicateOperatorType == NSGreaterThanOrEqualToPredicateOperatorType) {
- limits = @[leftCondition.rightExpression, rightCondition.leftExpression];
- leftConditionExpression = leftCondition.leftExpression;
- }
-
- if (limits && leftConditionExpression) {
- return [NSPredicate predicateWithFormat:@"%@ BETWEEN %@", leftConditionExpression, [NSExpression expressionForAggregate:limits]];
- }
- }
- }
- return [NSCompoundPredicate andPredicateWithSubpredicates:subpredicates];
- }
- if ([op isEqualToString:@"any"]) {
- NSArray *subpredicates = MGLSubpredicatesWithJSONObjects([objects subarrayWithRange:NSMakeRange(1, objects.count - 1)]);
- return [NSCompoundPredicate orPredicateWithSubpredicates:subpredicates];
- }
-
- NSExpression *expression = [NSExpression expressionWithMGLJSONObject:object];
- return [NSComparisonPredicate predicateWithLeftExpression:expression
- rightExpression:[NSExpression expressionForConstantValue:@YES]
- modifier:NSDirectPredicateModifier
- type:NSEqualToPredicateOperatorType
- options:0];
-
-}
-
-- (id)mgl_jsonExpressionObject {
- if ([self isEqual:[NSPredicate predicateWithValue:YES]]) {
- return @YES;
- }
- if ([self isEqual:[NSPredicate predicateWithValue:NO]]) {
- return @NO;
- }
-
- if ([self.predicateFormat hasPrefix:@"BLOCKPREDICATE("]) {
- [NSException raise:NSInvalidArgumentException
- format:@"Block-based predicates are not supported."];
- }
-
- [NSException raise:NSInvalidArgumentException
- format:@"Unrecognized predicate type."];
- return nil;
-}
-
-@end
-
-@implementation NSPredicate (MGLExpressionAdditions)
-
-- (id)mgl_if:(id)firstValue, ... {
-
- if ([self evaluateWithObject:nil]) {
- return firstValue;
- }
-
- id eachExpression;
- va_list argumentList;
- va_start(argumentList, firstValue);
-
- while ((eachExpression = va_arg(argumentList, id))) {
- if ([eachExpression isKindOfClass:[NSComparisonPredicate class]]) {
- id valueExpression = va_arg(argumentList, id);
- if ([eachExpression evaluateWithObject:nil]) {
- return valueExpression;
- }
- } else {
- return eachExpression;
- }
- }
- va_end(argumentList);
-
- return nil;
-}
-
-- (id)mgl_match:(NSExpression *)firstCase, ... {
- [NSException raise:NSInvalidArgumentException
- format:@"Match expressions lack underlying Objective-C implementations."];
- return nil;
-}
-
-@end
diff --git a/platform/darwin/src/NSPredicate+MGLPrivateAdditions.h b/platform/darwin/src/NSPredicate+MGLPrivateAdditions.h
deleted file mode 100644
index 051a2775a1..0000000000
--- a/platform/darwin/src/NSPredicate+MGLPrivateAdditions.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "NSPredicate+MGLAdditions.h"
-
-#include <mbgl/style/filter.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface NSPredicate (MGLPrivateAdditions)
-
-- (mbgl::style::Filter)mgl_filter;
-
-+ (nullable instancetype)mgl_predicateWithFilter:(mbgl::style::Filter)filter;
-
-@end
-
-@interface NSPredicate (MGLExpressionAdditions)
-
-- (nullable id)mgl_if:(id)firstValue, ...;
-
-- (nullable id)mgl_match:(NSExpression *)firstCase, ...;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSString+MGLAdditions.h b/platform/darwin/src/NSString+MGLAdditions.h
deleted file mode 100644
index 4888c7a00f..0000000000
--- a/platform/darwin/src/NSString+MGLAdditions.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface NSString (MGLAdditions)
-
-/** Returns the range spanning the entire receiver. */
-- (NSRange)mgl_wholeRange;
-
-/** Returns the receiver if non-empty or nil if empty. */
-- (nullable NSString *)mgl_stringOrNilIfEmpty;
-
-/**
- Returns a title-cased representation of the receiver using the specified
- locale.
-
- @param locale The locale. For strings presented to users, pass in the current
- locale (`+[NSLocale currentLocale]`). To use the system locale, pass in
- `nil`.
- */
-- (NSString *)mgl_titleCasedStringWithLocale:(NSLocale *)locale;
-
-/**
- Returns a transliterated representation of the receiver using the specified
- script. If transliteration fails, the receiver will be returned.
-
- Only supports scripts for languages used by Mapbox Streets.
-
- @param script The four-letter code representing the name of the script, as
- specified by ISO 15924.
- */
-- (NSString *)mgl_stringByTransliteratingIntoScript:(NSString *)script;
-
-@end
-
-@interface NSAttributedString (MGLAdditions)
-
-/** Returns the range spanning the entire receiver. */
-- (NSRange)mgl_wholeRange;
-
-/** Returns a copy of the receiver with leading and trailing members of the given set removed. */
-- (NSAttributedString *)mgl_attributedStringByTrimmingCharactersInSet:(NSCharacterSet *)set;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSString+MGLAdditions.m b/platform/darwin/src/NSString+MGLAdditions.m
deleted file mode 100644
index d452d56678..0000000000
--- a/platform/darwin/src/NSString+MGLAdditions.m
+++ /dev/null
@@ -1,82 +0,0 @@
-#import "NSString+MGLAdditions.h"
-
-#if TARGET_OS_OSX
- #import <Availability.h>
-#endif
-
-@implementation NSString (MGLAdditions)
-
-- (NSRange)mgl_wholeRange {
- return NSMakeRange(0, self.length);
-}
-
-- (nullable NSString *)mgl_stringOrNilIfEmpty {
- return self.length ? self : nil;
-}
-
-- (NSString *)mgl_titleCasedStringWithLocale:(NSLocale *)locale {
- NSMutableString *string = self.mutableCopy;
- NSOrthography *orthography;
- if (@available(iOS 11.0, macOS 10.13.0, *)) {
- orthography = [NSOrthography defaultOrthographyForLanguage:locale.localeIdentifier];
- }
- [string enumerateLinguisticTagsInRange:string.mgl_wholeRange scheme:NSLinguisticTagSchemeLexicalClass options:0 orthography:orthography usingBlock:^(NSString * _Nonnull tag, NSRange tokenRange, NSRange sentenceRange, BOOL * _Nonnull stop) {
- NSString *word = [string substringWithRange:tokenRange];
- if (word.length > 3
- || !([tag isEqualToString:NSLinguisticTagConjunction]
- || [tag isEqualToString:NSLinguisticTagPreposition]
- || [tag isEqualToString:NSLinguisticTagDeterminer]
- || [tag isEqualToString:NSLinguisticTagParticle]
- || [tag isEqualToString:NSLinguisticTagClassifier])) {
- unichar firstLetter = [[word capitalizedStringWithLocale:locale] characterAtIndex:0];
- NSString *suffix = [word substringFromIndex:1];
- if (!([word hasPrefix:@"i"] && suffix.length
- && [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[suffix characterAtIndex:0]])) {
- word = [NSString stringWithFormat:@"%C%@", firstLetter, suffix];
- }
- }
- [string replaceCharactersInRange:tokenRange withString:word];
- }];
- return string;
-}
-
-- (NSString *)mgl_stringByTransliteratingIntoScript:(NSString *)script {
- NSMutableString *string = self.mutableCopy;
- NSStringTransform transform;
- if ([script isEqualToString:@"Latn"]) {
- transform = NSStringTransformToLatin;
- } else if ([script isEqualToString:@"Hans"]) {
- transform = @"Hant-Hans";
- } else if ([script isEqualToString:@"Hant"]) {
- transform = @"Hans-Hant";
- } else if ([script isEqualToString:@"Cyrl"]) {
- transform = @"Any-Latin; Latin-Cyrillic";
- } else if ([script isEqualToString:@"Arab"]) {
- transform = @"Any-Latin; Latin-Arabic";
- } else if ([script isEqualToString:@"Jpan"]) {
- transform = @"Any-Latin; Latin-Katakana";
- } else if ([script isEqualToString:@"Kore"]) {
- transform = @"Any-Latin; Latin-Hangul";
- }
- return transform ? [string stringByApplyingTransform:transform reverse:NO] : string;
-}
-
-@end
-
-@implementation NSAttributedString (MGLAdditions)
-
-- (NSRange)mgl_wholeRange {
- return NSMakeRange(0, self.length);
-}
-
-- (NSAttributedString *)mgl_attributedStringByTrimmingCharactersInSet:(NSCharacterSet *)set {
- NSScanner *scanner = [NSScanner scannerWithString:self.string];
- scanner.charactersToBeSkipped = nil;
- NSString *prefix;
- [scanner scanCharactersFromSet:set intoString:&prefix];
-
- NSString *trimmedString = [self.string stringByTrimmingCharactersInSet:set];
- return [self attributedSubstringFromRange:NSMakeRange(prefix.length, trimmedString.length)];
-}
-
-@end
diff --git a/platform/darwin/src/NSURL+MGLAdditions.h b/platform/darwin/src/NSURL+MGLAdditions.h
deleted file mode 100644
index 9845a180db..0000000000
--- a/platform/darwin/src/NSURL+MGLAdditions.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface NSURL (MGLAdditions)
-
-/**
- Returns the given URL, modified if necessary to use the asset: URL scheme
- expected by mbgl for local requests.
- */
-- (nullable NSURL *)mgl_URLByStandardizingScheme;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSURL+MGLAdditions.m b/platform/darwin/src/NSURL+MGLAdditions.m
deleted file mode 100644
index 09fdd5c880..0000000000
--- a/platform/darwin/src/NSURL+MGLAdditions.m
+++ /dev/null
@@ -1,14 +0,0 @@
-#import "NSURL+MGLAdditions.h"
-
-@implementation NSURL (MGLAdditions)
-
-- (nullable NSURL *)mgl_URLByStandardizingScheme {
- if (!self.scheme) {
- // Relative file URL, already escaped (in order to create the NSURL).
- // Assume a relative path into the application’s resource folder.
- return [NSURL URLWithString:[@"asset://" stringByAppendingString:self.absoluteString]];
- }
- return self;
-}
-
-@end
diff --git a/platform/darwin/src/NSValue+MGLAdditions.h b/platform/darwin/src/NSValue+MGLAdditions.h
deleted file mode 100644
index 9222f04620..0000000000
--- a/platform/darwin/src/NSValue+MGLAdditions.h
+++ /dev/null
@@ -1,148 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLGeometry.h"
-#import "MGLLight.h"
-#import "MGLOfflinePack.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Methods for round-tripping values for Mapbox-defined types.
- */
-@interface NSValue (MGLAdditions)
-
-#pragma mark Working with Geographic Coordinate Values
-
-/**
- Creates a new value object containing the specified Core Location geographic
- coordinate structure.
-
- @param coordinate The value for the new object.
- @return A new value object that contains the geographic coordinate information.
- */
-+ (instancetype)valueWithMGLCoordinate:(CLLocationCoordinate2D)coordinate;
-
-/**
- The Core Location geographic coordinate structure representation of the value.
- */
-@property (readonly) CLLocationCoordinate2D MGLCoordinateValue;
-
-/**
- Creates a new value object containing the specified Mapbox map point structure.
-
- @param point The value for the new object.
- @return A new value object that contains the coordinate and zoom level information.
- */
-+ (instancetype)valueWithMGLMapPoint:(MGLMapPoint)point;
-
-/**
- The Mapbox map point structure representation of the value.
- */
-@property (readonly) MGLMapPoint MGLMapPointValue;
-
-/**
- Creates a new value object containing the specified Mapbox coordinate span
- structure.
-
- @param span The value for the new object.
- @return A new value object that contains the coordinate span information.
- */
-+ (instancetype)valueWithMGLCoordinateSpan:(MGLCoordinateSpan)span;
-
-/**
- The Mapbox coordinate span structure representation of the value.
- */
-@property (readonly) MGLCoordinateSpan MGLCoordinateSpanValue;
-
-/**
- Creates a new value object containing the specified Mapbox coordinate bounds
- structure.
-
- @param bounds The value for the new object.
- @return A new value object that contains the coordinate bounds information.
- */
-+ (instancetype)valueWithMGLCoordinateBounds:(MGLCoordinateBounds)bounds;
-
-/**
- The Mapbox coordinate bounds structure representation of the value.
- */
-@property (readonly) MGLCoordinateBounds MGLCoordinateBoundsValue;
-
-/**
- Creates a new value object containing the specified Mapbox coordinate
- quad structure.
-
- @param quad The value for the new object.
- @return A new value object that contains the coordinate quad information.
- */
-+ (instancetype)valueWithMGLCoordinateQuad:(MGLCoordinateQuad)quad;
-
-/**
- The Mapbox coordinate quad structure representation of the value.
- */
-- (MGLCoordinateQuad)MGLCoordinateQuadValue;
-
-#pragma mark Working with Offline Map Values
-
-/**
- Creates a new value object containing the given `MGLOfflinePackProgress`
- structure.
-
- @param progress The value for the new object.
- @return A new value object that contains the offline pack progress information.
- */
-+ (NSValue *)valueWithMGLOfflinePackProgress:(MGLOfflinePackProgress)progress;
-
-/**
- The `MGLOfflinePackProgress` structure representation of the value.
- */
-@property (readonly) MGLOfflinePackProgress MGLOfflinePackProgressValue;
-
-#pragma mark Working with Transition Values
-
-/**
- Creates a new value object containing the given `MGLTransition`
- structure.
-
- @param transition The value for the new object.
- @return A new value object that contains the transition information.
- */
-+ (NSValue *)valueWithMGLTransition:(MGLTransition)transition;
-
-/**
- The `MGLTransition` structure representation of the value.
- */
-@property (readonly) MGLTransition MGLTransitionValue;
-
-/**
- Creates a new value object containing the given `MGLSphericalPosition`
- structure.
-
- @param lightPosition The value for the new object.
- @return A new value object that contains the light position information.
- */
-+ (instancetype)valueWithMGLSphericalPosition:(MGLSphericalPosition)lightPosition;
-
-/**
- The `MGLSphericalPosition` structure representation of the value.
- */
-@property (readonly) MGLSphericalPosition MGLSphericalPositionValue;
-
-/**
- Creates a new value object containing the given `MGLLightAnchor`
- enum.
-
- @param lightAnchor The value for the new object.
- @return A new value object that contains the light anchor information.
- */
-+ (NSValue *)valueWithMGLLightAnchor:(MGLLightAnchor)lightAnchor;
-
-/**
- The `MGLLightAnchor` enum representation of the value.
- */
-@property (readonly) MGLLightAnchor MGLLightAnchorValue;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/NSValue+MGLAdditions.m b/platform/darwin/src/NSValue+MGLAdditions.m
deleted file mode 100644
index 8f12066cc3..0000000000
--- a/platform/darwin/src/NSValue+MGLAdditions.m
+++ /dev/null
@@ -1,104 +0,0 @@
-#import "NSValue+MGLAdditions.h"
-
-@implementation NSValue (MGLAdditions)
-
-#pragma mark Geometry
-
-+ (instancetype)valueWithMGLCoordinate:(CLLocationCoordinate2D)coordinate {
- return [self valueWithBytes:&coordinate objCType:@encode(CLLocationCoordinate2D)];
-}
-
-- (CLLocationCoordinate2D)MGLCoordinateValue {
- CLLocationCoordinate2D coordinate;
- [self getValue:&coordinate];
- return coordinate;
-}
-
-+ (instancetype)valueWithMGLMapPoint:(MGLMapPoint)point {
- return [self valueWithBytes:&point objCType:@encode(MGLMapPoint)];
-}
-
--(MGLMapPoint) MGLMapPointValue {
- MGLMapPoint point;
- [self getValue:&point];
- return point;
-}
-
-+ (instancetype)valueWithMGLCoordinateSpan:(MGLCoordinateSpan)span {
- return [self valueWithBytes:&span objCType:@encode(MGLCoordinateSpan)];
-}
-
-- (MGLCoordinateSpan)MGLCoordinateSpanValue {
- MGLCoordinateSpan span;
- [self getValue:&span];
- return span;
-}
-
-+ (instancetype)valueWithMGLCoordinateBounds:(MGLCoordinateBounds)bounds {
- return [self valueWithBytes:&bounds objCType:@encode(MGLCoordinateBounds)];
-}
-
-- (MGLCoordinateBounds)MGLCoordinateBoundsValue {
- MGLCoordinateBounds bounds;
- [self getValue:&bounds];
- return bounds;
-}
-
-+ (instancetype)valueWithMGLCoordinateQuad:(MGLCoordinateQuad)quad {
- return [self valueWithBytes:&quad objCType:@encode(MGLCoordinateQuad)];
-}
-
-- (MGLCoordinateQuad)MGLCoordinateQuadValue {
- MGLCoordinateQuad quad;
- [self getValue:&quad];
- return quad;
-}
-
-#pragma mark Offline maps
-
-+ (NSValue *)valueWithMGLOfflinePackProgress:(MGLOfflinePackProgress)progress {
- return [NSValue value:&progress withObjCType:@encode(MGLOfflinePackProgress)];
-}
-
-- (MGLOfflinePackProgress)MGLOfflinePackProgressValue {
- MGLOfflinePackProgress progress;
- [self getValue:&progress];
- return progress;
-}
-
-#pragma mark Working with Transition Values
-
-+ (NSValue *)valueWithMGLTransition:(MGLTransition)transition {
- return [NSValue value:&transition withObjCType:@encode(MGLTransition)];
-}
-
-- (MGLTransition)MGLTransitionValue {
- MGLTransition transition;
- [self getValue:&transition];
- return transition;
-}
-
-+ (NSValue *)valueWithMGLSphericalPosition:(MGLSphericalPosition)lightPosition
-{
- return [NSValue value:&lightPosition withObjCType:@encode(MGLSphericalPosition)];
-}
-
-- (MGLSphericalPosition)MGLSphericalPositionValue
-{
- MGLSphericalPosition lightPosition;
- [self getValue:&lightPosition];
- return lightPosition;
-}
-
-+ (NSValue *)valueWithMGLLightAnchor:(MGLLightAnchor)lightAnchor {
- return [NSValue value:&lightAnchor withObjCType:@encode(MGLLightAnchor)];
-}
-
-- (MGLLightAnchor)MGLLightAnchorValue
-{
- MGLLightAnchor achorType;
- [self getValue:&achorType];
- return achorType;
-}
-
-@end
diff --git a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.h b/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.h
deleted file mode 100644
index 0f1e511694..0000000000
--- a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#include <array>
-
-@interface NSValue (MGLStyleAttributeAdditions)
-
-+ (instancetype)mgl_valueWithOffsetArray:(std::array<float, 2>)offsetArray;
-+ (instancetype)mgl_valueWithPaddingArray:(std::array<float, 4>)paddingArray;
-
-- (std::array<float, 2>)mgl_offsetArrayValue;
-- (std::array<float, 4>)mgl_paddingArrayValue;
-- (std::array<float, 3>)mgl_lightPositionArrayValue;
-
-@end
diff --git a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm b/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm
deleted file mode 100644
index aa3e003d04..0000000000
--- a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm
+++ /dev/null
@@ -1,76 +0,0 @@
-#import "NSValue+MGLStyleAttributeAdditions.h"
-#import "MGLLight.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLGeometry_Private.h"
-#if TARGET_OS_IPHONE
- #import <UIKit/UIKit.h>
-#endif
-
-@implementation NSValue (MGLStyleAttributeAdditions)
-
-+ (instancetype)mgl_valueWithOffsetArray:(std::array<float, 2>)offsetArray
-{
- CGVector vector = CGVectorMake(offsetArray[0], offsetArray[1]);
-#if !TARGET_OS_IPHONE
- // Style specification assumes an origin at the upper-left corner.
- // macOS defines an origin at the lower-left corner.
- vector.dy *= -1;
-#endif
- return [NSValue value:&vector withObjCType:@encode(CGVector)];
-}
-
-+ (instancetype)mgl_valueWithPaddingArray:(std::array<float, 4>)paddingArray
-{
- // Style specification defines padding in clockwise order: top, right, bottom, left.
- // Foundation defines padding in counterclockwise order: top, left, bottom, right.
- MGLEdgeInsets insets = {
- .top = paddingArray[0],
- .right = paddingArray[1],
- .bottom = paddingArray[2],
- .left = paddingArray[3],
- };
- return [NSValue value:&insets withObjCType:@encode(MGLEdgeInsets)];
-}
-
-- (std::array<float, 2>)mgl_offsetArrayValue
-{
- MGLAssert(strcmp(self.objCType, @encode(CGVector)) == 0, @"Value does not represent a CGVector");
- CGVector vector;
- [self getValue:&vector];
-#if !TARGET_OS_IPHONE
- vector.dy *= -1;
-#endif
- return {
- static_cast<float>(vector.dx),
- static_cast<float>(vector.dy),
- };
-}
-
-- (std::array<float, 4>)mgl_paddingArrayValue
-{
- MGLAssert(strcmp(self.objCType, @encode(MGLEdgeInsets)) == 0, @"Value does not represent an NSEdgeInsets/UIEdgeInsets");
- MGLEdgeInsets insets;
- [self getValue:&insets];
- // Style specification defines padding in clockwise order: top, right, bottom, left.
- return {
- static_cast<float>(insets.top),
- static_cast<float>(insets.right),
- static_cast<float>(insets.bottom),
- static_cast<float>(insets.left),
- };
-}
-
-- (std::array<float, 3>)mgl_lightPositionArrayValue
-{
- MGLAssert(strcmp(self.objCType, @encode(MGLSphericalPosition)) == 0, @"Value does not represent an MGLSphericalPosition");
- MGLSphericalPosition lightPosition;
- [self getValue:&lightPosition];
- // Style specification defines padding in clockwise order: top, right, bottom, left.
- return {
- static_cast<float>(lightPosition.radial),
- static_cast<float>(lightPosition.azimuthal),
- static_cast<float>(lightPosition.polar),
- };
-}
-
-@end
diff --git a/platform/darwin/test/MGLAttributionInfoTests.m b/platform/darwin/test/MGLAttributionInfoTests.m
deleted file mode 100644
index b6f053a8af..0000000000
--- a/platform/darwin/test/MGLAttributionInfoTests.m
+++ /dev/null
@@ -1,137 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "MGLAttributionInfo_Private.h"
-
-@interface MGLAttributionInfoTests : XCTestCase
-
-@end
-
-@implementation MGLAttributionInfoTests
-
-- (void)setUp {
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
-}
-
-- (void)tearDown {
- [MGLAccountManager setAccessToken:nil];
-}
-
-- (void)testParsing {
- static NSString * const htmlStrings[] = {
- @"<a href=\"https://www.mapbox.com/about/maps/\" target=\"_blank\">&copy; Mapbox</a> "
- @"<a href=\"http://www.openstreetmap.org/about/\" target=\"_blank\">©️ OpenStreetMap</a> "
- @"CC&nbsp;BY-SA "
- @"<a class=\"mapbox-improve-map\" href=\"https://apps.mapbox.com/feedback/\" target=\"_blank\">Improve this map</a>",
- };
-
- NSMutableArray<MGLAttributionInfo *> *infos = [NSMutableArray array];
- for (NSUInteger i = 0; i < sizeof(htmlStrings) / sizeof(htmlStrings[0]); i++) {
- NSArray *subinfos = [MGLAttributionInfo attributionInfosFromHTMLString:htmlStrings[i]
- fontSize:0
- linkColor:nil];
- [infos growArrayByAddingAttributionInfosFromArray:subinfos];
- }
-
- XCTAssertEqual(infos.count, 4);
-
- CLLocationCoordinate2D mapbox = CLLocationCoordinate2DMake(12.9810816, 77.6368034);
- XCTAssertEqualObjects(infos[0].title.string, @"© Mapbox");
- XCTAssertEqualObjects(infos[0].URL, [NSURL URLWithString:@"https://www.mapbox.com/about/maps/"]);
- XCTAssertFalse(infos[0].feedbackLink);
- XCTAssertNil([infos[0] feedbackURLAtCenterCoordinate:mapbox zoomLevel:14]);
-
- XCTAssertEqualObjects(infos[1].title.string, @"©️ OpenStreetMap");
- XCTAssertEqualObjects(infos[1].URL, [NSURL URLWithString:@"http://www.openstreetmap.org/about/"]);
- XCTAssertFalse(infos[1].feedbackLink);
- XCTAssertNil([infos[1] feedbackURLAtCenterCoordinate:mapbox zoomLevel:14]);
-
- XCTAssertEqualObjects(infos[2].title.string, @"CC\u00a0BY-SA");
- XCTAssertNil(infos[2].URL);
- XCTAssertFalse(infos[2].feedbackLink);
- XCTAssertNil([infos[2] feedbackURLAtCenterCoordinate:mapbox zoomLevel:14]);
-
- XCTAssertEqualObjects(infos[3].title.string, @"Improve this map");
- XCTAssertEqualObjects(infos[3].URL, [NSURL URLWithString:@"https://apps.mapbox.com/feedback/"]);
- XCTAssertTrue(infos[3].feedbackLink);
- NSURL *styleURL = [MGLStyle satelliteStreetsStyleURLWithVersion:99];
-
-#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 120200) || \
- (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101404)
- NSString *bundleId = @"com.apple.dt.xctest.tool";
-#else
- NSString *bundleId = @"com.mapbox.Mapbox";
-#endif
-
- NSString *urlString = [NSString stringWithFormat:@"https://apps.mapbox.com/feedback/?referrer=%@#/77.63680/12.98108/14.00/0.0/0", bundleId];
- XCTAssertEqualObjects([infos[3] feedbackURLAtCenterCoordinate:mapbox zoomLevel:14],
- [NSURL URLWithString:urlString]);
-
- urlString = [NSString stringWithFormat:@"https://apps.mapbox.com/feedback/?referrer=%@&owner=mapbox&id=satellite-streets-v99&access_token=pk.feedcafedeadbeefbadebede&map_sdk_version=1.0.0#/77.63680/12.98108/3.14/90.9/13", bundleId];
- XCTAssertEqualObjects([infos[3] feedbackURLForStyleURL:styleURL atCenterCoordinate:mapbox zoomLevel:3.14159 direction:90.9 pitch:12.5],
- [NSURL URLWithString:urlString]);
-}
-
-- (void)testStyle {
- static NSString * const htmlStrings[] = {
- @"<a href=\"https://www.mapbox.com/\">Mapbox</a>",
- };
-
- CGFloat fontSize = 72;
- MGLColor *color = [MGLColor redColor];
- NSMutableArray<MGLAttributionInfo *> *infos = [NSMutableArray array];
- for (NSUInteger i = 0; i < sizeof(htmlStrings) / sizeof(htmlStrings[0]); i++) {
- NSArray *subinfos = [MGLAttributionInfo attributionInfosFromHTMLString:htmlStrings[i]
- fontSize:72
- linkColor:color];
- [infos growArrayByAddingAttributionInfosFromArray:subinfos];
- }
-
- XCTAssertEqual(infos.count, 1);
-
- XCTAssertEqualObjects(infos[0].title.string, @"Mapbox");
- XCTAssertNil([infos[0].title attribute:NSLinkAttributeName atIndex:0 effectiveRange:nil]);
- XCTAssertEqualObjects([infos[0].title attribute:NSUnderlineStyleAttributeName atIndex:0 effectiveRange:nil], @(NSUnderlineStyleSingle));
-
-#if TARGET_OS_IPHONE
- UIFont *font;
-#else
- NSFont *font;
-#endif
- font = [infos[0].title attribute:NSFontAttributeName atIndex:0 effectiveRange:nil];
- XCTAssertEqual(font.pointSize, fontSize);
-
- CGFloat r, g, b, a;
- [color getRed:&r green:&g blue:&b alpha:&a];
- MGLColor *linkColor = [infos[0].title attribute:NSForegroundColorAttributeName atIndex:0 effectiveRange:nil];
- CGFloat linkR, linkG, linkB, linkA;
- [linkColor getRed:&linkR green:&linkG blue:&linkB alpha:&linkA];
- XCTAssertEqual(r, linkR);
- XCTAssertEqual(g, linkG);
- XCTAssertEqual(b, linkB);
- XCTAssertEqual(a, linkA);
-}
-
-- (void)testDedupe {
- static NSString * const htmlStrings[] = {
- @"World",
- @"Hello World",
- @"Another Source",
- @"Hello",
- @"Hello World",
- };
-
- NSMutableArray<MGLAttributionInfo *> *infos = [NSMutableArray array];
- for (NSUInteger i = 0; i < sizeof(htmlStrings) / sizeof(htmlStrings[0]); i++) {
- NSArray *subinfos = [MGLAttributionInfo attributionInfosFromHTMLString:htmlStrings[i]
- fontSize:0
- linkColor:nil];
- [infos growArrayByAddingAttributionInfosFromArray:subinfos];
- }
-
- XCTAssertEqual(infos.count, 2);
- XCTAssertEqualObjects(infos[0].title.string, @"Hello World");
- XCTAssertEqualObjects(infos[1].title.string, @"Another Source");
-}
-
-@end
diff --git a/platform/darwin/test/MGLBackgroundStyleLayerTests.mm b/platform/darwin/test/MGLBackgroundStyleLayerTests.mm
deleted file mode 100644
index 4617cff598..0000000000
--- a/platform/darwin/test/MGLBackgroundStyleLayerTests.mm
+++ /dev/null
@@ -1,197 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/background_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLBackgroundLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLBackgroundLayerTests
-
-+ (NSString *)layerType {
- return @"background";
-}
-
-- (void)testProperties {
- MGLBackgroundStyleLayer *layer = [[MGLBackgroundStyleLayer alloc] initWithIdentifier:@"layerID"];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"background");
- auto rawLayer = static_cast<mbgl::style::BackgroundLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // background-color
- {
- XCTAssertTrue(rawLayer->getBackgroundColor().isUndefined(),
- @"background-color should be unset initially.");
- NSExpression *defaultExpression = layer.backgroundColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.backgroundColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getBackgroundColor(), propertyValue,
- @"Setting backgroundColor to a constant value expression should update background-color.");
- XCTAssertEqualObjects(layer.backgroundColor, constantExpression,
- @"backgroundColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.backgroundColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getBackgroundColor(), propertyValue,
- @"Setting backgroundColor to a camera expression should update background-color.");
- XCTAssertEqualObjects(layer.backgroundColor, functionExpression,
- @"backgroundColor should round-trip camera expressions.");
-
-
- layer.backgroundColor = nil;
- XCTAssertTrue(rawLayer->getBackgroundColor().isUndefined(),
- @"Unsetting backgroundColor should return background-color to the default value.");
- XCTAssertEqualObjects(layer.backgroundColor, defaultExpression,
- @"backgroundColor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.backgroundColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLBackgroundLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.backgroundColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLBackgroundLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.backgroundColorTransition = transitionTest;
- auto toptions = rawLayer->getBackgroundColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition backgroundColorTransition = layer.backgroundColorTransition;
- XCTAssertEqual(backgroundColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(backgroundColorTransition.duration, transitionTest.duration);
- }
-
- // background-opacity
- {
- XCTAssertTrue(rawLayer->getBackgroundOpacity().isUndefined(),
- @"background-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.backgroundOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.backgroundOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getBackgroundOpacity(), propertyValue,
- @"Setting backgroundOpacity to a constant value expression should update background-opacity.");
- XCTAssertEqualObjects(layer.backgroundOpacity, constantExpression,
- @"backgroundOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.backgroundOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getBackgroundOpacity(), propertyValue,
- @"Setting backgroundOpacity to a camera expression should update background-opacity.");
- XCTAssertEqualObjects(layer.backgroundOpacity, functionExpression,
- @"backgroundOpacity should round-trip camera expressions.");
-
-
- layer.backgroundOpacity = nil;
- XCTAssertTrue(rawLayer->getBackgroundOpacity().isUndefined(),
- @"Unsetting backgroundOpacity should return background-opacity to the default value.");
- XCTAssertEqualObjects(layer.backgroundOpacity, defaultExpression,
- @"backgroundOpacity should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.backgroundOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLBackgroundLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.backgroundOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLBackgroundLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.backgroundOpacityTransition = transitionTest;
- auto toptions = rawLayer->getBackgroundOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition backgroundOpacityTransition = layer.backgroundOpacityTransition;
- XCTAssertEqual(backgroundOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(backgroundOpacityTransition.duration, transitionTest.duration);
- }
-
- // background-pattern
- {
- XCTAssertTrue(rawLayer->getBackgroundPattern().isUndefined(),
- @"background-pattern should be unset initially.");
- NSExpression *defaultExpression = layer.backgroundPattern;
-
- NSExpression *constantExpression = [NSExpression expressionForConstantValue:@"Background Pattern"];
- layer.backgroundPattern = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::expression::Image> propertyValue = { "Background Pattern" };
- XCTAssertEqual(rawLayer->getBackgroundPattern(), propertyValue,
- @"Setting backgroundPattern to a constant value expression should update background-pattern.");
- XCTAssertEqualObjects(layer.backgroundPattern, constantExpression,
- @"backgroundPattern should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('image', 'Background Pattern')"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.backgroundPattern = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Image>(
- step(zoom(), image(literal("Background Pattern")), 18.0, image(literal("Background Pattern")))
- );
- }
-
- XCTAssertEqual(rawLayer->getBackgroundPattern(), propertyValue,
- @"Setting backgroundPattern to a camera expression should update background-pattern.");
- XCTAssertEqualObjects(layer.backgroundPattern, functionExpression,
- @"backgroundPattern should round-trip camera expressions.");
-
-
- layer.backgroundPattern = nil;
- XCTAssertTrue(rawLayer->getBackgroundPattern().isUndefined(),
- @"Unsetting backgroundPattern should return background-pattern to the default value.");
- XCTAssertEqualObjects(layer.backgroundPattern, defaultExpression,
- @"backgroundPattern should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.backgroundPattern = functionExpression, NSException, NSInvalidArgumentException, @"MGLBackgroundLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.backgroundPattern = functionExpression, NSException, NSInvalidArgumentException, @"MGLBackgroundLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.backgroundPatternTransition = transitionTest;
- auto toptions = rawLayer->getBackgroundPatternTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition backgroundPatternTransition = layer.backgroundPatternTransition;
- XCTAssertEqual(backgroundPatternTransition.delay, transitionTest.delay);
- XCTAssertEqual(backgroundPatternTransition.duration, transitionTest.duration);
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"background-color" isBoolean:NO];
- [self testPropertyName:@"background-opacity" isBoolean:NO];
- [self testPropertyName:@"background-pattern" isBoolean:NO];
-}
-
-@end
diff --git a/platform/darwin/test/MGLCircleStyleLayerTests.mm b/platform/darwin/test/MGLCircleStyleLayerTests.mm
deleted file mode 100644
index 5f789f4faf..0000000000
--- a/platform/darwin/test/MGLCircleStyleLayerTests.mm
+++ /dev/null
@@ -1,804 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/circle_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLCircleLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLCircleLayerTests
-
-+ (NSString *)layerType {
- return @"circle";
-}
-
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLCircleStyleLayer *layer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLCircleStyleLayer *layer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"circle");
- auto rawLayer = static_cast<mbgl::style::CircleLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // circle-blur
- {
- XCTAssertTrue(rawLayer->getCircleBlur().isUndefined(),
- @"circle-blur should be unset initially.");
- NSExpression *defaultExpression = layer.circleBlur;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.circleBlur = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getCircleBlur(), propertyValue,
- @"Setting circleBlur to a constant value expression should update circle-blur.");
- XCTAssertEqualObjects(layer.circleBlur, constantExpression,
- @"circleBlur should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleBlur(), propertyValue,
- @"Setting circleBlur to a camera expression should update circle-blur.");
- XCTAssertEqualObjects(layer.circleBlur, functionExpression,
- @"circleBlur should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.circleBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleBlur(), propertyValue,
- @"Setting circleBlur to a data expression should update circle-blur.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.circleBlur, pedanticFunctionExpression,
- @"circleBlur should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.circleBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleBlur(), propertyValue,
- @"Setting circleBlur to a camera-data expression should update circle-blur.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.circleBlur, pedanticFunctionExpression,
- @"circleBlur should round-trip camera-data expressions.");
-
- layer.circleBlur = nil;
- XCTAssertTrue(rawLayer->getCircleBlur().isUndefined(),
- @"Unsetting circleBlur should return circle-blur to the default value.");
- XCTAssertEqualObjects(layer.circleBlur, defaultExpression,
- @"circleBlur should return the default value after being unset.");
- // Transition property test
- layer.circleBlurTransition = transitionTest;
- auto toptions = rawLayer->getCircleBlurTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition circleBlurTransition = layer.circleBlurTransition;
- XCTAssertEqual(circleBlurTransition.delay, transitionTest.delay);
- XCTAssertEqual(circleBlurTransition.duration, transitionTest.duration);
- }
-
- // circle-color
- {
- XCTAssertTrue(rawLayer->getCircleColor().isUndefined(),
- @"circle-color should be unset initially.");
- NSExpression *defaultExpression = layer.circleColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.circleColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getCircleColor(), propertyValue,
- @"Setting circleColor to a constant value expression should update circle-color.");
- XCTAssertEqualObjects(layer.circleColor, constantExpression,
- @"circleColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleColor(), propertyValue,
- @"Setting circleColor to a camera expression should update circle-color.");
- XCTAssertEqualObjects(layer.circleColor, functionExpression,
- @"circleColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.circleColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleColor(), propertyValue,
- @"Setting circleColor to a data expression should update circle-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.circleColor, pedanticFunctionExpression,
- @"circleColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.circleColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleColor(), propertyValue,
- @"Setting circleColor to a camera-data expression should update circle-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.circleColor, pedanticFunctionExpression,
- @"circleColor should round-trip camera-data expressions.");
-
- layer.circleColor = nil;
- XCTAssertTrue(rawLayer->getCircleColor().isUndefined(),
- @"Unsetting circleColor should return circle-color to the default value.");
- XCTAssertEqualObjects(layer.circleColor, defaultExpression,
- @"circleColor should return the default value after being unset.");
- // Transition property test
- layer.circleColorTransition = transitionTest;
- auto toptions = rawLayer->getCircleColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition circleColorTransition = layer.circleColorTransition;
- XCTAssertEqual(circleColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(circleColorTransition.duration, transitionTest.duration);
- }
-
- // circle-opacity
- {
- XCTAssertTrue(rawLayer->getCircleOpacity().isUndefined(),
- @"circle-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.circleOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.circleOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getCircleOpacity(), propertyValue,
- @"Setting circleOpacity to a constant value expression should update circle-opacity.");
- XCTAssertEqualObjects(layer.circleOpacity, constantExpression,
- @"circleOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleOpacity(), propertyValue,
- @"Setting circleOpacity to a camera expression should update circle-opacity.");
- XCTAssertEqualObjects(layer.circleOpacity, functionExpression,
- @"circleOpacity should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.circleOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleOpacity(), propertyValue,
- @"Setting circleOpacity to a data expression should update circle-opacity.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.circleOpacity, pedanticFunctionExpression,
- @"circleOpacity should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.circleOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleOpacity(), propertyValue,
- @"Setting circleOpacity to a camera-data expression should update circle-opacity.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.circleOpacity, pedanticFunctionExpression,
- @"circleOpacity should round-trip camera-data expressions.");
-
- layer.circleOpacity = nil;
- XCTAssertTrue(rawLayer->getCircleOpacity().isUndefined(),
- @"Unsetting circleOpacity should return circle-opacity to the default value.");
- XCTAssertEqualObjects(layer.circleOpacity, defaultExpression,
- @"circleOpacity should return the default value after being unset.");
- // Transition property test
- layer.circleOpacityTransition = transitionTest;
- auto toptions = rawLayer->getCircleOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition circleOpacityTransition = layer.circleOpacityTransition;
- XCTAssertEqual(circleOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(circleOpacityTransition.duration, transitionTest.duration);
- }
-
- // circle-pitch-alignment
- {
- XCTAssertTrue(rawLayer->getCirclePitchAlignment().isUndefined(),
- @"circle-pitch-alignment should be unset initially.");
- NSExpression *defaultExpression = layer.circlePitchAlignment;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.circlePitchAlignment = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::AlignmentType> propertyValue = { mbgl::style::AlignmentType::Viewport };
- XCTAssertEqual(rawLayer->getCirclePitchAlignment(), propertyValue,
- @"Setting circlePitchAlignment to a constant value expression should update circle-pitch-alignment.");
- XCTAssertEqualObjects(layer.circlePitchAlignment, constantExpression,
- @"circlePitchAlignment should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circlePitchAlignment = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::AlignmentType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getCirclePitchAlignment(), propertyValue,
- @"Setting circlePitchAlignment to a camera expression should update circle-pitch-alignment.");
- XCTAssertEqualObjects(layer.circlePitchAlignment, functionExpression,
- @"circlePitchAlignment should round-trip camera expressions.");
-
-
- layer.circlePitchAlignment = nil;
- XCTAssertTrue(rawLayer->getCirclePitchAlignment().isUndefined(),
- @"Unsetting circlePitchAlignment should return circle-pitch-alignment to the default value.");
- XCTAssertEqualObjects(layer.circlePitchAlignment, defaultExpression,
- @"circlePitchAlignment should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.circlePitchAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.circlePitchAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // circle-radius
- {
- XCTAssertTrue(rawLayer->getCircleRadius().isUndefined(),
- @"circle-radius should be unset initially.");
- NSExpression *defaultExpression = layer.circleRadius;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.circleRadius = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getCircleRadius(), propertyValue,
- @"Setting circleRadius to a constant value expression should update circle-radius.");
- XCTAssertEqualObjects(layer.circleRadius, constantExpression,
- @"circleRadius should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleRadius = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleRadius(), propertyValue,
- @"Setting circleRadius to a camera expression should update circle-radius.");
- XCTAssertEqualObjects(layer.circleRadius, functionExpression,
- @"circleRadius should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.circleRadius = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleRadius(), propertyValue,
- @"Setting circleRadius to a data expression should update circle-radius.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.circleRadius, pedanticFunctionExpression,
- @"circleRadius should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.circleRadius = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleRadius(), propertyValue,
- @"Setting circleRadius to a camera-data expression should update circle-radius.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.circleRadius, pedanticFunctionExpression,
- @"circleRadius should round-trip camera-data expressions.");
-
- layer.circleRadius = nil;
- XCTAssertTrue(rawLayer->getCircleRadius().isUndefined(),
- @"Unsetting circleRadius should return circle-radius to the default value.");
- XCTAssertEqualObjects(layer.circleRadius, defaultExpression,
- @"circleRadius should return the default value after being unset.");
- // Transition property test
- layer.circleRadiusTransition = transitionTest;
- auto toptions = rawLayer->getCircleRadiusTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition circleRadiusTransition = layer.circleRadiusTransition;
- XCTAssertEqual(circleRadiusTransition.delay, transitionTest.delay);
- XCTAssertEqual(circleRadiusTransition.duration, transitionTest.duration);
- }
-
- // circle-pitch-scale
- {
- XCTAssertTrue(rawLayer->getCirclePitchScale().isUndefined(),
- @"circle-pitch-scale should be unset initially.");
- NSExpression *defaultExpression = layer.circleScaleAlignment;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.circleScaleAlignment = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::CirclePitchScaleType> propertyValue = { mbgl::style::CirclePitchScaleType::Viewport };
- XCTAssertEqual(rawLayer->getCirclePitchScale(), propertyValue,
- @"Setting circleScaleAlignment to a constant value expression should update circle-pitch-scale.");
- XCTAssertEqualObjects(layer.circleScaleAlignment, constantExpression,
- @"circleScaleAlignment should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleScaleAlignment = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::CirclePitchScaleType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getCirclePitchScale(), propertyValue,
- @"Setting circleScaleAlignment to a camera expression should update circle-pitch-scale.");
- XCTAssertEqualObjects(layer.circleScaleAlignment, functionExpression,
- @"circleScaleAlignment should round-trip camera expressions.");
-
-
- layer.circleScaleAlignment = nil;
- XCTAssertTrue(rawLayer->getCirclePitchScale().isUndefined(),
- @"Unsetting circleScaleAlignment should return circle-pitch-scale to the default value.");
- XCTAssertEqualObjects(layer.circleScaleAlignment, defaultExpression,
- @"circleScaleAlignment should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.circleScaleAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.circleScaleAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // circle-stroke-color
- {
- XCTAssertTrue(rawLayer->getCircleStrokeColor().isUndefined(),
- @"circle-stroke-color should be unset initially.");
- NSExpression *defaultExpression = layer.circleStrokeColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.circleStrokeColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getCircleStrokeColor(), propertyValue,
- @"Setting circleStrokeColor to a constant value expression should update circle-stroke-color.");
- XCTAssertEqualObjects(layer.circleStrokeColor, constantExpression,
- @"circleStrokeColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleStrokeColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeColor(), propertyValue,
- @"Setting circleStrokeColor to a camera expression should update circle-stroke-color.");
- XCTAssertEqualObjects(layer.circleStrokeColor, functionExpression,
- @"circleStrokeColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.circleStrokeColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeColor(), propertyValue,
- @"Setting circleStrokeColor to a data expression should update circle-stroke-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.circleStrokeColor, pedanticFunctionExpression,
- @"circleStrokeColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.circleStrokeColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeColor(), propertyValue,
- @"Setting circleStrokeColor to a camera-data expression should update circle-stroke-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.circleStrokeColor, pedanticFunctionExpression,
- @"circleStrokeColor should round-trip camera-data expressions.");
-
- layer.circleStrokeColor = nil;
- XCTAssertTrue(rawLayer->getCircleStrokeColor().isUndefined(),
- @"Unsetting circleStrokeColor should return circle-stroke-color to the default value.");
- XCTAssertEqualObjects(layer.circleStrokeColor, defaultExpression,
- @"circleStrokeColor should return the default value after being unset.");
- // Transition property test
- layer.circleStrokeColorTransition = transitionTest;
- auto toptions = rawLayer->getCircleStrokeColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition circleStrokeColorTransition = layer.circleStrokeColorTransition;
- XCTAssertEqual(circleStrokeColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(circleStrokeColorTransition.duration, transitionTest.duration);
- }
-
- // circle-stroke-opacity
- {
- XCTAssertTrue(rawLayer->getCircleStrokeOpacity().isUndefined(),
- @"circle-stroke-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.circleStrokeOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.circleStrokeOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getCircleStrokeOpacity(), propertyValue,
- @"Setting circleStrokeOpacity to a constant value expression should update circle-stroke-opacity.");
- XCTAssertEqualObjects(layer.circleStrokeOpacity, constantExpression,
- @"circleStrokeOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleStrokeOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeOpacity(), propertyValue,
- @"Setting circleStrokeOpacity to a camera expression should update circle-stroke-opacity.");
- XCTAssertEqualObjects(layer.circleStrokeOpacity, functionExpression,
- @"circleStrokeOpacity should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.circleStrokeOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeOpacity(), propertyValue,
- @"Setting circleStrokeOpacity to a data expression should update circle-stroke-opacity.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.circleStrokeOpacity, pedanticFunctionExpression,
- @"circleStrokeOpacity should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.circleStrokeOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeOpacity(), propertyValue,
- @"Setting circleStrokeOpacity to a camera-data expression should update circle-stroke-opacity.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.circleStrokeOpacity, pedanticFunctionExpression,
- @"circleStrokeOpacity should round-trip camera-data expressions.");
-
- layer.circleStrokeOpacity = nil;
- XCTAssertTrue(rawLayer->getCircleStrokeOpacity().isUndefined(),
- @"Unsetting circleStrokeOpacity should return circle-stroke-opacity to the default value.");
- XCTAssertEqualObjects(layer.circleStrokeOpacity, defaultExpression,
- @"circleStrokeOpacity should return the default value after being unset.");
- // Transition property test
- layer.circleStrokeOpacityTransition = transitionTest;
- auto toptions = rawLayer->getCircleStrokeOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition circleStrokeOpacityTransition = layer.circleStrokeOpacityTransition;
- XCTAssertEqual(circleStrokeOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(circleStrokeOpacityTransition.duration, transitionTest.duration);
- }
-
- // circle-stroke-width
- {
- XCTAssertTrue(rawLayer->getCircleStrokeWidth().isUndefined(),
- @"circle-stroke-width should be unset initially.");
- NSExpression *defaultExpression = layer.circleStrokeWidth;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.circleStrokeWidth = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getCircleStrokeWidth(), propertyValue,
- @"Setting circleStrokeWidth to a constant value expression should update circle-stroke-width.");
- XCTAssertEqualObjects(layer.circleStrokeWidth, constantExpression,
- @"circleStrokeWidth should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleStrokeWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeWidth(), propertyValue,
- @"Setting circleStrokeWidth to a camera expression should update circle-stroke-width.");
- XCTAssertEqualObjects(layer.circleStrokeWidth, functionExpression,
- @"circleStrokeWidth should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.circleStrokeWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeWidth(), propertyValue,
- @"Setting circleStrokeWidth to a data expression should update circle-stroke-width.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.circleStrokeWidth, pedanticFunctionExpression,
- @"circleStrokeWidth should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.circleStrokeWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleStrokeWidth(), propertyValue,
- @"Setting circleStrokeWidth to a camera-data expression should update circle-stroke-width.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.circleStrokeWidth, pedanticFunctionExpression,
- @"circleStrokeWidth should round-trip camera-data expressions.");
-
- layer.circleStrokeWidth = nil;
- XCTAssertTrue(rawLayer->getCircleStrokeWidth().isUndefined(),
- @"Unsetting circleStrokeWidth should return circle-stroke-width to the default value.");
- XCTAssertEqualObjects(layer.circleStrokeWidth, defaultExpression,
- @"circleStrokeWidth should return the default value after being unset.");
- // Transition property test
- layer.circleStrokeWidthTransition = transitionTest;
- auto toptions = rawLayer->getCircleStrokeWidthTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition circleStrokeWidthTransition = layer.circleStrokeWidthTransition;
- XCTAssertEqual(circleStrokeWidthTransition.delay, transitionTest.delay);
- XCTAssertEqual(circleStrokeWidthTransition.duration, transitionTest.duration);
- }
-
- // circle-translate
- {
- XCTAssertTrue(rawLayer->getCircleTranslate().isUndefined(),
- @"circle-translate should be unset initially.");
- NSExpression *defaultExpression = layer.circleTranslation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.circleTranslation = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getCircleTranslate(), propertyValue,
- @"Setting circleTranslation to a constant value expression should update circle-translate.");
- XCTAssertEqualObjects(layer.circleTranslation, constantExpression,
- @"circleTranslation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleTranslation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleTranslate(), propertyValue,
- @"Setting circleTranslation to a camera expression should update circle-translate.");
- XCTAssertEqualObjects(layer.circleTranslation, functionExpression,
- @"circleTranslation should round-trip camera expressions.");
-
-
- layer.circleTranslation = nil;
- XCTAssertTrue(rawLayer->getCircleTranslate().isUndefined(),
- @"Unsetting circleTranslation should return circle-translate to the default value.");
- XCTAssertEqualObjects(layer.circleTranslation, defaultExpression,
- @"circleTranslation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.circleTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.circleTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // circle-translate-anchor
- {
- XCTAssertTrue(rawLayer->getCircleTranslateAnchor().isUndefined(),
- @"circle-translate-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.circleTranslationAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.circleTranslationAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType> propertyValue = { mbgl::style::TranslateAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getCircleTranslateAnchor(), propertyValue,
- @"Setting circleTranslationAnchor to a constant value expression should update circle-translate-anchor.");
- XCTAssertEqualObjects(layer.circleTranslationAnchor, constantExpression,
- @"circleTranslationAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.circleTranslationAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TranslateAnchorType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getCircleTranslateAnchor(), propertyValue,
- @"Setting circleTranslationAnchor to a camera expression should update circle-translate-anchor.");
- XCTAssertEqualObjects(layer.circleTranslationAnchor, functionExpression,
- @"circleTranslationAnchor should round-trip camera expressions.");
-
-
- layer.circleTranslationAnchor = nil;
- XCTAssertTrue(rawLayer->getCircleTranslateAnchor().isUndefined(),
- @"Unsetting circleTranslationAnchor should return circle-translate-anchor to the default value.");
- XCTAssertEqualObjects(layer.circleTranslationAnchor, defaultExpression,
- @"circleTranslationAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.circleTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.circleTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLCircleLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"circle-blur" isBoolean:NO];
- [self testPropertyName:@"circle-color" isBoolean:NO];
- [self testPropertyName:@"circle-opacity" isBoolean:NO];
- [self testPropertyName:@"circle-pitch-alignment" isBoolean:NO];
- [self testPropertyName:@"circle-radius" isBoolean:NO];
- [self testPropertyName:@"circle-scale-alignment" isBoolean:NO];
- [self testPropertyName:@"circle-stroke-color" isBoolean:NO];
- [self testPropertyName:@"circle-stroke-opacity" isBoolean:NO];
- [self testPropertyName:@"circle-stroke-width" isBoolean:NO];
- [self testPropertyName:@"circle-translation" isBoolean:NO];
- [self testPropertyName:@"circle-translation-anchor" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLCirclePitchAlignment:MGLCirclePitchAlignmentMap].MGLCirclePitchAlignmentValue, MGLCirclePitchAlignmentMap);
- XCTAssertEqual([NSValue valueWithMGLCirclePitchAlignment:MGLCirclePitchAlignmentViewport].MGLCirclePitchAlignmentValue, MGLCirclePitchAlignmentViewport);
- XCTAssertEqual([NSValue valueWithMGLCircleScaleAlignment:MGLCircleScaleAlignmentMap].MGLCircleScaleAlignmentValue, MGLCircleScaleAlignmentMap);
- XCTAssertEqual([NSValue valueWithMGLCircleScaleAlignment:MGLCircleScaleAlignmentViewport].MGLCircleScaleAlignmentValue, MGLCircleScaleAlignmentViewport);
- XCTAssertEqual([NSValue valueWithMGLCircleTranslationAnchor:MGLCircleTranslationAnchorMap].MGLCircleTranslationAnchorValue, MGLCircleTranslationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLCircleTranslationAnchor:MGLCircleTranslationAnchorViewport].MGLCircleTranslationAnchorValue, MGLCircleTranslationAnchorViewport);
-}
-
-@end
diff --git a/platform/darwin/test/MGLClockDirectionFormatterTests.m b/platform/darwin/test/MGLClockDirectionFormatterTests.m
deleted file mode 100644
index 05ebc3af2d..0000000000
--- a/platform/darwin/test/MGLClockDirectionFormatterTests.m
+++ /dev/null
@@ -1,72 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLClockDirectionFormatterTests : XCTestCase
-
-@end
-
-@implementation MGLClockDirectionFormatterTests
-
-- (void)testClockDirections {
- MGLClockDirectionFormatter *shortFormatter = [[MGLClockDirectionFormatter alloc] init];
- shortFormatter.unitStyle = NSFormattingUnitStyleShort;
-
- MGLClockDirectionFormatter *mediumFormatter = [[MGLClockDirectionFormatter alloc] init];
-
- MGLClockDirectionFormatter *longFormatter = [[MGLClockDirectionFormatter alloc] init];
- longFormatter.unitStyle = NSFormattingUnitStyleLong;
-
- CLLocationDirection direction;
-
- direction = -90;
- XCTAssertEqualObjects(@"9:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"9 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"9 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 0;
- XCTAssertEqualObjects(@"12:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 45;
- XCTAssertEqualObjects(@"2:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"2 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"2 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 90;
- XCTAssertEqualObjects(@"3:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"3 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"3 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 180;
- XCTAssertEqualObjects(@"6:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"6 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"6 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 270;
- XCTAssertEqualObjects(@"9:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"9 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"9 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 359.34951805867024;
- XCTAssertEqualObjects(@"12:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 360;
- XCTAssertEqualObjects(@"12:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 360.1;
- XCTAssertEqualObjects(@"12:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [longFormatter stringFromDirection:direction]);
-
- direction = 720;
- XCTAssertEqualObjects(@"12:00", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"12 o’clock", [longFormatter stringFromDirection:direction]);
-}
-
-@end
diff --git a/platform/darwin/test/MGLCodingTests.mm b/platform/darwin/test/MGLCodingTests.mm
deleted file mode 100644
index e6417c99f5..0000000000
--- a/platform/darwin/test/MGLCodingTests.mm
+++ /dev/null
@@ -1,615 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "MGLFoundation_Private.h"
-#import "MGLCluster.h"
-
-#if TARGET_OS_IPHONE
-#import "MGLUserLocation_Private.h"
-#endif
-
-@interface MGLCodingTests : XCTestCase
-@end
-
-@implementation MGLCodingTests
-
-- (NSString *)temporaryFilePathForClass:(Class)clazz {
- return [NSTemporaryDirectory() stringByAppendingPathComponent:NSStringFromClass(clazz)];
-}
-
-- (void)testPointAnnotation {
- MGLPointAnnotation *annotation = [[MGLPointAnnotation alloc] init];
- annotation.coordinate = CLLocationCoordinate2DMake(0.5, 0.5);
- annotation.title = @"title";
- annotation.subtitle = @"subtitle";
-
- NSString *filePath = [self temporaryFilePathForClass:MGLPointAnnotation.class];
- [NSKeyedArchiver archiveRootObject:annotation toFile:filePath];
- MGLPointAnnotation *unarchivedAnnotation = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(annotation, unarchivedAnnotation);
-}
-
-- (void)testPointFeature {
- MGLPointFeature *pointFeature = [[MGLPointFeature alloc] init];
- pointFeature.title = @"title";
- pointFeature.subtitle = @"subtitle";
- pointFeature.identifier = @(123);
- pointFeature.attributes = @{@"bbox": @[@1, @2, @3, @4]};
-
- NSString *filePath = [self temporaryFilePathForClass:MGLPointFeature.class];
- [NSKeyedArchiver archiveRootObject:pointFeature toFile:filePath];
- MGLPointFeature *unarchivedPointFeature = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(pointFeature, unarchivedPointFeature);
-}
-
-- (void)testPointFeatureCluster {
- MGLPointFeature *pointFeature = [[MGLPointFeatureCluster alloc] init];
- pointFeature.title = @"title";
- pointFeature.subtitle = @"subtitle";
- pointFeature.identifier = @(123);
- pointFeature.attributes = @{
- @"cluster" : @(YES),
- @"cluster_id" : @(456),
- @"point_count" : @(2),
- };
-
- XCTAssert([pointFeature isKindOfClass:[MGLPointFeature class]], @"");
-
- NSString *filePath = [self temporaryFilePathForClass:MGLPointFeature.class];
- [NSKeyedArchiver archiveRootObject:pointFeature toFile:filePath];
- MGLPointFeature *unarchivedPointFeature = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(pointFeature, unarchivedPointFeature);
-
- // Unarchive process should ensure we still have a cluster
- XCTAssert([unarchivedPointFeature isMemberOfClass:[MGLPointFeatureCluster class]]);
-
- id<MGLCluster> cluster = MGL_OBJC_DYNAMIC_CAST_AS_PROTOCOL(unarchivedPointFeature, MGLCluster);
-
- XCTAssert(cluster);
- XCTAssert(cluster.clusterIdentifier == 456);
- XCTAssert(cluster.clusterPointCount == 2);
-}
-
-
-- (void)testPolyline {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.129631234123, 1.7812739312551),
- CLLocationCoordinate2DMake(2.532083092342, 3.5216418292392)
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- MGLPolyline *polyline = [MGLPolyline polylineWithCoordinates:coordinates count:numberOfCoordinates];
- polyline.title = @"title";
- polyline.subtitle = @"subtitle";
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLPolyline class]];
- [NSKeyedArchiver archiveRootObject:polyline toFile:filePath];
- MGLPolyline *unarchivedPolyline = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(polyline, unarchivedPolyline);
-
- CLLocationCoordinate2D otherCoordinates[] = {
- CLLocationCoordinate2DMake(-1, -2)
- };
-
- [unarchivedPolyline replaceCoordinatesInRange:NSMakeRange(0, 1) withCoordinates:otherCoordinates];
-
- XCTAssertNotEqualObjects(polyline, unarchivedPolyline);
-
- CLLocationCoordinate2D multiLineCoordinates[] = {
- CLLocationCoordinate2DMake(51.000000, 0.000000),
- CLLocationCoordinate2DMake(51.000000, 1.000000),
- CLLocationCoordinate2DMake(51.000000, 2.000000),
- };
-
- NSUInteger multiLineCoordinatesCount = sizeof(multiLineCoordinates) / sizeof(CLLocationCoordinate2D);
- MGLPolyline *multiLine = [MGLPolyline polylineWithCoordinates:multiLineCoordinates count:multiLineCoordinatesCount];
- CLLocationCoordinate2D multiLineCenter = CLLocationCoordinate2DMake(51.000000, 1.000000);
-
- XCTAssertEqual([multiLine coordinate].latitude, multiLineCenter.latitude);
- XCTAssertEqual([multiLine coordinate].longitude, multiLineCenter.longitude);
-
- CLLocationCoordinate2D segmentCoordinates[] = {
- CLLocationCoordinate2DMake(35.040390, -85.311477),
- CLLocationCoordinate2DMake(35.040390, -85.209510),
- };
-
- NSUInteger segmentCoordinatesCount = sizeof(segmentCoordinates) / sizeof(CLLocationCoordinate2D);
- MGLPolyline *segmentLine = [MGLPolyline polylineWithCoordinates:segmentCoordinates count:segmentCoordinatesCount];
- CLLocationCoordinate2D segmentCenter = CLLocationCoordinate2DMake(35.0404006631, -85.2604935);
-
- XCTAssertEqualWithAccuracy([segmentLine coordinate].latitude, segmentCenter.latitude, 0.0001);
- XCTAssertEqualWithAccuracy([segmentLine coordinate].longitude, segmentCenter.longitude, 0.0001);
-
- CLLocationCoordinate2D sfToBerkeleyCoordinates[] = {
- CLLocationCoordinate2DMake(37.782440, -122.397111),
- CLLocationCoordinate2DMake(37.818384, -122.352994),
- CLLocationCoordinate2DMake(37.831401, -122.274545),
- CLLocationCoordinate2DMake(37.862172, -122.262700),
- };
-
- NSUInteger sfToBerkeleyCoordinatesCount = sizeof(sfToBerkeleyCoordinates) / sizeof(CLLocationCoordinate2D);
- MGLPolyline *sfToBerkeleyLine = [MGLPolyline polylineWithCoordinates:sfToBerkeleyCoordinates count:sfToBerkeleyCoordinatesCount];
- CLLocationCoordinate2D sfToBerkeleyCenter = CLLocationCoordinate2DMake(37.8230575118,-122.324867587);
-
- XCTAssertEqualWithAccuracy([sfToBerkeleyLine coordinate].latitude, sfToBerkeleyCenter.latitude, 0.0001);
- XCTAssertEqualWithAccuracy([sfToBerkeleyLine coordinate].longitude, sfToBerkeleyCenter.longitude, 0.0001);
-
-}
-
-- (void)testPolygon {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(35.090745, -85.300259),
- CLLocationCoordinate2DMake(35.092035, -85.298885),
- CLLocationCoordinate2DMake(35.090639, -85.297416),
- CLLocationCoordinate2DMake(35.089112, -85.298928)
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:numberOfCoordinates];
- polygon.title = nil;
- polygon.subtitle = @"subtitle";
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLPolygon class]];
- [NSKeyedArchiver archiveRootObject:polygon toFile:filePath];
-
- MGLPolygon *unarchivedPolygon = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
- [unarchivedPolygon coordinate];
-
- XCTAssertEqualObjects(polygon, unarchivedPolygon);
-
- CLLocationCoordinate2D squareCoordinates[] = {
- CLLocationCoordinate2DMake(100.0, 0.0),
- CLLocationCoordinate2DMake(101.0, 0.0),
- CLLocationCoordinate2DMake(101.0, 1.0),
- CLLocationCoordinate2DMake(100.0, 1.0),
- };
-
- NSUInteger squareCoordinatesCount = sizeof(squareCoordinates) / sizeof(CLLocationCoordinate2D);
- MGLPolygon *squarePolygon = [MGLPolygon polygonWithCoordinates:squareCoordinates count:squareCoordinatesCount];
- CLLocationCoordinate2D squareCenter = CLLocationCoordinate2DMake(100.5, 0.5);
-
- XCTAssertEqual([squarePolygon coordinate].latitude, squareCenter.latitude);
- XCTAssertEqual([squarePolygon coordinate].longitude, squareCenter.longitude);
-
-}
-
-- (void)testPolygonWithInteriorPolygons {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(10, 20)
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- CLLocationCoordinate2D interiorCoordinates[] = {
- CLLocationCoordinate2DMake(4, 4),
- CLLocationCoordinate2DMake(6, 6)
- };
-
- NSUInteger numberOfInteriorCoordinates = sizeof(interiorCoordinates) / sizeof(CLLocationCoordinate2D);
-
- MGLPolygon *interiorPolygon = [MGLPolygon polygonWithCoordinates:interiorCoordinates count:numberOfInteriorCoordinates];
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:numberOfCoordinates interiorPolygons:@[interiorPolygon]];
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLPolygon class]];
- [NSKeyedArchiver archiveRootObject:polygon toFile:filePath];
-
- MGLPolygon *unarchivedPolygon = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(polygon, unarchivedPolygon);
-}
-
-- (void)testPolylineFeature {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(10, 20)
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates count:numberOfCoordinates];
- polylineFeature.attributes = @{@"bbox": @[@0, @1, @2, @3]};
- polylineFeature.identifier = @"identifier";
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLPolylineFeature class]];
- [NSKeyedArchiver archiveRootObject:polylineFeature toFile:filePath];
-
- MGLPolylineFeature *unarchivedPolylineFeature = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(polylineFeature, unarchivedPolylineFeature);
-
- unarchivedPolylineFeature.attributes = @{@"bbox": @[@4, @3, @2, @1]};
-
- XCTAssertNotEqualObjects(polylineFeature, unarchivedPolylineFeature);
-}
-
-- (void)testPolygonFeature {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(10, 20)
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:numberOfCoordinates];
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLPolygonFeature class]];
- [NSKeyedArchiver archiveRootObject:polygonFeature toFile:filePath];
-
- MGLPolygonFeature *unarchivedPolygonFeature = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(polygonFeature, unarchivedPolygonFeature);
-
- unarchivedPolygonFeature.identifier = @"test";
-
- XCTAssertNotEqualObjects(polygonFeature, unarchivedPolygonFeature);
-}
-
-- (void)testPointCollection {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(10, 11),
- CLLocationCoordinate2DMake(20, 21),
- CLLocationCoordinate2DMake(30, 31),
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- MGLPointCollection *pointCollection = [MGLPointCollection pointCollectionWithCoordinates:coordinates count:numberOfCoordinates];
- CLLocationCoordinate2D pointsCenter = CLLocationCoordinate2DMake(0, 1);
-
- XCTAssertEqual([pointCollection coordinate].latitude, pointsCenter.latitude);
- XCTAssertEqual([pointCollection coordinate].longitude, pointsCenter.longitude);
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLPointCollection class]];
- [NSKeyedArchiver archiveRootObject:pointCollection toFile:filePath];
-
- MGLPointCollection *unarchivedPointCollection = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(pointCollection, unarchivedPointCollection);
-}
-
-- (void)testPointCollectionFeature {
- NSMutableArray *features = [NSMutableArray array];
- for (NSUInteger i = 0; i < 100; i++) {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- feature.coordinate = CLLocationCoordinate2DMake(arc4random() % 90, arc4random() % 180);
- [features addObject:feature];
- }
-
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(10, 11),
- CLLocationCoordinate2DMake(20, 21),
- CLLocationCoordinate2DMake(30, 31),
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- MGLPointCollectionFeature *collection = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:numberOfCoordinates];
- collection.identifier = @"identifier";
- collection.attributes = @{@"bbox": @[@1, @2, @3, @4]};
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLPointCollectionFeature class]];
- [NSKeyedArchiver archiveRootObject:collection toFile:filePath];
-
- MGLPointCollectionFeature *unarchivedCollection = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(collection, unarchivedCollection);
-
- unarchivedCollection.identifier = @"newIdentifier";
-
- XCTAssertNotEqualObjects(collection, unarchivedCollection);
-}
-
-- (void)testMultiPolyline {
-
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(10, 11),
- CLLocationCoordinate2DMake(20, 21),
- CLLocationCoordinate2DMake(30, 31),
- };
-
- CLLocationCoordinate2D line1[] = {
- CLLocationCoordinate2DMake(100, 40),
- CLLocationCoordinate2DMake(105, 45),
- CLLocationCoordinate2DMake(110, 55)
- };
-
- CLLocationCoordinate2D line2[] = {
- CLLocationCoordinate2DMake(105, 40),
- CLLocationCoordinate2DMake(110, 45),
- CLLocationCoordinate2DMake(115, 55)
- };
-
- NSUInteger road1CoordinatesCount = sizeof(line1) / sizeof(CLLocationCoordinate2D);
- NSUInteger road2CoordinatesCount = sizeof(line2) / sizeof(CLLocationCoordinate2D);
-
- MGLPolyline *road1Polyline = [MGLPolyline polylineWithCoordinates:line1 count:road1CoordinatesCount];
- MGLPolyline *road2Polyline = [MGLPolyline polylineWithCoordinates:line1 count:road2CoordinatesCount];
-
- MGLMultiPolyline *roads = [MGLMultiPolyline multiPolylineWithPolylines:@[road1Polyline, road2Polyline]];
- CLLocationCoordinate2D roadCenter = CLLocationCoordinate2DMake(100, 40);
-
- XCTAssertEqual([roads coordinate].latitude, roadCenter.latitude);
- XCTAssertEqual([roads coordinate].longitude, roadCenter.longitude);
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- NSMutableArray *polylines = [NSMutableArray array];
-
- for (NSUInteger i = 0; i < 100; i++) {
- MGLPolyline *polyline = [MGLPolyline polylineWithCoordinates:coordinates count:numberOfCoordinates];
- [polylines addObject:polyline];
- }
-
- MGLMultiPolyline *multiPolyline = [MGLMultiPolyline multiPolylineWithPolylines:polylines];
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLMultiPolyline class]];
- [NSKeyedArchiver archiveRootObject:multiPolyline toFile:filePath];
-
- MGLMultiPolyline *unarchivedMultiPolyline = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
- MGLMultiPolyline *anotherMultipolyline = [MGLMultiPolyline multiPolylineWithPolylines:[polylines subarrayWithRange:NSMakeRange(0, polylines.count/2)]];
-
- XCTAssertEqualObjects(multiPolyline, unarchivedMultiPolyline);
- XCTAssertNotEqualObjects(unarchivedMultiPolyline, anotherMultipolyline);
-}
-
-- (void)testMultiPolygon {
-
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(10, 11),
- CLLocationCoordinate2DMake(20, 21),
- CLLocationCoordinate2DMake(30, 31),
- };
-
- CLLocationCoordinate2D outerSquare[] = {
- CLLocationCoordinate2DMake(100.0, 0.0),
- CLLocationCoordinate2DMake(101.0, 0.0),
- CLLocationCoordinate2DMake(101.0, 1.0),
- CLLocationCoordinate2DMake(100.0, 1.0),
- };
-
- CLLocationCoordinate2D innerSquare[] = {
- CLLocationCoordinate2DMake(100.35, 0.35),
- CLLocationCoordinate2DMake(100.65, 0.35),
- CLLocationCoordinate2DMake(100.65, 0.65),
- CLLocationCoordinate2DMake(100.35, 0.65),
- };
-
- NSUInteger outerCoordinatesCount = sizeof(outerSquare) / sizeof(CLLocationCoordinate2D);
- NSUInteger innerCoordinatesCount = sizeof(innerSquare) / sizeof(CLLocationCoordinate2D);
-
- MGLPolygon *innerPolygonSquare = [MGLPolygon polygonWithCoordinates:innerSquare count:innerCoordinatesCount];
- MGLPolygon *outerPolygonSquare = [MGLPolygon polygonWithCoordinates:outerSquare count:outerCoordinatesCount interiorPolygons:@[innerPolygonSquare]];
- MGLMultiPolygon *squares = [MGLMultiPolygon multiPolygonWithPolygons:@[outerPolygonSquare, innerPolygonSquare]];
- CLLocationCoordinate2D squareCenter = CLLocationCoordinate2DMake(100.5, 0.5);
-
- XCTAssertEqual([squares coordinate].latitude, squareCenter.latitude);
- XCTAssertEqual([squares coordinate].longitude, squareCenter.longitude);
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- NSMutableArray *polygons = [NSMutableArray array];
-
- for (NSUInteger i = 0; i < 100; i++) {
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:numberOfCoordinates];
- [polygons addObject:polygon];
- }
-
- MGLMultiPolygon *multiPolygon = [MGLMultiPolygon multiPolygonWithPolygons:polygons];
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLMultiPolygon class]];
- [NSKeyedArchiver archiveRootObject:multiPolygon toFile:filePath];
-
- MGLMultiPolygon *unarchivedMultiPolygon = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
- MGLMultiPolygon *anotherMultiPolygon = [MGLMultiPolygon multiPolygonWithPolygons:[polygons subarrayWithRange:NSMakeRange(0, polygons.count/2)]];
-
- XCTAssertEqualObjects(multiPolygon, unarchivedMultiPolygon);
- XCTAssertNotEqualObjects(anotherMultiPolygon, unarchivedMultiPolygon);
-
-}
-
-- (void)testShapeCollection {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(10.12315786, 11.23451186),
- CLLocationCoordinate2DMake(20.91836515, 21.93689215),
- CLLocationCoordinate2DMake(30.55697246, 31.33988123),
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- MGLPolyline *polyline = [MGLPolyline polylineWithCoordinates:coordinates count:numberOfCoordinates];
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:numberOfCoordinates];
-
- MGLShapeCollection *shapeCollection = [MGLShapeCollection shapeCollectionWithShapes:@[polyline, polygon]];
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLShapeCollection class]];
- [NSKeyedArchiver archiveRootObject:shapeCollection toFile:filePath];
-
- MGLShapeCollection *unarchivedShapeCollection = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
- MGLShapeCollection *anotherShapeCollection = [MGLShapeCollection shapeCollectionWithShapes:@[polygon]];
-
- XCTAssertEqualObjects(shapeCollection, unarchivedShapeCollection);
- XCTAssertNotEqualObjects(shapeCollection, anotherShapeCollection);
-}
-
-- (void)testMultiPolylineFeature {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(10.12315786, 11.23451186),
- CLLocationCoordinate2DMake(20.91836515, 21.93689215),
- CLLocationCoordinate2DMake(30.55697246, 31.33988123),
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- NSMutableArray *polylines = [NSMutableArray array];
- for (NSUInteger i = 0; i < 100; i++) {
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates count:numberOfCoordinates];
- polylineFeature.identifier = @(arc4random() % 100).stringValue;
- [polylines addObject:polylineFeature];
- }
-
- MGLMultiPolylineFeature *multiPolylineFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:polylines];
- multiPolylineFeature.attributes = @{@"bbox": @[@4, @3, @2, @1]};
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLMultiPolylineFeature class]];
- [NSKeyedArchiver archiveRootObject:multiPolylineFeature toFile:filePath];
-
- MGLMultiPolylineFeature *unarchivedMultiPolylineFeature = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
- MGLMultiPolylineFeature *anotherMultiPolylineFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:[polylines subarrayWithRange:NSMakeRange(0, polylines.count/2)]];
-
- XCTAssertEqualObjects(multiPolylineFeature, unarchivedMultiPolylineFeature);
- XCTAssertNotEqualObjects(unarchivedMultiPolylineFeature, anotherMultiPolylineFeature);
-}
-
-- (void)testMultiPolygonFeature {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(10.12315786, 11.23451185),
- CLLocationCoordinate2DMake(20.88471238, 21.93684215),
- CLLocationCoordinate2DMake(30.15697236, 31.32988123),
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- NSMutableArray *polygons = [NSMutableArray array];
- for (NSUInteger i = 0; i < 100; i++ ) {
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:numberOfCoordinates];
- polygonFeature.identifier = @(arc4random_uniform(100)).stringValue;
- [polygons addObject:polygonFeature];
- }
-
- MGLMultiPolygonFeature *multiPolygonFeature = [MGLMultiPolygonFeature multiPolygonWithPolygons:polygons];
- multiPolygonFeature.attributes = @{@"bbox": @[@(arc4random_uniform(100)),
- @(arc4random_uniform(100)),
- @(arc4random_uniform(100)),
- @(arc4random_uniform(100))]};
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLMultiPolylineFeature class]];
- [NSKeyedArchiver archiveRootObject:multiPolygonFeature toFile:filePath];
-
- MGLMultiPolygonFeature *unarchivedMultiPolygonFeature = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
- MGLMultiPolygonFeature *anotherMultiPolygonFeature = [MGLMultiPolygonFeature multiPolygonWithPolygons:[polygons subarrayWithRange:NSMakeRange(0, polygons.count/2)]];
-
- XCTAssertEqualObjects(multiPolygonFeature, unarchivedMultiPolygonFeature);
- XCTAssertNotEqualObjects(anotherMultiPolygonFeature, unarchivedMultiPolygonFeature);
-}
-
-- (void)testShapeCollectionFeature {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(10.12315786, 11.23451186),
- CLLocationCoordinate2DMake(20.91836515, 21.93689215),
- CLLocationCoordinate2DMake(30.55697246, 31.33988123),
- };
-
- NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
-
- MGLPolylineFeature *polyline = [MGLPolylineFeature polylineWithCoordinates:coordinates count:numberOfCoordinates];
- MGLPolygonFeature *polygon = [MGLPolygonFeature polygonWithCoordinates:coordinates count:numberOfCoordinates];
-
- MGLShapeCollectionFeature *shapeCollectionFeature = [MGLShapeCollectionFeature shapeCollectionWithShapes:@[polyline, polygon]];
- shapeCollectionFeature.identifier = @(arc4random_uniform(100)).stringValue;
- shapeCollectionFeature.attributes = @{@"bbox":@[@(arc4random_uniform(100)),
- @(arc4random_uniform(100)),
- @(arc4random_uniform(100)),
- @(arc4random_uniform(100))]};
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLShapeCollectionFeature class]];
- [NSKeyedArchiver archiveRootObject:shapeCollectionFeature toFile:filePath];
-
- MGLShapeCollectionFeature *unarchivedShapeCollectionFeature = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(shapeCollectionFeature, unarchivedShapeCollectionFeature);
-}
-
-- (void)testAnnotationImage {
-#if TARGET_OS_IPHONE
- UIGraphicsBeginImageContext(CGSizeMake(10, 10));
- [[UIColor redColor] setFill];
- UIRectFill(CGRectMake(0, 0, 10, 10));
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
-#else
- NSImage *image = [[NSImage alloc] initWithSize:CGSizeMake(10, 10)];
- [image lockFocus];
- [[NSColor redColor] drawSwatchInRect:CGRectMake(0, 0, 10, 10)];
- [image unlockFocus];
-#endif
-
- MGLAnnotationImage *annotationImage = [MGLAnnotationImage annotationImageWithImage:image reuseIdentifier:@(arc4random_uniform(100)).stringValue];
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLAnnotationImage class]];
- [NSKeyedArchiver archiveRootObject:annotationImage toFile:filePath];
-
- MGLAnnotationImage *unarchivedAnnotationImage = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(annotationImage, unarchivedAnnotationImage);
-}
-
-#if TARGET_OS_IPHONE
-- (void)testAnnotationView {
- MGLAnnotationView *annotationView = [[MGLAnnotationView alloc] initWithReuseIdentifier:@"id"];
- annotationView.enabled = NO;
- annotationView.selected = YES;
- annotationView.draggable = YES;
- annotationView.centerOffset = CGVectorMake(10, 10);
- annotationView.scalesWithViewingDistance = NO;
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLAnnotationView class]];
- [NSKeyedArchiver archiveRootObject:annotationView toFile:filePath];
-
- MGLAnnotationView *unarchivedAnnotationView = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqual(annotationView.enabled, unarchivedAnnotationView.enabled);
- XCTAssertEqual(annotationView.selected, unarchivedAnnotationView.selected);
- XCTAssertEqual(annotationView.draggable, unarchivedAnnotationView.draggable);
- XCTAssertEqualObjects(NSStringFromCGVector(annotationView.centerOffset), NSStringFromCGVector(unarchivedAnnotationView.centerOffset));
- XCTAssertEqual(annotationView.scalesWithViewingDistance, unarchivedAnnotationView.scalesWithViewingDistance);
-}
-#endif
-
-#if TARGET_OS_IPHONE
-- (void)testUserLocation {
- MGLUserLocation *userLocation = [[MGLUserLocation alloc] init];
- userLocation.location = [[CLLocation alloc] initWithLatitude:1 longitude:1];
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLUserLocation class]];
- [NSKeyedArchiver archiveRootObject:userLocation toFile:filePath];
-
- MGLUserLocation *unarchivedUserLocation = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqualObjects(userLocation, unarchivedUserLocation);
- unarchivedUserLocation.location = [[CLLocation alloc] initWithLatitude:10 longitude:10];
- XCTAssertNotEqualObjects(userLocation, unarchivedUserLocation);
-}
-#endif
-
-#if TARGET_OS_IPHONE
-- (void)testUserLocationAnnotationView {
- MGLUserLocationAnnotationView *annotationView = [[MGLUserLocationAnnotationView alloc] init];
- annotationView.enabled = NO;
- annotationView.selected = YES;
- annotationView.draggable = YES;
- annotationView.centerOffset = CGVectorMake(10, 10);
- annotationView.scalesWithViewingDistance = NO;
-
- NSString *filePath = [self temporaryFilePathForClass:[MGLUserLocationAnnotationView class]];
- [NSKeyedArchiver archiveRootObject:annotationView toFile:filePath];
-
- MGLUserLocationAnnotationView *unarchivedAnnotationView = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
-
- XCTAssertEqual(annotationView.enabled, unarchivedAnnotationView.enabled);
- XCTAssertEqual(annotationView.selected, unarchivedAnnotationView.selected);
- XCTAssertEqual(annotationView.draggable, unarchivedAnnotationView.draggable);
- XCTAssertEqualObjects(NSStringFromCGVector(annotationView.centerOffset), NSStringFromCGVector(unarchivedAnnotationView.centerOffset));
- XCTAssertEqual(annotationView.scalesWithViewingDistance, unarchivedAnnotationView.scalesWithViewingDistance);
-}
-#endif
-
-@end
diff --git a/platform/darwin/test/MGLCompassDirectionFormatterTests.m b/platform/darwin/test/MGLCompassDirectionFormatterTests.m
deleted file mode 100644
index c4ccc6ac4f..0000000000
--- a/platform/darwin/test/MGLCompassDirectionFormatterTests.m
+++ /dev/null
@@ -1,88 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLCompassDirectionFormatterTests : XCTestCase
-
-@end
-
-@implementation MGLCompassDirectionFormatterTests
-
-- (void)testCompassDirections {
- MGLCompassDirectionFormatter *shortFormatter = [[MGLCompassDirectionFormatter alloc] init];
- shortFormatter.unitStyle = NSFormattingUnitStyleShort;
-
- MGLCompassDirectionFormatter *mediumFormatter = [[MGLCompassDirectionFormatter alloc] init];
- XCTAssertEqual(mediumFormatter.unitStyle, NSFormattingUnitStyleMedium, @"Unit style should be medium by default.");
-
- MGLCompassDirectionFormatter *longFormatter = [[MGLCompassDirectionFormatter alloc] init];
- longFormatter.unitStyle = NSFormattingUnitStyleLong;
-
- CLLocationDirection direction;
-
- direction = -45;
- XCTAssertEqualObjects(@"NW", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"northwest", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"northwest", [longFormatter stringFromDirection:direction]);
-
- direction = 0;
- XCTAssertEqualObjects(@"N", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [longFormatter stringFromDirection:direction]);
-
- direction = 1;
- XCTAssertEqualObjects(@"N", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [longFormatter stringFromDirection:direction]);
-
- direction = 10;
- XCTAssertEqualObjects(@"NbE", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north by east", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north by east", [longFormatter stringFromDirection:direction]);
-
- direction = 20;
- XCTAssertEqualObjects(@"NNE", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north-northeast", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north-northeast", [longFormatter stringFromDirection:direction]);
-
- direction = 45;
- XCTAssertEqualObjects(@"NE", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"northeast", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"northeast", [longFormatter stringFromDirection:direction]);
-
- direction = 90;
- XCTAssertEqualObjects(@"E", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"east", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"east", [longFormatter stringFromDirection:direction]);
-
- direction = 180;
- XCTAssertEqualObjects(@"S", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"south", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"south", [longFormatter stringFromDirection:direction]);
-
- direction = 270;
- XCTAssertEqualObjects(@"W", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"west", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"west", [longFormatter stringFromDirection:direction]);
-
- direction = 359.34951805867024;
- XCTAssertEqualObjects(@"N", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [longFormatter stringFromDirection:direction]);
-
- direction = 360;
- XCTAssertEqualObjects(@"N", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [longFormatter stringFromDirection:direction]);
-
- direction = 360.1;
- XCTAssertEqualObjects(@"N", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [longFormatter stringFromDirection:direction]);
-
- direction = 720;
- XCTAssertEqualObjects(@"N", [shortFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [mediumFormatter stringFromDirection:direction]);
- XCTAssertEqualObjects(@"north", [longFormatter stringFromDirection:direction]);
-}
-
-@end
diff --git a/platform/darwin/test/MGLComputedShapeSourceTests.m b/platform/darwin/test/MGLComputedShapeSourceTests.m
deleted file mode 100644
index 6eb45913d6..0000000000
--- a/platform/darwin/test/MGLComputedShapeSourceTests.m
+++ /dev/null
@@ -1,24 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import <Mapbox/Mapbox.h>
-
-
-@interface MGLComputedShapeSourceTests : XCTestCase
-@end
-
-@implementation MGLComputedShapeSourceTests
-
-- (void)testInitializer {
- MGLComputedShapeSource *source = [[MGLComputedShapeSource alloc] initWithIdentifier:@"id" options:@{}];
- XCTAssertNotNil(source);
- XCTAssertNotNil(source.requestQueue);
- XCTAssertNil(source.dataSource);
-}
-
-- (void)testNilOptions {
- MGLComputedShapeSource *source = [[MGLComputedShapeSource alloc] initWithIdentifier:@"id" options:nil];
- XCTAssertNotNil(source);
-}
-
-
-@end
diff --git a/platform/darwin/test/MGLCoordinateFormatterTests.m b/platform/darwin/test/MGLCoordinateFormatterTests.m
deleted file mode 100644
index ac083fa103..0000000000
--- a/platform/darwin/test/MGLCoordinateFormatterTests.m
+++ /dev/null
@@ -1,48 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLCoordinateFormatterTests : XCTestCase
-
-@end
-
-@implementation MGLCoordinateFormatterTests
-
-- (void)testStrings {
- MGLCoordinateFormatter *shortFormatter = [[MGLCoordinateFormatter alloc] init];
- shortFormatter.unitStyle = NSFormattingUnitStyleShort;
- XCTAssertTrue(shortFormatter.allowsSeconds, @"Arcseconds should be allowed by default.");
- XCTAssertTrue(shortFormatter.allowsMinutes, @"Arcminutes should be allowed by default.");
-
- MGLCoordinateFormatter *mediumFormatter = [[MGLCoordinateFormatter alloc] init];
- XCTAssertEqual(mediumFormatter.unitStyle, NSFormattingUnitStyleMedium, @"Unit style should be medium by default.");
-
- MGLCoordinateFormatter *longFormatter = [[MGLCoordinateFormatter alloc] init];
- longFormatter.unitStyle = NSFormattingUnitStyleLong;
-
- CLLocationCoordinate2D coordinate;
-
- coordinate = CLLocationCoordinate2DMake(38.9131982, -77.0325453144239);
- XCTAssertEqualObjects([shortFormatter stringFromCoordinate:coordinate], @"38°54′48″N, 77°1′57″W");
- XCTAssertEqualObjects([mediumFormatter stringFromCoordinate:coordinate], @"38°54′48″ north, 77°1′57″ west");
- XCTAssertEqualObjects([longFormatter stringFromCoordinate:coordinate], @"38 degrees, 54 minutes, and 48 seconds north by 77 degrees, 1 minute, and 57 seconds west");
-
- shortFormatter.allowsSeconds = NO;
- mediumFormatter.allowsSeconds = NO;
- longFormatter.allowsSeconds = NO;
-
- coordinate = CLLocationCoordinate2DMake(38.9131982, -77.0325453144239);
- XCTAssertEqualObjects([shortFormatter stringFromCoordinate:coordinate], @"38°55′N, 77°2′W");
- XCTAssertEqualObjects([mediumFormatter stringFromCoordinate:coordinate], @"38°55′ north, 77°2′ west");
- XCTAssertEqualObjects([longFormatter stringFromCoordinate:coordinate], @"38 degrees and 55 minutes north by 77 degrees and 2 minutes west");
-
- shortFormatter.allowsMinutes = NO;
- mediumFormatter.allowsMinutes = NO;
- longFormatter.allowsMinutes = NO;
-
- coordinate = CLLocationCoordinate2DMake(38.9131982, -77.0325453144239);
- XCTAssertEqualObjects([shortFormatter stringFromCoordinate:coordinate], @"39°N, 77°W");
- XCTAssertEqualObjects([mediumFormatter stringFromCoordinate:coordinate], @"39° north, 77° west");
- XCTAssertEqualObjects([longFormatter stringFromCoordinate:coordinate], @"39 degrees north by 77 degrees west");
-}
-
-@end
diff --git a/platform/darwin/test/MGLDistanceFormatterTests.m b/platform/darwin/test/MGLDistanceFormatterTests.m
deleted file mode 100644
index f15ad9d313..0000000000
--- a/platform/darwin/test/MGLDistanceFormatterTests.m
+++ /dev/null
@@ -1,30 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLDistanceFormatterTests : XCTestCase
-
-@end
-
-@implementation MGLDistanceFormatterTests
-
-- (void)testAbbreviatedMetricUnits {
- MGLDistanceFormatter *formatter = [[MGLDistanceFormatter alloc] init];
- formatter.numberFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_CA"];
- for (CLLocationDistance distance=0; distance <= 10000; distance+=5) {
- NSString *unit = [[formatter stringFromDistance:distance] componentsSeparatedByString:@" "][1];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", @[@"mm", @"cm", @"m", @"km"]];
- XCTAssert([predicate evaluateWithObject:unit], @"Should only contain metric units");
- }
-}
-
-- (void)testAbbreviatedImperialUnits {
- MGLDistanceFormatter *formatter = [[MGLDistanceFormatter alloc] init];
- formatter.numberFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
- for (CLLocationDistance distance=0; distance <= 10000; distance+=5) {
- NSString *unit = [[formatter stringFromDistance:distance] componentsSeparatedByString:@" "][1];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", @[@"ft", @"mi"]];
- XCTAssert([predicate evaluateWithObject:unit], @"Should only contain imperial units");
- }
-}
-
-@end
diff --git a/platform/darwin/test/MGLDocumentationExampleTests.swift b/platform/darwin/test/MGLDocumentationExampleTests.swift
deleted file mode 100644
index 7d6bdbed54..0000000000
--- a/platform/darwin/test/MGLDocumentationExampleTests.swift
+++ /dev/null
@@ -1,592 +0,0 @@
-import XCTest
-import Mapbox
-
-/**
- Test cases that ensure the inline examples in the project documentation
- compile.
-
- To add an example:
- 1. Add a test case named in the form testMGLClass or testMGLClass$method.
- 2. Wrap the code you'd like to appear in the documentation within the
- following comment blocks:
- ```
- //#-example-code
- ...
- //#-end-example-code
- ```
- 3. Insert an empty Swift code block inside the header file where you'd like the
- example code to be inserted.
- 4. Run `make darwin-update-examples` to extract example code from the test
- method below and insert it into the header.
- */
-class MGLDocumentationExampleTests: XCTestCase, MGLMapViewDelegate {
- var mapView: MGLMapView!
- var styleLoadingExpectation: XCTestExpectation!
- static let styleURL = Bundle(for: MGLDocumentationExampleTests.self).url(forResource: "one-liner", withExtension: "json")!
-
- // Mock MGLOfflineStorage singleton so that it doesn't start long-running tasks that could interfere with other tests.
- fileprivate class MGLOfflineStorageMock {
- static let shared = MGLOfflineStorageMock()
- func addPack(for: MGLOfflineRegion, withContext: Data, completionHandler: MGLOfflinePackAdditionCompletionHandler? = nil) {
- XCTAssert(MGLOfflineStorage.shared.responds(to: #selector(MGLOfflineStorage.shared.addPack(for:withContext:completionHandler:))))
- if let completionHandler = completionHandler {
- completionHandler(nil, NSError(domain: "MGLDocumentationExampleError", code: 0, userInfo: [NSLocalizedDescriptionKey: "\(#function) is mocked and not functional."]))
- }
- }
- }
-
- override func setUp() {
- super.setUp()
- mapView = MGLMapView(frame: CGRect(x: 0, y: 0, width: 256, height: 256), styleURL: MGLDocumentationExampleTests.styleURL)
- mapView.delegate = self
- styleLoadingExpectation = expectation(description: "Map view should finish loading style")
- waitForExpectations(timeout: 10, handler: nil)
- }
-
- override func tearDown() {
- mapView = nil
- styleLoadingExpectation = nil
- super.tearDown()
- }
-
- func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {
- styleLoadingExpectation.fulfill()
- }
-
- func testMGLLight() {
- //#-example-code
- let light = MGLLight()
- let position = MGLSphericalPosition(radial: 5, azimuthal: 180, polar: 80)
- light.position = NSExpression(forConstantValue: NSValue(mglSphericalPosition: position))
- light.anchor = NSExpression(forConstantValue: "map")
- mapView.style?.light = light
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.light)
- }
-
- func testMGLTilePyramidOfflineRegion() {
- class MGLStyle {
- static var lightStyleURL: URL {
- return MGLDocumentationExampleTests.styleURL
- }
- }
-
- typealias MGLOfflineStorage = MGLOfflineStorageMock
-
- //#-example-code
- let northeast = CLLocationCoordinate2D(latitude: 40.989329, longitude: -102.062592)
- let southwest = CLLocationCoordinate2D(latitude: 36.986207, longitude: -109.049896)
- let bbox = MGLCoordinateBounds(sw: southwest, ne: northeast)
-
- let region = MGLTilePyramidOfflineRegion(styleURL: MGLStyle.lightStyleURL, bounds: bbox, fromZoomLevel: 11, toZoomLevel: 14)
- let context = "Tile Pyramid Region".data(using: .utf8)
- MGLOfflineStorage.shared.addPack(for: region, withContext: context!)
- //#-end-example-code
-
- XCTAssertNotNil(region)
- }
-
- func testMGLShapeOfflineRegion() {
- class MGLStyle {
- static var lightStyleURL: URL {
- return MGLDocumentationExampleTests.styleURL
- }
- }
-
- typealias MGLOfflineStorage = MGLOfflineStorageMock
-
- //#-example-code
- var coordinates = [
- CLLocationCoordinate2D(latitude: 45.522585, longitude: -122.685699),
- CLLocationCoordinate2D(latitude: 45.534611, longitude: -122.708873),
- CLLocationCoordinate2D(latitude: 45.530883, longitude: -122.678833)
- ]
-
- let triangle = MGLPolygon(coordinates: &coordinates, count: UInt(coordinates.count))
- let region = MGLShapeOfflineRegion(styleURL: MGLStyle.lightStyleURL, shape: triangle, fromZoomLevel: 11, toZoomLevel: 14)
- let context = "Triangle Region".data(using: .utf8)
- MGLOfflineStorage.shared.addPack(for: region, withContext: context!)
- //#-end-example-code
-
- XCTAssertNotNil(region)
- }
-
- func testMGLOfflinePack() {
- typealias MGLOfflineStorage = MGLOfflineStorageMock
-
- let northeast = CLLocationCoordinate2D(latitude: 40.989329, longitude: -102.062592)
- let southwest = CLLocationCoordinate2D(latitude: 36.986207, longitude: -109.049896)
- let bbox = MGLCoordinateBounds(sw: southwest, ne: northeast)
- let region = MGLTilePyramidOfflineRegion(styleURL: MGLDocumentationExampleTests.styleURL, bounds: bbox, fromZoomLevel: 11, toZoomLevel: 14)
- let context = "Tile Pyramid Region".data(using: .utf8)!
-
- //#-example-code
- MGLOfflineStorage.shared.addPack(for: region, withContext: context) { (pack, error) in
- guard let pack = pack else {
- // If adding the pack fails, log an error to console.
- print("Error:", error?.localizedDescription ?? "unknown error adding pack at \(#file)(\(#line)) in \(#function)")
- return
- }
-
- // Start an MGLOfflinePack download
- pack.resume()
- }
- //#-end-example-code
- }
-
- func testMGLShape$shapeWithData_encoding_error_() {
- let mainBundle = Bundle(for: MGLDocumentationExampleTests.self)
-
- //#-example-code
- let url = mainBundle.url(forResource: "amsterdam", withExtension: "geojson")!
- let data = try! Data(contentsOf: url)
- let feature = try! MGLShape(data: data, encoding: String.Encoding.utf8.rawValue) as! MGLShapeCollectionFeature
- //#-end-example-code
-
- XCTAssertNotNil(feature.shapes.first as? MGLPolygonFeature)
- }
-
- func testMGLShapeSource() {
- //#-example-code
- var coordinates: [CLLocationCoordinate2D] = [
- CLLocationCoordinate2D(latitude: 37.77, longitude: -122.42),
- CLLocationCoordinate2D(latitude: 38.91, longitude: -77.04),
- ]
- let polyline = MGLPolylineFeature(coordinates: &coordinates, count: UInt(coordinates.count))
- let source = MGLShapeSource(identifier: "lines", features: [polyline], options: nil)
- mapView.style?.addSource(source)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.source(withIdentifier: "lines"))
- }
-
- func testMGLRasterTileSource() {
- //#-example-code
- let source = MGLRasterTileSource(identifier: "clouds", tileURLTemplates: ["https://example.com/raster-tiles/{z}/{x}/{y}.png"], options: [
- .minimumZoomLevel: 9,
- .maximumZoomLevel: 16,
- .tileSize: 512,
- .attributionInfos: [
- MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "https://mapbox.com"))
- ]
- ])
- mapView.style?.addSource(source)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.source(withIdentifier: "clouds"))
- }
-
- func testMGLRasterDEMSource() {
- // We want to use mapbox.terrain-rgb in the example, but using a mapbox:
- // URL requires setting an access token. So this identically named
- // subclass of MGLRasterDEMSource swaps in a nonexistent URL.
- class MGLRasterDEMSource: Mapbox.MGLRasterDEMSource {
- override init(identifier: String, configurationURL: URL, tileSize: CGFloat = 256) {
- let bogusURL = URL(string: "https://example.com/raster-rgb.json")!
- super.init(identifier: identifier, configurationURL: bogusURL, tileSize: tileSize)
- }
- }
-
- //#-example-code
- let terrainRGBURL = URL(string: "mapbox://mapbox.terrain-rgb")!
- let source = MGLRasterDEMSource(identifier: "hills", configurationURL: terrainRGBURL)
- mapView.style?.addSource(source)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.source(withIdentifier: "hills"))
- }
-
- func testMGLVectorTileSource() {
- //#-example-code
- let source = MGLVectorTileSource(identifier: "pois", tileURLTemplates: ["https://example.com/vector-tiles/{z}/{x}/{y}.mvt"], options: [
- .minimumZoomLevel: 9,
- .maximumZoomLevel: 16,
- .attributionInfos: [
- MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "https://mapbox.com"))
- ]
- ])
- mapView.style?.addSource(source)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.source(withIdentifier: "pois"))
- }
-
- func testMGLPolyline() {
- //#-example-code
- let coordinates = [
- CLLocationCoordinate2D(latitude: 35.68476, longitude: -220.24257),
- CLLocationCoordinate2D(latitude: 37.78428, longitude: -122.41310)
- ]
- let polyline = MGLPolyline(coordinates: coordinates, count: UInt(coordinates.count))
- //#-end-example-code
-
- XCTAssertNotNil(polyline)
- }
-
- func testMGLImageSource() {
- //#-example-code
- let coordinates = MGLCoordinateQuad(
- topLeft: CLLocationCoordinate2D(latitude: 46.437, longitude: -80.425),
- bottomLeft: CLLocationCoordinate2D(latitude: 37.936, longitude: -80.425),
- bottomRight: CLLocationCoordinate2D(latitude: 37.936, longitude: -71.516),
- topRight: CLLocationCoordinate2D(latitude: 46.437, longitude: -71.516))
- let source = MGLImageSource(identifier: "radar", coordinateQuad: coordinates, url: URL(string: "https://www.mapbox.com/mapbox-gl-js/assets/radar.gif")!)
- mapView.style?.addSource(source)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.source(withIdentifier: "radar"))
- }
-
- func testMGLCircleStyleLayer() {
- let population = MGLVectorTileSource(identifier: "population", configurationURL: URL(string: "https://example.com/style.json")!)
- mapView.style?.addSource(population)
-
- //#-example-code
- let layer = MGLCircleStyleLayer(identifier: "circles", source: population)
- layer.sourceLayerIdentifier = "population"
- #if os(macOS)
- layer.circleColor = NSExpression(forConstantValue: NSColor.green)
- #else
- layer.circleColor = NSExpression(forConstantValue: UIColor.green)
- #endif
- layer.circleRadius = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.75, %@)",
- [12: 2,
- 22: 180])
- layer.circleOpacity = NSExpression(forConstantValue: 0.7)
- layer.predicate = NSPredicate(format: "%K == %@", "marital-status", "married")
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "circles"))
- }
-
- func testMGLLineStyleLayer() {
- let trails = MGLVectorTileSource(identifier: "trails", configurationURL: URL(string: "https://example.com/style.json")!)
- mapView.style?.addSource(trails)
-
- //#-example-code
- let layer = MGLLineStyleLayer(identifier: "trails-path", source: trails)
- layer.sourceLayerIdentifier = "trails"
- layer.lineWidth = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.5, %@)",
- [14: 2,
- 18: 20])
- #if os(macOS)
- layer.lineColor = NSExpression(forConstantValue: NSColor.brown)
- #else
- layer.lineColor = NSExpression(forConstantValue: UIColor.brown)
- #endif
- layer.lineCap = NSExpression(forConstantValue: "round")
- layer.predicate = NSPredicate(format: "%K == %@", "trail-type", "mountain-biking")
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "trails-path"))
- }
-
- func testMGLFillStyleLayer() {
- let parks = MGLVectorTileSource(identifier: "parks", configurationURL: URL(string: "https://example.com/style.json")!)
- mapView.style?.addSource(parks)
-
- //#-example-code
- let layer = MGLFillStyleLayer(identifier: "parks", source: parks)
- layer.sourceLayerIdentifier = "parks"
- #if os(macOS)
- layer.fillColor = NSExpression(forConstantValue: NSColor.green)
- #else
- layer.fillColor = NSExpression(forConstantValue: UIColor.green)
- #endif
- layer.predicate = NSPredicate(format: "type == %@", "national-park")
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "parks"))
- }
-
- func testMGLFillExtrusionStyleLayer() {
- let buildings = MGLVectorTileSource(identifier: "buildings", configurationURL: URL(string: "https://example.com/style.json")!)
- mapView.style?.addSource(buildings)
-
- //#-example-code
- let layer = MGLFillExtrusionStyleLayer(identifier: "buildings", source: buildings)
- layer.sourceLayerIdentifier = "building"
- layer.fillExtrusionHeight = NSExpression(forKeyPath: "height")
- layer.fillExtrusionBase = NSExpression(forKeyPath: "min_height")
- layer.predicate = NSPredicate(format: "extrude == 'true'")
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "buildings"))
- }
-
- func testMGLHeatmapStyleLayer() {
- let earthquakes = MGLShapeSource(identifier: "earthquakes", url: URL(string: "https://example.com/earthquakes.json")!, options: [:])
- mapView.style?.addSource(earthquakes)
-
- //#-example-code
- let layer = MGLHeatmapStyleLayer(identifier: "earthquake-heat", source: earthquakes)
- layer.heatmapWeight = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:(magnitude, 'linear', nil, %@)",
- [0: 0,
- 6: 1])
- layer.heatmapIntensity = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)",
- [0: 1,
- 9: 3])
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "earthquake-heat"))
- }
-
- func testMGLSymbolStyleLayer() {
- let pois = MGLVectorTileSource(identifier: "pois", configurationURL: URL(string: "https://example.com/style.json")!)
- mapView.style?.addSource(pois)
-
- //#-example-code
- let layer = MGLSymbolStyleLayer(identifier: "coffeeshops", source: pois)
- layer.sourceLayerIdentifier = "pois"
- layer.iconImageName = NSExpression(forConstantValue: "coffee")
- layer.iconScale = NSExpression(forConstantValue: 0.5)
- layer.text = NSExpression(forKeyPath: "name")
- #if os(macOS)
- var vector = CGVector(dx: 10, dy: 0)
- layer.textTranslation = NSExpression(forConstantValue: NSValue(bytes: &vector, objCType: "{CGVector=dd}"))
- #else
- layer.textTranslation = NSExpression(forConstantValue: NSValue(cgVector: CGVector(dx: 10, dy: 0)))
- #endif
- layer.textJustification = NSExpression(forConstantValue: "left")
- layer.textAnchor = NSExpression(forConstantValue: "left")
- layer.predicate = NSPredicate(format: "%K == %@", "venue-type", "coffee")
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "coffeeshops"))
- }
-
- func testMGLRasterStyleLayer() {
- let source = MGLRasterTileSource(identifier: "clouds", tileURLTemplates: ["https://example.com/raster-tiles/{z}/{x}/{y}.png"], options: [
- .minimumZoomLevel: 9,
- .maximumZoomLevel: 16,
- .tileSize: 512,
- .attributionInfos: [
- MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "https://mapbox.com"))
- ]
- ])
- mapView.style?.addSource(source)
-
- //#-example-code
- let layer = MGLRasterStyleLayer(identifier: "clouds", source: source)
- layer.rasterOpacity = NSExpression(forConstantValue: 0.5)
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "clouds"))
- }
-
- func testMGLHillshadeStyleLayer() {
- let source = MGLRasterDEMSource(identifier: "dem", tileURLTemplates: ["https://example.com/raster-rgb/{z}/{x}/{y}.png"], options: [
- .minimumZoomLevel: 9,
- .maximumZoomLevel: 16,
- .tileSize: 256,
- .attributionInfos: [
- MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "https://mapbox.com"))
- ]
- ])
- mapView.style?.addSource(source)
-
- let canals = MGLVectorTileSource(identifier: "canals", configurationURL: URL(string: "https://example.com/style.json")!)
- mapView.style?.addSource(canals)
- let canalShadowLayer = MGLLineStyleLayer(identifier: "waterway-river-canal-shadow", source: canals)
- mapView.style?.addLayer(canalShadowLayer)
-
- //#-example-code
- let layer = MGLHillshadeStyleLayer(identifier: "hills", source: source)
- layer.hillshadeExaggeration = NSExpression(forConstantValue: 0.6)
- if let canalShadowLayer = mapView.style?.layer(withIdentifier: "waterway-river-canal-shadow") {
- mapView.style?.insertLayer(layer, below: canalShadowLayer)
- }
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "hills"))
- }
-
- func testMGLVectorStyleLayer$predicate() {
- let terrain = MGLVectorTileSource(identifier: "terrain", configurationURL: URL(string: "https://example.com/style.json")!)
- mapView.style?.addSource(terrain)
-
- //#-example-code
- let layer = MGLLineStyleLayer(identifier: "contour", source: terrain)
- layer.sourceLayerIdentifier = "contours"
- layer.predicate = NSPredicate(format: "(index == 5 || index == 10) && CAST(ele, 'NSNumber') >= 1500.0")
- mapView.style?.addLayer(layer)
- //#-end-example-code
-
- XCTAssertNotNil(mapView.style?.layer(withIdentifier: "contour"))
- }
-
- func testMGLMapView() {
- //#-example-code
- #if os(macOS)
- class MapClickGestureRecognizer: NSClickGestureRecognizer {
- override func shouldRequireFailure(of otherGestureRecognizer: NSGestureRecognizer) -> Bool {
- return otherGestureRecognizer is NSClickGestureRecognizer
- }
- }
- #else
- let mapTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(myCustomFunction))
- for recognizer in mapView.gestureRecognizers! where recognizer is UITapGestureRecognizer {
- mapTapGestureRecognizer.require(toFail: recognizer)
- }
- mapView.addGestureRecognizer(mapTapGestureRecognizer)
- #endif
- //#-end-example-code
- }
-
- func testMGLMapSnapshotter() {
- let expectation = self.expectation(description: "MGLMapSnapshotter should produce a snapshot")
- #if os(macOS)
- var image: NSImage? {
- didSet {
- expectation.fulfill()
- }
- }
- #else
- var image: UIImage? {
- didSet {
- expectation.fulfill()
- }
- }
- #endif
-
- class MGLStyle {
- static var satelliteStreetsStyleURL: URL {
- return MGLDocumentationExampleTests.styleURL
- }
- }
-
- //#-example-code
- let camera = MGLMapCamera(lookingAtCenter: CLLocationCoordinate2D(latitude: 37.7184, longitude: -122.4365), altitude: 100, pitch: 20, heading: 0)
-
- let options = MGLMapSnapshotOptions(styleURL: MGLStyle.satelliteStreetsStyleURL, camera: camera, size: CGSize(width: 320, height: 480))
- options.zoomLevel = 10
-
- let snapshotter = MGLMapSnapshotter(options: options)
- snapshotter.start { (snapshot, error) in
- if let error = error {
- fatalError(error.localizedDescription)
- }
-
- image = snapshot?.image
- }
- //#-end-example-code
-
- wait(for: [expectation], timeout: 5)
- }
-
- func testMGLCluster() {
-
- enum ExampleError: Error {
- case unexpectedFeatureType
- case featureIsNotACluster
- }
-
- let geoJSON: [String: Any] = [
- "type" : "Feature",
- "geometry" : [
- "coordinates" : [
- -77.00896639534831,
- 38.87031006108791,
- 0.0
- ],
- "type" : "Point"
- ],
- "properties" : [
- "cluster" : true,
- "cluster_id" : 123,
- "point_count" : 4567,
- ]
- ]
-
- let clusterShapeData = try! JSONSerialization.data(withJSONObject: geoJSON, options: [])
-
- do {
- //#-example-code
- let shape = try! MGLShape(data: clusterShapeData, encoding: String.Encoding.utf8.rawValue)
-
- guard let pointFeature = shape as? MGLPointFeature else {
- throw ExampleError.unexpectedFeatureType
- }
-
- // Check for cluster conformance
- guard let cluster = pointFeature as? MGLCluster else {
- throw ExampleError.featureIsNotACluster
- }
-
- // Currently the only supported class that conforms to `MGLCluster` is
- // `MGLPointFeatureCluster`
- guard cluster is MGLPointFeatureCluster else {
- throw ExampleError.unexpectedFeatureType
- }
-
- //#-end-example-code
-
- XCTAssert(cluster.clusterIdentifier == 123)
- XCTAssert(cluster.clusterPointCount == 4567)
- }
- catch let error {
- XCTFail("Example failed with thrown error: \(error)")
- }
- }
-
- func testMGLAttributedExpression() {
- //#-example-code
- #if os(macOS)
- let redColor = NSColor.red
- #else
- let redColor = UIColor.red
- #endif
- let expression = NSExpression(forConstantValue: "Foo")
- let attributes: [MGLAttributedExpressionKey: NSExpression] = [.fontNamesAttribute : NSExpression(forConstantValue: ["DIN Offc Pro Italic",
- "Arial Unicode MS Regular"]),
- .fontScaleAttribute: NSExpression(forConstantValue: 1.2),
- .fontColorAttribute: NSExpression(forConstantValue: redColor)]
- let attributedExpression = MGLAttributedExpression(expression, attributes:attributes)
- //#-end-example-code
-
- XCTAssertNotNil(attributedExpression)
- }
-
- func testMGLShapeSourceOptionClusterProperties() {
- //#-example-code
- let firstExpression = NSExpression(format: "sum:({$featureAccumulated, sumValue})")
- let secondExpression = NSExpression(forKeyPath: "magnitude")
- let clusterPropertiesDictionary = ["sumValue" : [firstExpression, secondExpression]]
-
- let options : [MGLShapeSourceOption : Any] = [.clustered : true,
- .clusterProperties: clusterPropertiesDictionary]
- //#-end-example-code
- let geoJSON: [String: Any] = [
- "type" : "Feature",
- "geometry" : [
- "coordinates" : [
- -77.00896639534831,
- 38.87031006108791,
- 0.0
- ],
- "type" : "Point"
- ],
- "properties" : [
- "cluster" : true,
- "cluster_id" : 123,
- "point_count" : 4567,
- ]
- ]
-
- let clusterShapeData = try! JSONSerialization.data(withJSONObject: geoJSON, options: [])
- let shape = try! MGLShape(data: clusterShapeData, encoding: String.Encoding.utf8.rawValue)
- let source = MGLShapeSource(identifier: "source", shape: shape, options: options)
- mapView.style?.addSource(source)
-
- }
- // For testMGLMapView().
- func myCustomFunction() {}
-}
diff --git a/platform/darwin/test/MGLDocumentationGuideTests.swift b/platform/darwin/test/MGLDocumentationGuideTests.swift
deleted file mode 100644
index 30814c4156..0000000000
--- a/platform/darwin/test/MGLDocumentationGuideTests.swift
+++ /dev/null
@@ -1,270 +0,0 @@
-import XCTest
-import Mapbox
-
-/**
- Test cases that ensure the inline examples in the jazzy guides compile.
-
- To add an example:
- 1. Add a test case named in the form `testGuideName$ExampleName`.
- 2. Wrap the code you’d like to appear in the documentation within the
- following comment blocks:
- ```
- //#-example-code
- ...
- //#-end-example-code
- ```
- 3. Insert a call to `guideExample()` where you’d like the example code to be
- inserted in the guide’s Markdown.
- ```
- <%- guideExample('GuideName', 'ExampleName', 'iOS') %>
- ```
- 4. Run `make darwin-style-code` to extract example code from the test method
- below and insert it into the guide.
- */
-class MGLDocumentationGuideTests: XCTestCase, MGLMapViewDelegate {
- var mapView: MGLMapView!
- var styleLoadingExpectation: XCTestExpectation!
-
- override func setUp() {
- super.setUp()
- let styleURL = Bundle(for: MGLDocumentationGuideTests.self).url(forResource: "one-liner", withExtension: "json")
- mapView = MGLMapView(frame: CGRect(x: 0, y: 0, width: 256, height: 256), styleURL: styleURL)
- mapView.delegate = self
- styleLoadingExpectation = expectation(description: "Map view should finish loading style")
- waitForExpectations(timeout: 10, handler: nil)
- }
-
- override func tearDown() {
- mapView = nil
- styleLoadingExpectation = nil
- super.tearDown()
- }
-
- func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {
- styleLoadingExpectation.fulfill()
- }
-
- func testMigratingToExpressions$Stops() {
- //#-example-code
- #if os(macOS)
- let stops: [NSNumber: NSColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
- #else
- let stops: [NSNumber: UIColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
- #endif
- //#-end-example-code
-
- let _ = NSExpression(format: "mgl_step:from:stops:(mag, %@, %@)",
- stops[0]!, stops)
- }
-
- func testMigratingToExpressions$Linear() {
- //#-example-code
- let url = URL(string: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson")!
- let symbolSource = MGLSource(identifier: "source")
- let symbolLayer = MGLSymbolStyleLayer(identifier: "place-city-sm", source: symbolSource)
-
- let source = MGLShapeSource(identifier: "earthquakes", url: url, options: nil)
- mapView.style?.addSource(source)
-
- #if os(macOS)
- let stops: [NSNumber: NSColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
- #else
- let stops: [NSNumber: UIColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
- #endif
-
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
- #if os(macOS)
- layer.circleColor = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:(mag, 'linear', nil, %@)",
- stops)
- #else
- layer.circleColor = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:(mag, 'linear', nil, %@)",
- stops)
- #endif
- layer.circleRadius = NSExpression(forConstantValue: 10)
- mapView.style?.insertLayer(layer, below: symbolLayer)
- //#-end-example-code
- }
-
- func testMigratingToExpressions$LinearConvenience() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- #if os(macOS)
- let stops: [NSNumber: NSColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
- #else
- let stops: [NSNumber: UIColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
- #endif
-
- //#-example-code
- layer.circleColor = NSExpression(forMGLInterpolating: NSExpression(forKeyPath: "mag"), curveType: .linear, parameters: nil, stops: NSExpression(forConstantValue: stops))
- //#-end-example-code
-
- layer.circleRadius = NSExpression(forConstantValue: 10)
- mapView.style?.addLayer(layer)
-
- }
- func testMigratingToExpressions$Exponential() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- //#-example-code
- let stops = [
- 12: 0.5,
- 14: 2,
- 18: 18,
- ]
-
- layer.circleRadius = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.5, %@)",
- stops)
- //#-end-example-code
- }
-
- func testMigratingToExpressions$ExponentialConvenience() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- //#-example-code
- let stops = [
- 12: 0.5,
- 14: 2,
- 18: 18,
- ]
-
- layer.circleRadius = NSExpression(forMGLInterpolating: NSExpression.zoomLevelVariable, curveType: MGLExpressionInterpolationMode.exponential, parameters: NSExpression(forConstantValue: 1.5), stops: NSExpression(forConstantValue: stops))
- //#-end-example-code
- }
- func testMigratingToExpressions$Interval() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- //#-example-code
- #if os(macOS)
- let stops: [NSNumber: NSColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
-
- layer.circleColor = NSExpression(format: "mgl_step:from:stops:(mag, %@, %@)",
- NSColor.green, stops)
- #else
- let stops: [NSNumber: UIColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
- ]
-
- layer.circleColor = NSExpression(format: "mgl_step:from:stops:(mag, %@, %@)",
- UIColor.green, stops)
- #endif
- //#-end-example-code
- }
-
- func testMigratingToExpressions$Categorical() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- //#-example-code
- #if os(macOS)
- let defaultColor = NSColor.blue
- layer.circleColor = NSExpression(
- format: "MGL_MATCH(type, 'earthquake', %@, 'explosion', %@, 'quarry blast', %@, %@)",
- NSColor.orange, NSColor.red, NSColor.yellow, defaultColor)
- #else
- let defaultColor = UIColor.blue
- layer.circleColor = NSExpression(format: "MGL_MATCH(type, 'earthquake', %@, 'explosion', %@, 'quarry blast', %@, %@)",
- UIColor.orange, UIColor.red, UIColor.yellow, defaultColor)
- #endif
- //#-end-example-code
- }
-
- func testMigratingToExpressions$CategoricalValue() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- //#-example-code
- #if os(macOS)
- let stops : [String : NSColor] = ["earthquake" : NSColor.orange,
- "explosion" : NSColor.red,
- "quarry blast" : NSColor.yellow]
- layer.circleColor = NSExpression(
- format: "FUNCTION(%@, 'valueForKeyPath:', type)",
- stops)
- #else
- let stops : [String : UIColor] = ["earthquake" : UIColor.orange,
- "explosion" : UIColor.red,
- "quarry blast" : UIColor.yellow]
- layer.circleColor = NSExpression(
- format: "FUNCTION(%@, 'valueForKeyPath:', type)",
- stops)
- #endif
- //#-end-example-code
- }
- func testMigratingToExpressions$Identity() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- //#-example-code
- layer.circleRadius = NSExpression(forKeyPath: "mag")
- //#-end-example-code
- }
-
- func testMigratingToExpressions$Multiply() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
- let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-
- //#-example-code
- layer.circleRadius = NSExpression(forFunction: "multiply:by:", arguments: [NSExpression(forKeyPath: "mag"), 3])
- //#-end-example-code
- }
-
- func testMigratingToExpressions$Cast() {
- let source = MGLShapeSource(identifier: "circles", shape: nil, options: nil)
-
- //#-example-code
- let magnitudeLayer = MGLSymbolStyleLayer(identifier: "mag-layer", source: source)
- magnitudeLayer.text = NSExpression(format: "CAST(mag, 'NSString')")
- mapView.style?.addLayer(magnitudeLayer)
- //#-end-example-code
- }
-}
diff --git a/platform/darwin/test/MGLExpressionTests.mm b/platform/darwin/test/MGLExpressionTests.mm
deleted file mode 100644
index 4ccd7adb6e..0000000000
--- a/platform/darwin/test/MGLExpressionTests.mm
+++ /dev/null
@@ -1,1408 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import "MGLStyleLayerTests.h"
-
-#import <string>
-
-#import "MGLTypes.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-#import "NSValue+MGLAdditions.h"
-#if TARGET_OS_IPHONE
-#import "UIColor+MGLAdditions.h"
-#else
-#import "NSColor+MGLAdditions.h"
-#endif
-#import "MGLAttributedExpression.h"
-
-#define MGLAssertEqualValues(actual, expected, ...) \
- XCTAssertTrue(actual.is<__typeof__(expected)>()); \
- if (actual.is<__typeof__(expected)>()) { \
- XCTAssertEqual(actual.get<__typeof__(expected)>(), expected, __VA_ARGS__); \
- }
-
-#define MGLAssertEqualValuesWithAccuracy(actual, expected, accuracy, ...) \
- XCTAssertTrue(actual.is<__typeof__(expected)>()); \
- if (actual.is<__typeof__(expected)>()) { \
- XCTAssertEqualWithAccuracy(actual.get<__typeof__(expected)>(), expected, accuracy, __VA_ARGS__); \
- }
-
-#define MGLConstantExpression(constant) \
- [NSExpression expressionForConstantValue:constant]
-
-#define MGLAssertConstantEqualsValue(constant, value, ...) \
- MGLAssertEqualValues(MGLConstantExpression(constant).mgl_constantMBGLValue, value, __VA_ARGS__);
-
-#define MGLAssertConstantEqualsValueWithAccuracy(constant, value, accuracy, ...) \
- MGLAssertEqualValuesWithAccuracy(MGLConstantExpression(constant).mgl_constantMBGLValue, value, accuracy, __VA_ARGS__);
-
-using namespace std::string_literals;
-
-@interface MGLExpressionTests : XCTestCase
-
-@end
-
-@implementation MGLExpressionTests
-
-#pragma mark - Utility
-
-- (NSComparisonPredicate *)equalityComparisonPredicateWithRightConstantValue:(id)rightConstantValue
-{
- NSComparisonPredicate *predicate = [NSComparisonPredicate
- predicateWithLeftExpression:[NSExpression expressionForKeyPath:@"foo"]
- rightExpression:[NSExpression expressionForConstantValue:rightConstantValue]
- modifier:NSDirectPredicateModifier
- type:NSEqualToPredicateOperatorType
- options:0];
- return predicate;
-}
-
-#pragma mark - Valuation tests
-
-- (void)testStringValuation {
- MGLAssertConstantEqualsValue(@"bar", "bar"s, @"NSString should convert to std::string.");
- MGLAssertConstantEqualsValue(@"🆔🆗🇦🇶", "🆔🆗🇦🇶"s, @"NSString with non-ASCII characters should convert losslessly to std::string.");
-}
-
-- (void)testColorValuation {
- MGLAssertConstantEqualsValue([MGLColor redColor], "rgba(255,0,0,1)"s, @"MGLColor should convert to std::string containing CSS color string.");
-}
-
-- (void)testBooleanValuation {
- MGLAssertConstantEqualsValue(@NO, false, @"Boolean NSNumber should convert to bool.");
- MGLAssertConstantEqualsValue(@YES, true, @"Boolean NSNumber should convert to bool.");
-}
-
-- (void)testDoubleValuation
-{
- MGLAssertConstantEqualsValue(@DBL_MIN, DBL_MIN, @"Double NSNumber should convert to double.");
- MGLAssertConstantEqualsValue(@DBL_MAX, DBL_MAX, @"Double NSNumber should convert to double.");
-}
-
-- (void)testFloatValuation {
- // Because we can't guarantee precision when using float, and because
- // we warn the user to this effect in -[NSExpression mgl_constantMBGLValue],
- // we just check that things are in the ballpark here with integer values
- // and some lower-precision checks.
-
- MGLAssertConstantEqualsValue(@-1.0f, -1.0, @"Float NSNumber should convert to double.");
- MGLAssertConstantEqualsValue(@1.0f, 1.0, @"Float NSNumber should convert to double.");
- MGLAssertConstantEqualsValueWithAccuracy(@-23.232342f, -23.232342, 0.000001, @"Float NSNumber should convert to double.");
- MGLAssertConstantEqualsValueWithAccuracy(@23.232342f, 23.232342, 0.000001, @"Float NSNumber should convert to double.");
- MGLAssertConstantEqualsValueWithAccuracy(@-FLT_MAX, static_cast<double>(-FLT_MAX), 0.000001, @"Float NSNumber should convert to double.");
- MGLAssertConstantEqualsValueWithAccuracy(@FLT_MAX, static_cast<double>(FLT_MAX), 0.000001, @"Float NSNumber should convert to double.");
-}
-
-- (void)testIntegerValuation {
- // Negative integers should always come back as int64_t per mbgl::Value definition.
- MGLAssertConstantEqualsValue(@SHRT_MIN, static_cast<int64_t>(SHRT_MIN), @"Negative short NSNumber should convert to int64_t.");
- MGLAssertConstantEqualsValue(@INT_MIN, static_cast<int64_t>(INT_MIN), @"Negative int NSNumber should convert to int64_t.");
- MGLAssertConstantEqualsValue(@LONG_MIN, static_cast<int64_t>(LONG_MIN), @"Negative long NSNumber should convert to int64_t.");
- MGLAssertConstantEqualsValue(@LLONG_MIN, static_cast<int64_t>(LLONG_MIN), @"Negative long long NSNumber should convert to int64_t.");
- MGLAssertConstantEqualsValue(@NSIntegerMin, static_cast<int64_t>(NSIntegerMin), @"Negative NSInteger NSNumber should convert to int64_t.");
-
- // Positive integers should always come back as uint64_t per mbgl::Value definition.
- MGLAssertConstantEqualsValue(@SHRT_MAX, static_cast<uint64_t>(SHRT_MAX), @"Positive short NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@INT_MAX, static_cast<uint64_t>(INT_MAX), @"Positive int NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@LONG_MAX, static_cast<uint64_t>(LONG_MAX), @"Positive long NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@LLONG_MAX, static_cast<uint64_t>(LLONG_MAX), @"Positive long long NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@NSIntegerMax, static_cast<uint64_t>(NSIntegerMax), @"Positive NSInteger NSNumber should convert to uint64_t.");
-}
-
-- (void)testUnsignedIntegerValuation {
- // Zero-value integers should always come back as uint64_t per mbgl::Value definition
- // (using the interpretation that zero is not negative). We use the unsigned long long
- // value just for parity with the positive integer test.
- MGLAssertConstantEqualsValue(@(static_cast<unsigned short>(0)), static_cast<uint64_t>(0), @"Unsigned short NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@0u, static_cast<uint64_t>(0), @"Unsigned int NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@0UL, static_cast<uint64_t>(0), @"Unsigned long NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@0ULL, static_cast<uint64_t>(0), @"Unsigned long long NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@(static_cast<NSUInteger>(0)), static_cast<uint64_t>(0), @"Unsigned NSUInteger NSNumber should convert to uint64_t.");
-
- // Positive integers should always come back as uint64_t per mbgl::Value definition.
- // We use the unsigned long long value because it can store the highest number on
- // both 32- and 64-bit and won't overflow.
- MGLAssertConstantEqualsValue(@USHRT_MAX, static_cast<uint64_t>(USHRT_MAX), @"Unsigned short NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@UINT_MAX, static_cast<uint64_t>(UINT_MAX), @"Unsigned int NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@ULONG_MAX, static_cast<uint64_t>(ULONG_MAX), @"Unsigned long NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@ULLONG_MAX, static_cast<uint64_t>(ULLONG_MAX), @"Unsigned long long NSNumber should convert to uint64_t.");
- MGLAssertConstantEqualsValue(@NSUIntegerMax, static_cast<uint64_t>(NSUIntegerMax), @"Unsigned NSUInteger NSNumber should convert to uint64_t.");
-}
-
-- (void)testNullValuation {
- mbgl::NullValue nullValue;
- MGLAssertConstantEqualsValue([NSNull null], nullValue, @"NSNull should convert to mbgl::NullValue.");
-}
-
-#pragma mark - Feature type tests
-
-- (void)testFeatureType {
- XCTAssertEqual([NSExpression expressionForConstantValue:@"Point"].mgl_featureType, mbgl::FeatureType::Point);
- XCTAssertEqual([NSExpression expressionForConstantValue:@"LineString"].mgl_featureType, mbgl::FeatureType::LineString);
- XCTAssertEqual([NSExpression expressionForConstantValue:@"Polygon"].mgl_featureType, mbgl::FeatureType::Polygon);
- XCTAssertEqual([NSExpression expressionForConstantValue:@"Unknown"].mgl_featureType, mbgl::FeatureType::Unknown);
- XCTAssertEqual([NSExpression expressionForConstantValue:@""].mgl_featureType, mbgl::FeatureType::Unknown);
-
- XCTAssertEqual([NSExpression expressionForConstantValue:@1].mgl_featureType, mbgl::FeatureType::Point);
- XCTAssertEqual([NSExpression expressionForConstantValue:@2].mgl_featureType, mbgl::FeatureType::LineString);
- XCTAssertEqual([NSExpression expressionForConstantValue:@3].mgl_featureType, mbgl::FeatureType::Polygon);
- XCTAssertEqual([NSExpression expressionForConstantValue:@0].mgl_featureType, mbgl::FeatureType::Unknown);
- XCTAssertEqual([NSExpression expressionForConstantValue:@-1].mgl_featureType, mbgl::FeatureType::Unknown);
- XCTAssertEqual([NSExpression expressionForConstantValue:@4].mgl_featureType, mbgl::FeatureType::Unknown);
-
- XCTAssertEqual([NSExpression expressionForConstantValue:nil].mgl_featureType, mbgl::FeatureType::Unknown);
-}
-
-#pragma mark - JSON expression object tests
-
-- (void)testVariableExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"zoomLevel"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"zoom"]);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$zoomLevel"].mgl_jsonExpressionObject, @[@"zoom"]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@[@"zoom"]], expression);
- NSMutableDictionary *context = [@{@"zoomLevel": @16} mutableCopy];
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:context], @16);
- }
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"heatmapDensity"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"heatmap-density"]);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$heatmapDensity"].mgl_jsonExpressionObject, @[@"heatmap-density"]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@[@"heatmap-density"]], expression);
- NSMutableDictionary *context = [@{@"heatmapDensity": @1} mutableCopy];
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:context], @1);
- }
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"lineProgress"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"line-progress"]);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$lineProgress"].mgl_jsonExpressionObject, @[@"line-progress"]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@[@"line-progress"]], expression);
- NSMutableDictionary *context = [@{@"lineProgress": @1} mutableCopy];
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:context], @1);
- }
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"featureAccumulated"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"accumulated"]);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$featureAccumulated"].mgl_jsonExpressionObject, @[@"accumulated"]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@[@"accumulated"]], expression);
- }
-
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"geometryType"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"geometry-type"]);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$geometryType"].mgl_jsonExpressionObject, @[@"geometry-type"]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@[@"geometry-type"]], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"featureIdentifier"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"id"]);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$featureIdentifier"].mgl_jsonExpressionObject, @[@"id"]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@[@"id"]], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"featureAttributes"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"properties"]);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$featureAttributes"].mgl_jsonExpressionObject, @[@"properties"]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@[@"properties"]], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForVariable:@"loremIpsum"];
- NSArray *jsonExpression = @[@"var", @"loremIpsum"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$loremIpsum"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- NSMutableDictionary *context = [@{@"loremIpsum": @"Lorem ipsum dolor sit amet"} mutableCopy];
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:context], @"Lorem ipsum dolor sit amet");
- }
- {
- NSDictionary *context = @{@"loremIpsum": MGLConstantExpression(@"Lorem ipsum dolor sit amet")};
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_LET('loremIpsum', 'Lorem ipsum dolor sit amet', uppercase($loremIpsum))", context];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(uppercase($loremIpsum), 'mgl_expressionWithContext:', %@)", context];
- NSArray *jsonExpression = @[@"let", @"loremIpsum", @"Lorem ipsum dolor sit amet", @[@"upcase", @[@"var", @"loremIpsum"]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-}
-
-- (void)testConstantValueExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionForConstantValue:nil];
- XCTAssert(expression.mgl_jsonExpressionObject == [NSNull null]);
- XCTAssert([NSExpression expressionWithFormat:@"nil"].mgl_jsonExpressionObject == [NSNull null]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:[NSNull null]], expression);
- XCTAssertNil([expression expressionValueWithObject:nil context:nil]);
- }
- {
- NSExpression *expression = [NSExpression expressionForConstantValue:@1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @1);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"1"].mgl_jsonExpressionObject, @1);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@1], expression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @1);
- }
- {
- NSExpression *expression = [NSExpression expressionForConstantValue:@YES];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @YES);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"TRUE"].mgl_jsonExpressionObject, @YES);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:@YES], expression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @YES);
- }
- {
- NSExpression *expression = [NSExpression expressionForConstantValue:nil];
- XCTAssert(expression.mgl_jsonExpressionObject == [NSNull null]);
- XCTAssert([NSExpression expressionWithFormat:@"nil"].mgl_jsonExpressionObject == [NSNull null]);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:[NSNull null]], expression);
- XCTAssertNil([expression expressionValueWithObject:nil context:nil]);
- }
- {
- CGVector vector = CGVectorMake(1, 2);
- NSExpression *expression = [NSExpression expressionForConstantValue:@(vector)];
-#if !TARGET_OS_IPHONE
- NSArray *jsonExpression = @[@"literal", @[@1, @-2]];
-#else
- NSArray *jsonExpression = @[@"literal", @[@1, @2]];
-#endif
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- // No way to distinguish offsets from ordinary arrays in expressions.
- XCTAssertEqualObjects([[NSExpression expressionWithMGLJSONObject:jsonExpression].collection valueForKeyPath:@"constantValue"], jsonExpression.lastObject);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @(vector));
- }
- {
-#if !TARGET_OS_IPHONE
- NSEdgeInsets padding = {1, 2, 3, 4};
- NSValue *value = [NSValue valueWithEdgeInsets:padding];
-#else
- UIEdgeInsets padding = {1, 2, 3, 4};
- NSValue *value = [NSValue valueWithUIEdgeInsets:padding];
-#endif
- NSExpression *expression = [NSExpression expressionForConstantValue:value];
- NSArray *jsonExpression = @[@"literal", @[@1, @4, @3, @2]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- // No way to distinguish offsets from ordinary arrays in expressions.
- XCTAssertEqualObjects([[NSExpression expressionWithMGLJSONObject:jsonExpression].collection valueForKeyPath:@"constantValue"], jsonExpression.lastObject);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], value);
- }
- {
- MGLColor *color = [MGLColor mgl_colorWithColor:{ 255.0/255, 239.0/255, 213.0/255, 1 }]; // papayawhip
- NSExpression *expression = [NSExpression expressionForConstantValue:color];
- NSArray *jsonExpression = @[@"rgb", @255, @239, @213];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], color);
- }
- {
- // Transform color components to non-premultiplied values
- float alpha = 0.5;
- float red = (255.0 * alpha) / 255;
- float green = (239.0 * alpha) / 255;
- float blue = (213.0 * alpha) / 255;
- MGLColor *color = [MGLColor mgl_colorWithColor:{ red, green, blue, alpha }]; // papayawhip
- NSExpression *expression = [NSExpression expressionForConstantValue:color];
- NSArray *jsonExpression = @[@"rgba", @127.5, @119.5, @106.5, @0.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], color);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"noindex(513)"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @513);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @513);
- }
-}
-
-- (void)testKeyPathExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionForKeyPath:@"highway"];
- NSArray *jsonExpression = @[@"get", @"highway"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"highway"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"%@.population", @{@"population": MGLConstantExpression(@12000)}];
- NSArray *jsonExpression = @[@"get", @"population", @[@"literal", @{@"population": @12000}]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"%@.uppercase('population')", @{@"POPULATION": MGLConstantExpression(@12000)}];
- NSArray *jsonExpression = @[@"get", @[@"upcase", @"population"], @[@"literal", @{@"POPULATION": @12000}]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForKeyPath:@"lineStyle.color"];
- NSArray *jsonExpression = @[@"get", @"color", @[@"get", @"lineStyle"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForKeyPath:@"map.box.gl"];
- NSArray *jsonExpression = @[@"get", @"gl", @[@"get", @"box", @[@"get", @"map"]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-}
-
-- (void)testStatisticalExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"average({1, 2, 2, 3, 4, 7, 9})"];
- NSArray *jsonExpression = @[@"/", @[@"+", @1, @2, @2, @3, @4, @7, @9], @[@"length", @[@"literal", @[@1, @2, @2, @3, @4, @7, @9]]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @4);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"sum({1, 2, 2, 3, 4, 7, 9})"];
- NSArray *jsonExpression = @[@"+", @1, @2, @2, @3, @4, @7, @9];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @28);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"count({1, 2, 2, 3, 4, 7, 9})"];
- NSArray *jsonExpression = @[@"length", @[@"literal", @[@1, @2, @2, @3, @4, @7, @9]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @7);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"min({1, 2, 2, 3, 4, 7, 9})"];
- NSArray *jsonExpression = @[@"min", @1, @2, @2, @3, @4, @7, @9];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @1);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"max({1, 2, 2, 3, 4, 7, 9})"];
- NSArray *jsonExpression = @[@"max", @1, @2, @2, @3, @4, @7, @9];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @9);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-}
-
-- (void)testArithmeticExpressionObject {
- NSArray *arguments = @[MGLConstantExpression(@1), MGLConstantExpression(@1)];
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"add:to:" arguments:arguments];
- NSArray *jsonExpression = @[@"+", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"1 + 1"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *testExpression = [NSExpression expressionWithFormat:@"sum:({1, 1, 2})"];
- NSExpression *expression = [NSExpression expressionForFunction:@"sum:" arguments:@[[NSExpression expressionForAggregate:@[MGLConstantExpression(@1), MGLConstantExpression(@1), MGLConstantExpression(@2)]]]];
-
- NSArray *jsonExpression = @[@"+", @1, @1, @2];
-
- XCTAssertEqualObjects(testExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(expression, testExpression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"sum:" arguments:@[MGLConstantExpression(@1), MGLConstantExpression(@1), MGLConstantExpression(@2)]];
- NSArray *jsonExpression = @[@"+", @1, @1, @2];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
-
- // - [NSExpression expressionWithMGLJSONObject:] creates an expression with an aggregate expression as an argument. This is not equal to an expression with an array of expressions as an argument. For testing purposes, we will compare their operands and arrays of expressions.
- NSExpression *aggregateExpression = [NSExpression expressionWithMGLJSONObject:jsonExpression];
- XCTAssertEqualObjects(aggregateExpression.operand, expression.operand);
- XCTAssertEqualObjects(aggregateExpression.arguments.firstObject.collection, expression.arguments);
- }
- {
- NSArray *threeArguments = @[MGLConstantExpression(@1), MGLConstantExpression(@1), MGLConstantExpression(@1)];
- NSExpression *expression = [NSExpression expressionForFunction:@"add:to:" arguments:threeArguments];
- NSArray *jsonExpression = @[@"+", @1, @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- jsonExpression = @[@"+", @[@"+", @1, @1], @1];
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"1 + 1 + 1"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], [NSExpression expressionWithFormat:@"1 + 1 + 1"]);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"from:subtract:" arguments:arguments];
- NSArray *jsonExpression = @[@"-", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"1 - 1"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"multiply:by:" arguments:arguments];
- NSArray *jsonExpression = @[@"*", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"1 * 1"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"divide:by:" arguments:arguments];
- NSArray *jsonExpression = @[@"/", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"1 / 1"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"modulus:by:" arguments:arguments];
- NSArray *jsonExpression = @[@"%", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- // NSExpression lacks a shorthand operator for modulus.
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"max:" arguments:arguments];
- NSArray *jsonExpression = @[@"max", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
-
- NSExpression *aggregateExpression = [NSExpression expressionWithMGLJSONObject:jsonExpression];
- XCTAssertEqualObjects(aggregateExpression.operand, expression.operand);
- XCTAssertEqualObjects(aggregateExpression.arguments.firstObject.collection, expression.arguments);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"min:" arguments:arguments];
- NSArray *jsonExpression = @[@"min", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
-
- NSExpression *aggregateExpression = [NSExpression expressionWithMGLJSONObject:jsonExpression];
- XCTAssertEqualObjects(aggregateExpression.operand, expression.operand);
- XCTAssertEqualObjects(aggregateExpression.arguments.firstObject.collection, expression.arguments);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"ceiling:" arguments:@[MGLConstantExpression(@1.5)]];
- NSArray *jsonExpression = @[@"ceil", @1.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"ceiling:" arguments:@[MGLConstantExpression(@-1.5)]];
- NSArray *jsonExpression = @[@"ceil", @-1.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @-1);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"ceiling:" arguments:@[MGLConstantExpression(@2)]];
- NSArray *jsonExpression = @[@"ceil", @2];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"ceiling:" arguments:@[MGLConstantExpression(@-2)]];
- NSArray *jsonExpression = @[@"ceil", @-2];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @-2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"trunc:" arguments:@[MGLConstantExpression(@1.5)]];
- NSArray *jsonExpression = @[@"-", @1.5, @[@"%", @1.5, @1]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @1);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"trunc:" arguments:@[MGLConstantExpression(@-1.5)]];
- NSArray *jsonExpression = @[@"-", @-1.5, @[@"%", @-1.5, @1]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @-1);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"abs:" arguments:@[MGLConstantExpression(@2)]];
- NSArray *jsonExpression = @[@"abs", @2];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"abs:" arguments:@[MGLConstantExpression(@-2)]];
- NSArray *jsonExpression = @[@"abs", @-2];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"floor:" arguments:@[MGLConstantExpression(@1.5)]];
- NSArray *jsonExpression = @[@"floor", @1.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @1);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"floor:" arguments:@[MGLConstantExpression(@-1.5)]];
- NSArray *jsonExpression = @[@"floor", @-1.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @-2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"floor:" arguments:@[MGLConstantExpression(@2)]];
- NSArray *jsonExpression = @[@"floor", @2];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"floor:" arguments:@[MGLConstantExpression(@-2)]];
- NSArray *jsonExpression = @[@"floor", @-2];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @-2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_round:" arguments:@[MGLConstantExpression(@1.5)]];
- NSArray *jsonExpression = @[@"round", @1.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_round:" arguments:@[MGLConstantExpression(@-1.5)]];
- NSArray *jsonExpression = @[@"round", @-1.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @-2);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_round:" arguments:@[MGLConstantExpression(@2.5)]];
- NSArray *jsonExpression = @[@"round", @2.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @3);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_round:" arguments:@[MGLConstantExpression(@-2.5)]];
- NSArray *jsonExpression = @[@"round", @-2.5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @-3);
- }
-}
-
-- (void)testTrigonometricExpressionObject {
- NSArray *arguments = @[MGLConstantExpression(@1), MGLConstantExpression(@1)];
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"sqrt:" arguments:arguments];
- NSArray *jsonExpression = @[@"sqrt", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"ln:" arguments:arguments];
- NSArray *jsonExpression = @[@"ln", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_log2:" arguments:@[MGLConstantExpression(@1024)]];
- NSArray *jsonExpression = @[@"log2", @1024];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @10);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"raise:toPower:" arguments:arguments];
- NSArray *jsonExpression = @[@"^", @1, @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"1 ** 1"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"exp:" arguments:@[MGLConstantExpression(@0)]];
- NSArray *jsonExpression = @[@"^", @[@"e"], @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @1);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForConstantValue:@(M_E)];
- NSArray *jsonExpression = @[@"e"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @(M_E));
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForConstantValue:@(M_PI)];
- NSArray *jsonExpression = @[@"pi"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @(M_PI));
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_acos:" arguments:@[MGLConstantExpression(@1)]];
- NSArray *jsonExpression = @[@"acos", @1];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @0);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_cos:" arguments:@[MGLConstantExpression(@0)]];
- NSArray *jsonExpression = @[@"cos", @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @1);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_asin:" arguments:@[MGLConstantExpression(@0)]];
- NSArray *jsonExpression = @[@"asin", @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @0);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_sin:" arguments:@[MGLConstantExpression(@0)]];
- NSArray *jsonExpression = @[@"sin", @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @0);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_atan:" arguments:@[MGLConstantExpression(@20)]];
- NSArray *jsonExpression = @[@"atan", @20];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- NSNumber *value = [expression expressionValueWithObject:nil context:nil];
- XCTAssertEqualWithAccuracy(value.doubleValue, 1.52, 0.001);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_tan:" arguments:@[MGLConstantExpression(@0)]];
- NSArray *jsonExpression = @[@"tan", @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @0);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-}
-
-- (void)testStringFormattingExpressionObject {
- NSArray *arguments = @[MGLConstantExpression(@"MacDonald")];
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"FUNCTION('Old', 'stringByAppendingString:', 'MacDonald')"];
- NSExpression *aftermarketExpression = [NSExpression expressionWithFormat:@"mgl_join({'Old', 'MacDonald'})"];
- NSArray *jsonExpression = @[@"concat", @"Old", @"MacDonald"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(aftermarketExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @"OldMacDonald");
- XCTAssertEqualObjects([aftermarketExpression expressionValueWithObject:nil context:nil], @"OldMacDonald");
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], aftermarketExpression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_join:" arguments:@[@"Old", @"MacDonald"]];
- NSExpression *aftermarketExpression = [NSExpression expressionWithFormat:@"mgl_join({'Old', 'MacDonald'})"];
- NSArray *jsonExpression = @[@"concat", @"Old", @"MacDonald"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
-
- XCTAssertEqualObjects(aftermarketExpression.mgl_jsonExpressionObject, expression.mgl_jsonExpressionObject);
- NSExpression *aggregateExpression = [NSExpression expressionWithMGLJSONObject:jsonExpression];
- XCTAssertEqualObjects(aggregateExpression.operand, expression.operand);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"uppercase:" arguments:arguments];
- NSArray *jsonExpression = @[@"upcase", @"MacDonald"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"lowercase:" arguments:arguments];
- NSArray *jsonExpression = @[@"downcase", @"MacDonald"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"length:" arguments:arguments];
- NSArray *jsonExpression = @[@"length", @"MacDonald"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-}
-
-- (void)testTypeConversionExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"FUNCTION(number, 'boolValue')"];
- NSArray *jsonExpression = @[@"to-boolean", @[@"get", @"number"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- // NSExpression is unable to evaluate -[NSNumber boolValue] by itself
- // because it returns a primitive instead of an object.
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'mgl_number')"];
- NSArray *jsonExpression = @[@"to-number", @[@"get", @"postalCode"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'doubleValue')"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'floatValue')"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'decimalValue')"].mgl_jsonExpressionObject, jsonExpression);
- // NSExpression is unable to evaluate NSNumber’s -floatValue,
- // -doubleValue, or -decimalValue by themselves because they each return
- // a primitive instead of an object.
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression],
- [NSExpression expressionWithFormat:@"CAST(postalCode, 'NSNumber')"]);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'mgl_numberWithFallbackValues:', zipCode)"];
- NSArray *jsonExpression = @[@"to-number", @[@"get", @"postalCode"], @[@"get", @"zipCode"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'doubleValue', zipCode)"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'floatValue', zipCode)"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'decimalValue', zipCode)"].mgl_jsonExpressionObject, jsonExpression);
- // NSExpression is unable to evaluate NSNumber’s -floatValue,
- // -doubleValue, or -decimalValue by themselves because they each return
- // a primitive instead of an object.
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"CAST(postalCode, 'NSNumber')"];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(postalCode, 'mgl_numberWithFallbackValues:')"];
- NSArray *jsonExpression = @[@"to-number", @[@"get", @"postalCode"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:@{@"postalCode": @"02134"} context:nil], @02134);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"CAST(number, 'NSString')"];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(number, 'stringValue')"];
- NSArray *jsonExpression = @[@"to-string", @[@"get", @"number"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:@{@"number": @1.5} context:nil], @"1.5");
- XCTAssertEqualObjects([compatibilityExpression expressionValueWithObject:@{@"number": @1.5} context:nil], @"1.5");
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
-#if TARGET_OS_IPHONE
- NSExpression *expression = [NSExpression expressionWithFormat:@"CAST(x, 'UIColor')"];
-#else
- NSExpression *expression = [NSExpression expressionWithFormat:@"CAST(x, 'NSColor')"];
-#endif
-
- NSArray *jsonExpression = @[@"to-color", @[@"get", @"x"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('to-color', x, y, z)"];
- NSArray *jsonExpression = @[@"to-color", @[@"get", @"x"], @[@"get", @"y"], @[@"get", @"z"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"CAST(noindex(x), 'NSArray')"];
- NSArray *jsonExpression = @[@"to-rgba", @[@"get", @"x"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"CAST(noindex(%@), 'NSArray')", MGLConstantExpression(MGLColor.blueColor)];
- NSArray *jsonExpression = @[@"to-rgba", @[@"rgb", @0, @0, @255]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"CAST(noindex('x'), 'NSArray')"];
- XCTAssertThrowsSpecificNamed(expression.mgl_jsonExpressionObject, NSException, NSInvalidArgumentException);
- }
-}
-
-- (void)testInterpolationExpressionObject {
- {
- NSDictionary *stops = @{@0: MGLConstantExpression(@100), @10: MGLConstantExpression(@200)};
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(x, 'linear', nil, %@)", stops];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(x, 'mgl_interpolateWithCurveType:parameters:stops:', 'linear', nil, %@)", stops];
- NSArray *jsonExpression = @[@"interpolate", @[@"linear"], @[@"get", @"x"], @0, @100, @10, @200];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSDictionary *stops = @{@1: MGLConstantExpression(@2), @3: MGLConstantExpression(@6)};
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(x, 'exponential', 2, %@)", stops];
- NSArray *jsonExpression = @[@"interpolate", @[@"exponential", @2], @[@"get", @"x"], @1, @2, @3, @6];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSDictionary *stops = @{@0: MGLConstantExpression(@0), @100: MGLConstantExpression(@100)};
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(x, 'cubic-bezier', { 0.42, 0, 0.58, 1 }, %@)", stops];
- NSArray *jsonExpression = @[@"interpolate", @[@"cubic-bezier", @0.42, @0, @0.58, @1], @[@"get", @"x"], @0, @0, @100, @100];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSDictionary *stops = @{@0: MGLConstantExpression(@111), @1: MGLConstantExpression(@1111)};
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(x, 11, %@)", stops];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(x, 'mgl_stepWithMinimum:stops:', 11, %@)", stops];
- NSArray *jsonExpression = @[@"step", @[@"get", @"x"], @11, @0, @111, @1, @1111];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSDictionary *stops = @{@0: MGLConstantExpression(@111), @1: MGLConstantExpression(@1111)};
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, 11, %@)", stops];
- NSArray *jsonExpression = @[@"step", @[@"zoom"], @11, @0, @111, @1, @1111];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSDictionary *stops = @{};
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(x, 'cubic-bezier', { 0.42, 0, 0.58, 1 }, %@)", stops];
- XCTAssertThrowsSpecificNamed(expression.mgl_jsonExpressionObject, NSException, NSInvalidArgumentException);
- }
- {
- NSDictionary *stops = @{};
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, 11, %@)", stops];
- XCTAssertThrowsSpecificNamed(expression.mgl_jsonExpressionObject, NSException, NSInvalidArgumentException);
- }
-}
-
-- (void)testMatchExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_MATCH(2 - 1, %@, %@, %@, %@, 'default')", MGLConstantExpression(@1),
- MGLConstantExpression(@"one"),
- MGLConstantExpression(@0),
- MGLConstantExpression(@"zero")];
- NSExpression *predicate = [NSExpression expressionWithFormat:@"2 - 1"];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(%@, 'mgl_match:', %@)", predicate, @[MGLConstantExpression(@1),
- MGLConstantExpression(@"one"),
- MGLConstantExpression(@0),
- MGLConstantExpression(@"zero"),
- MGLConstantExpression(@"default")]];
- NSArray *jsonExpression = @[@"match", @[@"-", @2, @1], @1, @"one", @0, @"zero", @"default"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_MATCH(2 * 1, %@, %@, 'default')", MGLConstantExpression(@1), MGLConstantExpression(@"one")];
- NSArray *jsonExpression = @[@"match", @[@"*", @2, @1], @1, @"one", @"default"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_MATCH(x, {'a', 'A'}, 'Apple', {'b', 'B'}, 'Banana', 'Kumquat')"];
- NSArray *jsonExpression = @[@"match", @[@"get", @"x"], @[@"a", @"A"], @"Apple", @[@"b", @"B"], @"Banana", @"Kumquat"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_MATCH(x, %@, 'Apple', %@, 'Banana', 'Kumquat')",
- @[@"a", @"A"], @"Bb"];
- NSArray *jsonExpression = @[@"match", @[@"get", @"x"], @[@"a", @"A"], @"Apple", @"Bb", @"Banana", @"Kumquat"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression].description, expression.description);
- }
-}
-
-- (void)testCoalesceExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_coalesce(%@)",
- @[[NSExpression expressionForKeyPath:@"x"],
- [NSExpression expressionForKeyPath:@"y"],
- [NSExpression expressionForKeyPath:@"z"],
- [NSExpression expressionForConstantValue:@0]]];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(%@, 'mgl_coalesce')", @[[NSExpression expressionForKeyPath:@"x"],
- [NSExpression expressionForKeyPath:@"y"],
- [NSExpression expressionForKeyPath:@"z"],
- [NSExpression expressionForConstantValue:@0]]];
- NSArray *jsonExpression = @[@"coalesce", @[@"get", @"x"], @[@"get", @"y"], @[@"get", @"z"], @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-
-}
-
-- (void)testConditionalExpressionObject {
- {
- NSPredicate *conditional = [NSPredicate predicateWithFormat:@"1 = 2"];
- NSExpression *trueExpression = [NSExpression expressionForConstantValue:@YES];
- NSExpression *falseExpression = [NSExpression expressionForConstantValue:@NO];
- NSExpression *expression = [NSExpression expressionForConditional:conditional trueExpression:trueExpression falseExpression:falseExpression];
- NSArray *jsonExpression = @[@"case", @[@"==", @1, @2], @YES, @NO];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithFormat:@"TERNARY(1 = 2, TRUE, FALSE)"].mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @NO);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"TERNARY(0 = 1, TRUE, TERNARY(1 = 2, TRUE, FALSE))"];
- NSArray *jsonExpression = @[@"case", @[@"==", @0, @1], @YES, @[@"case", @[@"==", @1, @2], @YES, @NO]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @NO);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_IF(%@, %@, %@)",
- [NSExpression expressionWithFormat:@"%@", [NSPredicate predicateWithFormat:@"1 = 2"]],
- MGLConstantExpression(@YES),
- MGLConstantExpression(@NO)];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(%@, 'mgl_if:', %@)", [NSPredicate predicateWithFormat:@"1 = 2"], @[MGLConstantExpression(@YES), MGLConstantExpression(@NO)]];
- NSArray *jsonExpression = @[@"case", @[@"==", @1, @2], @YES, @NO];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- expression = [NSExpression expressionWithFormat:@"TERNARY(1 = 2, YES, NO)"];
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @NO);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_IF(%@, %@, %@, %@, %@)",
- [NSExpression expressionWithFormat:@"%@", [NSPredicate predicateWithFormat:@"1 = 2"]],
- MGLConstantExpression(@YES),
- [NSExpression expressionWithFormat:@"%@", [NSPredicate predicateWithFormat:@"1 = 1"]],
- MGLConstantExpression(@YES),
- MGLConstantExpression(@NO)];
- NSArray *jsonExpression = @[@"case", @[@"==", @1, @2], @YES, @[@"==", @1, @1], @YES, @NO];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @YES);
- }
- {
- NSArray *jsonExpression = @[
- @"case",
- @[
- @"<",
- @[@"get", @"area"],
- @80000
- ],
- @[@"get", @"abbr"],
- @[@"get", @"name_en"]
- ];
- NSExpression *expression = [NSExpression expressionWithFormat:@"TERNARY(area < 80000, abbr, name_en)"];
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- }
-}
-
-- (void)testLookupExpressionObject {
- {
- NSExpression *array = [NSExpression expressionForAggregate:@[MGLConstantExpression(@9),
- MGLConstantExpression(@8),
- MGLConstantExpression(@7)]];
- NSExpression *expression = [NSExpression expressionForFunction:@"objectFrom:withIndex:"
- arguments:@[array, MGLConstantExpression(@"FIRST")]];
- NSArray *jsonExpression = @[@"at", @0, @[ @"literal", @[@9, @8, @7]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- }
- {
- NSExpression *array = [NSExpression expressionForAggregate:@[MGLConstantExpression(@9),
- MGLConstantExpression(@8),
- MGLConstantExpression(@7)]];
- NSExpression *expression = [NSExpression expressionForFunction:@"objectFrom:withIndex:"
- arguments:@[array, MGLConstantExpression(@"LAST")]];
- NSArray *jsonExpression = @[@"at", @[@"-", @[@"length", @[ @"literal", @[@9, @8, @7]]], @1], @[ @"literal", @[@9, @8, @7]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- }
- {
- NSExpression *array = [NSExpression expressionForAggregate:@[MGLConstantExpression(@9),
- MGLConstantExpression(@8),
- MGLConstantExpression(@7)]];
- NSExpression *expression = [NSExpression expressionForFunction:@"objectFrom:withIndex:"
- arguments:@[array, MGLConstantExpression(@"SIZE")]];
- NSArray *jsonExpression = @[@"length", @[ @"literal", @[@9, @8, @7]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- }
- {
- NSExpression *array = [NSExpression expressionForAggregate:@[MGLConstantExpression(@9),
- MGLConstantExpression(@8),
- MGLConstantExpression(@7)]];
- NSExpression *expression = [NSExpression expressionForFunction:@"objectFrom:withIndex:"
- arguments:@[array, MGLConstantExpression(@1)]];
- NSArray *jsonExpression = @[@"at", @1, @[ @"literal", @[@9, @8, @7]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *array = [NSExpression expressionForAggregate:@[MGLConstantExpression(@9),
- MGLConstantExpression(@8),
- MGLConstantExpression(@7)]];
- NSExpression *expression = [NSExpression expressionForFunction:@"objectFrom:withIndex:"
- arguments:@[array, [NSExpression expressionForKeyPath:@"x"]]];
- NSArray *jsonExpression = @[@"at", @[@"get", @"x"], @[ @"literal", @[@9, @8, @7]]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_does:have:"
- arguments:@[[NSExpression expressionForEvaluatedObject],
- [NSExpression expressionForConstantValue:@"x"]]];
- NSExpression *compatibilityExpression = [NSExpression expressionWithFormat:@"FUNCTION(self, 'mgl_has:', 'x')"];
- NSArray *jsonExpression = @[@"has", @"x"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_does:have:"
- arguments:@[MGLConstantExpression(@{@"x": MGLConstantExpression(@0)}),
- MGLConstantExpression(@"x")]];
- NSArray *jsonExpression = @[@"has", @"x", @[@"literal", @{@"x": @0}]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionForFunction:@"mgl_does:have:"
- arguments:@[[NSExpression expressionForVariable:@"featureAttributes"],
- [NSExpression expressionForConstantValue:@"x"]]];
- NSArray *jsonExpression = @[@"has", @"x", @[@"properties"]];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression;
- expression = [NSExpression expressionWithFormat:@"TERNARY(key != nil, 1, 0)"];
- NSArray *jsonExpression = @[@"case", @[@"!=", @[@"get", @"key"], [NSNull null]], @1, @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- XCTAssertEqualObjects([expression expressionValueWithObject:@{} context:nil], @NO);
- XCTAssertEqualObjects([expression expressionValueWithObject:@{@"key": @"🗝"} context:nil], @YES);
- }
- {
- NSDictionary *dictionary = @{@"key": @"🔑"};
- NSExpression *expression;
- expression = [NSExpression expressionWithFormat:@"TERNARY(%@.key != nil, 1, 0)", dictionary];
- NSArray *jsonExpression = @[@"case", @[@"!=", @[@"get", @"key", @[@"literal", dictionary]], [NSNull null]], @1, @0];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- // The dictionary isn’t equal enough.
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression].description, expression.description);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @YES);
- }
-}
-
-- (void)testFormatExpressionObject {
- {
- MGLAttributedExpression *attribute1 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"foo"]
- fontNames:nil
- fontScale:@(1.2)];
- MGLAttributedExpression *attribute2 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"biz"]
- fontNames:nil
- fontScale:@(1.0)];
- MGLAttributedExpression *attribute3 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"bar"]
- fontNames:nil
- fontScale:@(0.8)];
- MGLAttributedExpression *attribute4 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"\r"]
- fontNames:@[]
- fontScale:nil];
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@, %@, %@, %@)",
- MGLConstantExpression(attribute1),
- MGLConstantExpression(attribute4),
- MGLConstantExpression(attribute2),
- MGLConstantExpression(attribute3)];
- NSArray *jsonExpression = @[@"format", @"foo", @{@"font-scale": @1.2}, @"\r", @{}, @"biz", @{@"font-scale": @1.0}, @"bar", @{@"font-scale": @0.8}];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- MGLAttributedExpression *attribute1 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"foo"]
- fontNames:nil
- fontScale:@(1.2)];
- MGLAttributedExpression *attribute2 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"biz"]
- fontNames:nil
- fontScale:@(1.0)];
- MGLAttributedExpression *attribute3 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"bar"]
- fontNames:nil
- fontScale:@(0.8)];
- MGLAttributedExpression *attribute4 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"\n"]
- fontNames:@[]
- fontScale:nil];
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@, %@, %@, %@)",
- MGLConstantExpression(attribute1),
- MGLConstantExpression(attribute4),
- MGLConstantExpression(attribute2),
- MGLConstantExpression(attribute3)];
- NSArray *jsonExpression = @[@"format", @"foo", @{@"font-scale": @1.2}, @"\n", @{}, @"biz", @{@"font-scale": @1.0}, @"bar", @{@"font-scale": @0.8}];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- MGLAttributedExpression *attribute1 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"foo"]
- fontNames:nil
- fontScale:@(1.2)];
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@)", MGLConstantExpression(attribute1)];
-
- NSExpression *compatibilityExpression = [NSExpression expressionForFunction:@"mgl_attributed:" arguments:@[MGLConstantExpression(attribute1)]];
- NSArray *jsonExpression = @[@"format", @"foo", @{@"font-scale": @1.2}];
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, expression.mgl_jsonExpressionObject);
- XCTAssertEqualObjects(compatibilityExpression, expression);
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- MGLAttributedExpression *attribute1 = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionForConstantValue:@"foo"]
- attributes:@{ MGLFontScaleAttribute: MGLConstantExpression(@(1.2)),
- MGLFontColorAttribute: MGLConstantExpression(@"yellow") }] ;
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@)", MGLConstantExpression(attribute1)];
-
- NSExpression *compatibilityExpression = [NSExpression expressionForFunction:@"mgl_attributed:" arguments:@[MGLConstantExpression(attribute1)]];
- NSArray *jsonExpression = @[ @"format", @"foo", @{ @"font-scale": @1.2, @"text-color": @"yellow" } ];
- XCTAssertEqualObjects(compatibilityExpression.mgl_jsonExpressionObject, expression.mgl_jsonExpressionObject);
- XCTAssertEqualObjects(compatibilityExpression, expression);
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- MGLAttributedExpression *attribute1 = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionForConstantValue:@"foo"]] ;
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@)", MGLConstantExpression(attribute1)];
-
- NSArray *jsonExpression = @[ @"format", @"foo", @{ } ];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *fontNames = [NSExpression expressionForAggregate:@[ MGLConstantExpression(@"DIN Offc Pro Bold"), MGLConstantExpression(@"Arial Unicode MS Bold") ]];
- MGLAttributedExpression *attribute1 = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionForConstantValue:@"foo"]
- attributes:@{ MGLFontScaleAttribute: MGLConstantExpression(@(1.2)),
- MGLFontColorAttribute: MGLConstantExpression(@"yellow"),
- MGLFontNamesAttribute: fontNames
- }] ;
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@)", MGLConstantExpression(attribute1)];
-
- NSArray *jsonExpression = @[ @"format", @"foo", @{ @"font-scale": @1.2, @"text-color": @"yellow" , @"text-font" : @[ @"literal", @[ @"DIN Offc Pro Bold", @"Arial Unicode MS Bold" ]]} ];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *fontNames = [NSExpression expressionForAggregate:@[ MGLConstantExpression(@"DIN Offc Pro Bold"), MGLConstantExpression(@"Arial Unicode MS Bold") ]];
- MGLAttributedExpression *attribute1 = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionForConstantValue:@"foo"]
- attributes:@{ MGLFontScaleAttribute: MGLConstantExpression(@(1.2)),
- MGLFontColorAttribute: MGLConstantExpression([MGLColor redColor]),
- MGLFontNamesAttribute: fontNames
- }] ;
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@)", MGLConstantExpression(attribute1)];
-
- NSArray *jsonExpression = @[ @"format", @"foo", @{ @"font-scale": @1.2, @"text-color": @[@"rgb", @255, @0, @0] , @"text-font" : @[ @"literal", @[ @"DIN Offc Pro Bold", @"Arial Unicode MS Bold" ]]} ];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *fontNames = [NSExpression expressionForAggregate:@[ MGLConstantExpression(@"DIN Offc Pro Bold"), MGLConstantExpression(@"Arial Unicode MS Bold") ]];
- MGLAttributedExpression *attribute1 = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionWithFormat:@"CAST(x, 'NSString')"]
- attributes:@{ MGLFontScaleAttribute: MGLConstantExpression(@(1.2)),
- MGLFontColorAttribute: MGLConstantExpression([MGLColor redColor]),
- MGLFontNamesAttribute: fontNames
- }] ;
- NSExpression *expression = [NSExpression expressionWithFormat:@"mgl_attributed:(%@)", MGLConstantExpression(attribute1)];
-
- NSArray *jsonExpression = @[ @"format", @[@"to-string", @[@"get", @"x"]], @{ @"font-scale": @1.2, @"text-color": @[@"rgb", @255, @0, @0] , @"text-font" : @[ @"literal", @[ @"DIN Offc Pro Bold", @"Arial Unicode MS Bold" ]]} ];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- MGLAttributedExpression *attribute1 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"foo"]
- fontNames:nil
- fontScale:@(1.2)];
- MGLAttributedExpression *attribute2 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"biz"]
- fontNames:nil
- fontScale:@(1.0)];
- MGLAttributedExpression *attribute3 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"bar"]
- fontNames:nil
- fontScale:@(0.8)];
- MGLAttributedExpression *attribute4 = [MGLAttributedExpression attributedExpression:[NSExpression expressionForConstantValue:@"\n"]
- fontNames:@[]
- fontScale:nil];
- NSExpression *expression = [NSExpression mgl_expressionForAttributedExpressions:@[MGLConstantExpression(attribute1),
- MGLConstantExpression(attribute4),
- MGLConstantExpression(attribute2),
- MGLConstantExpression(attribute3)]];
- NSArray *jsonExpression = @[@"format", @"foo", @{@"font-scale": @1.2}, @"\n", @{}, @"biz", @{@"font-scale": @1.0}, @"bar", @{@"font-scale": @0.8}];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-}
-
-- (void)testGenericExpressionObject {
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('random', 1, 2, 3, 4, 5)"];
- NSArray *jsonExpression = @[@"random", @1, @2, @3, @4, @5];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('random', 1, 2, 3, 4)"];
- XCTAssertThrowsSpecificNamed([expression expressionValueWithObject:nil context:nil], NSException, NSInvalidArgumentException);
- }
- {
- NSArray *arguments = @[
- MGLConstantExpression(@"one"), MGLConstantExpression(@1),
- [NSExpression expressionForVariable:@"one"],
- ];
- NSExpression *nullaryExpression = [NSExpression expressionForFunction:@"MGL_LET" arguments:arguments];
- NSExpression *unaryExpression = [NSExpression expressionForFunction:@"MGL_LET:" arguments:arguments];
- XCTAssertEqualObjects(nullaryExpression.mgl_jsonExpressionObject, unaryExpression.mgl_jsonExpressionObject);
- }
- {
- NSArray *arguments = @[
- [NSExpression expressionForVariable:@"x"],
- MGLConstantExpression(@YES), MGLConstantExpression(@"yes"),
- MGLConstantExpression(@NO), MGLConstantExpression(@"no"),
- ];
- NSExpression *nullaryExpression = [NSExpression expressionForFunction:@"MGL_MATCH" arguments:arguments];
- NSExpression *unaryExpression = [NSExpression expressionForFunction:@"MGL_MATCH:" arguments:arguments];
- XCTAssertEqualObjects(nullaryExpression.mgl_jsonExpressionObject, unaryExpression.mgl_jsonExpressionObject);
- }
- {
- NSArray *arguments = @[
- [NSPredicate predicateWithValue:YES],
- MGLConstantExpression(@"yes"), MGLConstantExpression(@"no"),
- ];
- NSExpression *nullaryExpression = [NSExpression expressionForFunction:@"MGL_IF" arguments:arguments];
- NSExpression *unaryExpression = [NSExpression expressionForFunction:@"MGL_IF:" arguments:arguments];
- XCTAssertEqualObjects(nullaryExpression.mgl_jsonExpressionObject, unaryExpression.mgl_jsonExpressionObject);
- }
- {
- NSArray *arguments = @[MGLConstantExpression(@"zoom")];
- NSExpression *nullaryExpression = [NSExpression expressionForFunction:@"MGL_FUNCTION" arguments:arguments];
- NSExpression *unaryExpression = [NSExpression expressionForFunction:@"MGL_FUNCTION:" arguments:arguments];
- XCTAssertEqualObjects(nullaryExpression.mgl_jsonExpressionObject, unaryExpression.mgl_jsonExpressionObject);
- }
-}
-
-#pragma mark - Localization tests
-
-- (void)testLocalization {
- {
- NSExpression *original = MGLConstantExpression(@"");
- NSExpression *expected = original;
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected);
- }
- {
- NSExpression *original = MGLConstantExpression(@"Old MacDonald");
- NSExpression *expected = original;
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected);
- }
- {
- NSExpression *original = MGLConstantExpression(@"{name_en}");
- NSExpression *expected = original;
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected);
- }
- {
- NSExpression *keyExpression = [NSExpression expressionForKeyPath:@"name_en"];
- MGLAttributedExpression *attributedExpression = [MGLAttributedExpression attributedExpression:keyExpression attributes:@{}];
- NSExpression *original = [NSExpression expressionForConstantValue:attributedExpression];
-
- NSExpression *coalesceExpression = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_en", @"name"];
- MGLAttributedExpression *expectedAttributedExpression = [MGLAttributedExpression attributedExpression:coalesceExpression attributes:@{}];
- NSExpression *expected = [NSExpression expressionForConstantValue:expectedAttributedExpression];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected);
- }
- {
- NSExpression *original = [NSExpression expressionForKeyPath:@"name_en"];
- NSExpression *expected = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_en", @"name"];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected);
- }
- {
- NSExpression *original = [NSExpression expressionForKeyPath:@"name_en"];
- NSExpression *expected = [NSExpression expressionForKeyPath:@"name"];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:[NSLocale localeWithLocaleIdentifier:@"mul"]], expected);
- }
- {
- NSExpression *original = [NSExpression expressionForKeyPath:@"name_en"];
- NSExpression *expected = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_fr", @"name"];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:[NSLocale localeWithLocaleIdentifier:@"fr-CA"]], expected);
- }
- {
- NSExpression *original = [NSExpression expressionForKeyPath:@"name_en"];
- NSExpression *expected = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K, %K, %K})", @"name_zh-Hans", @"name_zh-CN", @"name_zh", @"name"];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:[NSLocale localeWithLocaleIdentifier:@"zh-Hans"]], expected);
- }
- {
- NSExpression *original = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_en", @"name"];
- NSExpression *expected = [NSExpression expressionWithFormat:@"mgl_coalesce:({mgl_coalesce:({name_en, name}), mgl_coalesce:({name_en, name})})"];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected);
- }
- {
- NSExpression *original = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_en", @"name"];
- NSExpression *expected = [NSExpression expressionWithFormat:@"mgl_coalesce:({mgl_coalesce:({name_ja, name}), mgl_coalesce:({name_ja, name})})"];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:[NSLocale localeWithLocaleIdentifier:@"ja-JP"]], expected);
- }
- {
- NSExpression *original = [NSExpression expressionForKeyPath:@"name_en"];
- NSExpression *expected = [NSExpression expressionForKeyPath:@"name"];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:[NSLocale localeWithLocaleIdentifier:@"tlh"]], expected);
- }
- {
- NSExpression *original = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, short, %@)", @{
- @1: [NSExpression expressionForKeyPath:@"abbr"],
- @2: @"…",
- @3: [NSExpression expressionForKeyPath:@"name_fr"],
- }];
- NSExpression *expected = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, short, %@)", @{
- @1: [NSExpression expressionForKeyPath:@"abbr"],
- @2: @"…",
- @3: [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_es", @"name"]
- }];
- XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:[NSLocale localeWithLocaleIdentifier:@"es-PR"]], expected);
- }
- {
- NSArray *jsonExpression = @[
- @"step",
- @[@"zoom"],
- @[
- @"case",
- @[
- @"<",
- @[
- @"to-number",
- @[@"get", @"area"]
- ],
- @80000
- ],
- @[@"get", @"abbr"],
- @[@"get", @"name_en"]
- ],
- @5, @[@"get", @"name_en"]
- ];
- NSArray *localizedJSONExpression = @[
- @"step",
- @[@"zoom"],
- @[
- @"case",
- @[
- @"<",
- @[
- @"to-number",
- @[@"get", @"area"]
- ],
- @80000
- ],
- @[@"get", @"abbr"],
- @[@"get", @"name"]
- ],
- @5, @[@"get", @"name"]
- ];
- NSExpression *expression = [NSExpression expressionWithMGLJSONObject:jsonExpression];
- NSExpression *localizedExpression = [expression mgl_expressionLocalizedIntoLocale:[NSLocale localeWithLocaleIdentifier:@"mul"]];
- XCTAssertEqualObjects(localizedExpression.mgl_jsonExpressionObject, localizedJSONExpression);
- }
-}
-
-- (void)testConvenienceInitializers {
- {
- NSExpression *expression = [NSExpression mgl_expressionForConditional:[NSPredicate predicateWithFormat:@"1 = 2"]
- trueExpression:MGLConstantExpression(@YES)
- falseExpresssion:MGLConstantExpression(@NO)];
-
- NSArray *jsonExpression = @[@"case", @[@"==", @1, @2], @YES, @NO];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @NO);
- }
- {
- NSDictionary *stops = @{@0: MGLConstantExpression(@111), @1: MGLConstantExpression(@1111)};
- NSExpression *expression = [NSExpression mgl_expressionForSteppingExpression:[NSExpression expressionForKeyPath:@"x"]
- fromExpression:[NSExpression expressionForConstantValue:@11]
- stops:[NSExpression expressionForConstantValue:stops]];
- NSArray *jsonExpression = @[@"step", @[@"get", @"x"], @11, @0, @111, @1, @1111];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSDictionary *stops = @{@0: MGLConstantExpression(@100), @10: MGLConstantExpression(@200)};
- NSExpression *expression = [NSExpression mgl_expressionForInterpolatingExpression:[NSExpression expressionForKeyPath:@"x"]
- withCurveType:MGLExpressionInterpolationModeLinear
- parameters:nil
- stops:[NSExpression expressionForConstantValue:stops]];
- NSArray *jsonExpression = @[@"interpolate", @[@"linear"], @[@"get", @"x"], @0, @100, @10, @200];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSExpression *expression = [[NSExpression expressionForConstantValue:@"Old"] mgl_expressionByAppendingExpression:[NSExpression expressionForConstantValue:@"MacDonald"]];
-
- NSArray *jsonExpression = @[@"concat", @"Old", @"MacDonald"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @"OldMacDonald");
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
- {
- NSDictionary *values = @{ MGLConstantExpression(@1): MGLConstantExpression(@"one") };
- NSExpression *expression = [NSExpression mgl_expressionForMatchingExpression:[NSExpression expressionWithFormat:@"2 * 1"]
- inDictionary:values
- defaultExpression:[NSExpression expressionForConstantValue:@"default"]];
- NSArray *jsonExpression = @[@"match", @[@"*", @2, @1], @1, @"one", @"default"];
- XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression);
- }
-}
-
-
-@end
diff --git a/platform/darwin/test/MGLFeatureTests.mm b/platform/darwin/test/MGLFeatureTests.mm
deleted file mode 100644
index edc105bca4..0000000000
--- a/platform/darwin/test/MGLFeatureTests.mm
+++ /dev/null
@@ -1,364 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import <mbgl/util/geometry.hpp>
-#import "MGLFoundation_Private.h"
-#import "../../darwin/src/MGLFeature_Private.h"
-
-@interface MGLFeatureTests : XCTestCase
-
-@end
-
-@implementation MGLFeatureTests
-
-- (void)testGeometryConversion {
- std::vector<mbgl::Feature> features;
-
- mbgl::Point<double> point = { -90.066667, 29.95 };
- features.push_back(mbgl::Feature { point });
-
- mbgl::LineString<double> lineString = {
- { -84.516667, 39.1 },
- { -90.066667, 29.95 },
- };
- features.push_back(mbgl::Feature { lineString });
-
- mbgl::Polygon<double> polygon = {
- {
- { 1, 1 },
- { 4, 1 },
- { 4, 4 },
- { 1, 4 },
- },
- {
- { 2, 2 },
- { 3, 2 },
- { 3, 3 },
- { 2, 3 },
- },
- };
- features.push_back(mbgl::Feature { polygon });
-
- NSArray<MGLShape <MGLFeature> *> *shapes = MGLFeaturesFromMBGLFeatures(features);
- XCTAssertEqual(shapes.count, 3UL, @"All features should be converted into shapes");
-
- MGLPointFeature *pointShape = (MGLPointFeature *)shapes[0];
- XCTAssertTrue([pointShape isKindOfClass:[MGLPointFeature class]]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:pointShape.coordinate],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(29.95, -90.066667)]);
-
- MGLPolylineFeature *polylineShape = (MGLPolylineFeature *)shapes[1];
- XCTAssertTrue([polylineShape isKindOfClass:[MGLPolylineFeature class]]);
- XCTAssertEqual(polylineShape.pointCount, 2UL);
- CLLocationCoordinate2D polylineCoordinates[2];
- [polylineShape getCoordinates:polylineCoordinates range:NSMakeRange(0, polylineShape.pointCount)];
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:polylineCoordinates[0]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(39.1, -84.516667)]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:polylineCoordinates[1]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(29.95, -90.066667)]);
-
- MGLPolygonFeature *polygonShape = (MGLPolygonFeature *)shapes[2];
- XCTAssertTrue([polygonShape isKindOfClass:[MGLPolygonFeature class]]);
- XCTAssertEqual(polygonShape.pointCount, 4UL);
- CLLocationCoordinate2D *polygonCoordinates = polygonShape.coordinates;
- XCTAssertNotEqual(polygonCoordinates, nil);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:polygonCoordinates[0]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(1, 1)]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:polygonCoordinates[1]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(1, 4)]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:polygonCoordinates[2]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(4, 4)]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:polygonCoordinates[3]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(4, 1)]);
- NSArray<MGLPolygon *> *interiorPolygons = polygonShape.interiorPolygons;
- XCTAssertEqual(interiorPolygons.count, 1UL);
- MGLPolygon *interiorPolygon = interiorPolygons.firstObject;
- XCTAssertEqual(interiorPolygon.pointCount, 4UL);
- CLLocationCoordinate2D interiorPolygonCoordinates[4];
- [interiorPolygon getCoordinates:interiorPolygonCoordinates range:NSMakeRange(0, interiorPolygon.pointCount)];
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:interiorPolygonCoordinates[0]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(2, 2)]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:interiorPolygonCoordinates[1]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(2, 3)]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:interiorPolygonCoordinates[2]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(3, 3)]);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:interiorPolygonCoordinates[3]],
- [NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(3, 2)]);
-}
-
-- (void)testClusterGeometryConversion {
- mbgl::Point<double> point = { -90.066667, 29.95 };
- mbgl::Feature pointFeature { point };
- pointFeature.id = { UINT64_MAX };
- pointFeature.properties["cluster"] = true;
- pointFeature.properties["cluster_id"] = 1ULL;
- pointFeature.properties["point_count"] = 5ULL;
-
- id<MGLFeature> feature = MGLFeatureFromMBGLFeature(pointFeature);
-
- XCTAssert([feature conformsToProtocol:@protocol(MGLFeature)]);
-
- id<MGLCluster> cluster = MGL_OBJC_DYNAMIC_CAST_AS_PROTOCOL(feature, MGLCluster);
- XCTAssert(cluster);
- XCTAssert(cluster.clusterIdentifier == 1);
- XCTAssert(cluster.clusterPointCount == 5);
-
- XCTAssert([cluster isMemberOfClass:[MGLPointFeatureCluster class]]);
-}
-
-- (void)testPropertyConversion {
- std::vector<mbgl::Feature> features;
-
- mbgl::Point<double> point = { -90.066667, 29.95 };
- mbgl::Feature pointFeature { point };
- pointFeature.id = { UINT64_MAX };
- pointFeature.properties["null"] = mapbox::feature::null_value;
- pointFeature.properties["bool"] = true;
- pointFeature.properties["unsigned int"] = UINT64_MAX;
- pointFeature.properties["int"] = INT64_MIN;
- pointFeature.properties["double"] = DBL_MAX;
- pointFeature.properties["string"] = std::string("🚏");
- std::vector<bool> vector;
- vector.push_back(true);
- vector.push_back(false);
- vector.push_back(true);
- features.push_back(pointFeature);
-
- NSArray<MGLShape <MGLFeature> *> *shapes = MGLFeaturesFromMBGLFeatures(features);
- XCTAssertEqual(shapes.count, 1UL, @"All features should be converted into shapes");
-
- MGLShape <MGLFeature> *shape = shapes.firstObject;
- XCTAssertTrue([shape conformsToProtocol:@protocol(MGLFeature)]);
- XCTAssertTrue([shape isKindOfClass:[MGLShape class]]);
-
- NSNumber *identifier = shape.identifier;
- XCTAssertTrue([identifier isKindOfClass:[NSNumber class]], @"Feature identifier should be NSNumber");
- XCTAssertEqual(strcmp(identifier.objCType, @encode(uint64_t)), 0, @"Feature identifier should be 64-bit unsigned integer");
-
- NSNull *null = [shape attributeForKey:@"null"];
- XCTAssertNotNil(null);
- XCTAssertTrue([null isKindOfClass:[NSNull class]]);
- XCTAssertEqual(null, shape.attributes[@"null"]);
-
- NSNumber *boolean = [shape attributeForKey:@"bool"];
- XCTAssertNotNil(boolean);
- XCTAssertTrue([boolean isKindOfClass:[NSNumber class]]);
-#if (TARGET_OS_IPHONE && __LP64__) || TARGET_OS_WATCH
- XCTAssertEqual(strcmp(boolean.objCType, @encode(char)), 0, @"Boolean property should be converted to bool NSNumber");
-#else
- XCTAssertEqual(strcmp(boolean.objCType, @encode(BOOL)), 0, @"Boolean property should be converted to bool NSNumber");
-#endif
- XCTAssertTrue(boolean.boolValue);
- XCTAssertEqual(boolean, shape.attributes[@"bool"]);
-
- NSNumber *unsignedInteger = [shape attributeForKey:@"unsigned int"];
- XCTAssertNotNil(unsignedInteger);
- XCTAssertTrue([unsignedInteger isKindOfClass:[NSNumber class]]);
- XCTAssertEqual(strcmp(unsignedInteger.objCType, @encode(uint64_t)), 0, @"Unsigned integer property should be converted to unsigned long long NSNumber");
- XCTAssertEqual(unsignedInteger.unsignedLongLongValue, UINT64_MAX);
- XCTAssertEqual(unsignedInteger, shape.attributes[@"unsigned int"]);
-
- NSNumber *integer = [shape attributeForKey:@"int"];
- XCTAssertNotNil(integer);
- XCTAssertTrue([integer isKindOfClass:[NSNumber class]]);
- XCTAssertEqual(strcmp(integer.objCType, @encode(int64_t)), 0, @"Integer property should be converted to long long NSNumber");
- XCTAssertEqual(integer.longLongValue, INT64_MIN);
- XCTAssertEqual(integer, shape.attributes[@"int"]);
-
- NSNumber *floatingPointNumber = [shape attributeForKey:@"double"];
- XCTAssertNotNil(floatingPointNumber);
- XCTAssertTrue([floatingPointNumber isKindOfClass:[NSNumber class]]);
- XCTAssertEqual(strcmp(floatingPointNumber.objCType, @encode(double)), 0, @"Floating-point number property should be converted to double NSNumber");
- XCTAssertEqual(floatingPointNumber.doubleValue, DBL_MAX);
- XCTAssertEqual(floatingPointNumber, shape.attributes[@"double"]);
-
- NSString *string = [shape attributeForKey:@"string"];
- XCTAssertNotNil(string);
- XCTAssertTrue([string isKindOfClass:[NSString class]]);
- XCTAssertEqualObjects(string, @"🚏");
- XCTAssertEqual(string, shape.attributes[@"string"]);
-}
-
-- (void)testPointFeatureGeoJSONDictionary {
- MGLPointFeature *pointFeature = [[MGLPointFeature alloc] init];
- CLLocationCoordinate2D coordinate = { 10, 10 };
- pointFeature.coordinate = coordinate;
-
- // A GeoJSON feature
- // when there are no identifier or properties
- NSDictionary *geoJSONFeature = [pointFeature geoJSONDictionary];
-
- // it has the correct type
- XCTAssertEqualObjects(geoJSONFeature[@"type"], @"Feature");
- // it has the correct geometry
- NSDictionary *expectedGeometry = @{@"type": @"Point",
- @"coordinates": @[@(coordinate.longitude), @(coordinate.latitude)]};
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
- // it has no "id" key (or value)
- XCTAssertNil(geoJSONFeature[@"id"]);
- // it has a null representation of the properties object
- XCTAssertEqualObjects(geoJSONFeature[@"properties"], @{});
-
- // when there is a string identifier
- pointFeature.identifier = @"string-id";
-
- // it has the identifier in the result
- geoJSONFeature = [pointFeature geoJSONDictionary];
- XCTAssertEqualObjects(geoJSONFeature[@"id"], pointFeature.identifier);
-
- // when there are properties
- pointFeature.attributes = @{@"name": @"name-value"};
-
- // it has the properties value in the result
- geoJSONFeature = [pointFeature geoJSONDictionary];
- XCTAssertEqualObjects(geoJSONFeature[@"properties"], pointFeature.attributes);
-}
-
-- (void)testPolylineFeatureGeoJSONDictionary {
- CLLocationCoordinate2D coord1 = { 0, 0 };
- CLLocationCoordinate2D coord2 = { 10, 10 };
- CLLocationCoordinate2D coords[] = { coord1, coord2 };
- MGLPolylineFeature *polyLineFeature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
-
- // A GeoJSON feature
- NSDictionary *geoJSONFeature = [polyLineFeature geoJSONDictionary];
-
- // it has the correct geometry
- NSDictionary *expectedGeometry = @{@"type": @"LineString",
- @"coordinates": @[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)]]};
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
-}
-
-- (void)testPolygonFeatureGeoJSONDictionary {
- CLLocationCoordinate2D coord1 = { 0, 0 };
- CLLocationCoordinate2D coord2 = { 10, 10 };
- CLLocationCoordinate2D coord3 = { 0, 0 };
- CLLocationCoordinate2D coords[] = { coord1, coord2, coord3 };
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coords count:3];
-
- // A GeoJSON feature
- NSDictionary *geoJSONFeature = [polygonFeature geoJSONDictionary];
-
- // it has the correct geometry
- NSDictionary *expectedGeometry = @{@"type": @"Polygon",
- @"coordinates": @[@[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)],
- @[@(coord3.longitude), @(coord3.latitude)]]]};
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
-}
-
-- (void)testMultiPolylineFeatureGeoJSONDictionary {
- CLLocationCoordinate2D coord1 = { 0, 0 };
- CLLocationCoordinate2D coord2 = { 10, 10 };
- CLLocationCoordinate2D coord3 = { 0, 0 };
- CLLocationCoordinate2D coords[] = { coord1, coord2, coord3 };
-
- MGLPolyline *polyLine1 = [MGLPolyline polylineWithCoordinates:coords count:3];
- MGLPolyline *polyLine2 = [MGLPolyline polylineWithCoordinates:coords count:3];
-
- MGLMultiPolylineFeature *multiPolylineFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:@[polyLine1, polyLine2]];
-
- // A GeoJSON feature
- NSDictionary *geoJSONFeature = [multiPolylineFeature geoJSONDictionary];
-
- // it has the correct geometry
- NSDictionary *expectedGeometry = @{@"type": @"MultiLineString",
- @"coordinates": @[@[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)],
- @[@(coord3.longitude), @(coord3.latitude)]],
- @[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)],
- @[@(coord3.longitude), @(coord3.latitude)]]]};
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
-}
-
-- (void)testMultiPolygonFeatureGeoJSONDictionary {
- CLLocationCoordinate2D coord1 = { 0, 0 };
- CLLocationCoordinate2D coord2 = { 10, 10 };
- CLLocationCoordinate2D coord3 = { 0, 0 };
- CLLocationCoordinate2D coords[] = { coord1, coord2, coord3 };
-
- MGLPolygon *polygon1 = [MGLPolygon polygonWithCoordinates:coords count:3];
- MGLPolygon *polygon2 = [MGLPolygon polygonWithCoordinates:coords count:3];
-
- MGLMultiPolygonFeature *multiPolylineFeature = [MGLMultiPolygonFeature multiPolygonWithPolygons:@[polygon1, polygon2]];
-
- // A GeoJSON feature
- NSDictionary *geoJSONFeature = [multiPolylineFeature geoJSONDictionary];
-
- // it has the correct geometry
- NSDictionary *expectedGeometry = @{@"type": @"MultiPolygon",
- @"coordinates": @[
- @[@[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)],
- @[@(coord3.longitude), @(coord3.latitude)]]],
- @[@[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)],
- @[@(coord3.longitude), @(coord3.latitude)]]]]};
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
-}
-
-- (void)testPointCollectionFeatureGeoJSONDictionary {
- CLLocationCoordinate2D coord1 = { 0, 0 };
- CLLocationCoordinate2D coord2 = { 10, 10 };
- CLLocationCoordinate2D coord3 = { 0, 0 };
- CLLocationCoordinate2D coords[] = { coord1, coord2, coord3 };
- MGLPointCollectionFeature *pointCollectionFeature = [MGLPointCollectionFeature pointCollectionWithCoordinates:coords count:3];
-
- // A GeoJSON feature
- NSDictionary *geoJSONFeature = [pointCollectionFeature geoJSONDictionary];
-
- // it has the correct geometry
- NSDictionary *expectedGeometry = @{@"type": @"MultiPoint",
- @"coordinates": @[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)],
- @[@(coord3.longitude), @(coord3.latitude)]]};
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
-
-}
-
-- (void)testShapeCollectionFeatureGeoJSONDictionary {
- MGLPointFeature *pointFeature = [[MGLPointFeature alloc] init];
- CLLocationCoordinate2D pointCoordinate = { 10, 10 };
- pointFeature.coordinate = pointCoordinate;
-
- CLLocationCoordinate2D coord1 = { 0, 0 };
- CLLocationCoordinate2D coord2 = { 10, 10 };
- CLLocationCoordinate2D coords[] = { coord1, coord2 };
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
-
- MGLShapeCollectionFeature *shapeCollectionFeature = [MGLShapeCollectionFeature shapeCollectionWithShapes:@[pointFeature, polylineFeature]];
-
- // A GeoJSON feature
- NSDictionary *geoJSONFeature = [shapeCollectionFeature geoJSONDictionary];
-
- // it has the correct geometry
- NSDictionary *expectedGeometry = @{@"type": @"GeometryCollection",
- @"geometries": @[
- @{ @"geometry": @{@"type": @"Point",
- @"coordinates": @[@(pointCoordinate.longitude), @(pointCoordinate.latitude)]},
- @"properties": @{},
- @"type": @"Feature",
- },
- @{ @"geometry": @{@"type": @"LineString",
- @"coordinates": @[@[@(coord1.longitude), @(coord1.latitude)],
- @[@(coord2.longitude), @(coord2.latitude)]]},
- @"properties": @{},
- @"type": @"Feature",
- }
- ]
- };
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
-
- // When the shape collection is created with an empty array of shapes
- shapeCollectionFeature = [MGLShapeCollectionFeature shapeCollectionWithShapes:@[]];
-
- // it has the correct (empty) geometry
- geoJSONFeature = [shapeCollectionFeature geoJSONDictionary];
- expectedGeometry = @{@"type": @"GeometryCollection",
- @"geometries": @[]};
- XCTAssertEqualObjects(geoJSONFeature[@"geometry"], expectedGeometry);
-}
-
-@end
diff --git a/platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm b/platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm
deleted file mode 100644
index 8dfc077777..0000000000
--- a/platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm
+++ /dev/null
@@ -1,541 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/fill_extrusion_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLFillExtrusionLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLFillExtrusionLayerTests
-
-+ (NSString *)layerType {
- return @"fill-extrusion";
-}
-
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLFillExtrusionStyleLayer *layer = [[MGLFillExtrusionStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLFillExtrusionStyleLayer *layer = [[MGLFillExtrusionStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"fill-extrusion");
- auto rawLayer = static_cast<mbgl::style::FillExtrusionLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // fill-extrusion-base
- {
- XCTAssertTrue(rawLayer->getFillExtrusionBase().isUndefined(),
- @"fill-extrusion-base should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionBase;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.fillExtrusionBase = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a constant value expression should update fill-extrusion-base.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, constantExpression,
- @"fillExtrusionBase should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionBase = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a camera expression should update fill-extrusion-base.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, functionExpression,
- @"fillExtrusionBase should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.fillExtrusionBase = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a data expression should update fill-extrusion-base.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.fillExtrusionBase, pedanticFunctionExpression,
- @"fillExtrusionBase should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.fillExtrusionBase = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a camera-data expression should update fill-extrusion-base.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.fillExtrusionBase, pedanticFunctionExpression,
- @"fillExtrusionBase should round-trip camera-data expressions.");
-
- layer.fillExtrusionBase = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionBase().isUndefined(),
- @"Unsetting fillExtrusionBase should return fill-extrusion-base to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, defaultExpression,
- @"fillExtrusionBase should return the default value after being unset.");
- // Transition property test
- layer.fillExtrusionBaseTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionBaseTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionBaseTransition = layer.fillExtrusionBaseTransition;
- XCTAssertEqual(fillExtrusionBaseTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionBaseTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-color
- {
- XCTAssertTrue(rawLayer->getFillExtrusionColor().isUndefined(),
- @"fill-extrusion-color should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.fillExtrusionColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a constant value expression should update fill-extrusion-color.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, constantExpression,
- @"fillExtrusionColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a camera expression should update fill-extrusion-color.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, functionExpression,
- @"fillExtrusionColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.fillExtrusionColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a data expression should update fill-extrusion-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.fillExtrusionColor, pedanticFunctionExpression,
- @"fillExtrusionColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.fillExtrusionColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a camera-data expression should update fill-extrusion-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.fillExtrusionColor, pedanticFunctionExpression,
- @"fillExtrusionColor should round-trip camera-data expressions.");
-
- layer.fillExtrusionColor = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionColor().isUndefined(),
- @"Unsetting fillExtrusionColor should return fill-extrusion-color to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, defaultExpression,
- @"fillExtrusionColor should return the default value after being unset.");
- // Transition property test
- layer.fillExtrusionColorTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionColorTransition = layer.fillExtrusionColorTransition;
- XCTAssertEqual(fillExtrusionColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionColorTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-vertical-gradient
- {
- XCTAssertTrue(rawLayer->getFillExtrusionVerticalGradient().isUndefined(),
- @"fill-extrusion-vertical-gradient should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionHasVerticalGradient;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"false"];
- layer.fillExtrusionHasVerticalGradient = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { false };
- XCTAssertEqual(rawLayer->getFillExtrusionVerticalGradient(), propertyValue,
- @"Setting fillExtrusionHasVerticalGradient to a constant value expression should update fill-extrusion-vertical-gradient.");
- XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, constantExpression,
- @"fillExtrusionHasVerticalGradient should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"false"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionHasVerticalGradient = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(false), 18.0, literal(false))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionVerticalGradient(), propertyValue,
- @"Setting fillExtrusionHasVerticalGradient to a camera expression should update fill-extrusion-vertical-gradient.");
- XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, functionExpression,
- @"fillExtrusionHasVerticalGradient should round-trip camera expressions.");
-
-
- layer.fillExtrusionHasVerticalGradient = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionVerticalGradient().isUndefined(),
- @"Unsetting fillExtrusionHasVerticalGradient should return fill-extrusion-vertical-gradient to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, defaultExpression,
- @"fillExtrusionHasVerticalGradient should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionHasVerticalGradient = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionHasVerticalGradient = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // fill-extrusion-height
- {
- XCTAssertTrue(rawLayer->getFillExtrusionHeight().isUndefined(),
- @"fill-extrusion-height should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionHeight;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.fillExtrusionHeight = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a constant value expression should update fill-extrusion-height.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, constantExpression,
- @"fillExtrusionHeight should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionHeight = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a camera expression should update fill-extrusion-height.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, functionExpression,
- @"fillExtrusionHeight should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.fillExtrusionHeight = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a data expression should update fill-extrusion-height.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.fillExtrusionHeight, pedanticFunctionExpression,
- @"fillExtrusionHeight should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.fillExtrusionHeight = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a camera-data expression should update fill-extrusion-height.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.fillExtrusionHeight, pedanticFunctionExpression,
- @"fillExtrusionHeight should round-trip camera-data expressions.");
-
- layer.fillExtrusionHeight = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionHeight().isUndefined(),
- @"Unsetting fillExtrusionHeight should return fill-extrusion-height to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, defaultExpression,
- @"fillExtrusionHeight should return the default value after being unset.");
- // Transition property test
- layer.fillExtrusionHeightTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionHeightTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionHeightTransition = layer.fillExtrusionHeightTransition;
- XCTAssertEqual(fillExtrusionHeightTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionHeightTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-opacity
- {
- XCTAssertTrue(rawLayer->getFillExtrusionOpacity().isUndefined(),
- @"fill-extrusion-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.fillExtrusionOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getFillExtrusionOpacity(), propertyValue,
- @"Setting fillExtrusionOpacity to a constant value expression should update fill-extrusion-opacity.");
- XCTAssertEqualObjects(layer.fillExtrusionOpacity, constantExpression,
- @"fillExtrusionOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionOpacity(), propertyValue,
- @"Setting fillExtrusionOpacity to a camera expression should update fill-extrusion-opacity.");
- XCTAssertEqualObjects(layer.fillExtrusionOpacity, functionExpression,
- @"fillExtrusionOpacity should round-trip camera expressions.");
-
-
- layer.fillExtrusionOpacity = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionOpacity().isUndefined(),
- @"Unsetting fillExtrusionOpacity should return fill-extrusion-opacity to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionOpacity, defaultExpression,
- @"fillExtrusionOpacity should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.fillExtrusionOpacityTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionOpacityTransition = layer.fillExtrusionOpacityTransition;
- XCTAssertEqual(fillExtrusionOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionOpacityTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-pattern
- {
- XCTAssertTrue(rawLayer->getFillExtrusionPattern().isUndefined(),
- @"fill-extrusion-pattern should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionPattern;
-
- NSExpression *constantExpression = [NSExpression expressionForConstantValue:@"Fill Extrusion Pattern"];
- layer.fillExtrusionPattern = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::expression::Image> propertyValue = { "Fill Extrusion Pattern" };
- XCTAssertEqual(rawLayer->getFillExtrusionPattern(), propertyValue,
- @"Setting fillExtrusionPattern to a constant value expression should update fill-extrusion-pattern.");
- XCTAssertEqualObjects(layer.fillExtrusionPattern, constantExpression,
- @"fillExtrusionPattern should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('image', 'Fill Extrusion Pattern')"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionPattern = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Image>(
- step(zoom(), image(literal("Fill Extrusion Pattern")), 18.0, image(literal("Fill Extrusion Pattern")))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionPattern(), propertyValue,
- @"Setting fillExtrusionPattern to a camera expression should update fill-extrusion-pattern.");
- XCTAssertEqualObjects(layer.fillExtrusionPattern, functionExpression,
- @"fillExtrusionPattern should round-trip camera expressions.");
-
-
- layer.fillExtrusionPattern = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionPattern().isUndefined(),
- @"Unsetting fillExtrusionPattern should return fill-extrusion-pattern to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionPattern, defaultExpression,
- @"fillExtrusionPattern should return the default value after being unset.");
- // Transition property test
- layer.fillExtrusionPatternTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionPatternTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionPatternTransition = layer.fillExtrusionPatternTransition;
- XCTAssertEqual(fillExtrusionPatternTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionPatternTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-translate
- {
- XCTAssertTrue(rawLayer->getFillExtrusionTranslate().isUndefined(),
- @"fill-extrusion-translate should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionTranslation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.fillExtrusionTranslation = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getFillExtrusionTranslate(), propertyValue,
- @"Setting fillExtrusionTranslation to a constant value expression should update fill-extrusion-translate.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslation, constantExpression,
- @"fillExtrusionTranslation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionTranslation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionTranslate(), propertyValue,
- @"Setting fillExtrusionTranslation to a camera expression should update fill-extrusion-translate.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslation, functionExpression,
- @"fillExtrusionTranslation should round-trip camera expressions.");
-
-
- layer.fillExtrusionTranslation = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionTranslate().isUndefined(),
- @"Unsetting fillExtrusionTranslation should return fill-extrusion-translate to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslation, defaultExpression,
- @"fillExtrusionTranslation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // fill-extrusion-translate-anchor
- {
- XCTAssertTrue(rawLayer->getFillExtrusionTranslateAnchor().isUndefined(),
- @"fill-extrusion-translate-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.fillExtrusionTranslationAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.fillExtrusionTranslationAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType> propertyValue = { mbgl::style::TranslateAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getFillExtrusionTranslateAnchor(), propertyValue,
- @"Setting fillExtrusionTranslationAnchor to a constant value expression should update fill-extrusion-translate-anchor.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslationAnchor, constantExpression,
- @"fillExtrusionTranslationAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillExtrusionTranslationAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TranslateAnchorType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillExtrusionTranslateAnchor(), propertyValue,
- @"Setting fillExtrusionTranslationAnchor to a camera expression should update fill-extrusion-translate-anchor.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslationAnchor, functionExpression,
- @"fillExtrusionTranslationAnchor should round-trip camera expressions.");
-
-
- layer.fillExtrusionTranslationAnchor = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionTranslateAnchor().isUndefined(),
- @"Unsetting fillExtrusionTranslationAnchor should return fill-extrusion-translate-anchor to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslationAnchor, defaultExpression,
- @"fillExtrusionTranslationAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"fill-extrusion-base" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-color" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-has-vertical-gradient" isBoolean:YES];
- [self testPropertyName:@"fill-extrusion-height" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-opacity" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-pattern" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-translation" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-translation-anchor" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLFillExtrusionTranslationAnchor:MGLFillExtrusionTranslationAnchorMap].MGLFillExtrusionTranslationAnchorValue, MGLFillExtrusionTranslationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLFillExtrusionTranslationAnchor:MGLFillExtrusionTranslationAnchorViewport].MGLFillExtrusionTranslationAnchorValue, MGLFillExtrusionTranslationAnchorViewport);
-}
-
-@end
diff --git a/platform/darwin/test/MGLFillStyleLayerTests.mm b/platform/darwin/test/MGLFillStyleLayerTests.mm
deleted file mode 100644
index e37bd537a7..0000000000
--- a/platform/darwin/test/MGLFillStyleLayerTests.mm
+++ /dev/null
@@ -1,487 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/fill_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLFillLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLFillLayerTests
-
-+ (NSString *)layerType {
- return @"fill";
-}
-
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"fill");
- auto rawLayer = static_cast<mbgl::style::FillLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // fill-antialias
- {
- XCTAssertTrue(rawLayer->getFillAntialias().isUndefined(),
- @"fill-antialias should be unset initially.");
- NSExpression *defaultExpression = layer.fillAntialiased;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"false"];
- layer.fillAntialiased = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { false };
- XCTAssertEqual(rawLayer->getFillAntialias(), propertyValue,
- @"Setting fillAntialiased to a constant value expression should update fill-antialias.");
- XCTAssertEqualObjects(layer.fillAntialiased, constantExpression,
- @"fillAntialiased should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"false"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillAntialiased = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(false), 18.0, literal(false))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillAntialias(), propertyValue,
- @"Setting fillAntialiased to a camera expression should update fill-antialias.");
- XCTAssertEqualObjects(layer.fillAntialiased, functionExpression,
- @"fillAntialiased should round-trip camera expressions.");
-
-
- layer.fillAntialiased = nil;
- XCTAssertTrue(rawLayer->getFillAntialias().isUndefined(),
- @"Unsetting fillAntialiased should return fill-antialias to the default value.");
- XCTAssertEqualObjects(layer.fillAntialiased, defaultExpression,
- @"fillAntialiased should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.fillAntialiased = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.fillAntialiased = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // fill-color
- {
- XCTAssertTrue(rawLayer->getFillColor().isUndefined(),
- @"fill-color should be unset initially.");
- NSExpression *defaultExpression = layer.fillColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.fillColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getFillColor(), propertyValue,
- @"Setting fillColor to a constant value expression should update fill-color.");
- XCTAssertEqualObjects(layer.fillColor, constantExpression,
- @"fillColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillColor(), propertyValue,
- @"Setting fillColor to a camera expression should update fill-color.");
- XCTAssertEqualObjects(layer.fillColor, functionExpression,
- @"fillColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.fillColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillColor(), propertyValue,
- @"Setting fillColor to a data expression should update fill-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.fillColor, pedanticFunctionExpression,
- @"fillColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.fillColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillColor(), propertyValue,
- @"Setting fillColor to a camera-data expression should update fill-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.fillColor, pedanticFunctionExpression,
- @"fillColor should round-trip camera-data expressions.");
-
- layer.fillColor = nil;
- XCTAssertTrue(rawLayer->getFillColor().isUndefined(),
- @"Unsetting fillColor should return fill-color to the default value.");
- XCTAssertEqualObjects(layer.fillColor, defaultExpression,
- @"fillColor should return the default value after being unset.");
- // Transition property test
- layer.fillColorTransition = transitionTest;
- auto toptions = rawLayer->getFillColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillColorTransition = layer.fillColorTransition;
- XCTAssertEqual(fillColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillColorTransition.duration, transitionTest.duration);
- }
-
- // fill-opacity
- {
- XCTAssertTrue(rawLayer->getFillOpacity().isUndefined(),
- @"fill-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.fillOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.fillOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getFillOpacity(), propertyValue,
- @"Setting fillOpacity to a constant value expression should update fill-opacity.");
- XCTAssertEqualObjects(layer.fillOpacity, constantExpression,
- @"fillOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillOpacity(), propertyValue,
- @"Setting fillOpacity to a camera expression should update fill-opacity.");
- XCTAssertEqualObjects(layer.fillOpacity, functionExpression,
- @"fillOpacity should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.fillOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillOpacity(), propertyValue,
- @"Setting fillOpacity to a data expression should update fill-opacity.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.fillOpacity, pedanticFunctionExpression,
- @"fillOpacity should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.fillOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillOpacity(), propertyValue,
- @"Setting fillOpacity to a camera-data expression should update fill-opacity.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.fillOpacity, pedanticFunctionExpression,
- @"fillOpacity should round-trip camera-data expressions.");
-
- layer.fillOpacity = nil;
- XCTAssertTrue(rawLayer->getFillOpacity().isUndefined(),
- @"Unsetting fillOpacity should return fill-opacity to the default value.");
- XCTAssertEqualObjects(layer.fillOpacity, defaultExpression,
- @"fillOpacity should return the default value after being unset.");
- // Transition property test
- layer.fillOpacityTransition = transitionTest;
- auto toptions = rawLayer->getFillOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillOpacityTransition = layer.fillOpacityTransition;
- XCTAssertEqual(fillOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillOpacityTransition.duration, transitionTest.duration);
- }
-
- // fill-outline-color
- {
- XCTAssertTrue(rawLayer->getFillOutlineColor().isUndefined(),
- @"fill-outline-color should be unset initially.");
- NSExpression *defaultExpression = layer.fillOutlineColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.fillOutlineColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getFillOutlineColor(), propertyValue,
- @"Setting fillOutlineColor to a constant value expression should update fill-outline-color.");
- XCTAssertEqualObjects(layer.fillOutlineColor, constantExpression,
- @"fillOutlineColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillOutlineColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillOutlineColor(), propertyValue,
- @"Setting fillOutlineColor to a camera expression should update fill-outline-color.");
- XCTAssertEqualObjects(layer.fillOutlineColor, functionExpression,
- @"fillOutlineColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.fillOutlineColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillOutlineColor(), propertyValue,
- @"Setting fillOutlineColor to a data expression should update fill-outline-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.fillOutlineColor, pedanticFunctionExpression,
- @"fillOutlineColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.fillOutlineColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillOutlineColor(), propertyValue,
- @"Setting fillOutlineColor to a camera-data expression should update fill-outline-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.fillOutlineColor, pedanticFunctionExpression,
- @"fillOutlineColor should round-trip camera-data expressions.");
-
- layer.fillOutlineColor = nil;
- XCTAssertTrue(rawLayer->getFillOutlineColor().isUndefined(),
- @"Unsetting fillOutlineColor should return fill-outline-color to the default value.");
- XCTAssertEqualObjects(layer.fillOutlineColor, defaultExpression,
- @"fillOutlineColor should return the default value after being unset.");
- // Transition property test
- layer.fillOutlineColorTransition = transitionTest;
- auto toptions = rawLayer->getFillOutlineColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillOutlineColorTransition = layer.fillOutlineColorTransition;
- XCTAssertEqual(fillOutlineColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillOutlineColorTransition.duration, transitionTest.duration);
- }
-
- // fill-pattern
- {
- XCTAssertTrue(rawLayer->getFillPattern().isUndefined(),
- @"fill-pattern should be unset initially.");
- NSExpression *defaultExpression = layer.fillPattern;
-
- NSExpression *constantExpression = [NSExpression expressionForConstantValue:@"Fill Pattern"];
- layer.fillPattern = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::expression::Image> propertyValue = { "Fill Pattern" };
- XCTAssertEqual(rawLayer->getFillPattern(), propertyValue,
- @"Setting fillPattern to a constant value expression should update fill-pattern.");
- XCTAssertEqualObjects(layer.fillPattern, constantExpression,
- @"fillPattern should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('image', 'Fill Pattern')"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillPattern = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Image>(
- step(zoom(), image(literal("Fill Pattern")), 18.0, image(literal("Fill Pattern")))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillPattern(), propertyValue,
- @"Setting fillPattern to a camera expression should update fill-pattern.");
- XCTAssertEqualObjects(layer.fillPattern, functionExpression,
- @"fillPattern should round-trip camera expressions.");
-
-
- layer.fillPattern = nil;
- XCTAssertTrue(rawLayer->getFillPattern().isUndefined(),
- @"Unsetting fillPattern should return fill-pattern to the default value.");
- XCTAssertEqualObjects(layer.fillPattern, defaultExpression,
- @"fillPattern should return the default value after being unset.");
- // Transition property test
- layer.fillPatternTransition = transitionTest;
- auto toptions = rawLayer->getFillPatternTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillPatternTransition = layer.fillPatternTransition;
- XCTAssertEqual(fillPatternTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillPatternTransition.duration, transitionTest.duration);
- }
-
- // fill-translate
- {
- XCTAssertTrue(rawLayer->getFillTranslate().isUndefined(),
- @"fill-translate should be unset initially.");
- NSExpression *defaultExpression = layer.fillTranslation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.fillTranslation = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getFillTranslate(), propertyValue,
- @"Setting fillTranslation to a constant value expression should update fill-translate.");
- XCTAssertEqualObjects(layer.fillTranslation, constantExpression,
- @"fillTranslation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillTranslation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillTranslate(), propertyValue,
- @"Setting fillTranslation to a camera expression should update fill-translate.");
- XCTAssertEqualObjects(layer.fillTranslation, functionExpression,
- @"fillTranslation should round-trip camera expressions.");
-
-
- layer.fillTranslation = nil;
- XCTAssertTrue(rawLayer->getFillTranslate().isUndefined(),
- @"Unsetting fillTranslation should return fill-translate to the default value.");
- XCTAssertEqualObjects(layer.fillTranslation, defaultExpression,
- @"fillTranslation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.fillTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.fillTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // fill-translate-anchor
- {
- XCTAssertTrue(rawLayer->getFillTranslateAnchor().isUndefined(),
- @"fill-translate-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.fillTranslationAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.fillTranslationAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType> propertyValue = { mbgl::style::TranslateAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getFillTranslateAnchor(), propertyValue,
- @"Setting fillTranslationAnchor to a constant value expression should update fill-translate-anchor.");
- XCTAssertEqualObjects(layer.fillTranslationAnchor, constantExpression,
- @"fillTranslationAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.fillTranslationAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TranslateAnchorType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getFillTranslateAnchor(), propertyValue,
- @"Setting fillTranslationAnchor to a camera expression should update fill-translate-anchor.");
- XCTAssertEqualObjects(layer.fillTranslationAnchor, functionExpression,
- @"fillTranslationAnchor should round-trip camera expressions.");
-
-
- layer.fillTranslationAnchor = nil;
- XCTAssertTrue(rawLayer->getFillTranslateAnchor().isUndefined(),
- @"Unsetting fillTranslationAnchor should return fill-translate-anchor to the default value.");
- XCTAssertEqualObjects(layer.fillTranslationAnchor, defaultExpression,
- @"fillTranslationAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.fillTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.fillTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"is-fill-antialiased" isBoolean:YES];
- [self testPropertyName:@"fill-color" isBoolean:NO];
- [self testPropertyName:@"fill-opacity" isBoolean:NO];
- [self testPropertyName:@"fill-outline-color" isBoolean:NO];
- [self testPropertyName:@"fill-pattern" isBoolean:NO];
- [self testPropertyName:@"fill-translation" isBoolean:NO];
- [self testPropertyName:@"fill-translation-anchor" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLFillTranslationAnchor:MGLFillTranslationAnchorMap].MGLFillTranslationAnchorValue, MGLFillTranslationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLFillTranslationAnchor:MGLFillTranslationAnchorViewport].MGLFillTranslationAnchorValue, MGLFillTranslationAnchorViewport);
-}
-
-@end
diff --git a/platform/darwin/test/MGLGeometryTests.mm b/platform/darwin/test/MGLGeometryTests.mm
deleted file mode 100644
index e3b1836e8d..0000000000
--- a/platform/darwin/test/MGLGeometryTests.mm
+++ /dev/null
@@ -1,211 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "../../darwin/src/MGLGeometry_Private.h"
-
-@interface MGLGeometryTests : XCTestCase
-@end
-
-@implementation MGLGeometryTests
-
-- (void)testCoordinateBoundsIsEmpty {
- MGLCoordinateBounds emptyBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 0));
- XCTAssertTrue(MGLCoordinateBoundsIsEmpty(emptyBounds));
- XCTAssertFalse(MGLCoordinateSpanEqualToCoordinateSpan(MGLCoordinateSpanZero, MGLCoordinateBoundsGetCoordinateSpan(emptyBounds)));
-}
-
-- (void)testAngleConversions {
- XCTAssertEqualWithAccuracy(-180, MGLDegreesFromRadians(-M_PI), 1e-5);
- XCTAssertEqual(0, MGLDegreesFromRadians(0));
- XCTAssertEqualWithAccuracy(45, MGLDegreesFromRadians(M_PI_4), 1e-5);
- XCTAssertEqualWithAccuracy(90, MGLDegreesFromRadians(M_PI_2), 1e-5);
- XCTAssertEqualWithAccuracy(180, MGLDegreesFromRadians(M_PI), 1e-5);
- XCTAssertEqualWithAccuracy(360, MGLDegreesFromRadians(2 * M_PI), 1e-5);
- XCTAssertEqualWithAccuracy(720, MGLDegreesFromRadians(4 * M_PI), 1e-5);
-
- XCTAssertEqualWithAccuracy(-360, MGLDegreesFromRadians(MGLRadiansFromDegrees(-360)), 1e-4);
- XCTAssertEqualWithAccuracy(-180, MGLDegreesFromRadians(MGLRadiansFromDegrees(-180)), 1e-5);
- XCTAssertEqualWithAccuracy(-90, MGLDegreesFromRadians(MGLRadiansFromDegrees(-90)), 1e-5);
- XCTAssertEqualWithAccuracy(-45, MGLDegreesFromRadians(MGLRadiansFromDegrees(-45)), 1e-5);
- XCTAssertEqualWithAccuracy(0, MGLDegreesFromRadians(MGLRadiansFromDegrees(0)), 1e-5);
- XCTAssertEqualWithAccuracy(45, MGLDegreesFromRadians(MGLRadiansFromDegrees(45)), 1e-5);
- XCTAssertEqualWithAccuracy(90, MGLDegreesFromRadians(MGLRadiansFromDegrees(90)), 1e-5);
- XCTAssertEqualWithAccuracy(180, MGLDegreesFromRadians(MGLRadiansFromDegrees(180)), 1e-5);
- XCTAssertEqualWithAccuracy(360, MGLDegreesFromRadians(MGLRadiansFromDegrees(360)), 1e-4);
-}
-
-- (void)testAltitudeConversions {
- CGSize tallSize = CGSizeMake(600, 1200);
- CGSize midSize = CGSizeMake(600, 800);
- CGSize shortSize = CGSizeMake(600, 400);
-
- XCTAssertEqualWithAccuracy(1800, MGLAltitudeForZoomLevel(MGLZoomLevelForAltitude(1800, 0, 0, midSize), 0, 0, midSize), 1e-8);
- XCTAssertLessThan(MGLZoomLevelForAltitude(1800, 0, 0, midSize), MGLZoomLevelForAltitude(1800, 0, 0, tallSize));
- XCTAssertGreaterThan(MGLZoomLevelForAltitude(1800, 0, 0, midSize), MGLZoomLevelForAltitude(1800, 0, 0, shortSize));
-
- XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 0, 0, midSize), 0, 0, midSize), 1e-8);
- XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 0, 0, midSize), 0, 0, midSize), 1e-8);
-
- XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 0, 40, midSize), 0, 40, midSize), 1e-8);
- XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 0, 40, midSize), 0, 40, midSize), 1e-8);
-
- XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 60, 40, midSize), 60, 40, midSize), 1e-8);
- XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 60, 40, midSize), 60, 40, midSize), 1e-8);
-}
-
-- (void)testGeometryBoxing {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(38.9131982, -77.0325453144239);
- CLLocationCoordinate2D roundTrippedCoordinate = [NSValue valueWithMGLCoordinate:coordinate].MGLCoordinateValue;
-
- XCTAssertEqual(coordinate.latitude, roundTrippedCoordinate.latitude, @"Latitude should round-trip.");
- XCTAssertEqual(coordinate.longitude, roundTrippedCoordinate.longitude, @"Longitude should round-trip.");
-
- MGLCoordinateSpan span = MGLCoordinateSpanMake(4.383333333333335, -4.299999999999997);
- MGLCoordinateSpan roundTrippedSpan = [NSValue valueWithMGLCoordinateSpan:span].MGLCoordinateSpanValue;
-
- XCTAssertEqual(span.latitudeDelta, roundTrippedSpan.latitudeDelta, @"Latitude delta should round-trip.");
- XCTAssertEqual(span.longitudeDelta, roundTrippedSpan.longitudeDelta, @"Longitude delta should round-trip.");
-
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(38.9131982, -77.0325453144239),
- CLLocationCoordinate2DMake(37.7757368, -122.4135302));
- MGLCoordinateBounds roundTrippedBounds = [NSValue valueWithMGLCoordinateBounds:bounds].MGLCoordinateBoundsValue;
-
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:bounds.sw],
- [NSValue valueWithMGLCoordinate:roundTrippedBounds.sw],
- @"Southwest should round-trip.");
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:bounds.ne],
- [NSValue valueWithMGLCoordinate:roundTrippedBounds.ne],
- @"Northeast should round-trip.");
-}
-
-- (void)testCoordinateInCoordinateBounds {
- CLLocationCoordinate2D ne = CLLocationCoordinate2DMake(45, -104);
- CLLocationCoordinate2D sw = CLLocationCoordinate2DMake(41, -111);
- MGLCoordinateBounds wyoming = MGLCoordinateBoundsMake(sw, ne);
-
- CLLocationCoordinate2D centerOfWyoming = CLLocationCoordinate2DMake(43, -107.5);
-
- XCTAssertTrue(MGLCoordinateInCoordinateBounds(ne, wyoming));
- XCTAssertTrue(MGLCoordinateInCoordinateBounds(sw, wyoming));
- XCTAssertTrue(MGLCoordinateInCoordinateBounds(centerOfWyoming, wyoming));
-
- CLLocationCoordinate2D australia = CLLocationCoordinate2DMake(-25, 135);
- CLLocationCoordinate2D brazil = CLLocationCoordinate2DMake(-12, -50);
- CLLocationCoordinate2D china = CLLocationCoordinate2DMake(35, 100);
-
- XCTAssertFalse(MGLCoordinateInCoordinateBounds(australia, wyoming));
- XCTAssertFalse(MGLCoordinateInCoordinateBounds(brazil, wyoming));
- XCTAssertFalse(MGLCoordinateInCoordinateBounds(china, wyoming));
- XCTAssertFalse(MGLCoordinateInCoordinateBounds(kCLLocationCoordinate2DInvalid, wyoming));
-}
-
-- (void)testGeoJSONDeserialization {
- NSData *data = [@"{\"type\": \"Feature\", \"geometry\": {\"type\": \"Point\", \"coordinates\": [0, 0]}, \"properties\": {}}" dataUsingEncoding:NSUTF8StringEncoding];
- NSError *error;
- MGLPointFeature *feature = (MGLPointFeature *)[MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNil(error, @"Valid GeoJSON data should produce no error on deserialization.");
- XCTAssertNotNil(feature, @"Valid GeoJSON data should produce an object on deserialization.");
- XCTAssertTrue([feature isKindOfClass:[MGLPointFeature class]], @"Valid GeoJSON point feature data should produce an MGLPointFeature.");
- XCTAssertEqual(feature.attributes.count, 0UL);
- XCTAssertEqual(feature.coordinate.latitude, 0);
- XCTAssertEqual(feature.coordinate.longitude, 0);
-
- data = [@"{\"type\": \"Feature\", \"feature\": {\"type\": \"Point\", \"coordinates\": [0, 0]}}" dataUsingEncoding:NSUTF8StringEncoding];
- error = nil;
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNotNil(error, @"Invalid GeoJSON data should produce an error on deserialization.");
- XCTAssertNil(shape, @"Invalid GeoJSON data should produce no object on deserialization.");
-}
-
-- (void)testGeoJSONSerialization {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- feature.identifier = @504;
- feature.coordinate = CLLocationCoordinate2DMake(29.95, -90.066667);
-
- NSData *data = [feature geoJSONDataUsingEncoding:NSUTF8StringEncoding];
- XCTAssertNotNil(data, @"MGLPointFeature should serialize as an UTF-8 string data object.");
- NSError *error;
- NSDictionary *serializedGeoJSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
- XCTAssertNil(error, @"Serialized GeoJSON data should be deserializable JSON.");
- XCTAssertNotNil(serializedGeoJSON, @"Serialized GeoJSON data should be valid JSON.");
- XCTAssertTrue([serializedGeoJSON isKindOfClass:[NSDictionary class]], @"Serialized GeoJSON data should be a JSON object.");
- NSDictionary *geoJSON = @{
- @"type": @"Feature",
- @"id": @504,
- @"geometry": @{
- @"type": @"Point",
- @"coordinates": @[
- @(-90.066667),
- @29.95,
- ],
- },
- @"properties": @{},
- };
- XCTAssertEqualObjects(serializedGeoJSON, geoJSON, @"MGLPointFeature should serialize as a GeoJSON point feature.");
-}
-
-- (void)testMGLCoordinateBoundsToMGLCoordinateQuad {
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(37.936, -80.425),
- CLLocationCoordinate2DMake(46.437, -71.516));
-
- MGLCoordinateQuad quad = MGLCoordinateQuadFromCoordinateBounds(bounds);
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:bounds.sw],
- [NSValue valueWithMGLCoordinate:quad.bottomLeft],
- @"Bounds southwest should be bottom left of quad.");
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:bounds.ne],
- [NSValue valueWithMGLCoordinate:quad.topRight],
- @"Bounds northeast should be top right of quad.");
-
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(46.437, -80.425)],
- [NSValue valueWithMGLCoordinate:quad.topLeft],
- @"Quad top left should be computed correctly.");
- XCTAssertEqualObjects([NSValue valueWithMGLCoordinate:CLLocationCoordinate2DMake(37.936, -71.516)],
- [NSValue valueWithMGLCoordinate:quad.bottomRight],
- @"Quad bottom right should be computed correctly.");
-}
-
-- (void)testMGLMapPoint {
- MGLMapPoint point = MGLMapPointForCoordinate(CLLocationCoordinate2DMake(37.936, -80.425), 0.0);
-
- MGLMapPoint roundTrippedPoint = [NSValue valueWithMGLMapPoint:point].MGLMapPointValue;
- XCTAssertEqual(point.x, roundTrippedPoint.x);
- XCTAssertEqual(point.y, roundTrippedPoint.y);
- XCTAssertEqual(point.zoomLevel, roundTrippedPoint.zoomLevel);
-}
-
-- (void)testMGLLocationCoordinate2DIsValid {
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(37.936, -71.516);
- XCTAssertTrue(MGLLocationCoordinate2DIsValid(coordinate));
- }
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(46.816368, 5.844469);
- XCTAssertTrue(MGLLocationCoordinate2DIsValid(coordinate));
- }
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(-21.512680, 23.334703);
- XCTAssertTrue(MGLLocationCoordinate2DIsValid(coordinate));
- }
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(-44.947936, -73.081313);
- XCTAssertTrue(MGLLocationCoordinate2DIsValid(coordinate));
- }
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(19.333630, 203.555405);
- XCTAssertTrue(MGLLocationCoordinate2DIsValid(coordinate));
- }
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(23.254696, -240.795323);
- XCTAssertTrue(MGLLocationCoordinate2DIsValid(coordinate));
- }
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(91, 361);
- XCTAssertFalse(MGLLocationCoordinate2DIsValid(coordinate));
- }
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(-91, -361);
- XCTAssertFalse(MGLLocationCoordinate2DIsValid(coordinate));
- }
-}
-
-@end
diff --git a/platform/darwin/test/MGLHeatmapColorTests.mm b/platform/darwin/test/MGLHeatmapColorTests.mm
deleted file mode 100644
index 19f9b4e86e..0000000000
--- a/platform/darwin/test/MGLHeatmapColorTests.mm
+++ /dev/null
@@ -1,62 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/heatmap_layer.hpp>
-
-@interface MGLHeatmapColorTests : XCTestCase <MGLMapViewDelegate>
-@end
-
-@implementation MGLHeatmapColorTests
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLHeatmapStyleLayer *layer = [[MGLHeatmapStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- auto rawLayer = static_cast<mbgl::style::HeatmapLayer*>(layer.rawLayer);
-
- XCTAssertTrue(rawLayer->getHeatmapColor().isUndefined(),
- @"heatmap-color should be unset initially.");
- NSExpression *defaultExpression = layer.heatmapColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.heatmapColor = constantExpression;
-
-
- mbgl::style::PropertyValue<float> propertyValue = { 0xff };
- XCTAssertEqual(rawLayer->getHeatmapColor().evaluate(0.0), mbgl::Color::red(),
- @"Setting heatmapColor to a constant value expression should update heatmap-color.");
- XCTAssertEqualObjects(layer.heatmapColor, constantExpression,
- @"heatmapColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *constantExpression2 = [NSExpression expressionWithFormat:@"%@", [MGLColor blueColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($heatmapDensity, %@, %@)", constantExpression, @{@12: constantExpression2}];
- layer.heatmapColor = functionExpression;
-
- XCTAssertEqual(rawLayer->getHeatmapColor().evaluate(11.0), mbgl::Color::red(),
- @"Setting heatmapColor to an expression depending on $heatmapDensity should update heatmap-color.");
- XCTAssertEqual(rawLayer->getHeatmapColor().evaluate(12.0), mbgl::Color::blue(),
- @"Setting heatmapColor to an expression depending on $heatmapDensity should update heatmap-color.");
- XCTAssertEqualObjects(layer.heatmapColor, functionExpression,
- @"heatmapColor should round-trip expressions depending on $heatmapDensity.");
-
- layer.heatmapColor = nil;
- XCTAssertTrue(rawLayer->getHeatmapColor().isUndefined(),
- @"Unsetting heatmapColor should return heatmap-color to the default value.");
- // The contained colors aren’t object equal, even though their descriptions are.
- XCTAssertEqualObjects(layer.heatmapColor.description, defaultExpression.description,
- @"heatmapColor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- XCTAssertThrowsSpecificNamed(layer.heatmapColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHeatmapLayer should raise an exception if a camera expression is applied to heatmapColor.");
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.heatmapColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHeatmapLayer should raise an exception if a data expression is applied to heatmapColor.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.heatmapColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHeatmapLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
-}
-
-@end
diff --git a/platform/darwin/test/MGLHeatmapStyleLayerTests.mm b/platform/darwin/test/MGLHeatmapStyleLayerTests.mm
deleted file mode 100644
index 98d314cb9f..0000000000
--- a/platform/darwin/test/MGLHeatmapStyleLayerTests.mm
+++ /dev/null
@@ -1,313 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/heatmap_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLHeatmapLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLHeatmapLayerTests
-
-+ (NSString *)layerType {
- return @"heatmap";
-}
-
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLHeatmapStyleLayer *layer = [[MGLHeatmapStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLHeatmapStyleLayer *layer = [[MGLHeatmapStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"heatmap");
- auto rawLayer = static_cast<mbgl::style::HeatmapLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // heatmap-intensity
- {
- XCTAssertTrue(rawLayer->getHeatmapIntensity().isUndefined(),
- @"heatmap-intensity should be unset initially.");
- NSExpression *defaultExpression = layer.heatmapIntensity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.heatmapIntensity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getHeatmapIntensity(), propertyValue,
- @"Setting heatmapIntensity to a constant value expression should update heatmap-intensity.");
- XCTAssertEqualObjects(layer.heatmapIntensity, constantExpression,
- @"heatmapIntensity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.heatmapIntensity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapIntensity(), propertyValue,
- @"Setting heatmapIntensity to a camera expression should update heatmap-intensity.");
- XCTAssertEqualObjects(layer.heatmapIntensity, functionExpression,
- @"heatmapIntensity should round-trip camera expressions.");
-
-
- layer.heatmapIntensity = nil;
- XCTAssertTrue(rawLayer->getHeatmapIntensity().isUndefined(),
- @"Unsetting heatmapIntensity should return heatmap-intensity to the default value.");
- XCTAssertEqualObjects(layer.heatmapIntensity, defaultExpression,
- @"heatmapIntensity should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.heatmapIntensity = functionExpression, NSException, NSInvalidArgumentException, @"MGLHeatmapLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.heatmapIntensity = functionExpression, NSException, NSInvalidArgumentException, @"MGLHeatmapLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.heatmapIntensityTransition = transitionTest;
- auto toptions = rawLayer->getHeatmapIntensityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition heatmapIntensityTransition = layer.heatmapIntensityTransition;
- XCTAssertEqual(heatmapIntensityTransition.delay, transitionTest.delay);
- XCTAssertEqual(heatmapIntensityTransition.duration, transitionTest.duration);
- }
-
- // heatmap-opacity
- {
- XCTAssertTrue(rawLayer->getHeatmapOpacity().isUndefined(),
- @"heatmap-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.heatmapOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.heatmapOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getHeatmapOpacity(), propertyValue,
- @"Setting heatmapOpacity to a constant value expression should update heatmap-opacity.");
- XCTAssertEqualObjects(layer.heatmapOpacity, constantExpression,
- @"heatmapOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.heatmapOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapOpacity(), propertyValue,
- @"Setting heatmapOpacity to a camera expression should update heatmap-opacity.");
- XCTAssertEqualObjects(layer.heatmapOpacity, functionExpression,
- @"heatmapOpacity should round-trip camera expressions.");
-
-
- layer.heatmapOpacity = nil;
- XCTAssertTrue(rawLayer->getHeatmapOpacity().isUndefined(),
- @"Unsetting heatmapOpacity should return heatmap-opacity to the default value.");
- XCTAssertEqualObjects(layer.heatmapOpacity, defaultExpression,
- @"heatmapOpacity should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.heatmapOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLHeatmapLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.heatmapOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLHeatmapLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.heatmapOpacityTransition = transitionTest;
- auto toptions = rawLayer->getHeatmapOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition heatmapOpacityTransition = layer.heatmapOpacityTransition;
- XCTAssertEqual(heatmapOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(heatmapOpacityTransition.duration, transitionTest.duration);
- }
-
- // heatmap-radius
- {
- XCTAssertTrue(rawLayer->getHeatmapRadius().isUndefined(),
- @"heatmap-radius should be unset initially.");
- NSExpression *defaultExpression = layer.heatmapRadius;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.heatmapRadius = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getHeatmapRadius(), propertyValue,
- @"Setting heatmapRadius to a constant value expression should update heatmap-radius.");
- XCTAssertEqualObjects(layer.heatmapRadius, constantExpression,
- @"heatmapRadius should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.heatmapRadius = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapRadius(), propertyValue,
- @"Setting heatmapRadius to a camera expression should update heatmap-radius.");
- XCTAssertEqualObjects(layer.heatmapRadius, functionExpression,
- @"heatmapRadius should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.heatmapRadius = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapRadius(), propertyValue,
- @"Setting heatmapRadius to a data expression should update heatmap-radius.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.heatmapRadius, pedanticFunctionExpression,
- @"heatmapRadius should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.heatmapRadius = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapRadius(), propertyValue,
- @"Setting heatmapRadius to a camera-data expression should update heatmap-radius.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.heatmapRadius, pedanticFunctionExpression,
- @"heatmapRadius should round-trip camera-data expressions.");
-
- layer.heatmapRadius = nil;
- XCTAssertTrue(rawLayer->getHeatmapRadius().isUndefined(),
- @"Unsetting heatmapRadius should return heatmap-radius to the default value.");
- XCTAssertEqualObjects(layer.heatmapRadius, defaultExpression,
- @"heatmapRadius should return the default value after being unset.");
- // Transition property test
- layer.heatmapRadiusTransition = transitionTest;
- auto toptions = rawLayer->getHeatmapRadiusTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition heatmapRadiusTransition = layer.heatmapRadiusTransition;
- XCTAssertEqual(heatmapRadiusTransition.delay, transitionTest.delay);
- XCTAssertEqual(heatmapRadiusTransition.duration, transitionTest.duration);
- }
-
- // heatmap-weight
- {
- XCTAssertTrue(rawLayer->getHeatmapWeight().isUndefined(),
- @"heatmap-weight should be unset initially.");
- NSExpression *defaultExpression = layer.heatmapWeight;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.heatmapWeight = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getHeatmapWeight(), propertyValue,
- @"Setting heatmapWeight to a constant value expression should update heatmap-weight.");
- XCTAssertEqualObjects(layer.heatmapWeight, constantExpression,
- @"heatmapWeight should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.heatmapWeight = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapWeight(), propertyValue,
- @"Setting heatmapWeight to a camera expression should update heatmap-weight.");
- XCTAssertEqualObjects(layer.heatmapWeight, functionExpression,
- @"heatmapWeight should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.heatmapWeight = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapWeight(), propertyValue,
- @"Setting heatmapWeight to a data expression should update heatmap-weight.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.heatmapWeight, pedanticFunctionExpression,
- @"heatmapWeight should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.heatmapWeight = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getHeatmapWeight(), propertyValue,
- @"Setting heatmapWeight to a camera-data expression should update heatmap-weight.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.heatmapWeight, pedanticFunctionExpression,
- @"heatmapWeight should round-trip camera-data expressions.");
-
- layer.heatmapWeight = nil;
- XCTAssertTrue(rawLayer->getHeatmapWeight().isUndefined(),
- @"Unsetting heatmapWeight should return heatmap-weight to the default value.");
- XCTAssertEqualObjects(layer.heatmapWeight, defaultExpression,
- @"heatmapWeight should return the default value after being unset.");
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"heatmap-intensity" isBoolean:NO];
- [self testPropertyName:@"heatmap-opacity" isBoolean:NO];
- [self testPropertyName:@"heatmap-radius" isBoolean:NO];
- [self testPropertyName:@"heatmap-weight" isBoolean:NO];
-}
-
-@end
diff --git a/platform/darwin/test/MGLHillshadeStyleLayerTests.mm b/platform/darwin/test/MGLHillshadeStyleLayerTests.mm
deleted file mode 100644
index a52f36e8c6..0000000000
--- a/platform/darwin/test/MGLHillshadeStyleLayerTests.mm
+++ /dev/null
@@ -1,349 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/hillshade_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLHillshadeLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLHillshadeLayerTests
-
-+ (NSString *)layerType {
- return @"hillshade";
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLHillshadeStyleLayer *layer = [[MGLHillshadeStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"hillshade");
- auto rawLayer = static_cast<mbgl::style::HillshadeLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // hillshade-accent-color
- {
- XCTAssertTrue(rawLayer->getHillshadeAccentColor().isUndefined(),
- @"hillshade-accent-color should be unset initially.");
- NSExpression *defaultExpression = layer.hillshadeAccentColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.hillshadeAccentColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getHillshadeAccentColor(), propertyValue,
- @"Setting hillshadeAccentColor to a constant value expression should update hillshade-accent-color.");
- XCTAssertEqualObjects(layer.hillshadeAccentColor, constantExpression,
- @"hillshadeAccentColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.hillshadeAccentColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getHillshadeAccentColor(), propertyValue,
- @"Setting hillshadeAccentColor to a camera expression should update hillshade-accent-color.");
- XCTAssertEqualObjects(layer.hillshadeAccentColor, functionExpression,
- @"hillshadeAccentColor should round-trip camera expressions.");
-
-
- layer.hillshadeAccentColor = nil;
- XCTAssertTrue(rawLayer->getHillshadeAccentColor().isUndefined(),
- @"Unsetting hillshadeAccentColor should return hillshade-accent-color to the default value.");
- XCTAssertEqualObjects(layer.hillshadeAccentColor, defaultExpression,
- @"hillshadeAccentColor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.hillshadeAccentColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.hillshadeAccentColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.hillshadeAccentColorTransition = transitionTest;
- auto toptions = rawLayer->getHillshadeAccentColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition hillshadeAccentColorTransition = layer.hillshadeAccentColorTransition;
- XCTAssertEqual(hillshadeAccentColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(hillshadeAccentColorTransition.duration, transitionTest.duration);
- }
-
- // hillshade-exaggeration
- {
- XCTAssertTrue(rawLayer->getHillshadeExaggeration().isUndefined(),
- @"hillshade-exaggeration should be unset initially.");
- NSExpression *defaultExpression = layer.hillshadeExaggeration;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.hillshadeExaggeration = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getHillshadeExaggeration(), propertyValue,
- @"Setting hillshadeExaggeration to a constant value expression should update hillshade-exaggeration.");
- XCTAssertEqualObjects(layer.hillshadeExaggeration, constantExpression,
- @"hillshadeExaggeration should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.hillshadeExaggeration = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHillshadeExaggeration(), propertyValue,
- @"Setting hillshadeExaggeration to a camera expression should update hillshade-exaggeration.");
- XCTAssertEqualObjects(layer.hillshadeExaggeration, functionExpression,
- @"hillshadeExaggeration should round-trip camera expressions.");
-
-
- layer.hillshadeExaggeration = nil;
- XCTAssertTrue(rawLayer->getHillshadeExaggeration().isUndefined(),
- @"Unsetting hillshadeExaggeration should return hillshade-exaggeration to the default value.");
- XCTAssertEqualObjects(layer.hillshadeExaggeration, defaultExpression,
- @"hillshadeExaggeration should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.hillshadeExaggeration = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.hillshadeExaggeration = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.hillshadeExaggerationTransition = transitionTest;
- auto toptions = rawLayer->getHillshadeExaggerationTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition hillshadeExaggerationTransition = layer.hillshadeExaggerationTransition;
- XCTAssertEqual(hillshadeExaggerationTransition.delay, transitionTest.delay);
- XCTAssertEqual(hillshadeExaggerationTransition.duration, transitionTest.duration);
- }
-
- // hillshade-highlight-color
- {
- XCTAssertTrue(rawLayer->getHillshadeHighlightColor().isUndefined(),
- @"hillshade-highlight-color should be unset initially.");
- NSExpression *defaultExpression = layer.hillshadeHighlightColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.hillshadeHighlightColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getHillshadeHighlightColor(), propertyValue,
- @"Setting hillshadeHighlightColor to a constant value expression should update hillshade-highlight-color.");
- XCTAssertEqualObjects(layer.hillshadeHighlightColor, constantExpression,
- @"hillshadeHighlightColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.hillshadeHighlightColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getHillshadeHighlightColor(), propertyValue,
- @"Setting hillshadeHighlightColor to a camera expression should update hillshade-highlight-color.");
- XCTAssertEqualObjects(layer.hillshadeHighlightColor, functionExpression,
- @"hillshadeHighlightColor should round-trip camera expressions.");
-
-
- layer.hillshadeHighlightColor = nil;
- XCTAssertTrue(rawLayer->getHillshadeHighlightColor().isUndefined(),
- @"Unsetting hillshadeHighlightColor should return hillshade-highlight-color to the default value.");
- XCTAssertEqualObjects(layer.hillshadeHighlightColor, defaultExpression,
- @"hillshadeHighlightColor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.hillshadeHighlightColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.hillshadeHighlightColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.hillshadeHighlightColorTransition = transitionTest;
- auto toptions = rawLayer->getHillshadeHighlightColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition hillshadeHighlightColorTransition = layer.hillshadeHighlightColorTransition;
- XCTAssertEqual(hillshadeHighlightColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(hillshadeHighlightColorTransition.duration, transitionTest.duration);
- }
-
- // hillshade-illumination-anchor
- {
- XCTAssertTrue(rawLayer->getHillshadeIlluminationAnchor().isUndefined(),
- @"hillshade-illumination-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.hillshadeIlluminationAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.hillshadeIlluminationAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::HillshadeIlluminationAnchorType> propertyValue = { mbgl::style::HillshadeIlluminationAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getHillshadeIlluminationAnchor(), propertyValue,
- @"Setting hillshadeIlluminationAnchor to a constant value expression should update hillshade-illumination-anchor.");
- XCTAssertEqualObjects(layer.hillshadeIlluminationAnchor, constantExpression,
- @"hillshadeIlluminationAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.hillshadeIlluminationAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::HillshadeIlluminationAnchorType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getHillshadeIlluminationAnchor(), propertyValue,
- @"Setting hillshadeIlluminationAnchor to a camera expression should update hillshade-illumination-anchor.");
- XCTAssertEqualObjects(layer.hillshadeIlluminationAnchor, functionExpression,
- @"hillshadeIlluminationAnchor should round-trip camera expressions.");
-
-
- layer.hillshadeIlluminationAnchor = nil;
- XCTAssertTrue(rawLayer->getHillshadeIlluminationAnchor().isUndefined(),
- @"Unsetting hillshadeIlluminationAnchor should return hillshade-illumination-anchor to the default value.");
- XCTAssertEqualObjects(layer.hillshadeIlluminationAnchor, defaultExpression,
- @"hillshadeIlluminationAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.hillshadeIlluminationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.hillshadeIlluminationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // hillshade-illumination-direction
- {
- XCTAssertTrue(rawLayer->getHillshadeIlluminationDirection().isUndefined(),
- @"hillshade-illumination-direction should be unset initially.");
- NSExpression *defaultExpression = layer.hillshadeIlluminationDirection;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.hillshadeIlluminationDirection = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getHillshadeIlluminationDirection(), propertyValue,
- @"Setting hillshadeIlluminationDirection to a constant value expression should update hillshade-illumination-direction.");
- XCTAssertEqualObjects(layer.hillshadeIlluminationDirection, constantExpression,
- @"hillshadeIlluminationDirection should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.hillshadeIlluminationDirection = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getHillshadeIlluminationDirection(), propertyValue,
- @"Setting hillshadeIlluminationDirection to a camera expression should update hillshade-illumination-direction.");
- XCTAssertEqualObjects(layer.hillshadeIlluminationDirection, functionExpression,
- @"hillshadeIlluminationDirection should round-trip camera expressions.");
-
-
- layer.hillshadeIlluminationDirection = nil;
- XCTAssertTrue(rawLayer->getHillshadeIlluminationDirection().isUndefined(),
- @"Unsetting hillshadeIlluminationDirection should return hillshade-illumination-direction to the default value.");
- XCTAssertEqualObjects(layer.hillshadeIlluminationDirection, defaultExpression,
- @"hillshadeIlluminationDirection should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.hillshadeIlluminationDirection = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.hillshadeIlluminationDirection = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // hillshade-shadow-color
- {
- XCTAssertTrue(rawLayer->getHillshadeShadowColor().isUndefined(),
- @"hillshade-shadow-color should be unset initially.");
- NSExpression *defaultExpression = layer.hillshadeShadowColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.hillshadeShadowColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getHillshadeShadowColor(), propertyValue,
- @"Setting hillshadeShadowColor to a constant value expression should update hillshade-shadow-color.");
- XCTAssertEqualObjects(layer.hillshadeShadowColor, constantExpression,
- @"hillshadeShadowColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.hillshadeShadowColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getHillshadeShadowColor(), propertyValue,
- @"Setting hillshadeShadowColor to a camera expression should update hillshade-shadow-color.");
- XCTAssertEqualObjects(layer.hillshadeShadowColor, functionExpression,
- @"hillshadeShadowColor should round-trip camera expressions.");
-
-
- layer.hillshadeShadowColor = nil;
- XCTAssertTrue(rawLayer->getHillshadeShadowColor().isUndefined(),
- @"Unsetting hillshadeShadowColor should return hillshade-shadow-color to the default value.");
- XCTAssertEqualObjects(layer.hillshadeShadowColor, defaultExpression,
- @"hillshadeShadowColor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.hillshadeShadowColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.hillshadeShadowColor = functionExpression, NSException, NSInvalidArgumentException, @"MGLHillshadeLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.hillshadeShadowColorTransition = transitionTest;
- auto toptions = rawLayer->getHillshadeShadowColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition hillshadeShadowColorTransition = layer.hillshadeShadowColorTransition;
- XCTAssertEqual(hillshadeShadowColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(hillshadeShadowColorTransition.duration, transitionTest.duration);
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"hillshade-accent-color" isBoolean:NO];
- [self testPropertyName:@"hillshade-exaggeration" isBoolean:NO];
- [self testPropertyName:@"hillshade-highlight-color" isBoolean:NO];
- [self testPropertyName:@"hillshade-illumination-anchor" isBoolean:NO];
- [self testPropertyName:@"hillshade-illumination-direction" isBoolean:NO];
- [self testPropertyName:@"hillshade-shadow-color" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLHillshadeIlluminationAnchor:MGLHillshadeIlluminationAnchorMap].MGLHillshadeIlluminationAnchorValue, MGLHillshadeIlluminationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLHillshadeIlluminationAnchor:MGLHillshadeIlluminationAnchorViewport].MGLHillshadeIlluminationAnchorValue, MGLHillshadeIlluminationAnchorViewport);
-}
-
-@end
diff --git a/platform/darwin/test/MGLImageSourceTests.m b/platform/darwin/test/MGLImageSourceTests.m
deleted file mode 100644
index 38fcd38709..0000000000
--- a/platform/darwin/test/MGLImageSourceTests.m
+++ /dev/null
@@ -1,42 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import <Mapbox/Mapbox.h>
-
-@interface MGLImageSourceTests : XCTestCase
-
-@end
-
-@implementation MGLImageSourceTests
-
-
-- (void)testMGLImageSourceWithImageURL {
-
- MGLCoordinateQuad quad = { { 80, 37}, { 81, 37}, { 81, 39}, { 80, 39}};
- MGLImageSource *source = [[MGLImageSource alloc] initWithIdentifier:@"source-id" coordinateQuad:quad URL:[NSURL URLWithString:@"http://host/image.png"]];
-
- XCTAssertNotNil(source.URL);
- XCTAssertEqualObjects(source.URL.absoluteString, @"http://host/image.png");
- XCTAssertNil(source.image);
-}
-
-- (void)testMGLImageSourceWithImage {
-
- NSString *imageName = @"RadarImage";
-#if TARGET_OS_IPHONE
- MGLImage *image = [MGLImage imageNamed:imageName
- inBundle:[NSBundle bundleForClass:[self class]]
- compatibleWithTraitCollection:nil];
-#else
- MGLImage *image = [[NSBundle bundleForClass:[self class]] imageForResource:imageName];
-#endif
- XCTAssertNotNil(image);
-
- MGLCoordinateQuad quad = { { 80, 37}, { 81, 37}, { 81, 39}, { 80, 39}};
- MGLImageSource *source = [[MGLImageSource alloc] initWithIdentifier:@"source-id" coordinateQuad:quad image:image];
-
- XCTAssertNotNil(source.image);
- XCTAssertEqualObjects(source.image, image);
- XCTAssertNil(source.URL);
-}
-
-@end
diff --git a/platform/darwin/test/MGLLightTest.mm b/platform/darwin/test/MGLLightTest.mm
deleted file mode 100644
index 0bc7b15af3..0000000000
--- a/platform/darwin/test/MGLLightTest.mm
+++ /dev/null
@@ -1,133 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#import <XCTest/XCTest.h>
-#import <Mapbox/Mapbox.h>
-
-#import "MGLLight_Private.h"
-
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import <mbgl/style/light.hpp>
-#import <mbgl/style/types.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-@interface MGLLightTest : XCTestCase
-
-@end
-
-@implementation MGLLightTest
-
-- (void)testProperties {
-
- MGLTransition defaultTransition = MGLTransitionMake(0, 0);
- MGLTransition transition = MGLTransitionMake(6, 3);
- mbgl::style::TransitionOptions transitionOptions { { MGLDurationFromTimeInterval(6) }, { MGLDurationFromTimeInterval(3) } };
-
- // anchor
- {
- mbgl::style::Light light;
- MGLLight *mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- auto lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getDefaultAnchor(), lightFromMGLLight.getAnchor());
- XCTAssertEqual(mglLight.anchor.expressionType, NSConstantValueExpressionType, @"mglLight.anchor isn’t a constant value expression.");
- XCTAssertEqualObjects(mglLight.anchor.constantValue, @"viewport");
-
- mbgl::style::PropertyValue<mbgl::style::LightAnchorType> propertyValue = { mbgl::style::LightAnchorType::Viewport };
- light.setAnchor(propertyValue);
- mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getAnchor(), lightFromMGLLight.getAnchor());
- }
-
- // position
- {
- mbgl::style::Light light;
- MGLLight *mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- auto lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getDefaultPosition(), lightFromMGLLight.getPosition());
- auto positionTransition = lightFromMGLLight.getPositionTransition();
- XCTAssert(positionTransition.delay && MGLTimeIntervalFromDuration(*positionTransition.delay) == defaultTransition.delay);
- XCTAssert(positionTransition.duration && MGLTimeIntervalFromDuration(*positionTransition.duration) == defaultTransition.duration);
-
- std::array<float, 3> positionArray = { { 6, 180, 90 } };
- mbgl::style::Position position = { positionArray };
- mbgl::style::PropertyValue<mbgl::style::Position> propertyValue = { position };
- light.setPosition(propertyValue);
- light.setPositionTransition(transitionOptions);
-
- mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getPosition(), lightFromMGLLight.getPosition());
- positionTransition = lightFromMGLLight.getPositionTransition();
- XCTAssert(positionTransition.delay && MGLTimeIntervalFromDuration(*positionTransition.delay) == transition.delay);
- XCTAssert(positionTransition.duration && MGLTimeIntervalFromDuration(*positionTransition.duration) == transition.duration);
-
- }
-
- // color
- {
- mbgl::style::Light light;
- MGLLight *mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- auto lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getDefaultColor(), lightFromMGLLight.getColor());
- auto colorTransition = lightFromMGLLight.getColorTransition();
- XCTAssert(colorTransition.delay && MGLTimeIntervalFromDuration(*colorTransition.delay) == defaultTransition.delay);
- XCTAssert(colorTransition.duration && MGLTimeIntervalFromDuration(*colorTransition.duration) == defaultTransition.duration);
-
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- light.setColor(propertyValue);
- light.setColorTransition(transitionOptions);
-
- mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getColor(), lightFromMGLLight.getColor());
- colorTransition = lightFromMGLLight.getColorTransition();
- XCTAssert(colorTransition.delay && MGLTimeIntervalFromDuration(*colorTransition.delay) == transition.delay);
- XCTAssert(colorTransition.duration && MGLTimeIntervalFromDuration(*colorTransition.duration) == transition.duration);
-
- }
-
- // intensity
- {
- mbgl::style::Light light;
- MGLLight *mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- auto lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getDefaultIntensity(), lightFromMGLLight.getIntensity());
- auto intensityTransition = lightFromMGLLight.getIntensityTransition();
- XCTAssert(intensityTransition.delay && MGLTimeIntervalFromDuration(*intensityTransition.delay) == defaultTransition.delay);
- XCTAssert(intensityTransition.duration && MGLTimeIntervalFromDuration(*intensityTransition.duration) == defaultTransition.duration);
-
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- light.setIntensity(propertyValue);
- light.setIntensityTransition(transitionOptions);
-
- mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getIntensity(), lightFromMGLLight.getIntensity());
- intensityTransition = lightFromMGLLight.getIntensityTransition();
- XCTAssert(intensityTransition.delay && MGLTimeIntervalFromDuration(*intensityTransition.delay) == transition.delay);
- XCTAssert(intensityTransition.duration && MGLTimeIntervalFromDuration(*intensityTransition.duration) == transition.duration);
-
- }
-
-}
-
-- (void)testValueAdditions {
- MGLSphericalPosition position = MGLSphericalPositionMake(1.15, 210, 30);
-
- XCTAssertEqual([NSValue valueWithMGLSphericalPosition:position].MGLSphericalPositionValue.radial, position.radial);
- XCTAssertEqual([NSValue valueWithMGLSphericalPosition:position].MGLSphericalPositionValue.azimuthal, position.azimuthal);
- XCTAssertEqual([NSValue valueWithMGLSphericalPosition:position].MGLSphericalPositionValue.polar, position.polar);
- XCTAssertEqual([NSValue valueWithMGLLightAnchor:MGLLightAnchorMap].MGLLightAnchorValue, MGLLightAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLLightAnchor:MGLLightAnchorViewport].MGLLightAnchorValue, MGLLightAnchorViewport);
-}
-
-@end
diff --git a/platform/darwin/test/MGLLightTest.mm.ejs b/platform/darwin/test/MGLLightTest.mm.ejs
deleted file mode 100644
index 35ff58b6d5..0000000000
--- a/platform/darwin/test/MGLLightTest.mm.ejs
+++ /dev/null
@@ -1,91 +0,0 @@
-<%
- const type = locals.type;
- const properties = locals.properties;
--%>
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-#import <XCTest/XCTest.h>
-#import <Mapbox/Mapbox.h>
-
-#import "MGLLight_Private.h"
-
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import <mbgl/style/light.hpp>
-#import <mbgl/style/types.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-@interface MGLLightTest : XCTestCase
-
-@end
-
-@implementation MGLLightTest
-
-- (void)testProperties {
-
- MGLTransition defaultTransition = MGLTransitionMake(0, 0);
- MGLTransition transition = MGLTransitionMake(6, 3);
- mbgl::style::TransitionOptions transitionOptions { { MGLDurationFromTimeInterval(6) }, { MGLDurationFromTimeInterval(3) } };
-
-<% for (const property of properties) { -%>
- // <%- property.name %>
- {
- mbgl::style::Light light;
- MGLLight *mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- auto lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.getDefault<%- camelize(property.name) -%>(), lightFromMGLLight.get<%- camelize(property.name) -%>());
-<% if (property.transition) { -%>
- auto <%- camelizeWithLeadingLowercase(property.name) -%>Transition = lightFromMGLLight.get<%- camelize(property.name) -%>Transition();
- XCTAssert(<%- camelizeWithLeadingLowercase(property.name) -%>Transition.delay && MGLTimeIntervalFromDuration(*<%- camelizeWithLeadingLowercase(property.name) -%>Transition.delay) == defaultTransition.delay);
- XCTAssert(<%- camelizeWithLeadingLowercase(property.name) -%>Transition.duration && MGLTimeIntervalFromDuration(*<%- camelizeWithLeadingLowercase(property.name) -%>Transition.duration) == defaultTransition.duration);
-
-<% } -%>
-<% if (property.type == "enum" && property.default) { -%>
- XCTAssertEqual(mglLight.<%- camelizeWithLeadingLowercase(property.name) -%>.expressionType, NSConstantValueExpressionType, @"mglLight.<%- camelizeWithLeadingLowercase(property.name) -%> isn’t a constant value expression.");
- XCTAssertEqualObjects(mglLight.<%- camelizeWithLeadingLowercase(property.name) -%>.constantValue, @"<%- property.default -%>");
-
-<% } -%>
-<% if (property.type == "array") { -%>
- std::array<float, 3> positionArray = { { 6, 180, 90 } };
- mbgl::style::Position position = { positionArray };
- mbgl::style::PropertyValue<mbgl::style::Position> propertyValue = { position };
-<% } else { -%>
- mbgl::style::PropertyValue<<%- mbglType(property) %>> propertyValue = { <%- mbglTestValue(property, type) %> };
-<% } -%>
- light.set<%- camelize(property.name) -%>(propertyValue);
-<% if (property.transition) { -%>
- light.set<%- camelize(property.name) -%>Transition(transitionOptions);
-
-<% } -%>
- mglLight = [[MGLLight alloc] initWithMBGLLight:&light];
- lightFromMGLLight = mglLight.mbglLight;
-
- XCTAssertEqual(light.get<%- camelize(property.name) -%>(), lightFromMGLLight.get<%- camelize(property.name) -%>());
-<% if (property.transition) { -%>
- <%- camelizeWithLeadingLowercase(property.name) -%>Transition = lightFromMGLLight.get<%- camelize(property.name) -%>Transition();
- XCTAssert(<%- camelizeWithLeadingLowercase(property.name) -%>Transition.delay && MGLTimeIntervalFromDuration(*<%- camelizeWithLeadingLowercase(property.name) -%>Transition.delay) == transition.delay);
- XCTAssert(<%- camelizeWithLeadingLowercase(property.name) -%>Transition.duration && MGLTimeIntervalFromDuration(*<%- camelizeWithLeadingLowercase(property.name) -%>Transition.duration) == transition.duration);
-
-<% } -%>
- }
-
-<% } -%>
-}
-
-- (void)testValueAdditions {
- MGLSphericalPosition position = MGLSphericalPositionMake(1.15, 210, 30);
-
- XCTAssertEqual([NSValue valueWithMGLSphericalPosition:position].MGLSphericalPositionValue.radial, position.radial);
- XCTAssertEqual([NSValue valueWithMGLSphericalPosition:position].MGLSphericalPositionValue.azimuthal, position.azimuthal);
- XCTAssertEqual([NSValue valueWithMGLSphericalPosition:position].MGLSphericalPositionValue.polar, position.polar);
-<% for (const property of properties) { -%>
-<% if (property.type == "enum") { -%>
-<% for (const value in property.values) { -%>
- XCTAssertEqual([NSValue valueWithMGLLight<%- camelize(property.name) %>:MGLLight<%- camelize(property.name) %><%- camelize(value) %>].MGLLight<%- camelize(property.name) %>Value, MGLLight<%- camelize(property.name) %><%- camelize(value) %>);
-<% } -%>
-<% } -%>
-<% } -%>
-}
-
-@end
diff --git a/platform/darwin/test/MGLLineStyleLayerTests.mm b/platform/darwin/test/MGLLineStyleLayerTests.mm
deleted file mode 100644
index 46f040b601..0000000000
--- a/platform/darwin/test/MGLLineStyleLayerTests.mm
+++ /dev/null
@@ -1,904 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/line_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLLineLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLLineLayerTests
-
-+ (NSString *)layerType {
- return @"line";
-}
-
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLLineStyleLayer *layer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLLineStyleLayer *layer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"line");
- auto rawLayer = static_cast<mbgl::style::LineLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // line-cap
- {
- XCTAssertTrue(rawLayer->getLineCap().isUndefined(),
- @"line-cap should be unset initially.");
- NSExpression *defaultExpression = layer.lineCap;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'square'"];
- layer.lineCap = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::LineCapType> propertyValue = { mbgl::style::LineCapType::Square };
- XCTAssertEqual(rawLayer->getLineCap(), propertyValue,
- @"Setting lineCap to a constant value expression should update line-cap.");
- XCTAssertEqualObjects(layer.lineCap, constantExpression,
- @"lineCap should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'square'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineCap = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::LineCapType>(
- step(zoom(), literal("square"), 18.0, literal("square"))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineCap(), propertyValue,
- @"Setting lineCap to a camera expression should update line-cap.");
- XCTAssertEqualObjects(layer.lineCap, functionExpression,
- @"lineCap should round-trip camera expressions.");
-
-
- layer.lineCap = nil;
- XCTAssertTrue(rawLayer->getLineCap().isUndefined(),
- @"Unsetting lineCap should return line-cap to the default value.");
- XCTAssertEqualObjects(layer.lineCap, defaultExpression,
- @"lineCap should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.lineCap = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.lineCap = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // line-join
- {
- XCTAssertTrue(rawLayer->getLineJoin().isUndefined(),
- @"line-join should be unset initially.");
- NSExpression *defaultExpression = layer.lineJoin;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'miter'"];
- layer.lineJoin = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::LineJoinType> propertyValue = { mbgl::style::LineJoinType::Miter };
- XCTAssertEqual(rawLayer->getLineJoin(), propertyValue,
- @"Setting lineJoin to a constant value expression should update line-join.");
- XCTAssertEqualObjects(layer.lineJoin, constantExpression,
- @"lineJoin should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'miter'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineJoin = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::LineJoinType>(
- step(zoom(), literal("miter"), 18.0, literal("miter"))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineJoin(), propertyValue,
- @"Setting lineJoin to a camera expression should update line-join.");
- XCTAssertEqualObjects(layer.lineJoin, functionExpression,
- @"lineJoin should round-trip camera expressions.");
-
-
- layer.lineJoin = nil;
- XCTAssertTrue(rawLayer->getLineJoin().isUndefined(),
- @"Unsetting lineJoin should return line-join to the default value.");
- XCTAssertEqualObjects(layer.lineJoin, defaultExpression,
- @"lineJoin should return the default value after being unset.");
- }
-
- // line-miter-limit
- {
- XCTAssertTrue(rawLayer->getLineMiterLimit().isUndefined(),
- @"line-miter-limit should be unset initially.");
- NSExpression *defaultExpression = layer.lineMiterLimit;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.lineMiterLimit = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getLineMiterLimit(), propertyValue,
- @"Setting lineMiterLimit to a constant value expression should update line-miter-limit.");
- XCTAssertEqualObjects(layer.lineMiterLimit, constantExpression,
- @"lineMiterLimit should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineMiterLimit = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineMiterLimit(), propertyValue,
- @"Setting lineMiterLimit to a camera expression should update line-miter-limit.");
- XCTAssertEqualObjects(layer.lineMiterLimit, functionExpression,
- @"lineMiterLimit should round-trip camera expressions.");
-
-
- layer.lineMiterLimit = nil;
- XCTAssertTrue(rawLayer->getLineMiterLimit().isUndefined(),
- @"Unsetting lineMiterLimit should return line-miter-limit to the default value.");
- XCTAssertEqualObjects(layer.lineMiterLimit, defaultExpression,
- @"lineMiterLimit should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.lineMiterLimit = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.lineMiterLimit = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // line-round-limit
- {
- XCTAssertTrue(rawLayer->getLineRoundLimit().isUndefined(),
- @"line-round-limit should be unset initially.");
- NSExpression *defaultExpression = layer.lineRoundLimit;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.lineRoundLimit = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getLineRoundLimit(), propertyValue,
- @"Setting lineRoundLimit to a constant value expression should update line-round-limit.");
- XCTAssertEqualObjects(layer.lineRoundLimit, constantExpression,
- @"lineRoundLimit should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineRoundLimit = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineRoundLimit(), propertyValue,
- @"Setting lineRoundLimit to a camera expression should update line-round-limit.");
- XCTAssertEqualObjects(layer.lineRoundLimit, functionExpression,
- @"lineRoundLimit should round-trip camera expressions.");
-
-
- layer.lineRoundLimit = nil;
- XCTAssertTrue(rawLayer->getLineRoundLimit().isUndefined(),
- @"Unsetting lineRoundLimit should return line-round-limit to the default value.");
- XCTAssertEqualObjects(layer.lineRoundLimit, defaultExpression,
- @"lineRoundLimit should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.lineRoundLimit = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.lineRoundLimit = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // line-blur
- {
- XCTAssertTrue(rawLayer->getLineBlur().isUndefined(),
- @"line-blur should be unset initially.");
- NSExpression *defaultExpression = layer.lineBlur;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.lineBlur = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getLineBlur(), propertyValue,
- @"Setting lineBlur to a constant value expression should update line-blur.");
- XCTAssertEqualObjects(layer.lineBlur, constantExpression,
- @"lineBlur should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineBlur(), propertyValue,
- @"Setting lineBlur to a camera expression should update line-blur.");
- XCTAssertEqualObjects(layer.lineBlur, functionExpression,
- @"lineBlur should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.lineBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineBlur(), propertyValue,
- @"Setting lineBlur to a data expression should update line-blur.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.lineBlur, pedanticFunctionExpression,
- @"lineBlur should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.lineBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineBlur(), propertyValue,
- @"Setting lineBlur to a camera-data expression should update line-blur.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.lineBlur, pedanticFunctionExpression,
- @"lineBlur should round-trip camera-data expressions.");
-
- layer.lineBlur = nil;
- XCTAssertTrue(rawLayer->getLineBlur().isUndefined(),
- @"Unsetting lineBlur should return line-blur to the default value.");
- XCTAssertEqualObjects(layer.lineBlur, defaultExpression,
- @"lineBlur should return the default value after being unset.");
- // Transition property test
- layer.lineBlurTransition = transitionTest;
- auto toptions = rawLayer->getLineBlurTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition lineBlurTransition = layer.lineBlurTransition;
- XCTAssertEqual(lineBlurTransition.delay, transitionTest.delay);
- XCTAssertEqual(lineBlurTransition.duration, transitionTest.duration);
- }
-
- // line-color
- {
- XCTAssertTrue(rawLayer->getLineColor().isUndefined(),
- @"line-color should be unset initially.");
- NSExpression *defaultExpression = layer.lineColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.lineColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getLineColor(), propertyValue,
- @"Setting lineColor to a constant value expression should update line-color.");
- XCTAssertEqualObjects(layer.lineColor, constantExpression,
- @"lineColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineColor(), propertyValue,
- @"Setting lineColor to a camera expression should update line-color.");
- XCTAssertEqualObjects(layer.lineColor, functionExpression,
- @"lineColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.lineColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineColor(), propertyValue,
- @"Setting lineColor to a data expression should update line-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.lineColor, pedanticFunctionExpression,
- @"lineColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.lineColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineColor(), propertyValue,
- @"Setting lineColor to a camera-data expression should update line-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.lineColor, pedanticFunctionExpression,
- @"lineColor should round-trip camera-data expressions.");
-
- layer.lineColor = nil;
- XCTAssertTrue(rawLayer->getLineColor().isUndefined(),
- @"Unsetting lineColor should return line-color to the default value.");
- XCTAssertEqualObjects(layer.lineColor, defaultExpression,
- @"lineColor should return the default value after being unset.");
- // Transition property test
- layer.lineColorTransition = transitionTest;
- auto toptions = rawLayer->getLineColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition lineColorTransition = layer.lineColorTransition;
- XCTAssertEqual(lineColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(lineColorTransition.duration, transitionTest.duration);
- }
-
- // line-dasharray
- {
- XCTAssertTrue(rawLayer->getLineDasharray().isUndefined(),
- @"line-dasharray should be unset initially.");
- NSExpression *defaultExpression = layer.lineDashPattern;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"{1, 2}"];
- layer.lineDashPattern = constantExpression;
- mbgl::style::PropertyValue<std::vector<float>> propertyValue = { {1, 2} };
- XCTAssertEqual(rawLayer->getLineDasharray(), propertyValue,
- @"Setting lineDashPattern to a constant value expression should update line-dasharray.");
- XCTAssertEqualObjects(layer.lineDashPattern, constantExpression,
- @"lineDashPattern should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 2}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineDashPattern = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::vector<float>>(
- step(zoom(), literal({1, 2}), 18.0, literal({1, 2}))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineDasharray(), propertyValue,
- @"Setting lineDashPattern to a camera expression should update line-dasharray.");
- XCTAssertEqualObjects(layer.lineDashPattern, functionExpression,
- @"lineDashPattern should round-trip camera expressions.");
-
-
- layer.lineDashPattern = nil;
- XCTAssertTrue(rawLayer->getLineDasharray().isUndefined(),
- @"Unsetting lineDashPattern should return line-dasharray to the default value.");
- XCTAssertEqualObjects(layer.lineDashPattern, defaultExpression,
- @"lineDashPattern should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.lineDashPattern = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.lineDashPattern = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // line-gap-width
- {
- XCTAssertTrue(rawLayer->getLineGapWidth().isUndefined(),
- @"line-gap-width should be unset initially.");
- NSExpression *defaultExpression = layer.lineGapWidth;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.lineGapWidth = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getLineGapWidth(), propertyValue,
- @"Setting lineGapWidth to a constant value expression should update line-gap-width.");
- XCTAssertEqualObjects(layer.lineGapWidth, constantExpression,
- @"lineGapWidth should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineGapWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineGapWidth(), propertyValue,
- @"Setting lineGapWidth to a camera expression should update line-gap-width.");
- XCTAssertEqualObjects(layer.lineGapWidth, functionExpression,
- @"lineGapWidth should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.lineGapWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineGapWidth(), propertyValue,
- @"Setting lineGapWidth to a data expression should update line-gap-width.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.lineGapWidth, pedanticFunctionExpression,
- @"lineGapWidth should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.lineGapWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineGapWidth(), propertyValue,
- @"Setting lineGapWidth to a camera-data expression should update line-gap-width.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.lineGapWidth, pedanticFunctionExpression,
- @"lineGapWidth should round-trip camera-data expressions.");
-
- layer.lineGapWidth = nil;
- XCTAssertTrue(rawLayer->getLineGapWidth().isUndefined(),
- @"Unsetting lineGapWidth should return line-gap-width to the default value.");
- XCTAssertEqualObjects(layer.lineGapWidth, defaultExpression,
- @"lineGapWidth should return the default value after being unset.");
- // Transition property test
- layer.lineGapWidthTransition = transitionTest;
- auto toptions = rawLayer->getLineGapWidthTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition lineGapWidthTransition = layer.lineGapWidthTransition;
- XCTAssertEqual(lineGapWidthTransition.delay, transitionTest.delay);
- XCTAssertEqual(lineGapWidthTransition.duration, transitionTest.duration);
- }
-
- // line-offset
- {
- XCTAssertTrue(rawLayer->getLineOffset().isUndefined(),
- @"line-offset should be unset initially.");
- NSExpression *defaultExpression = layer.lineOffset;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.lineOffset = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getLineOffset(), propertyValue,
- @"Setting lineOffset to a constant value expression should update line-offset.");
- XCTAssertEqualObjects(layer.lineOffset, constantExpression,
- @"lineOffset should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineOffset(), propertyValue,
- @"Setting lineOffset to a camera expression should update line-offset.");
- XCTAssertEqualObjects(layer.lineOffset, functionExpression,
- @"lineOffset should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.lineOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineOffset(), propertyValue,
- @"Setting lineOffset to a data expression should update line-offset.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.lineOffset, pedanticFunctionExpression,
- @"lineOffset should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.lineOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineOffset(), propertyValue,
- @"Setting lineOffset to a camera-data expression should update line-offset.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.lineOffset, pedanticFunctionExpression,
- @"lineOffset should round-trip camera-data expressions.");
-
- layer.lineOffset = nil;
- XCTAssertTrue(rawLayer->getLineOffset().isUndefined(),
- @"Unsetting lineOffset should return line-offset to the default value.");
- XCTAssertEqualObjects(layer.lineOffset, defaultExpression,
- @"lineOffset should return the default value after being unset.");
- // Transition property test
- layer.lineOffsetTransition = transitionTest;
- auto toptions = rawLayer->getLineOffsetTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition lineOffsetTransition = layer.lineOffsetTransition;
- XCTAssertEqual(lineOffsetTransition.delay, transitionTest.delay);
- XCTAssertEqual(lineOffsetTransition.duration, transitionTest.duration);
- }
-
- // line-opacity
- {
- XCTAssertTrue(rawLayer->getLineOpacity().isUndefined(),
- @"line-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.lineOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.lineOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getLineOpacity(), propertyValue,
- @"Setting lineOpacity to a constant value expression should update line-opacity.");
- XCTAssertEqualObjects(layer.lineOpacity, constantExpression,
- @"lineOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineOpacity(), propertyValue,
- @"Setting lineOpacity to a camera expression should update line-opacity.");
- XCTAssertEqualObjects(layer.lineOpacity, functionExpression,
- @"lineOpacity should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.lineOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineOpacity(), propertyValue,
- @"Setting lineOpacity to a data expression should update line-opacity.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.lineOpacity, pedanticFunctionExpression,
- @"lineOpacity should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.lineOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineOpacity(), propertyValue,
- @"Setting lineOpacity to a camera-data expression should update line-opacity.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.lineOpacity, pedanticFunctionExpression,
- @"lineOpacity should round-trip camera-data expressions.");
-
- layer.lineOpacity = nil;
- XCTAssertTrue(rawLayer->getLineOpacity().isUndefined(),
- @"Unsetting lineOpacity should return line-opacity to the default value.");
- XCTAssertEqualObjects(layer.lineOpacity, defaultExpression,
- @"lineOpacity should return the default value after being unset.");
- // Transition property test
- layer.lineOpacityTransition = transitionTest;
- auto toptions = rawLayer->getLineOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition lineOpacityTransition = layer.lineOpacityTransition;
- XCTAssertEqual(lineOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(lineOpacityTransition.duration, transitionTest.duration);
- }
-
- // line-pattern
- {
- XCTAssertTrue(rawLayer->getLinePattern().isUndefined(),
- @"line-pattern should be unset initially.");
- NSExpression *defaultExpression = layer.linePattern;
-
- NSExpression *constantExpression = [NSExpression expressionForConstantValue:@"Line Pattern"];
- layer.linePattern = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::expression::Image> propertyValue = { "Line Pattern" };
- XCTAssertEqual(rawLayer->getLinePattern(), propertyValue,
- @"Setting linePattern to a constant value expression should update line-pattern.");
- XCTAssertEqualObjects(layer.linePattern, constantExpression,
- @"linePattern should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('image', 'Line Pattern')"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.linePattern = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Image>(
- step(zoom(), image(literal("Line Pattern")), 18.0, image(literal("Line Pattern")))
- );
- }
-
- XCTAssertEqual(rawLayer->getLinePattern(), propertyValue,
- @"Setting linePattern to a camera expression should update line-pattern.");
- XCTAssertEqualObjects(layer.linePattern, functionExpression,
- @"linePattern should round-trip camera expressions.");
-
-
- layer.linePattern = nil;
- XCTAssertTrue(rawLayer->getLinePattern().isUndefined(),
- @"Unsetting linePattern should return line-pattern to the default value.");
- XCTAssertEqualObjects(layer.linePattern, defaultExpression,
- @"linePattern should return the default value after being unset.");
- // Transition property test
- layer.linePatternTransition = transitionTest;
- auto toptions = rawLayer->getLinePatternTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition linePatternTransition = layer.linePatternTransition;
- XCTAssertEqual(linePatternTransition.delay, transitionTest.delay);
- XCTAssertEqual(linePatternTransition.duration, transitionTest.duration);
- }
-
- // line-translate
- {
- XCTAssertTrue(rawLayer->getLineTranslate().isUndefined(),
- @"line-translate should be unset initially.");
- NSExpression *defaultExpression = layer.lineTranslation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.lineTranslation = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getLineTranslate(), propertyValue,
- @"Setting lineTranslation to a constant value expression should update line-translate.");
- XCTAssertEqualObjects(layer.lineTranslation, constantExpression,
- @"lineTranslation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineTranslation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineTranslate(), propertyValue,
- @"Setting lineTranslation to a camera expression should update line-translate.");
- XCTAssertEqualObjects(layer.lineTranslation, functionExpression,
- @"lineTranslation should round-trip camera expressions.");
-
-
- layer.lineTranslation = nil;
- XCTAssertTrue(rawLayer->getLineTranslate().isUndefined(),
- @"Unsetting lineTranslation should return line-translate to the default value.");
- XCTAssertEqualObjects(layer.lineTranslation, defaultExpression,
- @"lineTranslation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.lineTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.lineTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // line-translate-anchor
- {
- XCTAssertTrue(rawLayer->getLineTranslateAnchor().isUndefined(),
- @"line-translate-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.lineTranslationAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.lineTranslationAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType> propertyValue = { mbgl::style::TranslateAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getLineTranslateAnchor(), propertyValue,
- @"Setting lineTranslationAnchor to a constant value expression should update line-translate-anchor.");
- XCTAssertEqualObjects(layer.lineTranslationAnchor, constantExpression,
- @"lineTranslationAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineTranslationAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TranslateAnchorType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineTranslateAnchor(), propertyValue,
- @"Setting lineTranslationAnchor to a camera expression should update line-translate-anchor.");
- XCTAssertEqualObjects(layer.lineTranslationAnchor, functionExpression,
- @"lineTranslationAnchor should round-trip camera expressions.");
-
-
- layer.lineTranslationAnchor = nil;
- XCTAssertTrue(rawLayer->getLineTranslateAnchor().isUndefined(),
- @"Unsetting lineTranslationAnchor should return line-translate-anchor to the default value.");
- XCTAssertEqualObjects(layer.lineTranslationAnchor, defaultExpression,
- @"lineTranslationAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.lineTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.lineTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLLineLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // line-width
- {
- XCTAssertTrue(rawLayer->getLineWidth().isUndefined(),
- @"line-width should be unset initially.");
- NSExpression *defaultExpression = layer.lineWidth;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.lineWidth = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getLineWidth(), propertyValue,
- @"Setting lineWidth to a constant value expression should update line-width.");
- XCTAssertEqualObjects(layer.lineWidth, constantExpression,
- @"lineWidth should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.lineWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineWidth(), propertyValue,
- @"Setting lineWidth to a camera expression should update line-width.");
- XCTAssertEqualObjects(layer.lineWidth, functionExpression,
- @"lineWidth should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.lineWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineWidth(), propertyValue,
- @"Setting lineWidth to a data expression should update line-width.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.lineWidth, pedanticFunctionExpression,
- @"lineWidth should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.lineWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getLineWidth(), propertyValue,
- @"Setting lineWidth to a camera-data expression should update line-width.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.lineWidth, pedanticFunctionExpression,
- @"lineWidth should round-trip camera-data expressions.");
-
- layer.lineWidth = nil;
- XCTAssertTrue(rawLayer->getLineWidth().isUndefined(),
- @"Unsetting lineWidth should return line-width to the default value.");
- XCTAssertEqualObjects(layer.lineWidth, defaultExpression,
- @"lineWidth should return the default value after being unset.");
- // Transition property test
- layer.lineWidthTransition = transitionTest;
- auto toptions = rawLayer->getLineWidthTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition lineWidthTransition = layer.lineWidthTransition;
- XCTAssertEqual(lineWidthTransition.delay, transitionTest.delay);
- XCTAssertEqual(lineWidthTransition.duration, transitionTest.duration);
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"line-cap" isBoolean:NO];
- [self testPropertyName:@"line-join" isBoolean:NO];
- [self testPropertyName:@"line-miter-limit" isBoolean:NO];
- [self testPropertyName:@"line-round-limit" isBoolean:NO];
- [self testPropertyName:@"line-blur" isBoolean:NO];
- [self testPropertyName:@"line-color" isBoolean:NO];
- [self testPropertyName:@"line-dash-pattern" isBoolean:NO];
- [self testPropertyName:@"line-gap-width" isBoolean:NO];
- [self testPropertyName:@"line-offset" isBoolean:NO];
- [self testPropertyName:@"line-opacity" isBoolean:NO];
- [self testPropertyName:@"line-pattern" isBoolean:NO];
- [self testPropertyName:@"line-translation" isBoolean:NO];
- [self testPropertyName:@"line-translation-anchor" isBoolean:NO];
- [self testPropertyName:@"line-width" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLLineCap:MGLLineCapButt].MGLLineCapValue, MGLLineCapButt);
- XCTAssertEqual([NSValue valueWithMGLLineCap:MGLLineCapRound].MGLLineCapValue, MGLLineCapRound);
- XCTAssertEqual([NSValue valueWithMGLLineCap:MGLLineCapSquare].MGLLineCapValue, MGLLineCapSquare);
- XCTAssertEqual([NSValue valueWithMGLLineJoin:MGLLineJoinBevel].MGLLineJoinValue, MGLLineJoinBevel);
- XCTAssertEqual([NSValue valueWithMGLLineJoin:MGLLineJoinRound].MGLLineJoinValue, MGLLineJoinRound);
- XCTAssertEqual([NSValue valueWithMGLLineJoin:MGLLineJoinMiter].MGLLineJoinValue, MGLLineJoinMiter);
- XCTAssertEqual([NSValue valueWithMGLLineTranslationAnchor:MGLLineTranslationAnchorMap].MGLLineTranslationAnchorValue, MGLLineTranslationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLLineTranslationAnchor:MGLLineTranslationAnchorViewport].MGLLineTranslationAnchorValue, MGLLineTranslationAnchorViewport);
-}
-
-@end
diff --git a/platform/darwin/test/MGLMapCameraTests.m b/platform/darwin/test/MGLMapCameraTests.m
deleted file mode 100644
index 9fbf6b9e45..0000000000
--- a/platform/darwin/test/MGLMapCameraTests.m
+++ /dev/null
@@ -1,106 +0,0 @@
-#import <XCTest/XCTest.h>
-#import <CoreLocation/CoreLocation.h>
-#import <Mapbox/Mapbox.h>
-#import <MapKit/MapKit.h>
-
-@interface MGLMapCameraTests : XCTestCase
-
-@end
-
-@implementation MGLMapCameraTests
-
-- (void)testEyeCoordinateInitialization {
- CLLocationCoordinate2D fountainSquare = CLLocationCoordinate2DMake(39.10152215, -84.5124439696089);
- CLLocationCoordinate2D unionTerminal = CLLocationCoordinate2DMake(39.10980955, -84.5352778794236);
-
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- fromEyeCoordinate:fountainSquare
- eyeAltitude:1000];
- MKMapCamera *mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- fromEyeCoordinate:fountainSquare
- eyeAltitude:1000];
- XCTAssertEqual(camera.centerCoordinate.latitude, fountainSquare.latitude);
- XCTAssertEqual(camera.centerCoordinate.longitude, fountainSquare.longitude);
- XCTAssertEqual(camera.centerCoordinate.latitude, mkCamera.centerCoordinate.latitude);
- XCTAssertEqual(camera.centerCoordinate.longitude, mkCamera.centerCoordinate.longitude);
- XCTAssertEqual(camera.altitude, 1000, @"Eye altitude should be equivalent to altitude in untilted camera.");
- XCTAssertEqual(camera.altitude, mkCamera.altitude, @"Eye altitude in untilted camera should match MapKit.");
- XCTAssertEqual(camera.pitch, 0, @"Camera directly over center coordinate should be untilted.");
- XCTAssertEqual(camera.pitch, mkCamera.pitch, @"Camera directly over center coordinate should have same pitch as MapKit.");
- XCTAssertEqual(camera.heading, 0, @"Camera directly over center coordinate should be unrotated.");
- XCTAssertEqual(camera.heading, mkCamera.heading, @"Camera directly over center coordinate should have same heading as MapKit.");
-
- camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- fromEyeCoordinate:unionTerminal
- eyeAltitude:1000];
- mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- fromEyeCoordinate:unionTerminal
- eyeAltitude:1000];
- XCTAssertEqual(camera.centerCoordinate.latitude, fountainSquare.latitude);
- XCTAssertEqual(camera.centerCoordinate.longitude, fountainSquare.longitude);
- XCTAssertEqual(camera.centerCoordinate.latitude, mkCamera.centerCoordinate.latitude);
- XCTAssertEqual(camera.centerCoordinate.longitude, mkCamera.centerCoordinate.longitude);
- XCTAssertEqual(camera.altitude, 1000);
- XCTAssertEqual(camera.altitude, mkCamera.altitude, @"Eye altitude in tilted camera should match MapKit.");
- XCTAssertEqualWithAccuracy(camera.pitch, 65.3469146074, 0.01);
- XCTAssertEqual(camera.pitch, mkCamera.pitch);
- XCTAssertEqualWithAccuracy(camera.heading, 115.066396383, 0.01);
- XCTAssertEqualWithAccuracy(camera.heading, mkCamera.heading, 0.01);
-}
-
-- (void)testViewingDistanceInitialization {
- CLLocationCoordinate2D fountainSquare = CLLocationCoordinate2DMake(39.10152215, -84.5124439696089);
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- acrossDistance:10000
- pitch:0
- heading:0];
- MKMapCamera *mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- fromDistance:10000
- pitch:0
- heading:0];
- XCTAssertEqualWithAccuracy(camera.altitude, 10000, 0.01, @"Untilted camera should use distance verbatim.");
- XCTAssertEqualWithAccuracy(camera.altitude, mkCamera.altitude, 0.01, @"Untilted camera altitude should match MapKit.");
-
- camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- altitude:10000
- pitch:0
- heading:0];
- XCTAssertEqual(camera.altitude, 10000, @"Untilted camera should use altitude verbatim.");
-
- camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- acrossDistance:10000
- pitch:60
- heading:0];
- mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- fromDistance:10000
- pitch:60
- heading:0];
- XCTAssertEqualWithAccuracy(camera.altitude, 5000, 0.01, @"Tilted camera altitude should account for pitch.");
- XCTAssertEqualWithAccuracy(camera.altitude, mkCamera.altitude, 0.01, @"Tilted camera altitude should match MapKit.");
-
- camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
- altitude:10000
- pitch:60
- heading:0];
- XCTAssertEqual(camera.altitude, 10000, @"Tilted camera should use altitude verbatim.");
-}
-
-- (void)testViewingDistance {
- MGLMapCamera *camera = [MGLMapCamera camera];
- camera.altitude = 10000;
- XCTAssertEqual(camera.altitude, 10000);
- XCTAssertEqual(camera.viewingDistance, 10000);
- camera.viewingDistance = 10000;
- XCTAssertEqual(camera.altitude, 10000);
- XCTAssertEqual(camera.viewingDistance, 10000);
-
- camera.pitch = 60;
- camera.altitude = 10000;
- XCTAssertEqual(camera.altitude, 10000);
- XCTAssertEqualWithAccuracy(camera.viewingDistance, 20000, 0.01);
- camera.viewingDistance = 10000;
- XCTAssertEqualWithAccuracy(camera.altitude, 5000, 0.01);
- XCTAssertEqual(camera.viewingDistance, 10000);
-}
-
-@end
diff --git a/platform/darwin/test/MGLMapViewTests.m b/platform/darwin/test/MGLMapViewTests.m
deleted file mode 100644
index 9ad7016a61..0000000000
--- a/platform/darwin/test/MGLMapViewTests.m
+++ /dev/null
@@ -1,155 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import <TargetConditionals.h>
-
-#if TARGET_OS_IPHONE
- #define MGLEdgeInsetsZero UIEdgeInsetsZero
-#else
- #define MGLEdgeInsetsZero NSEdgeInsetsZero
-#endif
-
-static MGLMapView *mapView;
-
-@interface MGLMapViewTests : XCTestCase
-@end
-
-@implementation MGLMapViewTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 64, 64) styleURL:styleURL];
-}
-
-- (void)tearDown {
- mapView = nil;
- [MGLAccountManager setAccessToken:nil];
- [super tearDown];
-}
-
-- (void)testCoordinateBoundsConversion {
- [mapView setCenterCoordinate:CLLocationCoordinate2DMake(33, 179)];
-
- MGLCoordinateBounds leftAntimeridianBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(-75, 175), CLLocationCoordinate2DMake(75, 180));
- CGRect leftAntimeridianBoundsRect = [mapView convertCoordinateBounds:leftAntimeridianBounds toRectToView:mapView];
-
- MGLCoordinateBounds rightAntimeridianBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(-75, -180), CLLocationCoordinate2DMake(75, -175));
- CGRect rightAntimeridianBoundsRect = [mapView convertCoordinateBounds:rightAntimeridianBounds toRectToView:mapView];
-
- MGLCoordinateBounds spanningBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(24, 140), CLLocationCoordinate2DMake(44, 240));
- CGRect spanningBoundsRect = [mapView convertCoordinateBounds:spanningBounds toRectToView:mapView];
-
- // If the resulting CGRect from -convertCoordinateBounds:toRectToView:
- // intersects the set of bounds to the left and right of the
- // antimeridian, then we know that the CGRect spans across the antimeridian
- XCTAssertTrue(CGRectIntersectsRect(spanningBoundsRect, leftAntimeridianBoundsRect), @"Resulting");
- XCTAssertTrue(CGRectIntersectsRect(spanningBoundsRect, rightAntimeridianBoundsRect), @"Something");
-}
-
-#if TARGET_OS_IPHONE
-- (void)testUserTrackingModeCompletion {
- __block BOOL completed = NO;
- [mapView setUserTrackingMode:MGLUserTrackingModeNone animated:NO completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when the mode is unchanged.");
-
- completed = NO;
- [mapView setUserTrackingMode:MGLUserTrackingModeNone animated:YES completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when the mode is unchanged.");
-
- completed = NO;
- [mapView setUserTrackingMode:MGLUserTrackingModeFollow animated:NO completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when there’s no location.");
-
- completed = NO;
- [mapView setUserTrackingMode:MGLUserTrackingModeFollowWithHeading animated:YES completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when there’s no location.");
-}
-
-- (void)testTargetCoordinateCompletion {
- __block BOOL completed = NO;
- [mapView setTargetCoordinate:kCLLocationCoordinate2DInvalid animated:NO completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when the target coordinate is unchanged.");
-
- completed = NO;
- [mapView setTargetCoordinate:kCLLocationCoordinate2DInvalid animated:YES completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when the target coordinate is unchanged.");
-
- completed = NO;
- [mapView setUserTrackingMode:MGLUserTrackingModeFollow animated:NO completionHandler:nil];
- [mapView setTargetCoordinate:CLLocationCoordinate2DMake(39.128106, -84.516293) animated:YES completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when not tracking user course.");
-
- completed = NO;
- [mapView setUserTrackingMode:MGLUserTrackingModeFollowWithCourse animated:NO completionHandler:nil];
- [mapView setTargetCoordinate:CLLocationCoordinate2DMake(39.224407, -84.394957) animated:YES completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when there’s no location.");
-}
-#endif
-
-- (void)testVisibleCoordinatesCompletion {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Completion block should get called when not animated"];
- MGLCoordinateBounds unitBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(1, 1));
- [mapView setVisibleCoordinateBounds:unitBounds edgePadding:MGLEdgeInsetsZero animated:NO completionHandler:^{
- [expectation fulfill];
- }];
- [self waitForExpectations:@[expectation] timeout:1];
-
-#if TARGET_OS_IPHONE
- expectation = [self expectationWithDescription:@"Completion block should get called when animated"];
- CLLocationCoordinate2D antiunitCoordinates[] = {
- CLLocationCoordinate2DMake(0, 0),
- CLLocationCoordinate2DMake(-1, -1),
- };
- [mapView setVisibleCoordinates:antiunitCoordinates
- count:sizeof(antiunitCoordinates) / sizeof(antiunitCoordinates[0])
- edgePadding:UIEdgeInsetsZero
- direction:0
- duration:0
- animationTimingFunction:nil
- completionHandler:^{
- [expectation fulfill];
- }];
- [self waitForExpectations:@[expectation] timeout:1];
-#endif
-}
-
-- (void)testShowAnnotationsCompletion {
- __block BOOL completed = NO;
- [mapView showAnnotations:@[] edgePadding:MGLEdgeInsetsZero animated:NO completionHandler:^{
- completed = YES;
- }];
- XCTAssertTrue(completed, @"Completion block should get called synchronously when there are no annotations to show.");
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"Completion block should get called when not animated"];
- MGLPointAnnotation *annotation = [[MGLPointAnnotation alloc] init];
- [mapView showAnnotations:@[annotation] edgePadding:MGLEdgeInsetsZero animated:NO completionHandler:^{
- [expectation fulfill];
- }];
- [self waitForExpectations:@[expectation] timeout:1];
-
- expectation = [self expectationWithDescription:@"Completion block should get called when animated."];
- [mapView showAnnotations:@[annotation] edgePadding:MGLEdgeInsetsZero animated:YES completionHandler:^{
- [expectation fulfill];
- }];
- [self waitForExpectations:@[expectation] timeout:1];
-}
-
-@end
diff --git a/platform/darwin/test/MGLNSDateAdditionsTests.mm b/platform/darwin/test/MGLNSDateAdditionsTests.mm
deleted file mode 100644
index 6d8d951024..0000000000
--- a/platform/darwin/test/MGLNSDateAdditionsTests.mm
+++ /dev/null
@@ -1,40 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#include <mbgl/util/chrono.hpp>
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-using namespace std::chrono_literals;
-
-@interface MGLNSDateAdditionsTests : XCTestCase
-@end
-
-@implementation MGLNSDateAdditionsTests
-
-- (void)testDurationToNSTimeInterval {
-
- NSTimeInterval timeInterval = 5;
- mbgl::Duration duration = MGLDurationFromTimeInterval(timeInterval);
- NSTimeInterval durationTimeInterval = MGLTimeIntervalFromDuration(duration);
-
- mbgl::Duration expectedDuration = 5s;
- mbgl::Duration expectedDurationMiliSeconds = 5000ms;
- mbgl::Duration expectedDurationMicroSeconds = 5000000us;
- mbgl::Duration expectedDurationNanoSeconds = 5000000000ns;
-
- XCTAssertEqual(timeInterval, durationTimeInterval);
- XCTAssertEqual(timeInterval, MGLTimeIntervalFromDuration(expectedDuration));
- XCTAssertEqual(timeInterval, MGLTimeIntervalFromDuration(expectedDurationMiliSeconds));
- XCTAssertEqual(timeInterval, MGLTimeIntervalFromDuration(expectedDurationMicroSeconds));
- XCTAssertEqual(timeInterval, MGLTimeIntervalFromDuration(expectedDurationNanoSeconds));
-
- mbgl::Duration durationMiliSeconds = 2500ms;
- mbgl::Duration durationMicroSeconds = 2500000us;
- mbgl::Duration durationNanoSeconds = 2500000000ns;
-
- XCTAssertEqual(NSTimeInterval(2.5), MGLTimeIntervalFromDuration(durationMiliSeconds));
- XCTAssertEqual(NSTimeInterval(2.5), MGLTimeIntervalFromDuration(durationMicroSeconds));
- XCTAssertEqual(NSTimeInterval(2.5), MGLTimeIntervalFromDuration(durationNanoSeconds));
-
-}
-
-@end
diff --git a/platform/darwin/test/MGLNSStringAdditionsTests.m b/platform/darwin/test/MGLNSStringAdditionsTests.m
deleted file mode 100644
index 872a8ce664..0000000000
--- a/platform/darwin/test/MGLNSStringAdditionsTests.m
+++ /dev/null
@@ -1,89 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import "NSString+MGLAdditions.h"
-
-@interface MGLNSStringAdditionsTests : XCTestCase
-
-@end
-
-@implementation MGLNSStringAdditionsTests
-
-- (void)testTitleCasedString {
- NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
-
- XCTAssertEqualObjects([@"© OpenStreetMap" mgl_titleCasedStringWithLocale:locale], @"© OpenStreetMap");
- XCTAssertEqualObjects([@"© OSM" mgl_titleCasedStringWithLocale:locale], @"© OSM");
-
- XCTAssertEqualObjects([@"Improve this map" mgl_titleCasedStringWithLocale:locale], @"Improve This Map");
- XCTAssertEqualObjects([@"Improve This Map" mgl_titleCasedStringWithLocale:locale], @"Improve This Map");
-
- XCTAssertEqualObjects([@"Improve the map" mgl_titleCasedStringWithLocale:locale], @"Improve the Map");
- XCTAssertEqualObjects([@"Improve The Map" mgl_titleCasedStringWithLocale:locale], @"Improve The Map");
-
- XCTAssertEqualObjects([@"Improve a map" mgl_titleCasedStringWithLocale:locale], @"Improve a Map");
- XCTAssertEqualObjects([@"Improve A Map" mgl_titleCasedStringWithLocale:locale], @"Improve A Map");
-
- XCTAssertEqualObjects([@"Improve for the map" mgl_titleCasedStringWithLocale:locale], @"Improve for the Map");
- XCTAssertEqualObjects([@"Improve For The Map" mgl_titleCasedStringWithLocale:locale], @"Improve For The Map");
-
- XCTAssertEqualObjects([@"Improve and map" mgl_titleCasedStringWithLocale:locale], @"Improve and Map");
- XCTAssertEqualObjects([@"Improve And Map" mgl_titleCasedStringWithLocale:locale], @"Improve And Map");
-
- XCTAssertEqualObjects([@"Improve while mapping" mgl_titleCasedStringWithLocale:locale], @"Improve While Mapping");
- XCTAssertEqualObjects([@"Improve While Mapping" mgl_titleCasedStringWithLocale:locale], @"Improve While Mapping");
-
- XCTAssertEqualObjects([@"Improve with the map" mgl_titleCasedStringWithLocale:locale], @"Improve With the Map");
- XCTAssertEqualObjects([@"Improve With The Map" mgl_titleCasedStringWithLocale:locale], @"Improve With The Map");
-
- XCTAssertEqualObjects([@"Improve this iPhone" mgl_titleCasedStringWithLocale:locale], @"Improve This iPhone");
- XCTAssertEqualObjects([@"Improve This iPhone" mgl_titleCasedStringWithLocale:locale], @"Improve This iPhone");
-}
-
-- (void)testTransliteratedString {
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Latn"], @"Portland");
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Hans"], @"Portland");
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Hant"], @"Portland");
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Cyrl"], @"Портланд");
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Arab"], @"پُرتلَند");
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Jpan"], @"ポルテランデ");
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Kore"], @"폹란드");
- XCTAssertEqualObjects([@"Portland" mgl_stringByTransliteratingIntoScript:@"Fake"], @"Portland");
-
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Latn"], @"běi jīng");
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Hans"], @"北京");
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Hant"], @"北京");
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Cyrl"], @"бе̌и йӣнг");
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Arab"], @"بِِ̌ جِينگ");
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Jpan"], @"ベ̌イ ジーング");
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Kore"], @"베̌이 지̄늑");
- XCTAssertEqualObjects([@"北京" mgl_stringByTransliteratingIntoScript:@"Fake"], @"北京");
-
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Latn"], @"jiǔ lóng");
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Hans"], @"九龙");
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Hant"], @"九龍");
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Cyrl"], @"йиу̌ ло́нг");
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Arab"], @"جُِ̌ لُ́نگ");
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Jpan"], @"ジウ̌ ロ́ング");
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Kore"], @"지우̌ 로́늑");
- XCTAssertEqualObjects([@"九龍" mgl_stringByTransliteratingIntoScript:@"Fake"], @"九龍");
-
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Latn"], @"Moskva");
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Hans"], @"Mосква");
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Hant"], @"Mосква");
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Cyrl"], @"Москва");
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Arab"], @"مُسكڤَ");
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Jpan"], @"モスクヷ");
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Kore"], @"못크바");
- XCTAssertEqualObjects([@"Mосква" mgl_stringByTransliteratingIntoScript:@"Fake"], @"Mосква");
-
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Latn"], @"rondon");
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Hans"], @"ロンドン");
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Hant"], @"ロンドン");
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Cyrl"], @"рондон");
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Arab"], @"رُندُن");
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Jpan"], @"ロンドン");
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Kore"], @"론돈");
- XCTAssertEqualObjects([@"ロンドン" mgl_stringByTransliteratingIntoScript:@"Fake"], @"ロンドン");
-}
-
-@end
diff --git a/platform/darwin/test/MGLOfflinePackTests.mm b/platform/darwin/test/MGLOfflinePackTests.mm
deleted file mode 100644
index 6b454ee8ca..0000000000
--- a/platform/darwin/test/MGLOfflinePackTests.mm
+++ /dev/null
@@ -1,58 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import "MGLOfflinePack_Private.h"
-#import "MGLTestAssertionHandler.h"
-
-@interface MGLOfflinePackTests : XCTestCase
-
-@end
-
-@implementation MGLOfflinePackTests
-
-- (void)testInvalidation {
- MGLOfflinePack *invalidPack = [[MGLOfflinePack alloc] init];
-
- XCTAssertEqual(invalidPack.state, MGLOfflinePackStateInvalid, @"Offline pack should be invalid when initialized independently of MGLOfflineStorage.");
-
- XCTAssertThrowsSpecificNamed(invalidPack.region, NSException, MGLInvalidOfflinePackException, @"Invalid offline pack should raise an exception when accessing its region.");
- XCTAssertThrowsSpecificNamed(invalidPack.context, NSException, MGLInvalidOfflinePackException, @"Invalid offline pack should raise an exception when accessing its context.");
- XCTAssertThrowsSpecificNamed([invalidPack resume], NSException, MGLInvalidOfflinePackException, @"Invalid offline pack should raise an exception when being resumed.");
- XCTAssertThrowsSpecificNamed([invalidPack suspend], NSException, MGLInvalidOfflinePackException, @"Invalid offline pack should raise an exception when being suspended.");
-}
-
-- (void)testInvalidatingAnInvalidPack {
- MGLOfflinePack *invalidPack = [[MGLOfflinePack alloc] init];
-
- XCTAssertThrowsSpecificNamed([invalidPack invalidate], NSException, NSInternalInconsistencyException, @"Invalid offline pack should raise an exception when being invalidated.");
-
- // Now try again, without asserts
- NSAssertionHandler *oldHandler = [NSAssertionHandler currentHandler];
- MGLTestAssertionHandler *newHandler = [[MGLTestAssertionHandler alloc] initWithTestCase:self];
- [[[NSThread currentThread] threadDictionary] setValue:newHandler forKey:NSAssertionHandlerKey];
-
- // Make sure this doesn't crash without asserts
- [invalidPack invalidate];
-
- [[[NSThread currentThread] threadDictionary] setValue:oldHandler forKey:NSAssertionHandlerKey];
-}
-
-- (void)testProgressBoxing {
- MGLOfflinePackProgress progress = {
- .countOfResourcesCompleted = 3,
- .countOfResourcesExpected = 2,
- .countOfBytesCompleted = 7,
- .countOfTilesCompleted = 1,
- .countOfTileBytesCompleted = 6,
- .maximumResourcesExpected = UINT64_MAX,
- };
- MGLOfflinePackProgress roundTrippedProgress = [NSValue valueWithMGLOfflinePackProgress:progress].MGLOfflinePackProgressValue;
-
- XCTAssertEqual(progress.countOfResourcesCompleted, roundTrippedProgress.countOfResourcesCompleted, @"Completed resources should round-trip.");
- XCTAssertEqual(progress.countOfResourcesExpected, roundTrippedProgress.countOfResourcesExpected, @"Expected resources should round-trip.");
- XCTAssertEqual(progress.countOfBytesCompleted, roundTrippedProgress.countOfBytesCompleted, @"Completed bytes should round-trip.");
- XCTAssertEqual(progress.countOfTilesCompleted, roundTrippedProgress.countOfTilesCompleted, @"Completed tiles should round-trip.");
- XCTAssertEqual(progress.countOfTileBytesCompleted, roundTrippedProgress.countOfTileBytesCompleted, @"Completed tile bytes should round-trip.");
- XCTAssertEqual(progress.maximumResourcesExpected, roundTrippedProgress.maximumResourcesExpected, @"Maximum expected resources should round-trip.");
-}
-
-@end
diff --git a/platform/darwin/test/MGLOfflineRegionTests.m b/platform/darwin/test/MGLOfflineRegionTests.m
deleted file mode 100644
index 0af9ebb5fa..0000000000
--- a/platform/darwin/test/MGLOfflineRegionTests.m
+++ /dev/null
@@ -1,71 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-#import <XCTest/XCTest.h>
-
-@interface MGLOfflineRegionTests : XCTestCase
-
-@end
-
-@implementation MGLOfflineRegionTests
-
-- (void)testStyleURLs {
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(kCLLocationCoordinate2DInvalid, kCLLocationCoordinate2DInvalid);
- MGLTilePyramidOfflineRegion *region = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:nil bounds:bounds fromZoomLevel:0 toZoomLevel:DBL_MAX];
- XCTAssertEqualObjects(region.styleURL, [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion], @"Streets isn’t the default style.");
-
- NSURL *localURL = [NSURL URLWithString:@"beautiful.style"];
- XCTAssertThrowsSpecificNamed([[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:localURL bounds:bounds fromZoomLevel:0 toZoomLevel:DBL_MAX], NSException, MGLInvalidStyleURLException, @"No exception raised when initializing region with a local file URL as the style URL.");
-}
-
-- (void)testTilePyramidRegionEquality {
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(kCLLocationCoordinate2DInvalid, kCLLocationCoordinate2DInvalid);
- MGLTilePyramidOfflineRegion *original = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:[MGLStyle lightStyleURLWithVersion:MGLStyleDefaultVersion] bounds:bounds fromZoomLevel:5 toZoomLevel:10];
- MGLTilePyramidOfflineRegion *copy = [original copy];
- XCTAssertEqualObjects(original, copy, @"Tile pyramid region should be equal to its copy.");
-
- XCTAssertEqualObjects(original.styleURL, copy.styleURL, @"Style URL has changed.");
- XCTAssert(MGLCoordinateBoundsEqualToCoordinateBounds(original.bounds, copy.bounds), @"Bounds have changed.");
- XCTAssertEqual(original.minimumZoomLevel, copy.minimumZoomLevel, @"Minimum zoom level has changed.");
- XCTAssertEqual(original.maximumZoomLevel, copy.maximumZoomLevel, @"Maximum zoom level has changed.");
- XCTAssertEqual(original.includesIdeographicGlyphs, copy.includesIdeographicGlyphs, @"Include ideographs has changed.");
-}
-
-- (void)testGeometryRegionEquality {
- NSString *geojson = @"{\"type\": \"Point\", \"coordinates\": [-3.8671874999999996, 52.482780222078226] }";
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData: [geojson dataUsingEncoding:NSUTF8StringEncoding] encoding: NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
-
- MGLShapeOfflineRegion *original = [[MGLShapeOfflineRegion alloc] initWithStyleURL:[MGLStyle lightStyleURLWithVersion:MGLStyleDefaultVersion] shape:shape fromZoomLevel:5 toZoomLevel:10];
- original.includesIdeographicGlyphs = NO;
- MGLShapeOfflineRegion *copy = [original copy];
- XCTAssertEqualObjects(original, copy, @"Shape region should be equal to its copy.");
-
- XCTAssertEqualObjects(original.styleURL, copy.styleURL, @"Style URL has changed.");
- XCTAssertEqualObjects(original.shape, copy.shape, @"Geometry has changed.");
- XCTAssertEqual(original.minimumZoomLevel, copy.minimumZoomLevel, @"Minimum zoom level has changed.");
- XCTAssertEqual(original.maximumZoomLevel, copy.maximumZoomLevel, @"Maximum zoom level has changed.");
- XCTAssertEqual(original.includesIdeographicGlyphs, copy.includesIdeographicGlyphs, @"Include ideographs has changed.");
-}
-
-- (void)testIncludesIdeographicGlyphsByDefault {
-
- // Tile pyramid offline region
- {
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(kCLLocationCoordinate2DInvalid, kCLLocationCoordinate2DInvalid);
- MGLTilePyramidOfflineRegion *tilePyramidOfflineRegion = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:[MGLStyle lightStyleURLWithVersion:MGLStyleDefaultVersion] bounds:bounds fromZoomLevel:5 toZoomLevel:10];
- XCTAssertFalse(tilePyramidOfflineRegion.includesIdeographicGlyphs, @"tile pyramid offline region should not include ideographic glyphs");
- }
-
- // Shape offline region
- {
- NSString *geojson = @"{\"type\": \"Point\", \"coordinates\": [-3.8671874999999996, 52.482780222078226] }";
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData: [geojson dataUsingEncoding:NSUTF8StringEncoding] encoding: NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- MGLShapeOfflineRegion *shapeOfflineRegion = [[MGLShapeOfflineRegion alloc] initWithStyleURL:[MGLStyle lightStyleURLWithVersion:MGLStyleDefaultVersion] shape:shape fromZoomLevel:5 toZoomLevel:10];
- XCTAssertFalse(shapeOfflineRegion.includesIdeographicGlyphs, @"tile pyramid offline region should not include ideographic glyphs");
- }
-}
-
-@end
diff --git a/platform/darwin/test/MGLOfflineStorageTests.mm b/platform/darwin/test/MGLOfflineStorageTests.mm
deleted file mode 100644
index 8f6114658a..0000000000
--- a/platform/darwin/test/MGLOfflineStorageTests.mm
+++ /dev/null
@@ -1,671 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "MGLOfflineStorage_Private.h"
-#import "NSBundle+MGLAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "MGLTestAssertionHandler.h"
-
-#include <mbgl/storage/resource.hpp>
-#include <mbgl/util/run_loop.hpp>
-
-#pragma clang diagnostic ignored "-Wshadow"
-
-
-@interface MGLOfflineStorageTests : XCTestCase <MGLOfflineStorageDelegate>
-@end
-
-@implementation MGLOfflineStorageTests
-
-+ (void)tearDown {
- NSURL *cacheDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory
- inDomain:NSUserDomainMask
- appropriateForURL:nil
- create:NO
- error:nil];
- NSString *bundleIdentifier = [NSBundle mgl_applicationBundleIdentifier];
- cacheDirectoryURL = [cacheDirectoryURL URLByAppendingPathComponent:bundleIdentifier];
- cacheDirectoryURL = [cacheDirectoryURL URLByAppendingPathComponent:@".mapbox"];
- XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:cacheDirectoryURL.path], @"Cache subdirectory should exist.");
-
- NSURL *cacheURL = [cacheDirectoryURL URLByAppendingPathComponent:@"cache.db"];
-
- [[NSFileManager defaultManager] removeItemAtURL:cacheURL error:nil];
- XCTAssertFalse([[NSFileManager defaultManager] fileExistsAtPath:cacheURL.path], @"Cache subdirectory should not exist.");
-}
-
-- (void)setUp {
- [super setUp];
-
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- XCTestExpectation *expectation = [self keyValueObservingExpectationForObject:[MGLOfflineStorage sharedOfflineStorage] keyPath:@"packs" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- return changeKind == NSKeyValueChangeSetting;
- }];
- if ([MGLOfflineStorage sharedOfflineStorage].packs) {
- [expectation fulfill];
- [self waitForExpectationsWithTimeout:0 handler:nil];
- } else {
- [self waitForExpectationsWithTimeout:10 handler:nil];
- }
-
- XCTAssertNotNil([MGLOfflineStorage sharedOfflineStorage].packs, @"Shared offline storage object should have a non-nil collection of packs by this point.");
- });
-}
-
-- (void)testSharedObject {
- XCTAssertEqual([MGLOfflineStorage sharedOfflineStorage], [MGLOfflineStorage sharedOfflineStorage], @"There should only be one shared offline storage object.");
-}
-
-- (void)testAddPackForBounds {
- NSUInteger countOfPacks = [MGLOfflineStorage sharedOfflineStorage].packs.count;
-
- NSURL *styleURL = [MGLStyle lightStyleURLWithVersion:8];
- /// Somewhere near Grape Grove, Ohio, United States.
- MGLCoordinateBounds bounds = {
- { .latitude = 39.70358155855172, .longitude = -83.69506472545841 },
- { .latitude = 39.703818870225376, .longitude = -83.69420641857361 },
- };
- double zoomLevel = 20;
- MGLTilePyramidOfflineRegion *region = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:styleURL bounds:bounds fromZoomLevel:zoomLevel toZoomLevel:zoomLevel];
-
- NSString *nameKey = @"Name";
- NSString *name = @"🍇 Grape Grove";
-
- NSData *context = [NSKeyedArchiver archivedDataWithRootObject:@{
- nameKey: name,
- }];
-
- __block MGLOfflinePack *pack;
- [self keyValueObservingExpectationForObject:[MGLOfflineStorage sharedOfflineStorage] keyPath:@"packs" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- NSIndexSet *indices = change[NSKeyValueChangeIndexesKey];
- return changeKind == NSKeyValueChangeInsertion && indices.count == 1;
- }];
- XCTestExpectation *additionCompletionHandlerExpectation = [self expectationWithDescription:@"add pack completion handler"];
- [[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:region withContext:context completionHandler:^(MGLOfflinePack * _Nullable completionHandlerPack, NSError * _Nullable error) {
- XCTAssertNotNil(completionHandlerPack, @"Added pack should exist.");
- XCTAssertEqual(completionHandlerPack.state, MGLOfflinePackStateInactive, @"New pack should initially have inactive state.");
- pack = completionHandlerPack;
- [additionCompletionHandlerExpectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:5 handler:nil];
-
- XCTAssertEqual([MGLOfflineStorage sharedOfflineStorage].packs.count, countOfPacks + 1, @"Added pack should have been added to the canonical collection of packs owned by the shared offline storage object. This assertion can fail if this test is run before -testAAALoadPacks.");
-
- XCTAssertEqual(pack, [MGLOfflineStorage sharedOfflineStorage].packs.lastObject, @"Pack should be appended to end of packs array.");
-
- XCTAssertEqualObjects(pack.region, region, @"Added pack’s region has changed.");
-
- NSDictionary *userInfo = [NSKeyedUnarchiver unarchiveObjectWithData:pack.context];
- XCTAssert([userInfo isKindOfClass:[NSDictionary class]], @"Context of offline pack isn’t a dictionary.");
- XCTAssert([userInfo[nameKey] isKindOfClass:[NSString class]], @"Name of offline pack isn’t a string.");
- XCTAssertEqualObjects(userInfo[nameKey], name, @"Name of offline pack has changed.");
-
- XCTAssertEqual(pack.state, MGLOfflinePackStateInactive, @"New pack should initially have inactive state.");
-
- [self keyValueObservingExpectationForObject:pack keyPath:@"state" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- const auto state = static_cast<MGLOfflinePackState>([change[NSKeyValueChangeNewKey] longValue]);
- return changeKind == NSKeyValueChangeSetting && state == MGLOfflinePackStateInactive;
- }];
- [self expectationForNotification:MGLOfflinePackProgressChangedNotification object:pack handler:^BOOL(NSNotification * _Nonnull notification) {
- MGLOfflinePack *notificationPack = notification.object;
- XCTAssert([notificationPack isKindOfClass:[MGLOfflinePack class]], @"Object of notification should be an MGLOfflinePack.");
-
- NSDictionary *userInfo = notification.userInfo;
- XCTAssertNotNil(userInfo, @"Progress change notification should have a userInfo dictionary.");
-
- NSNumber *stateNumber = userInfo[MGLOfflinePackUserInfoKeyState];
- XCTAssert([stateNumber isKindOfClass:[NSNumber class]], @"Progress change notification’s state should be an NSNumber.");
- XCTAssertEqual(stateNumber.integerValue, pack.state, @"State in a progress change notification should match the pack’s state.");
-
- NSValue *progressValue = userInfo[MGLOfflinePackUserInfoKeyProgress];
- XCTAssert([progressValue isKindOfClass:[NSValue class]], @"Progress change notification’s progress should be an NSValue.");
- XCTAssertEqualObjects(progressValue, [NSValue valueWithMGLOfflinePackProgress:pack.progress], @"Progress change notification’s progress should match pack’s progress.");
-
- return notificationPack == pack && pack.state == MGLOfflinePackStateInactive;
- }];
- [pack requestProgress];
- [self waitForExpectationsWithTimeout:5 handler:nil];
-}
-
-- (void)testAddPackForGeometry {
- NSUInteger countOfPacks = [MGLOfflineStorage sharedOfflineStorage].packs.count;
-
- NSURL *styleURL = [MGLStyle lightStyleURLWithVersion:8];
- double zoomLevel = 20;
- NSString *geojson = @"{ \"type\": \"Polygon\", \"coordinates\": [ [ [ 5.1299285888671875, 52.10365839097971 ], [ 5.103063583374023, 52.110037078604236 ], [ 5.080232620239258, 52.09548601177304 ], [ 5.106925964355469, 52.07987524347506 ], [ 5.1299285888671875, 52.10365839097971 ] ] ]}";
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData: [geojson dataUsingEncoding:NSUTF8StringEncoding] encoding: NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- MGLShapeOfflineRegion *region = [[MGLShapeOfflineRegion alloc] initWithStyleURL:styleURL shape:shape fromZoomLevel:zoomLevel toZoomLevel:zoomLevel];
- region.includesIdeographicGlyphs = NO;
-
- NSString *nameKey = @"Name";
- NSString *name = @"Utrecht centrum";
-
- NSData *context = [NSKeyedArchiver archivedDataWithRootObject:@{nameKey: name}];
-
- __block MGLOfflinePack *pack;
- [self keyValueObservingExpectationForObject:[MGLOfflineStorage sharedOfflineStorage] keyPath:@"packs" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- NSIndexSet *indices = change[NSKeyValueChangeIndexesKey];
- return changeKind == NSKeyValueChangeInsertion && indices.count == 1;
- }];
- XCTestExpectation *additionCompletionHandlerExpectation = [self expectationWithDescription:@"add pack completion handler"];
- [[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:region withContext:context completionHandler:^(MGLOfflinePack * _Nullable completionHandlerPack, NSError * _Nullable error) {
- XCTAssertNotNil(completionHandlerPack, @"Added pack should exist.");
- XCTAssertEqual(completionHandlerPack.state, MGLOfflinePackStateInactive, @"New pack should initially have inactive state.");
- pack = completionHandlerPack;
- [additionCompletionHandlerExpectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:5 handler:nil];
-
- XCTAssertEqual([MGLOfflineStorage sharedOfflineStorage].packs.count, countOfPacks + 1, @"Added pack should have been added to the canonical collection of packs owned by the shared offline storage object. This assertion can fail if this test is run before -testAAALoadPacks.");
-
- XCTAssertEqual(pack, [MGLOfflineStorage sharedOfflineStorage].packs.lastObject, @"Pack should be appended to end of packs array.");
-
- XCTAssertEqualObjects(pack.region, region, @"Added pack’s region has changed.");
-
- NSDictionary *userInfo = [NSKeyedUnarchiver unarchiveObjectWithData:pack.context];
- XCTAssert([userInfo isKindOfClass:[NSDictionary class]], @"Context of offline pack isn’t a dictionary.");
- XCTAssert([userInfo[nameKey] isKindOfClass:[NSString class]], @"Name of offline pack isn’t a string.");
- XCTAssertEqualObjects(userInfo[nameKey], name, @"Name of offline pack has changed.");
-
- XCTAssertEqual(pack.state, MGLOfflinePackStateInactive, @"New pack should initially have inactive state.");
-
- [self keyValueObservingExpectationForObject:pack keyPath:@"state" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- const auto state = static_cast<MGLOfflinePackState>([change[NSKeyValueChangeNewKey] longValue]);
- return changeKind == NSKeyValueChangeSetting && state == MGLOfflinePackStateInactive;
- }];
- [self expectationForNotification:MGLOfflinePackProgressChangedNotification object:pack handler:^BOOL(NSNotification * _Nonnull notification) {
- MGLOfflinePack *notificationPack = notification.object;
- XCTAssert([notificationPack isKindOfClass:[MGLOfflinePack class]], @"Object of notification should be an MGLOfflinePack.");
-
- NSDictionary *userInfo = notification.userInfo;
- XCTAssertNotNil(userInfo, @"Progress change notification should have a userInfo dictionary.");
-
- NSNumber *stateNumber = userInfo[MGLOfflinePackUserInfoKeyState];
- XCTAssert([stateNumber isKindOfClass:[NSNumber class]], @"Progress change notification’s state should be an NSNumber.");
- XCTAssertEqual(stateNumber.integerValue, pack.state, @"State in a progress change notification should match the pack’s state.");
-
- NSValue *progressValue = userInfo[MGLOfflinePackUserInfoKeyProgress];
- XCTAssert([progressValue isKindOfClass:[NSValue class]], @"Progress change notification’s progress should be an NSValue.");
- XCTAssertEqualObjects(progressValue, [NSValue valueWithMGLOfflinePackProgress:pack.progress], @"Progress change notification’s progress should match pack’s progress.");
-
- return notificationPack == pack && pack.state == MGLOfflinePackStateInactive;
- }];
- [pack requestProgress];
- [self waitForExpectationsWithTimeout:5 handler:nil];
- pack = nil;
-}
-
-- (void)testInvalidatePack {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Expect offline pack to be invalidated without an error."];
- MGLCoordinateBounds bounds = {
- { .latitude = 48.8660, .longitude = 2.3306 },
- { .latitude = 48.8603, .longitude = 2.3213 },
- };
-
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- MGLTilePyramidOfflineRegion *region = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:styleURL bounds:bounds fromZoomLevel:10 toZoomLevel:11];
-
- NSString *nameKey = @"Name";
- NSString *name = @"Paris square";
-
- NSData *context = [NSKeyedArchiver archivedDataWithRootObject:@{nameKey: name}];
- [[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:region withContext:context completionHandler:^(MGLOfflinePack * _Nullable pack, NSError * _Nullable error) {
- XCTAssertNotNil(pack);
- [[MGLOfflineStorage sharedOfflineStorage] invalidatePack:pack withCompletionHandler:^(NSError * _Nullable) {
- XCTAssertNotNil(pack);
- XCTAssertNil(error);
- [expectation fulfill];
- }];
- }];
- [self waitForExpectationsWithTimeout:10 handler:nil];
-}
-
-- (void)testSetMaximumAmbientCache {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Expect maximum cache size to be raised without an error."];
- [[MGLOfflineStorage sharedOfflineStorage] setMaximumAmbientCacheSize:0 withCompletionHandler:^(NSError * _Nullable error) {
- XCTAssertNil(error);
- [expectation fulfill];
- }];
-
- [self waitForExpectationsWithTimeout:10 handler:nil];
-}
-
-- (void)testInvalidateAmbientCache {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Expect cache to be invalidated without an error."];
- [[MGLOfflineStorage sharedOfflineStorage] invalidateAmbientCacheWithCompletionHandler:^(NSError * _Nullable error) {
- XCTAssertNil(error);
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:10 handler:nil];
-}
-
-- (void)testClearCache {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Expect cache to be cleared without an error."];
- [[MGLOfflineStorage sharedOfflineStorage] clearAmbientCacheWithCompletionHandler:^(NSError * _Nullable error) {
- XCTAssertNil(error);
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:10 handler:nil];
-}
-
-- (void)testResetDatabase {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Expect database to be reset without an error."];
- [[MGLOfflineStorage sharedOfflineStorage] resetDatabaseWithCompletionHandler:^(NSError * _Nullable error) {
- XCTAssertNil(error);
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:10 handler:nil];
-}
-
-- (void)testBackupExclusion {
- NSURL *cacheDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory
- inDomain:NSUserDomainMask
- appropriateForURL:nil
- create:NO
- error:nil];
- // As of iOS SDK 12.2 unit tests now have a bundle id: com.apple.dt.xctest.tool
- NSString *bundleIdentifier = [NSBundle mgl_applicationBundleIdentifier];
- cacheDirectoryURL = [cacheDirectoryURL URLByAppendingPathComponent:bundleIdentifier];
- cacheDirectoryURL = [cacheDirectoryURL URLByAppendingPathComponent:@".mapbox"];
- XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:cacheDirectoryURL.path], @"Cache subdirectory should exist.");
-
- NSURL *cacheURL = [cacheDirectoryURL URLByAppendingPathComponent:@"cache.db"];
- XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:cacheURL.path], @"Cache database should exist.");
-
- NSError *error = nil;
- NSNumber *exclusionFlag = nil;
- [cacheDirectoryURL getResourceValue:&exclusionFlag
- forKey:NSURLIsExcludedFromBackupKey
- error:&error];
- XCTAssertTrue(exclusionFlag && [exclusionFlag boolValue], @"Backup exclusion flag should be set for the directory containing the cache database.");
- XCTAssertNil(error, @"No errors should be returned when checking backup exclusion flag.");
-}
-
-- (void)testRemovePack {
- NSUInteger countOfPacks = [MGLOfflineStorage sharedOfflineStorage].packs.count;
-
- MGLOfflinePack *pack = [MGLOfflineStorage sharedOfflineStorage].packs.lastObject;
- XCTAssertNotNil(pack, @"Added pack should still exist.");
-
- [self keyValueObservingExpectationForObject:[MGLOfflineStorage sharedOfflineStorage] keyPath:@"packs" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- NSIndexSet *indices = change[NSKeyValueChangeIndexesKey];
- return changeKind == NSKeyValueChangeRemoval && indices.count == 1;
- }];
- XCTestExpectation *completionHandlerExpectation = [self expectationWithDescription:@"remove pack completion handler"];
- [[MGLOfflineStorage sharedOfflineStorage] removePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- XCTAssertEqual(pack.state, MGLOfflinePackStateInvalid, @"Removed pack should be invalid in the completion handler.");
- [completionHandlerExpectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:5 handler:nil];
-
- XCTAssertEqual(pack.state, MGLOfflinePackStateInvalid, @"Removed pack should have been invalidated synchronously.");
-
- XCTAssertEqual([MGLOfflineStorage sharedOfflineStorage].packs.count, countOfPacks - 1, @"Removed pack should have been removed from the canonical collection of packs owned by the shared offline storage object. This assertion can fail if this test is run before -testAAALoadPacks or -testAddPack.");
-}
-
-- (void)addPacks:(NSInteger)count {
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"added packs"];
-
- NSURL *styleURL = [MGLStyle lightStyleURLWithVersion:8];
-
- MGLCoordinateBounds bounds[] = {
- {{51.5, -0.2}, {51.6, -0.1}}, // London
- {{60.1, 24.8}, {60.3, 25.1}}, // Helsinki
- {{38.9, -77.1}, {38.9, -77.0}}, // DC
- {{37.7, -122.5}, {37.9, -122.4}} // SF
- };
-
- int arraySize = sizeof(bounds)/sizeof(bounds[0]);
-
- count = MIN(count, arraySize);
-
- dispatch_group_t group = dispatch_group_create();
-
- for (int i = 0; i < count; i++) {
-
- dispatch_group_enter(group);
- MGLTilePyramidOfflineRegion *region = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:styleURL bounds:bounds[i] fromZoomLevel:20 toZoomLevel:20];
- NSData *context = [NSKeyedArchiver archivedDataWithRootObject:@{
- @"index": @(i)
- }];
-
- [[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:region
- withContext:context
- completionHandler:^(MGLOfflinePack * _Nullable pack, NSError * _Nullable error) {
- XCTAssertNotNil(pack);
- XCTAssertNil(error);
-
- dispatch_group_leave(group);
- }];
- }
-
- dispatch_group_notify(group, dispatch_get_main_queue(), ^{
- [expectation fulfill];
- });
-
- [self waitForExpectations:@[expectation] timeout:1.0];
-}
-
-- (void)testRemovePackTwiceInSuccession {
-
- [self addPacks:1];
-
- NSUInteger countOfPacks = [MGLOfflineStorage sharedOfflineStorage].packs.count;
-
- MGLOfflinePack *pack = [MGLOfflineStorage sharedOfflineStorage].packs.lastObject;
- XCTAssertNotNil(pack, @"Added pack should still exist.");
-
- [self keyValueObservingExpectationForObject:[MGLOfflineStorage sharedOfflineStorage] keyPath:@"packs" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- NSIndexSet *indices = change[NSKeyValueChangeIndexesKey];
- return changeKind == NSKeyValueChangeRemoval && indices.count == 1;
- }];
-
- XCTestExpectation *completionHandlerExpectation = [self expectationWithDescription:@"remove pack completion handler"];
-
- [[MGLOfflineStorage sharedOfflineStorage] removePack:pack withCompletionHandler:nil];
-
- NSAssertionHandler *oldHandler = [NSAssertionHandler currentHandler];
- MGLTestAssertionHandler *newHandler = [[MGLTestAssertionHandler alloc] initWithTestCase:self];
-
- [[[NSThread currentThread] threadDictionary] setValue:newHandler forKey:NSAssertionHandlerKey];
-
- [[MGLOfflineStorage sharedOfflineStorage] removePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- XCTAssertEqual(pack.state, MGLOfflinePackStateInvalid, @"Removed pack should be invalid in the completion handler.");
- [completionHandlerExpectation fulfill];
- }];
-
- [self waitForExpectationsWithTimeout:5 handler:nil];
-
- [[[NSThread currentThread] threadDictionary] setValue:oldHandler forKey:NSAssertionHandlerKey];
-
- XCTAssertEqual(pack.state, MGLOfflinePackStateInvalid, @"Removed pack should have been invalidated synchronously.");
-
- XCTAssertEqual([MGLOfflineStorage sharedOfflineStorage].packs.count, countOfPacks - 1, @"Removed pack should have been removed from the canonical collection of packs owned by the shared offline storage object. This assertion can fail if this test is run before -testAAALoadPacks or -testAddPack.");
-
- NSLog(@"Test `%@` complete", NSStringFromSelector(_cmd));
-}
-
-- (void)test15536RemovePacksWhileReloading {
-
- // This test triggers
- //
- // throw std::runtime_error("Malformed offline region definition");
- //
- // in offline.cpp
- //
- // Reloading packs, while trying to remove them is currently problematic.
-
- [self addPacks:4];
-
- NSInteger countOfPacks = [MGLOfflineStorage sharedOfflineStorage].packs.count;
- XCTAssert(countOfPacks > 0);
-
- // Now delete packs one by one
- XCTestExpectation *expectation = [self expectationWithDescription:@"All packs removed"];
- expectation.expectedFulfillmentCount = countOfPacks;
-
- MGLOfflineStorage *storage = [MGLOfflineStorage sharedOfflineStorage];
- NSArray *packs = [storage.packs copy];
-
- // Simulate what happens the first time sharedOfflineStorage is accessed
- [storage reloadPacks];
-
- NSArray *validPacks = [packs filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
- MGLOfflinePack *pack = (MGLOfflinePack*)evaluatedObject;
- return pack.state != MGLOfflinePackStateInvalid;
- }]];
-
- NSAssertionHandler *oldHandler = [NSAssertionHandler currentHandler];
- MGLTestAssertionHandler *newHandler = [[MGLTestAssertionHandler alloc] initWithTestCase:self];
-
- [[[NSThread currentThread] threadDictionary] setValue:newHandler forKey:NSAssertionHandlerKey];
-
- for (MGLOfflinePack *pack in validPacks) {
- [storage removePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- [expectation fulfill];
- }];
- }
-
- [[[NSThread currentThread] threadDictionary] setValue:oldHandler forKey:NSAssertionHandlerKey];
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-
- // TODO: What should we expect here? All packs removed?
-
- NSLog(@"Test `%@` complete", NSStringFromSelector(_cmd));
-}
-
-// Test to explore https://github.com/mapbox/mapbox-gl-native/issues/15536
-- (void)test15536RemovePacksOnBackgroundQueueWhileReloading {
-
- [self addPacks:4];
-
- NSInteger countOfPacks = [MGLOfflineStorage sharedOfflineStorage].packs.count;
- XCTAssert(countOfPacks > 0);
-
- // Now delete packs one by one
- dispatch_queue_t queue = dispatch_queue_create("com.mapbox.testRemovePacks", DISPATCH_QUEUE_SERIAL);
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"all packs removed"];
- expectation.expectedFulfillmentCount = countOfPacks;
-
- MGLOfflineStorage *storage = [MGLOfflineStorage sharedOfflineStorage];
-
- // Simulate what happens the first time sharedOfflineStorage is accessed
- [storage reloadPacks];
-
-// NSArray *packs = [storage.packs copy];
-
- dispatch_async(queue, ^{
- NSArray *packs = storage.packs;
- NSAssertionHandler *oldHandler = [NSAssertionHandler currentHandler];
- MGLTestAssertionHandler *newHandler = [[MGLTestAssertionHandler alloc] initWithTestCase:self];
-
- [[[NSThread currentThread] threadDictionary] setValue:newHandler forKey:NSAssertionHandlerKey];
-
- NSArray *validPacks = [packs filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
- MGLOfflinePack *pack = (MGLOfflinePack*)evaluatedObject;
- return pack.state != MGLOfflinePackStateInvalid;
- }]];
-
- for (MGLOfflinePack *pack in validPacks) {
- // NOTE: pack can be invalid, as we have two threads potentially
- // modifying the same MGLOfflinePack.
-
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_enter(group);
- [storage removePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- dispatch_group_leave(group);
- }];
- dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
-
- [expectation fulfill];
- }
-
- [[[NSThread currentThread] threadDictionary] setValue:oldHandler forKey:NSAssertionHandlerKey];
- });
-
- [self waitForExpectations:@[expectation] timeout:60.0];
-
- // TODO: What should we expect here? All packs removed?
-
- NSLog(@"Test `%@` complete", NSStringFromSelector(_cmd));
-}
-
-- (void)testCountOfBytesCompleted {
- XCTAssertGreaterThan([MGLOfflineStorage sharedOfflineStorage].countOfBytesCompleted, 0UL);
-}
-
-- (NSURL *)offlineStorage:(MGLOfflineStorage *)storage
- URLForResourceOfKind:(MGLResourceKind)kind
- withURL:(NSURL *)url {
- if ([url.scheme isEqual: @"test"] && [url.host isEqual: @"api"]) {
- return [NSURL URLWithString:@"https://api.mapbox.com"];
- } else {
- return url;
- }
-}
-
-- (void)testResourceTransform {
- MGLOfflineStorage *os = [MGLOfflineStorage sharedOfflineStorage];
- [os setDelegate:self];
-
- auto fs = os.mbglFileSource;
-
- // Delegate returns "https://api.mapbox.com" as a replacement URL.
- const mbgl::Resource resource { mbgl::Resource::Unknown, "test://api" };
- std::unique_ptr<mbgl::AsyncRequest> req;
- req = fs->request(resource, [&](mbgl::Response res) {
- req.reset();
- XCTAssertFalse(res.error.get(), @"Request should not return an error");
- XCTAssertTrue(res.data.get(), @"Request should return data");
- XCTAssertEqual("{\"api\":\"mapbox\"}", *res.data, @"Request did not return expected data");
- CFRunLoopStop(CFRunLoopGetCurrent());
- });
-
- CFRunLoopRun();
-
- [os setDelegate:nil];
-}
-
-- (void)testAddFileContent {
- NSFileManager *fileManager = [NSFileManager defaultManager];
-
- // Valid database
- [XCTContext runActivityNamed:@"Valid database" block:^(id<XCTActivity> activity) {
- NSURL *resourceURL = [NSURL fileURLWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"sideload_sat" ofType:@"db"]];
-
- NSError *error;
- NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:resourceURL.path error:&error];
- XCTAssertNil(error, @"Getting the file's attributes should not return an error. (%@)", resourceURL.path);
-
- NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
- long long fileSize = [fileSizeNumber longLongValue];
- long long databaseFileSize = 73728;
- // Merging databases creates an empty file if the file does not exist at the given path.
- XCTAssertEqual(fileSize, databaseFileSize, @"The database file size must be:%lld actual size:%lld", databaseFileSize, fileSize);
-
- NSUInteger countOfPacks = [MGLOfflineStorage sharedOfflineStorage].packs.count;
-
- [self keyValueObservingExpectationForObject:[MGLOfflineStorage sharedOfflineStorage] keyPath:@"packs" handler:^BOOL(id _Nonnull observedObject, NSDictionary * _Nonnull change) {
- const auto changeKind = static_cast<NSKeyValueChange>([change[NSKeyValueChangeKindKey] unsignedLongValue]);
- NSIndexSet *indices = change[NSKeyValueChangeIndexesKey];
- return changeKind == NSKeyValueChangeInsertion && indices.count == 1;
- }];
-
- XCTestExpectation *fileAdditionCompletionHandlerExpectation = [self expectationWithDescription:@"add database content completion handler"];
- MGLOfflineStorage *os = [MGLOfflineStorage sharedOfflineStorage];
- [os addContentsOfURL:resourceURL withCompletionHandler:^(NSURL *fileURL, NSArray<MGLOfflinePack *> * _Nullable packs, NSError * _Nullable error) {
- XCTAssertNotNil(fileURL, @"The fileURL should not be nil.");
- XCTAssertNotNil(packs, @"Adding the contents of the sideload_sat.db should update one pack.");
- XCTAssertNil(error, @"Adding contents to a file should not return an error.");
- for (MGLOfflinePack *pack in [MGLOfflineStorage sharedOfflineStorage].packs) {
- NSLog(@"PACK:%@", pack);
- }
- [fileAdditionCompletionHandlerExpectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:10 handler:nil];
- // Depending on the database it may update or add a pack. For this case specifically the offline database adds one pack.
- XCTAssertEqual([MGLOfflineStorage sharedOfflineStorage].packs.count, countOfPacks + 1, @"Adding contents of sideload_sat.db should add one pack.");
- }];
-
- // Invalid database type
- [XCTContext runActivityNamed:@"Invalid database type" block:^(id<XCTActivity> activity) {
- NSURL *resourceURL = [NSURL fileURLWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"one-liner" ofType:@"json"]];
-
- XCTestExpectation *invalidFileCompletionHandlerExpectation = [self expectationWithDescription:@"invalid content database completion handler"];
- MGLOfflineStorage *os = [MGLOfflineStorage sharedOfflineStorage];
- [os addContentsOfFile:resourceURL.path withCompletionHandler:^(NSURL *fileURL, NSArray<MGLOfflinePack *> * _Nullable packs, NSError * _Nullable error) {
- XCTAssertNotNil(error, @"Passing an invalid offline database file should return an error.");
- XCTAssertNil(packs, @"Passing an invalid offline database file should not add packs to the offline database.");
- [invalidFileCompletionHandlerExpectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:10 handler:nil];
- }];
-
- // File does not exist
- [XCTContext runActivityNamed:@"File does not exist" block:^(id<XCTActivity> activity) {
- NSURL *resourceURL = [NSURL URLWithString:@"nonexistent.db"];
-
- MGLOfflineStorage *os = [MGLOfflineStorage sharedOfflineStorage];
- XCTAssertThrowsSpecificNamed([os addContentsOfURL:resourceURL withCompletionHandler:nil], NSException, NSInvalidArgumentException, "MGLOfflineStorage should rise an exception if an invalid database file is passed.");
- }];
-
- // URL to a non-file
- [XCTContext runActivityNamed:@"URL to a non-file" block:^(id<XCTActivity> activity) {
- NSURL *resourceURL = [NSURL URLWithString:@"https://www.mapbox.com"];
-
- MGLOfflineStorage *os = [MGLOfflineStorage sharedOfflineStorage];
- XCTAssertThrowsSpecificNamed([os addContentsOfURL:resourceURL withCompletionHandler:nil], NSException, NSInvalidArgumentException, "MGLOfflineStorage should rise an exception if an invalid URL file is passed.");
- }];
-}
-
-- (void)testPutResourceForURL {
- NSURL *styleURL = [NSURL URLWithString:@"https://api.mapbox.com/some/thing"];
-
- MGLOfflineStorage *os = [MGLOfflineStorage sharedOfflineStorage];
- std::string testData("test data");
- NSData *data = [NSData dataWithBytes:testData.c_str() length:testData.length()];
- [os preloadData:data forURL:styleURL modificationDate:nil expirationDate:nil eTag:nil mustRevalidate:NO];
-
- auto fs = os.mbglFileSource;
- const mbgl::Resource resource { mbgl::Resource::Unknown, "https://api.mapbox.com/some/thing" };
- std::unique_ptr<mbgl::AsyncRequest> req;
- req = fs->request(resource, [&](mbgl::Response res) {
- req.reset();
- XCTAssertFalse(res.error.get(), @"Request should not return an error");
- XCTAssertTrue(res.data.get(), @"Request should return data");
- XCTAssertFalse(res.modified, @"Request should not have a modification timestamp");
- XCTAssertFalse(res.expires, @"Request should not have an expiration timestamp");
- XCTAssertFalse(res.etag, @"Request should not have an entity tag");
- XCTAssertFalse(res.mustRevalidate, @"Request should not require revalidation");
- XCTAssertEqual("test data", *res.data, @"Request did not return expected data");
- CFRunLoopStop(CFRunLoopGetCurrent());
- });
-
- CFRunLoopRun();
-}
-
-- (void)testPutResourceForURLWithTimestamps {
- NSURL *styleURL = [NSURL URLWithString:@"https://api.mapbox.com/some/thing"];
-
- MGLOfflineStorage *os = [MGLOfflineStorage sharedOfflineStorage];
- std::string testData("test data");
- NSDate *now = [NSDate date];
- NSDate *future = [now dateByAddingTimeInterval:600];
- NSData *data = [NSData dataWithBytes:testData.c_str() length:testData.length()];
- [os preloadData:data forURL:styleURL modificationDate:now expirationDate:future eTag:@"some etag" mustRevalidate:YES];
-
- auto fs = os.mbglFileSource;
- const mbgl::Resource resource { mbgl::Resource::Unknown, "https://api.mapbox.com/some/thing" };
- std::unique_ptr<mbgl::AsyncRequest> req;
- req = fs->request(resource, [&](mbgl::Response res) {
- req.reset();
- XCTAssertFalse(res.error.get(), @"Request should not return an error");
- XCTAssertTrue(res.data.get(), @"Request should return data");
- XCTAssertTrue(res.modified, @"Request should have a modification timestamp");
- XCTAssertEqual(MGLTimeIntervalFromDuration(res.modified->time_since_epoch()), floor(now.timeIntervalSince1970), @"Modification timestamp should roundtrip");
- XCTAssertTrue(res.expires, @"Request should have an expiration timestamp");
- XCTAssertEqual(MGLTimeIntervalFromDuration(res.expires->time_since_epoch()), floor(future.timeIntervalSince1970), @"Expiration timestamp should roundtrip");
- XCTAssertTrue(res.etag, @"Request should have an entity tag");
- XCTAssertEqual(*res.etag, "some etag", @"Entity tag should roundtrip");
- XCTAssertTrue(res.mustRevalidate, @"Request should require revalidation");
- XCTAssertEqual("test data", *res.data, @"Request did not return expected data");
- CFRunLoopStop(CFRunLoopGetCurrent());
- });
-
- CFRunLoopRun();
-}
-
-@end
diff --git a/platform/darwin/test/MGLPredicateTests.mm b/platform/darwin/test/MGLPredicateTests.mm
deleted file mode 100644
index 2ed18d48fc..0000000000
--- a/platform/darwin/test/MGLPredicateTests.mm
+++ /dev/null
@@ -1,426 +0,0 @@
-#import <XCTest/XCTest.h>
-#import <Mapbox/Mapbox.h>
-
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "MGLValueEvaluator.h"
-
-@interface MGLPredicateTests : XCTestCase
-@end
-
-@implementation MGLPredicateTests
-
-- (void)testUnsupportedFilterPredicates {
- XCTAssertThrowsSpecificNamed([NSPredicate predicateWithFormat:@"a BEGINSWITH 'L'"].mgl_filter, NSException, NSInvalidArgumentException);
- XCTAssertThrowsSpecificNamed([NSPredicate predicateWithFormat:@"a ENDSWITH 'itude'"].mgl_filter, NSException, NSInvalidArgumentException);
- XCTAssertThrowsSpecificNamed([NSPredicate predicateWithFormat:@"a LIKE 'glob?trotter'"].mgl_filter, NSException, NSInvalidArgumentException);
- XCTAssertThrowsSpecificNamed([NSPredicate predicateWithFormat:@"a MATCHES 'i\\w{18}n'"].mgl_filter, NSException, NSInvalidArgumentException);
- NSPredicate *selectorPredicate = [NSPredicate predicateWithFormat:@"(SELF isKindOfClass: %@)", [MGLPolyline class]];
- XCTAssertThrowsSpecificNamed(selectorPredicate.mgl_filter, NSException, NSInvalidArgumentException);
-
- XCTAssertThrowsSpecificNamed([NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *, id> * _Nullable bindings) {
- XCTAssertTrue(NO, @"Predicate block should not be evaluated.");
- return NO;
- }].mgl_filter, NSException, NSInvalidArgumentException);
-}
-
-- (void)testComparisonPredicates {
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"x == YES"];
- NSArray *jsonExpression = @[@"==", @[@"get", @"x"], @YES];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') < 5"];
- NSArray *jsonExpression = @[@"<", @[@"to-number", @[@"get", @"x"]], @5];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') > 5"];
- NSArray *jsonExpression = @[@">", @[@"to-number", @[@"get", @"x"]], @5];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') <= 5"];
- NSArray *jsonExpression = @[@"<=", @[@"to-number", @[@"get", @"x"]], @5];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') >= 5"];
- NSArray *jsonExpression = @[@">=", @[@"to-number", @[@"get", @"x"]], @5];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSString') > 'value'"];
- NSArray *jsonExpression = @[@">", @[@"to-string", @[@"get", @"x"]], @"value"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a = 'b'"];
- NSArray *jsonExpression = @[@"==", @[@"get", @"a"], @"b"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"$geometryType = 'Point'"];
- NSArray *jsonExpression = @[@"==", @[@"geometry-type"], @"Point"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 67086180"];
- NSArray *jsonExpression = @[@"==", @[@"id"], @67086180];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = nil"];
- NSArray *jsonExpression = @[@"==", @[@"id"], [NSNull null]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a = nil"];
- NSArray *jsonExpression = @[@"==", @[@"get", @"a"], [NSNull null]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"$geometryType != 'Point'"];
- NSArray *jsonExpression = @[@"!=", @[@"geometry-type"], @"Point"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier != 67086180"];
- NSArray *jsonExpression = @[@"!=", @[@"id"], @67086180];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier != nil"];
- NSArray *jsonExpression = @[@"!=", @[@"id"], [NSNull null]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a != 'b'"];
- NSArray *jsonExpression = @[@"!=", @[@"get", @"a"], @"b"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a != nil"];
- NSArray *jsonExpression = @[@"!=", @[@"get", @"a"], [NSNull null]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') < 'b'"];
- NSArray *jsonExpression = @[@"<", @[@"to-string", @[@"get", @"a"]], @"b"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') <= 'b'"];
- NSArray *jsonExpression = @[@"<=", @[@"to-string", @[@"get", @"a"]], @"b"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') > 'b'"];
- NSArray *jsonExpression = @[@">", @[@"to-string", @[@"get", @"a"]], @"b"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') >= 'b'"];
- NSArray *jsonExpression = @[@">=", @[@"to-string", @[@"get", @"a"]], @"b"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') BETWEEN {'b', 'z'}"];
- NSArray *jsonExpression =@[@"all", @[@"<=", @"b", @[@"to-string", @[@"get", @"a"]]], @[@"<=", @[@"to-string", @[@"get", @"a"]], @"z"]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSExpression *limits = [NSExpression expressionForAggregate:@[[NSExpression expressionForConstantValue:@10], [NSExpression expressionForConstantValue:@100]]];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') BETWEEN %@", limits];
- NSArray *jsonExpression = @[@"all", @[@">=", @[@"to-number", @[@"get", @"x"]], @10], @[@"<=", @[@"to-number", @[@"get", @"x"]], @100]];
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSArray *expected = @[@"all", @[@"<=", @10, @[@"to-number", @[@"get", @"x"]]], @[@"<=", @[@"to-number", @[@"get", @"x"]], @100]];
- NSExpression *limits = [NSExpression expressionForAggregate:@[[NSExpression expressionForConstantValue:@10], [NSExpression expressionForConstantValue:@100]]];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') BETWEEN %@", limits];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:expected], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:expected]
- mustRoundTrip:NO];
- }
- {
- NSArray *expected = @[@"all", @[@"<=", @10, @[@"to-number", @[@"get", @"x"]]], @[@">=", @100, @[@"to-number", @[@"get", @"x"]]]];
- NSExpression *limits = [NSExpression expressionForAggregate:@[[NSExpression expressionForConstantValue:@10], [NSExpression expressionForConstantValue:@100]]];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') BETWEEN %@", limits];
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:expected], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:expected]
- mustRoundTrip:NO];
- }
- {
- NSArray *expected = @[@"all", @[@">=", @[@"to-number", @[@"get", @"x"]], @10], @[@">=", @100, @[@"to-number", @[@"get", @"x"]]]];
- NSExpression *limits = [NSExpression expressionForAggregate:@[[NSExpression expressionForConstantValue:@10], [NSExpression expressionForConstantValue:@100]]];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(x, 'NSNumber') BETWEEN %@", limits];
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:expected], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:expected]
- mustRoundTrip:NO];
- }
- {
- NSArray *expected = @[@"match", @[@"id"], @[@6, @5, @4, @3], @YES, @NO];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier IN { 6, 5, 4, 3}"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"MGL_MATCH($featureIdentifier, { 3, 4, 5, 6 }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
- {
- NSArray *expected = @[@"match", @[@"to-number", @[@"id"]], @[@3002970001, @3004140052, @3002950027, @3002970033], @YES, @NO];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST($featureIdentifier, 'NSNumber') IN { 3002970001, 3004140052, 3002950027, 3002970033 }"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"MGL_MATCH(CAST($featureIdentifier, 'NSNumber'), { 3002950027, 3002970001, 3002970033, 3004140052 }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
- {
- NSArray *expected = @[@"!", @[@"match", @[@"get", @"x"], @[@6, @5, @4, @3], @YES, @NO]];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT x IN { 6, 5, 4, 3}"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"NOT MGL_MATCH(x, { 3, 4, 5, 6 }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
- {
- NSArray *expected = @[@"match", @[@"get", @"a"], @[@"b", @"c"], @YES, @NO];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a IN { 'b', 'c' }"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"MGL_MATCH(a, { 'b', 'c' }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
- {
- NSArray *expected = @[@"match", @[@"geometry-type"], @[@"LineString", @"Polygon"], @YES, @NO];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ IN %@", [NSExpression expressionForVariable:@"geometryType"], @[@"LineString", @"Polygon"]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"MGL_MATCH($geometryType, { 'LineString', 'Polygon' }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
- {
- NSArray *expected = @[@"match", @[@"get", @"x"], @[@6, @5, @4, @3], @YES, @NO];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"{ 6, 5, 4, 3 } CONTAINS x"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"MGL_MATCH(x, { 3, 4, 5, 6 }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
- {
- NSArray *expected = @[@"match", @[@"geometry-type"], @[@"LineString", @"Polygon"], @YES, @NO];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ CONTAINS %@", @[@"LineString", @"Polygon"], [NSExpression expressionForVariable:@"geometryType"]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"MGL_MATCH($geometryType, { 'LineString', 'Polygon' }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
- {
- NSArray *expected = @[@"match", @[@"id"], @[@6, @5, @4, @3], @YES, @NO];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"{ 6, 5, 4, 3} CONTAINS $featureIdentifier"];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, expected);
- NSPredicate *predicateAfter = [NSPredicate predicateWithFormat:@"MGL_MATCH($featureIdentifier, { 3, 4, 5, 6 }, YES, NO) == YES"];
- auto forwardFilter = [NSPredicate predicateWithMGLJSONObject:expected].mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- XCTAssertEqualObjects(predicateAfter, forwardPredicateAfter);
- }
-}
-
-- (void)testComparisonPredicatesWithOptions {
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a =[c] 'b'"];
- NSArray *jsonExpression = @[@"==", @[@"get", @"a"], @"b", @[@"collator", @{@"case-sensitive": @NO, @"diacritic-sensitive": @YES}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a =[d] 'b'"];
- NSArray *jsonExpression = @[@"==", @[@"get", @"a"], @"b", @[@"collator", @{@"case-sensitive": @YES, @"diacritic-sensitive": @NO}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a =[cd] 'b'"];
- NSArray *jsonExpression = @[@"==", @[@"get", @"a"], @"b", @[@"collator", @{@"case-sensitive": @NO, @"diacritic-sensitive": @NO}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
-
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a !=[cd] 'b'"];
- NSArray *jsonExpression = @[@"!=", @[@"get", @"a"], @"b", @[@"collator", @{@"case-sensitive": @NO, @"diacritic-sensitive": @NO}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') <[cd] 'b'"];
- NSArray *jsonExpression = @[@"<", @[@"to-string", @[@"get", @"a"]], @"b", @[@"collator", @{@"case-sensitive": @NO, @"diacritic-sensitive": @NO}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') <=[cd] 'b'"];
- NSArray *jsonExpression = @[@"<=", @[@"to-string", @[@"get", @"a"]], @"b", @[@"collator", @{@"case-sensitive": @NO, @"diacritic-sensitive": @NO}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') >[cd] 'b'"];
- NSArray *jsonExpression = @[@">", @[@"to-string", @[@"get", @"a"]], @"b", @[@"collator", @{@"case-sensitive": @NO, @"diacritic-sensitive": @NO}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CAST(a, 'NSString') >=[cd] 'b'"];
- NSArray *jsonExpression = @[@">=", @[@"to-string", @[@"get", @"a"]], @"b", @[@"collator", @{@"case-sensitive": @NO, @"diacritic-sensitive": @NO}]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUE = MGL_FUNCTION('==', a, 'b', MGL_FUNCTION('collator', %@))", @{
- @"case-sensitive": @NO,
- @"diacritic-sensitive": @NO,
- @"locale": @"tlh",
- }];
- NSArray *jsonExpression = @[@"==", @[@"get", @"a"], @"b",
- @[@"collator",
- @{@"case-sensitive": @NO,
- @"diacritic-sensitive": @NO,
- @"locale": @"tlh"}]];
- XCTAssertEqualObjects([predicate.mgl_jsonExpressionObject lastObject], jsonExpression);
- }
-}
-
-- (void)testCompoundPredicates {
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a == 'b' AND c == 'd'"];
- NSArray *jsonExpression = @[@"all", @[@"==", @[@"get", @"a"], @"b"], @[@"==", @[@"get", @"c"], @"d"]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"a == 'b' OR c == 'd'"];
- NSArray *jsonExpression = @[@"any", @[@"==", @[@"get", @"a"], @"b"], @[@"==", @[@"get", @"c"], @"d"]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT(a == 'b' AND c == 'd')"];
- NSArray *jsonExpression = @[@"!", @[@"all", @[@"==", @[@"get", @"a"], @"b"], @[@"==", @[@"get", @"c"], @"d"]]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT(a == 'b' OR c == 'd')"];
- NSArray *jsonExpression = @[@"!", @[@"any", @[@"==", @[@"get", @"a"], @"b"], @[@"==", @[@"get", @"c"], @"d"]]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- XCTAssertEqualObjects([NSPredicate predicateWithMGLJSONObject:jsonExpression], predicate);
- [self testSymmetryWithPredicate:[NSPredicate predicateWithMGLJSONObject:jsonExpression]
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT a == nil"];
- NSArray *jsonExpression = @[@"!", @[@"==", @[@"get", @"a"], [NSNull null]]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
- {
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT a != nil"];
- NSArray *jsonExpression = @[@"!", @[@"!=", @[@"get", @"a"], [NSNull null]]];
- XCTAssertEqualObjects(predicate.mgl_jsonExpressionObject, jsonExpression);
- [self testSymmetryWithPredicate:predicate
- mustRoundTrip:NO];
- }
-}
-
-- (void)testSymmetryWithPredicate:(NSPredicate *)forwardPredicate mustRoundTrip:(BOOL)mustRoundTrip {
- auto forwardFilter = forwardPredicate.mgl_filter;
- NSPredicate *forwardPredicateAfter = [NSPredicate mgl_predicateWithFilter:forwardFilter];
- if (mustRoundTrip) {
- // A collection of ints may turn into an aggregate of longs, for
- // example, so compare formats instead of the predicates themselves.
- XCTAssertEqualObjects(forwardPredicate.predicateFormat, forwardPredicateAfter.predicateFormat);
- } else {
- XCTAssertEqualObjects(forwardPredicate, forwardPredicateAfter);
- }
-}
-
-@end
diff --git a/platform/darwin/test/MGLRasterStyleLayerTests.mm b/platform/darwin/test/MGLRasterStyleLayerTests.mm
deleted file mode 100644
index 5168d2e0d4..0000000000
--- a/platform/darwin/test/MGLRasterStyleLayerTests.mm
+++ /dev/null
@@ -1,430 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/raster_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLRasterLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLRasterLayerTests
-
-+ (NSString *)layerType {
- return @"raster";
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLRasterStyleLayer *layer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"raster");
- auto rawLayer = static_cast<mbgl::style::RasterLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // raster-brightness-max
- {
- XCTAssertTrue(rawLayer->getRasterBrightnessMax().isUndefined(),
- @"raster-brightness-max should be unset initially.");
- NSExpression *defaultExpression = layer.maximumRasterBrightness;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.maximumRasterBrightness = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getRasterBrightnessMax(), propertyValue,
- @"Setting maximumRasterBrightness to a constant value expression should update raster-brightness-max.");
- XCTAssertEqualObjects(layer.maximumRasterBrightness, constantExpression,
- @"maximumRasterBrightness should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.maximumRasterBrightness = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterBrightnessMax(), propertyValue,
- @"Setting maximumRasterBrightness to a camera expression should update raster-brightness-max.");
- XCTAssertEqualObjects(layer.maximumRasterBrightness, functionExpression,
- @"maximumRasterBrightness should round-trip camera expressions.");
-
-
- layer.maximumRasterBrightness = nil;
- XCTAssertTrue(rawLayer->getRasterBrightnessMax().isUndefined(),
- @"Unsetting maximumRasterBrightness should return raster-brightness-max to the default value.");
- XCTAssertEqualObjects(layer.maximumRasterBrightness, defaultExpression,
- @"maximumRasterBrightness should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.maximumRasterBrightness = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.maximumRasterBrightness = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // raster-brightness-min
- {
- XCTAssertTrue(rawLayer->getRasterBrightnessMin().isUndefined(),
- @"raster-brightness-min should be unset initially.");
- NSExpression *defaultExpression = layer.minimumRasterBrightness;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.minimumRasterBrightness = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getRasterBrightnessMin(), propertyValue,
- @"Setting minimumRasterBrightness to a constant value expression should update raster-brightness-min.");
- XCTAssertEqualObjects(layer.minimumRasterBrightness, constantExpression,
- @"minimumRasterBrightness should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.minimumRasterBrightness = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterBrightnessMin(), propertyValue,
- @"Setting minimumRasterBrightness to a camera expression should update raster-brightness-min.");
- XCTAssertEqualObjects(layer.minimumRasterBrightness, functionExpression,
- @"minimumRasterBrightness should round-trip camera expressions.");
-
-
- layer.minimumRasterBrightness = nil;
- XCTAssertTrue(rawLayer->getRasterBrightnessMin().isUndefined(),
- @"Unsetting minimumRasterBrightness should return raster-brightness-min to the default value.");
- XCTAssertEqualObjects(layer.minimumRasterBrightness, defaultExpression,
- @"minimumRasterBrightness should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.minimumRasterBrightness = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.minimumRasterBrightness = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // raster-contrast
- {
- XCTAssertTrue(rawLayer->getRasterContrast().isUndefined(),
- @"raster-contrast should be unset initially.");
- NSExpression *defaultExpression = layer.rasterContrast;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.rasterContrast = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getRasterContrast(), propertyValue,
- @"Setting rasterContrast to a constant value expression should update raster-contrast.");
- XCTAssertEqualObjects(layer.rasterContrast, constantExpression,
- @"rasterContrast should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.rasterContrast = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterContrast(), propertyValue,
- @"Setting rasterContrast to a camera expression should update raster-contrast.");
- XCTAssertEqualObjects(layer.rasterContrast, functionExpression,
- @"rasterContrast should round-trip camera expressions.");
-
-
- layer.rasterContrast = nil;
- XCTAssertTrue(rawLayer->getRasterContrast().isUndefined(),
- @"Unsetting rasterContrast should return raster-contrast to the default value.");
- XCTAssertEqualObjects(layer.rasterContrast, defaultExpression,
- @"rasterContrast should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.rasterContrast = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.rasterContrast = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.rasterContrastTransition = transitionTest;
- auto toptions = rawLayer->getRasterContrastTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition rasterContrastTransition = layer.rasterContrastTransition;
- XCTAssertEqual(rasterContrastTransition.delay, transitionTest.delay);
- XCTAssertEqual(rasterContrastTransition.duration, transitionTest.duration);
- }
-
- // raster-fade-duration
- {
- XCTAssertTrue(rawLayer->getRasterFadeDuration().isUndefined(),
- @"raster-fade-duration should be unset initially.");
- NSExpression *defaultExpression = layer.rasterFadeDuration;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.rasterFadeDuration = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getRasterFadeDuration(), propertyValue,
- @"Setting rasterFadeDuration to a constant value expression should update raster-fade-duration.");
- XCTAssertEqualObjects(layer.rasterFadeDuration, constantExpression,
- @"rasterFadeDuration should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.rasterFadeDuration = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterFadeDuration(), propertyValue,
- @"Setting rasterFadeDuration to a camera expression should update raster-fade-duration.");
- XCTAssertEqualObjects(layer.rasterFadeDuration, functionExpression,
- @"rasterFadeDuration should round-trip camera expressions.");
-
-
- layer.rasterFadeDuration = nil;
- XCTAssertTrue(rawLayer->getRasterFadeDuration().isUndefined(),
- @"Unsetting rasterFadeDuration should return raster-fade-duration to the default value.");
- XCTAssertEqualObjects(layer.rasterFadeDuration, defaultExpression,
- @"rasterFadeDuration should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.rasterFadeDuration = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.rasterFadeDuration = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // raster-hue-rotate
- {
- XCTAssertTrue(rawLayer->getRasterHueRotate().isUndefined(),
- @"raster-hue-rotate should be unset initially.");
- NSExpression *defaultExpression = layer.rasterHueRotation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.rasterHueRotation = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getRasterHueRotate(), propertyValue,
- @"Setting rasterHueRotation to a constant value expression should update raster-hue-rotate.");
- XCTAssertEqualObjects(layer.rasterHueRotation, constantExpression,
- @"rasterHueRotation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.rasterHueRotation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterHueRotate(), propertyValue,
- @"Setting rasterHueRotation to a camera expression should update raster-hue-rotate.");
- XCTAssertEqualObjects(layer.rasterHueRotation, functionExpression,
- @"rasterHueRotation should round-trip camera expressions.");
-
-
- layer.rasterHueRotation = nil;
- XCTAssertTrue(rawLayer->getRasterHueRotate().isUndefined(),
- @"Unsetting rasterHueRotation should return raster-hue-rotate to the default value.");
- XCTAssertEqualObjects(layer.rasterHueRotation, defaultExpression,
- @"rasterHueRotation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.rasterHueRotation = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.rasterHueRotation = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // raster-opacity
- {
- XCTAssertTrue(rawLayer->getRasterOpacity().isUndefined(),
- @"raster-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.rasterOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.rasterOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getRasterOpacity(), propertyValue,
- @"Setting rasterOpacity to a constant value expression should update raster-opacity.");
- XCTAssertEqualObjects(layer.rasterOpacity, constantExpression,
- @"rasterOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.rasterOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterOpacity(), propertyValue,
- @"Setting rasterOpacity to a camera expression should update raster-opacity.");
- XCTAssertEqualObjects(layer.rasterOpacity, functionExpression,
- @"rasterOpacity should round-trip camera expressions.");
-
-
- layer.rasterOpacity = nil;
- XCTAssertTrue(rawLayer->getRasterOpacity().isUndefined(),
- @"Unsetting rasterOpacity should return raster-opacity to the default value.");
- XCTAssertEqualObjects(layer.rasterOpacity, defaultExpression,
- @"rasterOpacity should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.rasterOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.rasterOpacity = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.rasterOpacityTransition = transitionTest;
- auto toptions = rawLayer->getRasterOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition rasterOpacityTransition = layer.rasterOpacityTransition;
- XCTAssertEqual(rasterOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(rasterOpacityTransition.duration, transitionTest.duration);
- }
-
- // raster-resampling
- {
- XCTAssertTrue(rawLayer->getRasterResampling().isUndefined(),
- @"raster-resampling should be unset initially.");
- NSExpression *defaultExpression = layer.rasterResamplingMode;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'nearest'"];
- layer.rasterResamplingMode = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::RasterResamplingType> propertyValue = { mbgl::style::RasterResamplingType::Nearest };
- XCTAssertEqual(rawLayer->getRasterResampling(), propertyValue,
- @"Setting rasterResamplingMode to a constant value expression should update raster-resampling.");
- XCTAssertEqualObjects(layer.rasterResamplingMode, constantExpression,
- @"rasterResamplingMode should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'nearest'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.rasterResamplingMode = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::RasterResamplingType>(
- step(zoom(), literal("nearest"), 18.0, literal("nearest"))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterResampling(), propertyValue,
- @"Setting rasterResamplingMode to a camera expression should update raster-resampling.");
- XCTAssertEqualObjects(layer.rasterResamplingMode, functionExpression,
- @"rasterResamplingMode should round-trip camera expressions.");
-
-
- layer.rasterResamplingMode = nil;
- XCTAssertTrue(rawLayer->getRasterResampling().isUndefined(),
- @"Unsetting rasterResamplingMode should return raster-resampling to the default value.");
- XCTAssertEqualObjects(layer.rasterResamplingMode, defaultExpression,
- @"rasterResamplingMode should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.rasterResamplingMode = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.rasterResamplingMode = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // raster-saturation
- {
- XCTAssertTrue(rawLayer->getRasterSaturation().isUndefined(),
- @"raster-saturation should be unset initially.");
- NSExpression *defaultExpression = layer.rasterSaturation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.rasterSaturation = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getRasterSaturation(), propertyValue,
- @"Setting rasterSaturation to a constant value expression should update raster-saturation.");
- XCTAssertEqualObjects(layer.rasterSaturation, constantExpression,
- @"rasterSaturation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.rasterSaturation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getRasterSaturation(), propertyValue,
- @"Setting rasterSaturation to a camera expression should update raster-saturation.");
- XCTAssertEqualObjects(layer.rasterSaturation, functionExpression,
- @"rasterSaturation should round-trip camera expressions.");
-
-
- layer.rasterSaturation = nil;
- XCTAssertTrue(rawLayer->getRasterSaturation().isUndefined(),
- @"Unsetting rasterSaturation should return raster-saturation to the default value.");
- XCTAssertEqualObjects(layer.rasterSaturation, defaultExpression,
- @"rasterSaturation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.rasterSaturation = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.rasterSaturation = functionExpression, NSException, NSInvalidArgumentException, @"MGLRasterLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- // Transition property test
- layer.rasterSaturationTransition = transitionTest;
- auto toptions = rawLayer->getRasterSaturationTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition rasterSaturationTransition = layer.rasterSaturationTransition;
- XCTAssertEqual(rasterSaturationTransition.delay, transitionTest.delay);
- XCTAssertEqual(rasterSaturationTransition.duration, transitionTest.duration);
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"maximum-raster-brightness" isBoolean:NO];
- [self testPropertyName:@"minimum-raster-brightness" isBoolean:NO];
- [self testPropertyName:@"raster-contrast" isBoolean:NO];
- [self testPropertyName:@"raster-fade-duration" isBoolean:NO];
- [self testPropertyName:@"raster-hue-rotation" isBoolean:NO];
- [self testPropertyName:@"raster-opacity" isBoolean:NO];
- [self testPropertyName:@"raster-resampling-mode" isBoolean:NO];
- [self testPropertyName:@"raster-saturation" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLRasterResamplingMode:MGLRasterResamplingModeLinear].MGLRasterResamplingModeValue, MGLRasterResamplingModeLinear);
- XCTAssertEqual([NSValue valueWithMGLRasterResamplingMode:MGLRasterResamplingModeNearest].MGLRasterResamplingModeValue, MGLRasterResamplingModeNearest);
-}
-
-@end
diff --git a/platform/darwin/test/MGLRendererConfigurationTests.mm b/platform/darwin/test/MGLRendererConfigurationTests.mm
deleted file mode 100644
index 6483aa3587..0000000000
--- a/platform/darwin/test/MGLRendererConfigurationTests.mm
+++ /dev/null
@@ -1,197 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import "MGLRendererConfiguration.h"
-
-static NSString * const MGLRendererConfigurationTests_collisionBehaviorKey = @"MGLCollisionBehaviorPre4_0";
-
-@interface MGLRendererConfiguration (Tests)
-- (instancetype)initWithPropertyDictionary:(nonnull NSDictionary*)bundle;
-- (mbgl::optional<std::string>)_localFontFamilyNameWithPropertyDictionary:(nonnull NSDictionary *)properties;
-@end
-
-
-@interface MGLRendererConfigurationTests : XCTestCase
-@end
-
-@implementation MGLRendererConfigurationTests
-- (void)setUp {
- [[NSUserDefaults standardUserDefaults] removeObjectForKey:MGLRendererConfigurationTests_collisionBehaviorKey];
-}
-
-- (void)tearDown {
- [[NSUserDefaults standardUserDefaults] removeObjectForKey:MGLRendererConfigurationTests_collisionBehaviorKey];
-}
-
-// Emulate what would happen with an Info.plist.
-- (void)testSettingMGLCollisionBehaviorPre40WithEmptyDictionary
-{
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{}];
- XCTAssertFalse(config.perSourceCollisions);
-}
-
-- (void)testSettingMGLCollisionBehaviorPre40WithYESDictionary
-{
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@(NO)}];
- XCTAssertFalse(config.perSourceCollisions);
-}
-
-- (void)testSettingMGLCollisionBehaviorPre40WithNODictionary
-{
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@(YES)}];
- XCTAssert(config.perSourceCollisions);
-}
-
-- (void)testSettingMGLCollisionBehaviorPre40InNSUserDefaults {
- {
- XCTAssertNil([[NSUserDefaults standardUserDefaults] objectForKey:MGLRendererConfigurationTests_collisionBehaviorKey]);
- MGLRendererConfiguration *config = [MGLRendererConfiguration currentConfiguration];
- XCTAssertFalse(config.perSourceCollisions);
- }
-
- [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:MGLRendererConfigurationTests_collisionBehaviorKey];
- {
- XCTAssertNotNil([[NSUserDefaults standardUserDefaults] objectForKey:MGLRendererConfigurationTests_collisionBehaviorKey]);
- MGLRendererConfiguration *config = [MGLRendererConfiguration currentConfiguration];
- XCTAssertFalse(config.perSourceCollisions);
- }
-
- [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:MGLRendererConfigurationTests_collisionBehaviorKey];
- {
- XCTAssertNotNil([[NSUserDefaults standardUserDefaults] objectForKey:MGLRendererConfigurationTests_collisionBehaviorKey]);
- MGLRendererConfiguration *config = [MGLRendererConfiguration currentConfiguration];
- XCTAssert(config.perSourceCollisions);
- }
-}
-
-- (void)testSettingMGLCollisionBehaviorPre40PListValueUsingString {
- // Dictionary = "NO"
- {
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@"NO"}];
- XCTAssertFalse(config.perSourceCollisions);
- }
-
- // Dictionary = "YES"
- {
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@"YES"}];
- XCTAssert(config.perSourceCollisions);
- }
-}
-
-- (void)testOverridingMGLCollisionBehaviorPre40 {
- // Dictionary = NO, NSUserDefaults = YES
- {
- [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:MGLRendererConfigurationTests_collisionBehaviorKey];
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@(NO)}];
- XCTAssert(config.perSourceCollisions);
- }
- // Dictionary = YES, NSUserDefaults = NO
- {
- [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:MGLRendererConfigurationTests_collisionBehaviorKey];
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@(YES)}];
- XCTAssertFalse(config.perSourceCollisions);
- }
-}
-
-- (void)testDefaultLocalFontFamilyName {
-
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] init];
- std::string localFontFamilyName = config.localFontFamilyName.value();
-
- std::string systemFontFamilyName;
-#if TARGET_OS_IPHONE
- systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
-#else
- systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
-#endif
-
- XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Default local font family name should match default system font");
-}
-
-- (void)testSettingMGLIdeographicFontFamilyNameWithPlistValue {
-
- MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] init];
- NSDictionary *dic;
-
- // `MGLIdeographicFontFamilyName` set to bool value `YES`
- {
- dic = @{@"MGLIdeographicFontFamilyName": @(YES)};
- std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
-
- std::string systemFontFamilyName;
-#if TARGET_OS_IPHONE
- systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
-#else
- systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
-#endif
- XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting `YES`");
- }
-
- // `MGLIdeographicFontFamilyName` set to bool value `NO`
- {
- dic = @{@"MGLIdeographicFontFamilyName": @(NO)};
- mbgl::optional<std::string> localFontFamilyName = [config _localFontFamilyNameWithPropertyDictionary:dic];
- XCTAssertFalse(localFontFamilyName.has_value(), @"Client rendering font should use remote font when setting `NO`");
- }
-
- // `MGLIdeographicFontFamilyName` set to a valid font string value
- {
- dic = @{@"MGLIdeographicFontFamilyName": @"PingFang TC"};
- std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
- std::string targetFontFamilyName = std::string([@"PingFang TC" UTF8String]);
- XCTAssertEqual(localFontFamilyName, targetFontFamilyName, @"Local font family name should match a custom valid font name");
- }
-
- // `MGLIdeographicFontFamilyName` set to an invalid font string value
- {
- dic = @{@"MGLIdeographicFontFamilyName": @"test font"};
- std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
-
- std::string systemFontFamilyName;
-#if TARGET_OS_IPHONE
- systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
-#else
- systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
-#endif
- XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid font string");
- }
-
- // `MGLIdeographicFontFamilyName` set to a valid font family names array value
- {
- dic = @{@"MGLIdeographicFontFamilyName": @[@"test font 1", @"PingFang TC", @"test font 2"]};
- std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
- std::string targetFontFamilyName = std::string([@"PingFang TC" UTF8String]);
- XCTAssertEqual(localFontFamilyName, targetFontFamilyName, @"Local font family name should match a custom valid font name in a font family names array");
- }
-
- // `MGLIdeographicFontFamilyName` set to an invalid font family names array value
- {
- dic = @{@"MGLIdeographicFontFamilyName": @[@"test font 1", @"test font 2", @"test font 3"]};
- std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
-
- std::string systemFontFamilyName;
-#if TARGET_OS_IPHONE
- systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
-#else
- systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
-#endif
- XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid font family names array");
- }
-
- // `MGLIdeographicFontFamilyName` set to an invalid value type: NSDictionary, NSNumber, NSData, etc.
- {
- dic = @{@"MGLIdeographicFontFamilyName": [@"test font 1" dataUsingEncoding:NSUTF8StringEncoding]};
- std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
-
- std::string systemFontFamilyName;
-#if TARGET_OS_IPHONE
- systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
-#else
- systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
-#endif
- XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid value type");
- }
-}
-
-
-
-@end
diff --git a/platform/darwin/test/MGLResourceTests.mm b/platform/darwin/test/MGLResourceTests.mm
deleted file mode 100644
index 7fcccc535c..0000000000
--- a/platform/darwin/test/MGLResourceTests.mm
+++ /dev/null
@@ -1,85 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import <mbgl/storage/resource.hpp>
-
-namespace mbgl {
- extern NSURL *resourceURLWithAccountType(const Resource& resource, NSInteger accountType);
-}
-
-@interface MGLResourceTests : XCTestCase
-@end
-
-@implementation MGLResourceTests
-
-- (void)testOfflineQueryParameterIsAddedForOfflineResource {
-
- using namespace mbgl;
-
- std::string testURL = "test://mapbox.com/testing_offline_query?a=one&b=two";
-
- // Is our test URL "correct" for subsequent checks?
- {
- NSURL *url = [NSURL URLWithString:@(testURL.c_str())];
- NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
- NSArray<NSURLQueryItem *> *items = components.queryItems;
- XCTAssert(items.count == 2);
- }
-
- Resource resource(Resource::Kind::Unknown, testURL);
-
- // By default, resources are NOT offline
- {
- bool skuTokenQueryItemFound;
- NSURL *url = resourceURLWithAccountType(resource, 0);
- NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
- for (NSURLQueryItem *item in components.queryItems) {
- XCTAssertFalse([item.name isEqualToString:@"offline"]);
- if ([item.name isEqualToString:@"sku"]) {
- skuTokenQueryItemFound = YES;
- }
- }
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- XCTAssertTrue(skuTokenQueryItemFound, "Default resource URL should have SKU token query item");
-#else
- XCTAssertFalse(skuTokenQueryItemFound, "Non-iOS platforms should not have a SKU token query item");
-#endif
- }
-
- // Now check offline
- resource.setUsage(Resource::Usage::Offline);
-
- {
- NSURL *url = resourceURLWithAccountType(resource, 0);
- NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
-
- // For offline, we expect a single offline query item
- NSInteger foundCount = 0;
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- for (NSURLQueryItem *item in components.queryItems) {
- if (([item.name isEqualToString:@"offline"] && [item.value isEqualToString:@"true"]) ||
- ([item.name isEqualToString:@"a"] && [item.value isEqualToString:@"one"]) ||
- ([item.name isEqualToString:@"b"] && [item.value isEqualToString:@"two"])) {
- foundCount++;
- }
- XCTAssertFalse([item.name isEqualToString:@"sku"]);
- }
-
- XCTAssert(foundCount == 3);
-#else
- // NOTE: Currently the macOS SDK does not supply the sku or offline query parameters
- for (NSURLQueryItem *item in components.queryItems) {
- if (([item.name isEqualToString:@"a"] && [item.value isEqualToString:@"one"]) ||
- ([item.name isEqualToString:@"b"] && [item.value isEqualToString:@"two"])) {
- foundCount++;
- }
- XCTAssertFalse([item.name isEqualToString:@"sku"]);
- }
-
- XCTAssert(foundCount == 2);
-#endif
- }
-}
-
-@end
diff --git a/platform/darwin/test/MGLSDKTestHelpers.swift b/platform/darwin/test/MGLSDKTestHelpers.swift
deleted file mode 100644
index c836f7c2fd..0000000000
--- a/platform/darwin/test/MGLSDKTestHelpers.swift
+++ /dev/null
@@ -1,48 +0,0 @@
-import XCTest
-
-class MGLSDKTestHelpers {
-
- class func checkTestsContainAllMethods(testClass: Swift.AnyClass, in p: Protocol) {
- let testMethods = self.classMethodDescriptions(testClass)
- let subjectMethods = self.protocolMethodDescriptions(p)
-
- for method in subjectMethods {
- if !testMethods.contains(method) {
- XCTFail("\(String(describing: testClass)) does not contain \(method) from \(String(describing: p))")
- }
- }
-
- XCTAssert(true)
- }
-
-}
-
-extension MGLSDKTestHelpers {
-
- class func protocolMethodDescriptions(_ p: Protocol) -> Set<String> {
- var methods = Set<String>()
- var methodCount = UInt32()
- let methodDescriptionList = protocol_copyMethodDescriptionList(p, false, true, &methodCount)
- for i in 0..<Int(methodCount) {
- let description = methodDescriptionList![i]
- XCTAssertNotNil(description.name?.description)
- methods.insert(description.name!.description)
- }
- free(methodDescriptionList)
- return methods
- }
-
- class func classMethodDescriptions(_ cls: Swift.AnyClass) -> Set<String> {
- var methods = Set<String>()
- var methodCount = UInt32()
- let methodList = class_copyMethodList(cls, &methodCount)
- for i in 0..<Int(methodCount) {
- let method = methodList![i]
- let selector = method_getName(method)
- methods.insert(selector.description)
- }
- free(methodList)
- return methods
- }
-
-}
diff --git a/platform/darwin/test/MGLShapeSourceTests.mm b/platform/darwin/test/MGLShapeSourceTests.mm
deleted file mode 100644
index 9046607010..0000000000
--- a/platform/darwin/test/MGLShapeSourceTests.mm
+++ /dev/null
@@ -1,330 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import <Mapbox/Mapbox.h>
-#import "MGLFeature_Private.h"
-#import "MGLShapeSource_Private.h"
-#import "MGLSource_Private.h"
-
-#include <mbgl/style/sources/geojson_source.hpp>
-
-@interface MGLShapeSourceTests : XCTestCase
-@end
-
-@implementation MGLShapeSourceTests
-
-- (void)testGeoJSONOptionsFromDictionary {
- NSExpression *reduceExpression = [NSExpression expressionForFunction:@"sum:" arguments:@[[NSExpression expressionForKeyPath:@"featureAccumulated"], [NSExpression expressionForKeyPath:@"sumValue"]]];
- NSExpression *mapExpression = [NSExpression expressionForKeyPath:@"mag"];
- NSArray *clusterPropertyArray = @[reduceExpression, mapExpression];
- NSDictionary *options = @{MGLShapeSourceOptionClustered: @YES,
- MGLShapeSourceOptionClusterRadius: @42,
- MGLShapeSourceOptionClusterProperties: @{@"sumValue": clusterPropertyArray},
- MGLShapeSourceOptionMaximumZoomLevelForClustering: @98,
- MGLShapeSourceOptionMaximumZoomLevel: @99,
- MGLShapeSourceOptionBuffer: @1976,
- MGLShapeSourceOptionSimplificationTolerance: @0.42,
- MGLShapeSourceOptionLineDistanceMetrics: @YES};
-
- auto mbglOptions = MGLGeoJSONOptionsFromDictionary(options);
- XCTAssertTrue(mbglOptions->cluster);
- XCTAssertEqual(mbglOptions->clusterRadius, 42);
- XCTAssertEqual(mbglOptions->clusterMaxZoom, 98);
- XCTAssertEqual(mbglOptions->maxzoom, 99);
- XCTAssertEqual(mbglOptions->buffer, 1976);
- XCTAssertEqual(mbglOptions->tolerance, 0.42);
- XCTAssertTrue(mbglOptions->lineMetrics);
- XCTAssertTrue(!mbglOptions->clusterProperties.empty());
-
- options = @{MGLShapeSourceOptionClustered: @"number 1"};
- XCTAssertThrows(MGLGeoJSONOptionsFromDictionary(options));
-}
-
-- (void)testNilShape {
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"id" shape:nil options:nil];
- XCTAssertNil(source.shape);
-}
-
-- (void)testUnclusterableShape {
- NSDictionary *options = @{
- MGLShapeSourceOptionClustered: @YES,
- };
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"id" shape:[[MGLPointFeature alloc] init] options:options];
- XCTAssertTrue([source.shape isKindOfClass:[MGLPointFeature class]]);
-
- MGLShapeCollectionFeature *feature = [MGLShapeCollectionFeature shapeCollectionWithShapes:@[]];
- source = [[MGLShapeSource alloc] initWithIdentifier:@"id" shape:feature options:options];
- XCTAssertTrue([source.shape isKindOfClass:[MGLShapeCollectionFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithDataMultipleFeatures {
-
- NSString *geoJSON = @"{\"type\": \"FeatureCollection\",\"features\": [{\"type\": \"Feature\",\"properties\": {},\"geometry\": {\"type\": \"LineString\",\"coordinates\": [[-107.75390625,40.329795743702064],[-104.34814453125,37.64903402157866]]}}]}";
-
- NSData *data = [geoJSON dataUsingEncoding:NSUTF8StringEncoding];
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- XCTAssertNotNil(shape);
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:shape options:nil];
-
- MGLShapeCollection *collection = (MGLShapeCollection *)source.shape;
- XCTAssertNotNil(collection);
- XCTAssertEqual(collection.shapes.count, 1UL);
- XCTAssertTrue([collection.shapes.firstObject isMemberOfClass:[MGLPolylineFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithSingleGeometry {
- NSData *data = [@"{\"type\": \"Point\", \"coordinates\": [0, 0]}" dataUsingEncoding:NSUTF8StringEncoding];
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- XCTAssertNotNil(shape);
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"geojson" shape:shape options:nil];
- XCTAssertNotNil(source.shape);
- XCTAssert([source.shape isKindOfClass:[MGLPointAnnotation class]]);
-}
-
-- (void)testMGLGeoJSONSourceWithSingleFeature {
- NSString *geoJSON = @"{\"type\": \"Feature\", \"properties\": {\"color\": \"green\"}, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -114.06847000122069, 51.050459433092655 ] }}";
- NSData *data = [geoJSON dataUsingEncoding:NSUTF8StringEncoding];
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- XCTAssertNotNil(shape);
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"geojson" shape:shape options:nil];
- XCTAssertNotNil(source.shape);
- XCTAssert([source.shape isKindOfClass:[MGLPointFeature class]]);
- MGLPointFeature *feature = (MGLPointFeature *)source.shape;
- XCTAssert([feature.attributes.allKeys containsObject:@"color"]);
-}
-
-- (void)testMGLShapeSourceWithPolylineFeatures {
- CLLocationCoordinate2D coordinates[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates count:2];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:polylineFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPolylineFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithPolygonFeatures {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5];
- polygonFeature.identifier = @"feature-id";
- NSString *stringAttribute = @"string";
- NSNumber *boolAttribute = [NSNumber numberWithBool:YES];
- NSNumber *doubleAttribute = [NSNumber numberWithDouble:1.23];
- NSDictionary *nestedDictionaryValue = @{@"nested-key-1": @"nested-string-value"};
- NSArray *arrayValue = @[@"string-value", @2];
- NSDictionary *dictionaryValue = @{@"key-1": @"string-value",
- @"key-2": @1,
- @"key-3": nestedDictionaryValue,
- @"key-4": arrayValue};
- NSArray *arrayOfArrays = @[@[@1, @"string-value", @[@"jagged"]]];
- NSArray *arrayOfDictionaries = @[@{@"key": @"value"}];
-
- polygonFeature.attributes = @{@"name": stringAttribute,
- @"bool": boolAttribute,
- @"double": doubleAttribute,
- @"dictionary-attribute": dictionaryValue,
- @"array-attribute": arrayValue,
- @"array-of-array-attribute": arrayOfArrays,
- @"array-of-dictionary-attribute": arrayOfDictionaries};
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:polygonFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- MGLPolygonFeature *expectedPolygonFeature = (MGLPolygonFeature *)source.shape;
- XCTAssertEqualObjects(expectedPolygonFeature.identifier, polygonFeature.identifier);
- XCTAssertTrue([expectedPolygonFeature isMemberOfClass:[MGLPolygonFeature class]]);
- XCTAssertEqualObjects(expectedPolygonFeature.identifier, polygonFeature.identifier);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"name"], stringAttribute);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"bool"], boolAttribute);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"double"], doubleAttribute);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"dictionary-attribute"], dictionaryValue);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"array-attribute"], arrayValue);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"array-of-array-attribute"], arrayOfArrays);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"array-of-dictionary-attribute"], arrayOfDictionaries);
-}
-
-- (void)testMGLShapeSourceWithPolygonFeaturesInculdingInteriorPolygons {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- CLLocationCoordinate2D interiorCoordinates[] = {
- CLLocationCoordinate2DMake(0.2, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.2)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:interiorCoordinates count:5];
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:polygonFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPolygonFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithMultiPolylineFeatures {
- CLLocationCoordinate2D firstCoordinates[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *firstPolylineFeature = [MGLPolylineFeature polylineWithCoordinates:firstCoordinates count:2];
- CLLocationCoordinate2D secondCoordinates[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *secondPolylineFeature = [MGLPolylineFeature polylineWithCoordinates:secondCoordinates count:2];
- MGLMultiPolylineFeature *multiPolylineFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:@[firstPolylineFeature, secondPolylineFeature]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:multiPolylineFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLMultiPolylineFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithMultiPolygonFeatures {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- CLLocationCoordinate2D interiorCoordinates[] = {
- CLLocationCoordinate2DMake(0.2, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.2)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:interiorCoordinates count:5];
-
- MGLPolygonFeature *firstPolygon = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
- MGLPolygonFeature *secondPolygon = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
-
- MGLMultiPolygonFeature *multiPolygonFeature = [MGLMultiPolygonFeature multiPolygonWithPolygons:@[firstPolygon, secondPolygon]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:multiPolygonFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLMultiPolygonFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithPointFeature {
- MGLPointFeature *pointFeature = [MGLPointFeature new];
- pointFeature.coordinate = CLLocationCoordinate2DMake(0.2, 100.2);
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"souce-id" shape:pointFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPointFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithPointCollectionFeature {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
- MGLPointCollectionFeature *pointCollectionFeature = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:5];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"souce-id" shape:pointCollectionFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPointCollectionFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithShapeCollectionFeatures {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- CLLocationCoordinate2D interiorCoordinates[] = {
- CLLocationCoordinate2DMake(0.2, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.2)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:interiorCoordinates count:5];
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
-
- CLLocationCoordinate2D coordinates_2[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates_2 count:2];
-
- MGLMultiPolygonFeature *multiPolygonFeature = [MGLMultiPolygonFeature multiPolygonWithPolygons:@[polygonFeature, polygonFeature]];
-
- MGLMultiPolylineFeature *multiPolylineFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:@[polylineFeature, polylineFeature]];
-
- MGLPointCollectionFeature *pointCollectionFeature = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:5];
-
- MGLPointFeature *pointFeature = [MGLPointFeature new];
- pointFeature.coordinate = CLLocationCoordinate2DMake(0.2, 100.2);
-
- MGLShapeCollectionFeature *shapeCollectionFeature = [MGLShapeCollectionFeature shapeCollectionWithShapes:@[polygonFeature, polylineFeature, multiPolygonFeature, multiPolylineFeature, pointCollectionFeature, pointFeature]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:shapeCollectionFeature options:nil];
-
- MGLShapeCollectionFeature *shape = (MGLShapeCollectionFeature *)source.shape;
- XCTAssertNotNil(shape);
- XCTAssert(shape.shapes.count == 6, @"Shape collection should contain 6 shapes");
-}
-
-- (void)testMGLShapeSourceWithFeaturesConvenienceInitializer {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0]) interiorPolygons:nil];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" features:@[polygonFeature] options:nil];
- MGLShapeCollectionFeature *shape = (MGLShapeCollectionFeature *)source.shape;
-
- XCTAssertTrue([shape isKindOfClass:[MGLShapeCollectionFeature class]]);
- XCTAssertEqual(shape.shapes.count, 1UL, @"Shape collection should contain 1 shape");
-
- // when a shape is included in the features array
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0]) interiorPolygons:nil];
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wobjc-literal-conversion"
- XCTAssertThrowsSpecificNamed([[MGLShapeSource alloc] initWithIdentifier:@"source-id-invalid" features:@[polygon] options:nil], NSException, NSInvalidArgumentException, @"Shape source should raise an exception if a shape is sent to the features initializer");
-#pragma clang diagnostic pop
-}
-
-- (void)testMGLShapeSourceWithShapesConvenienceInitializer {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0]) interiorPolygons:nil];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shapes:@[polygon] options:nil];
- MGLShapeCollectionFeature *shape = (MGLShapeCollectionFeature *)source.shape;
-
- XCTAssertTrue([shape isKindOfClass:[MGLShapeCollection class]]);
- XCTAssertEqual(shape.shapes.count, 1UL, @"Shape collection should contain 1 shape");
-}
-
-@end
diff --git a/platform/darwin/test/MGLSourceQueryTests.m b/platform/darwin/test/MGLSourceQueryTests.m
deleted file mode 100644
index b321da1ea4..0000000000
--- a/platform/darwin/test/MGLSourceQueryTests.m
+++ /dev/null
@@ -1,25 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLSourceQueryTests : XCTestCase <MGLMapViewDelegate>
-
-@end
-
-@implementation MGLSourceQueryTests
-
-- (void) testQueryVectorTileSource {
- MGLVectorTileSource *source = [[MGLVectorTileSource alloc] initWithIdentifier:@"vector" tileURLTemplates:@[@"fake"] options:nil];
- NSSet *sourceLayers = [NSSet setWithObjects:@"buildings", @"water", nil];
- NSArray* features = [source featuresInSourceLayersWithIdentifiers:sourceLayers predicate:nil];
- // Source not added yet, so features is 0
- XCTAssertEqual([features count], 0);
-}
-
-- (void) testQueryShapeSource {
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"shape" shape:[MGLShapeCollection shapeCollectionWithShapes:@[]] options:nil];
- NSArray* features = [source featuresMatchingPredicate:nil];
- // Source not added yet, so features is 0
- XCTAssertEqual([features count], 0);
-}
-
-@end
diff --git a/platform/darwin/test/MGLStyleLayerTests.h b/platform/darwin/test/MGLStyleLayerTests.h
deleted file mode 100644
index c7577819b8..0000000000
--- a/platform/darwin/test/MGLStyleLayerTests.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#define MGLConstantExpression(constant) \
- [NSExpression expressionForConstantValue:constant]
-
-@interface MGLStyleLayerTests : XCTestCase <MGLMapViewDelegate>
-
-@property (nonatomic, copy, readonly, class) NSString *layerType;
-
-- (void)testPropertyName:(NSString *)name isBoolean:(BOOL)isBoolean;
-
-@end
-
-@interface NSString (MGLStyleLayerTestAdditions)
-
-@property (nonatomic, readonly, copy) NSArray<NSString *> *lexicalClasses;
-@property (nonatomic, readonly, copy) NSString *lemma;
-
-@end
-
-@interface NSValue (MGLStyleLayerTestAdditions)
-
-+ (instancetype)valueWithMGLVector:(CGVector)vector;
-
-@property (readonly) CGVector MGLVectorValue;
-
-@end
diff --git a/platform/darwin/test/MGLStyleLayerTests.m b/platform/darwin/test/MGLStyleLayerTests.m
deleted file mode 100644
index 5dc97dc581..0000000000
--- a/platform/darwin/test/MGLStyleLayerTests.m
+++ /dev/null
@@ -1,125 +0,0 @@
-#import "MGLStyleLayerTests.h"
-
-#import "NSString+MGLAdditions.h"
-
-#define TEST_STRICT_NAMING_CONVENTIONS 0
-
-@implementation MGLStyleLayerTests
-
-@dynamic layerType;
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertEqualObjects(layer.identifier, @"layerID");
- XCTAssertEqualObjects(layer.sourceIdentifier, source.identifier);
-
- XCTAssertTrue(layer.visible);
- layer.visible = NO;
- XCTAssertFalse(layer.visible);
- layer.visible = YES;
- XCTAssertTrue(layer.visible);
-
- XCTAssertEqual(layer.minimumZoomLevel, -INFINITY);
- layer.minimumZoomLevel = 22;
- XCTAssertEqual(layer.minimumZoomLevel, 22);
-
- XCTAssertEqual(layer.maximumZoomLevel, INFINITY);
- layer.maximumZoomLevel = 0;
- XCTAssertEqual(layer.maximumZoomLevel, 0);
-}
-
-- (void)testPropertyName:(NSString *)name isBoolean:(BOOL)isBoolean {
- NSMutableArray<NSString *> *components = [name componentsSeparatedByString:@"-"].mutableCopy;
- if (isBoolean) {
- if ([components.firstObject isEqualToString:@"is"]) {
- [components removeObjectAtIndex:0];
-
- // Xcode 10 incorrectly classifies "optional" as a verb, so return early to avoid the verb checks.
- // https://openradar.appspot.com/44149950
- if ([components.lastObject isEqualToString:@"optional"] && NSFoundationVersionNumber >= 1548) {
- return;
- }
-
- if (![components.lastObject.lexicalClasses containsObject:NSLinguisticTagAdjective]) {
- XCTAssertTrue([components.lastObject.lexicalClasses containsObject:NSLinguisticTagVerb],
- @"Boolean getter %@ that starts with “is” should contain an adjective, past participle, or verb.", name);
- XCTAssertNotEqualObjects(components.lastObject.lemma, components.lastObject,
- @"Boolean getter %@ should not have infinitive, imperative, or present tense verb.", name);
- }
- } else {
- if ([components.firstObject isEqualToString:[self class].layerType]
- || [components.firstObject isEqualToString:@"icon"] || [components.firstObject isEqualToString:@"text"]) {
- [components removeObjectAtIndex:0];
- }
-#if TEST_STRICT_NAMING_CONVENTIONS
- XCTAssertTrue([components.firstObject.lexicalClasses containsObject:NSLinguisticTagVerb],
- @"Boolean getter %@ that doesn’t start with “is” should contain a verb.", name);
- XCTAssertNotEqualObjects(components.firstObject.lemma, components.lastObject);
-#endif
- }
- } else {
- XCTAssertFalse([components.firstObject isEqualToString:@"is"]);
-#if TEST_STRICT_NAMING_CONVENTIONS
- XCTAssertTrue([components.lastObject.lexicalClasses containsObject:NSLinguisticTagNoun],
- @"Non-Boolean getter %@ should contain a noun.", name);
-#endif
- }
-}
-
-@end
-
-@implementation NSString (MGLStyleLayerTestAdditions)
-
-- (NSArray<NSString *> *)lexicalClasses {
- NSOrthography *orthography = [NSOrthography orthographyWithDominantScript:@"Latn"
- languageMap:@{@"Latn": @[@"en"]}];
- NSLinguisticTaggerOptions options = (NSLinguisticTaggerOmitPunctuation
- | NSLinguisticTaggerOmitWhitespace
- | NSLinguisticTaggerOmitOther);
- return [self linguisticTagsInRange:self.mgl_wholeRange
- scheme:NSLinguisticTagSchemeLexicalClass
- options:options
- orthography:orthography
- tokenRanges:NULL];
-}
-
-- (NSString *)lemma {
- NSOrthography *orthography = [NSOrthography orthographyWithDominantScript:@"Latn"
- languageMap:@{@"Latn": @[@"en"]}];
- NSLinguisticTaggerOptions options = (NSLinguisticTaggerOmitPunctuation
- | NSLinguisticTaggerOmitWhitespace
- | NSLinguisticTaggerOmitOther);
- return [self linguisticTagsInRange:self.mgl_wholeRange
- scheme:NSLinguisticTagSchemeLemma
- options:options
- orthography:orthography
- tokenRanges:NULL].firstObject;
-}
-
-@end
-
-@implementation NSValue (MGLStyleLayerTestAdditions)
-
-+ (instancetype)valueWithMGLVector:(CGVector)vector {
-#if TARGET_OS_IPHONE
- return [self valueWithCGVector:vector];
-#else
- return [self value:&vector withObjCType:@encode(CGVector)];
-#endif
-}
-
-- (CGVector)MGLVectorValue {
-#if TARGET_OS_IPHONE
- return self.CGVectorValue;
-#else
- CGVector vector;
- [self getValue:&vector];
- return vector;
-#endif
-}
-
-@end
diff --git a/platform/darwin/test/MGLStyleLayerTests.mm.ejs b/platform/darwin/test/MGLStyleLayerTests.mm.ejs
deleted file mode 100644
index a764f163be..0000000000
--- a/platform/darwin/test/MGLStyleLayerTests.mm.ejs
+++ /dev/null
@@ -1,232 +0,0 @@
-<%
- const type = locals.type;
- const properties = locals.properties;
- const enumProperties = locals.enumProperties;
--%>
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-<% if (type === 'symbol') { -%>
-#include "../../darwin/src/MGLAttributedExpression.h"
-<% } -%>
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/<%- type.replace('-', '_') %>_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGL<%- camelize(type) %>LayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGL<%- camelize(type) %>LayerTests
-
-+ (NSString *)layerType {
- return @"<%- type %>";
-}
-
-<% if (type !== 'background' && type !== 'raster' && type !== 'hillshade') { -%>
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGL<%- camelize(type) %>StyleLayer *layer = [[MGL<%- camelize(type) %>StyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-<% } -%>
-- (void)testProperties {
-<% if (type === 'background') { -%>
- MGL<%- camelize(type) %>StyleLayer *layer = [[MGL<%- camelize(type) %>StyleLayer alloc] initWithIdentifier:@"layerID"];
-<% } else { -%>
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGL<%- camelize(type) %>StyleLayer *layer = [[MGL<%- camelize(type) %>StyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-<% } -%>
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"<%- type %>");
- auto rawLayer = static_cast<mbgl::style::<%- camelize(type) %>Layer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-<% for (const property of properties) { -%>
-<% if (property['property-type'] === 'color-ramp') continue; -%>
-
- // <%- originalPropertyName(property) %>
- {
- XCTAssertTrue(rawLayer->get<%- camelize(originalPropertyName(property)) %>().isUndefined(),
- @"<%- originalPropertyName(property) %> should be unset initially.");
- NSExpression *defaultExpression = layer.<%- objCName(property) %>;
-
-<% if (property.type === 'formatted') { -%>
- NSExpression *constantExpression = [NSExpression expressionWithFormat:<%- objCTestValue(property, 'string', true, 3) %>];
-<% } else if (property.type === 'resolvedImage'){ -%>
- NSExpression *constantExpression = [NSExpression expressionForConstantValue:<%- objCTestValue(property, 'string', true, 3) %>];
-<% } else { -%>
- NSExpression *constantExpression = [NSExpression expressionWithFormat:<%- objCTestValue(property, type, true, 3) %>];
-<% } -%>
- layer.<%- objCName(property) %> = constantExpression;
- mbgl::style::PropertyValue<<%- mbglType(property) %>> propertyValue = { <%- mbglTestValue(property, type) %> };
- XCTAssertEqual(rawLayer->get<%- camelize(originalPropertyName(property)) %>(), propertyValue,
- @"Setting <%- objCName(property) %> to a constant value expression should update <%- originalPropertyName(property) %>.");
- XCTAssertEqualObjects(layer.<%- objCName(property) %>, constantExpression,
- @"<%- objCName(property) %> should round-trip constant value expressions.");
-
-<% if (property.type !== 'formatted') { -%>
- constantExpression = [NSExpression expressionWithFormat:<%- objCTestValue(property, type, false, 3) %>];
-<% } else { -%>
- MGLAttributedExpression *attributedConstantExpression = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionWithFormat:<%- objCTestValue(property, 'string', true, 3) %>]
- attributes:@{}];
- constantExpression = [NSExpression mgl_expressionForAttributedExpressions:@[[NSExpression expressionForConstantValue:attributedConstantExpression]]];
-<% } -%>
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.<%- objCName(property) %> = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<<%- mbglType(property) %>>(
-<% if (property.type === 'formatted') { -%>
- step(zoom(), format(<%- mbglExpressionTestValue(property, type) %>), 18.0, format(<%- mbglExpressionTestValue(property, type) %>))
-<% } else if (property.type === 'resolvedImage') { -%>
- step(zoom(), image(literal(<%- mbglExpressionTestValue(property, type) %>)), 18.0, image(literal(<%- mbglExpressionTestValue(property, type) %>)))
-<% } else { -%>
- step(zoom(), literal(<%- mbglExpressionTestValue(property, type) %>), 18.0, literal(<%- mbglExpressionTestValue(property, type) %>))
-<% } -%>
- );
- }
-
- XCTAssertEqual(rawLayer->get<%- camelize(originalPropertyName(property)) %>(), propertyValue,
- @"Setting <%- objCName(property) %> to a camera expression should update <%- originalPropertyName(property) %>.");
- XCTAssertEqualObjects(layer.<%- objCName(property) %>, functionExpression,
- @"<%- objCName(property) %> should round-trip camera expressions.");
-
-<% if (isDataDriven(property) && isInterpolatable(property)) { -%>
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.<%- objCName(property) %> = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<<%- mbglType(property) %>>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(<%- mbglExpressionTestValue(property, type) %>))
- );
- }
-
- XCTAssertEqual(rawLayer->get<%- camelize(originalPropertyName(property)) %>(), propertyValue,
- @"Setting <%- objCName(property) %> to a data expression should update <%- originalPropertyName(property) %>.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.<%- objCName(property) %>, pedanticFunctionExpression,
- @"<%- objCName(property) %> should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.<%- objCName(property) %> = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<<%- mbglType(property) %>>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(<%- mbglExpressionTestValue(property, type) %>)))
- );
- }
-
- XCTAssertEqual(rawLayer->get<%- camelize(originalPropertyName(property)) %>(), propertyValue,
- @"Setting <%- objCName(property) %> to a camera-data expression should update <%- originalPropertyName(property) %>.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.<%- objCName(property) %>, pedanticFunctionExpression,
- @"<%- objCName(property) %> should round-trip camera-data expressions.");
-<% } -%>
-<% if (!property.required) { -%>
-
- layer.<%- objCName(property) %> = nil;
- XCTAssertTrue(rawLayer->get<%- camelize(originalPropertyName(property)) %>().isUndefined(),
- @"Unsetting <%- objCName(property) %> should return <%- originalPropertyName(property) %> to the default value.");
- XCTAssertEqualObjects(layer.<%- objCName(property) %>, defaultExpression,
- @"<%- objCName(property) %> should return the default value after being unset.");
-<% } -%>
-<% if (!isDataDriven(property)) { -%>
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.<%- objCName(property) %> = functionExpression, NSException, NSInvalidArgumentException, @"MGL<%- camelize(type) %>Layer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.<%- objCName(property) %> = functionExpression, NSException, NSInvalidArgumentException, @"MGL<%- camelize(type) %>Layer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
-<% } -%>
-<% if (property["transition"] && !property.original) { -%>
- // Transition property test
- layer.<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %>Transition = transitionTest;
- auto toptions = rawLayer->get<%- camelize(originalPropertyName(property)) %>Transition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition <%- camelizeWithLeadingLowercase(originalPropertyName(property)) %>Transition = layer.<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %>Transition;
- XCTAssertEqual(<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %>Transition.delay, transitionTest.delay);
- XCTAssertEqual(<%- camelizeWithLeadingLowercase(originalPropertyName(property)) %>Transition.duration, transitionTest.duration);
-<% } -%>
-<% if (property.tokens) { -%>
-
- // Tokens test
- layer.<%- objCName(property) %> = [NSExpression expressionForConstantValue:@"{token}"];
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<<%- mbglType(property) %>>(
-<% if (property.type === 'formatted') { -%>
- format(toString(get(literal("token"))))
-<% } else if (property.type === 'resolvedImage') { -%>
- image(toString(get(literal("token"))))
-<% } else { -%>
- toString(get(literal("token")))
-<% } -%>
- );
- }
-
- XCTAssertEqual(rawLayer->get<%- camelize(originalPropertyName(property)) %>(), propertyValue,
- @"Setting <%- objCName(property) %> to a constant string with tokens should convert to an expression.");
-
-<% if (property.type === 'formatted') { -%>
- MGLAttributedExpression *tokenAttibutedExpression = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionWithFormat:@"CAST(token, 'NSString')"]
- attributes:@{}];
- NSExpression* tokenExpression = [NSExpression mgl_expressionForAttributedExpressions:@[[NSExpression expressionForConstantValue:tokenAttibutedExpression]]];
-<% } else if (property.type === 'resolvedImage') { -%>
- NSExpression* tokenExpression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('image', CAST(token, \"NSString\"))"];
-<% } else { -%>
- NSExpression* tokenExpression = [NSExpression expressionWithFormat:@"CAST(token, \"NSString\")"];
-<% } -%>
- XCTAssertEqualObjects(layer.<%- objCName(property) %>, tokenExpression,
- @"Setting <%- objCName(property) %> to a constant string with tokens should convert to an expression.");
-<% } -%>
- }
-<% } -%>
-}
-
-- (void)testPropertyNames {
-<% for (const property of properties) { -%>
-<% if (property['property-type'] === 'color-ramp') continue; -%>
- [self testPropertyName:@"<%- property.getter || property.name %>" isBoolean:<%- property.type === 'boolean' ? 'YES' : 'NO' %>];
-<% } -%>
-}
-
-<% if (enumProperties) { -%>
-- (void)testValueAdditions {
-<% for (let property of enumProperties) { -%>
-<% for (let value in property.values) { -%>
-<% if (property.values.hasOwnProperty(value)) { -%>
- XCTAssertEqual([NSValue valueWithMGL<%- camelize(enumName(property)) %>:MGL<%- camelize(enumName(property)) %><%- camelize(value) %>].MGL<%- camelize(enumName(property)) %>Value, MGL<%- camelize(enumName(property)) %><%- camelize(value) %>);
-<% } -%>
-<% } -%>
-<% } -%>
-}
-
-<% } -%>
-@end
diff --git a/platform/darwin/test/MGLStyleTests.mm b/platform/darwin/test/MGLStyleTests.mm
deleted file mode 100644
index ec2605646c..0000000000
--- a/platform/darwin/test/MGLStyleTests.mm
+++ /dev/null
@@ -1,500 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-#import "NSBundle+MGLAdditions.h"
-#import "MGLVectorTileSource_Private.h"
-
-#import <mbgl/util/default_styles.hpp>
-
-#import <XCTest/XCTest.h>
-#if TARGET_OS_IPHONE
- #import <UIKit/UIKit.h>
-#else
- #import <Cocoa/Cocoa.h>
-#endif
-#import <objc/runtime.h>
-
-@interface MGLStyleTests : XCTestCase <MGLMapViewDelegate>
-
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic) MGLStyle *style;
-
-@end
-
-@implementation MGLStyleTests {
- XCTestExpectation *_styleLoadingExpectation;
-}
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) styleURL:styleURL];
- self.mapView.delegate = self;
- if (!self.mapView.style) {
- _styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self waitForExpectationsWithTimeout:10 handler:nil];
- }
-}
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style {
- XCTAssertNotNil(mapView.style);
- XCTAssertEqual(mapView.style, style);
-
- [_styleLoadingExpectation fulfill];
-}
-
-- (void)tearDown {
- _styleLoadingExpectation = nil;
- self.mapView = nil;
-
- [super tearDown];
-}
-
-- (MGLStyle *)style {
- return self.mapView.style;
-}
-
-- (void)testUnversionedStyleURLs {
- XCTAssertEqual(mbgl::util::default_styles::streets.currentVersion, MGLStyleDefaultVersion,
- "mbgl::util::default_styles::streets.currentVersion and MGLStyleDefaultVersion disagree.");
-
- XCTAssertEqualObjects([MGLStyle streetsStyleURL].absoluteString, @(mbgl::util::default_styles::streets.url));
- XCTAssertEqualObjects([MGLStyle outdoorsStyleURL].absoluteString, @(mbgl::util::default_styles::outdoors.url));
- XCTAssertEqualObjects([MGLStyle lightStyleURL].absoluteString, @(mbgl::util::default_styles::light.url));
- XCTAssertEqualObjects([MGLStyle darkStyleURL].absoluteString, @(mbgl::util::default_styles::dark.url));
- XCTAssertEqualObjects([MGLStyle satelliteStyleURL].absoluteString, @(mbgl::util::default_styles::satellite.url));
- XCTAssertEqualObjects([MGLStyle satelliteStreetsStyleURL].absoluteString, @(mbgl::util::default_styles::satelliteStreets.url));
-}
-
-- (void)testVersionedStyleURLs {
- // Test that all the default styles have publicly-declared MGLStyle class
- // methods and that the URLs all have the right values.
- XCTAssertEqualObjects([MGLStyle streetsStyleURLWithVersion:mbgl::util::default_styles::streets.currentVersion].absoluteString,
- @(mbgl::util::default_styles::streets.url));
- XCTAssertEqualObjects([MGLStyle streetsStyleURLWithVersion:99].absoluteString,
- @"mapbox://styles/mapbox/streets-v99");
- XCTAssertEqualObjects([MGLStyle outdoorsStyleURLWithVersion:mbgl::util::default_styles::outdoors.currentVersion].absoluteString,
- @(mbgl::util::default_styles::outdoors.url));
- XCTAssertEqualObjects([MGLStyle outdoorsStyleURLWithVersion:99].absoluteString,
- @"mapbox://styles/mapbox/outdoors-v99");
- XCTAssertEqualObjects([MGLStyle lightStyleURLWithVersion:mbgl::util::default_styles::light.currentVersion].absoluteString,
- @(mbgl::util::default_styles::light.url));
- XCTAssertEqualObjects([MGLStyle lightStyleURLWithVersion:99].absoluteString,
- @"mapbox://styles/mapbox/light-v99");
- XCTAssertEqualObjects([MGLStyle darkStyleURLWithVersion:mbgl::util::default_styles::dark.currentVersion].absoluteString,
- @(mbgl::util::default_styles::dark.url));
- XCTAssertEqualObjects([MGLStyle darkStyleURLWithVersion:99].absoluteString,
- @"mapbox://styles/mapbox/dark-v99");
- XCTAssertEqualObjects([MGLStyle satelliteStyleURLWithVersion:mbgl::util::default_styles::satellite.currentVersion].absoluteString,
- @(mbgl::util::default_styles::satellite.url));
- XCTAssertEqualObjects([MGLStyle satelliteStyleURLWithVersion:99].absoluteString,
- @"mapbox://styles/mapbox/satellite-v99");
- XCTAssertEqualObjects([MGLStyle satelliteStreetsStyleURLWithVersion:mbgl::util::default_styles::satelliteStreets.currentVersion].absoluteString,
- @(mbgl::util::default_styles::satelliteStreets.url));
- XCTAssertEqualObjects([MGLStyle satelliteStreetsStyleURLWithVersion:99].absoluteString,
- @"mapbox://styles/mapbox/satellite-streets-v99");
-
- static_assert(6 == mbgl::util::default_styles::numOrderedStyles,
- "MGLStyleTests isn’t testing all the styles in mbgl::util::default_styles.");
-}
-
-- (void)testStyleURLDeclarations {
- // Make sure this test is comprehensive.
- const unsigned numImplicitArgs = 2 /* _cmd, self */;
- unsigned numMethods = 0;
- Method *methods = class_copyMethodList(object_getClass([MGLStyle class]), &numMethods);
- unsigned numVersionedMethods = 0;
- for (NSUInteger i = 0; i < numMethods; i++) {
- Method method = methods[i];
- SEL selector = method_getName(method);
- NSString *name = @(sel_getName(selector));
- unsigned numArgs = method_getNumberOfArguments(method);
- if ([name hasSuffix:@"StyleURL"]) {
- XCTAssertEqual(numArgs, numImplicitArgs, @"Unversioned style URL method should have no parameters, but it has %u.", numArgs - numImplicitArgs);
- } else if ([name hasSuffix:@"StyleURLWithVersion:"]) {
- XCTAssertEqual(numArgs, numImplicitArgs + 1, @"Versioned style URL method should have one parameter, but it has %u.", numArgs - numImplicitArgs);
- numVersionedMethods++;
- } else {
- XCTAssertEqual([name rangeOfString:@"URL"].location, NSNotFound, @"MGLStyle style URL method %@ is malformed.", name);
- }
- }
- XCTAssertEqual(mbgl::util::default_styles::numOrderedStyles, numVersionedMethods,
- @"There are %lu default styles but MGLStyleTests only provides versioned style URL methods for %u of them.",
- mbgl::util::default_styles::numOrderedStyles, numVersionedMethods);
-
- // Test that all the versioned style methods are in the public header.
- NSString *styleHeader = self.stringWithContentsOfStyleHeader;
-
- NSError *versionedMethodError;
- NSString *versionedMethodExpressionString = @(R"RE(^\+\s*\(NSURL\s*\*\s*\)\s*(?!traffic)\w+StyleURLWithVersion\s*:\s*\(\s*NSInteger\s*\)\s*version\s*\b)RE");
- NSRegularExpression *versionedMethodExpression = [NSRegularExpression regularExpressionWithPattern:versionedMethodExpressionString options:NSRegularExpressionAnchorsMatchLines error:&versionedMethodError];
- XCTAssertNil(versionedMethodError, @"Error compiling regular expression to search for versioned methods.");
- NSUInteger numVersionedMethodDeclarations = [versionedMethodExpression numberOfMatchesInString:styleHeader options:0 range:NSMakeRange(0, styleHeader.length)];
- XCTAssertEqual(numVersionedMethodDeclarations, numVersionedMethods);
-}
-
-- (void)testName {
- XCTAssertNil(self.style.name);
-}
-
-- (void)testSources {
- NSSet<MGLSource *> *initialSources = self.style.sources;
- if ([initialSources.anyObject.identifier isEqualToString:@"com.mapbox.annotations"]) {
- XCTAssertEqual(self.style.sources.count, 1UL);
- } else {
- XCTAssertEqual(self.style.sources.count, 0UL);
- }
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"shapeSource" shape:nil options:nil];
- [self.style addSource:shapeSource];
- XCTAssertEqual(self.style.sources.count, initialSources.count + 1);
- XCTAssertEqual(shapeSource, [self.style sourceWithIdentifier:@"shapeSource"]);
- [self.style removeSource:shapeSource];
- XCTAssertEqual(self.style.sources.count, initialSources.count);
-}
-
-- (void)testAddingSourcesTwice {
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"shapeSource" shape:nil options:nil];
- [self.style addSource:shapeSource];
- XCTAssertThrowsSpecificNamed([self.style addSource:shapeSource], NSException, MGLRedundantSourceException);
-
- MGLRasterTileSource *rasterTileSource = [[MGLRasterTileSource alloc] initWithIdentifier:@"rasterTileSource" configurationURL:[NSURL URLWithString:@".json"] tileSize:42];
- [self.style addSource:rasterTileSource];
- XCTAssertThrowsSpecificNamed([self.style addSource:rasterTileSource], NSException, MGLRedundantSourceException);
-
- MGLVectorTileSource *vectorTileSource = [[MGLVectorTileSource alloc] initWithIdentifier:@"vectorTileSource" configurationURL:[NSURL URLWithString:@".json"]];
- [self.style addSource:vectorTileSource];
- XCTAssertThrowsSpecificNamed([self.style addSource:vectorTileSource], NSException, MGLRedundantSourceException);
-}
-
-- (void)testAddingSourcesWithDuplicateIdentifiers {
- MGLVectorTileSource *source1 = [[MGLVectorTileSource alloc] initWithIdentifier:@"my-source" configurationURL:[NSURL URLWithString:@"mapbox://mapbox.mapbox-terrain-v2"]];
- MGLVectorTileSource *source2 = [[MGLVectorTileSource alloc] initWithIdentifier:@"my-source" configurationURL:[NSURL URLWithString:@"mapbox://mapbox.mapbox-terrain-v2"]];
-
- [self.style addSource: source1];
- XCTAssertThrowsSpecificNamed([self.style addSource: source2], NSException, MGLRedundantSourceIdentifierException);
-}
-
-- (void)testRemovingSourcesBeforeAddingThem {
- MGLRasterTileSource *rasterTileSource = [[MGLRasterTileSource alloc] initWithIdentifier:@"raster-tile-source" tileURLTemplates:@[] options:nil];
- [self.style removeSource:rasterTileSource];
- [self.style addSource:rasterTileSource];
- XCTAssertNotNil([self.style sourceWithIdentifier:rasterTileSource.identifier]);
-
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"shape-source" shape:nil options:nil];
- [self.style removeSource:shapeSource];
- [self.style addSource:shapeSource];
- XCTAssertNotNil([self.style sourceWithIdentifier:shapeSource.identifier]);
-
- MGLVectorTileSource *vectorTileSource = [[MGLVectorTileSource alloc] initWithIdentifier:@"vector-tile-source" tileURLTemplates:@[] options:nil];
- [self.style removeSource:vectorTileSource];
- [self.style addSource:vectorTileSource];
- XCTAssertNotNil([self.style sourceWithIdentifier:vectorTileSource.identifier]);
-}
-
-- (void)testAddingSourceOfTypeABeforeSourceOfTypeBWithSameIdentifier {
- // Add a raster tile source
- MGLRasterTileSource *rasterTileSource = [[MGLRasterTileSource alloc] initWithIdentifier:@"some-identifier" tileURLTemplates:@[] options:nil];
- [self.style addSource:rasterTileSource];
-
- // Attempt to remove an image source with the same identifier as the raster tile source
- MGLImageSource *imageSource = [[MGLImageSource alloc] initWithIdentifier:@"some-identifier" coordinateQuad: { } URL:[NSURL URLWithString:@"http://host/image.png"]];
- [self.style removeSource:imageSource];
- // The raster tile source should still be added
- XCTAssertTrue([[self.style sourceWithIdentifier:rasterTileSource.identifier] isMemberOfClass:[MGLRasterTileSource class]]);
-
- // Remove the raster tile source
- [self.style removeSource:rasterTileSource];
-
- // Add the shape source
- [self.style addSource:imageSource];
-
- // Attempt to remove a vector tile source with the same identifer as the shape source
- MGLVectorTileSource *vectorTileSource = [[MGLVectorTileSource alloc] initWithIdentifier:@"some-identifier" tileURLTemplates:@[] options:nil];
- [self.style removeSource:vectorTileSource];
- // The image source should still be added
- XCTAssertTrue([[self.style sourceWithIdentifier:imageSource.identifier] isMemberOfClass:[MGLImageSource class]]);
-
- // Remove the image source
- [self.style removeSource:imageSource];
-
- // Add the vector tile source
- [self.style addSource:vectorTileSource];
-
- // Attempt to remove the previously created raster tile source that has the same identifer as the shape source
- [self.style removeSource:rasterTileSource];
- // The vector tile source should still be added
- XCTAssertTrue([[self.style sourceWithIdentifier:imageSource.identifier] isMemberOfClass:[MGLVectorTileSource class]]);
-}
-
-- (void)testRemovingSourceInUse {
- // Add a raster tile source
- MGLVectorTileSource *vectorTileSource = [[MGLVectorTileSource alloc] initWithIdentifier:@"some-identifier" tileURLTemplates:@[] options:nil];
- [self.style addSource:vectorTileSource];
-
- // Add a layer using it
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"fillLayer" source:vectorTileSource];
- [self.style addLayer:fillLayer];
-
- // Attempt to remove the raster tile source
- NSError *error;
- BOOL result = [self.style removeSource:vectorTileSource error:&error];
-
- XCTAssertFalse(result);
- XCTAssertEqualObjects(error.domain, MGLErrorDomain);
- XCTAssertEqual(error.code, MGLErrorCodeSourceIsInUseCannotRemove);
-
- // Ensure it is still there
- XCTAssertTrue([[self.style sourceWithIdentifier:vectorTileSource.identifier] isMemberOfClass:[MGLVectorTileSource class]]);
-}
-
-- (void)testLayers {
- NSArray<MGLStyleLayer *> *initialLayers = self.style.layers;
- if ([initialLayers.firstObject.identifier isEqualToString:@"com.mapbox.annotations.points"]) {
- XCTAssertEqual(self.style.layers.count, 1UL);
- } else {
- XCTAssertEqual(self.style.layers.count, 0UL);
- }
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"shapeSource" shape:nil options:nil];
- [self.style addSource:shapeSource];
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"fillLayer" source:shapeSource];
- [self.style addLayer:fillLayer];
- XCTAssertEqual(self.style.layers.count, initialLayers.count + 1);
- XCTAssertEqual(fillLayer, [self.style layerWithIdentifier:@"fillLayer"]);
- [self.style removeLayer:fillLayer];
- XCTAssertEqual(self.style.layers.count, initialLayers.count);
-}
-
-- (void)testAddingLayersTwice {
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"shapeSource" shape:nil options:nil];
-
- MGLBackgroundStyleLayer *backgroundLayer = [[MGLBackgroundStyleLayer alloc] initWithIdentifier:@"backgroundLayer"];
- [self.style addLayer:backgroundLayer];
- XCTAssertThrowsSpecificNamed([self.style addLayer:backgroundLayer], NSException, MGLRedundantLayerException);
-
- MGLCircleStyleLayer *circleLayer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"circleLayer" source:source];
- [self.style addLayer:circleLayer];
- XCTAssertThrowsSpecificNamed([self.style addLayer:circleLayer], NSException, MGLRedundantLayerException);
-
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"fillLayer" source:source];
- [self.style addLayer:fillLayer];
- XCTAssertThrowsSpecificNamed([self.style addLayer:fillLayer], NSException, MGLRedundantLayerException);
-
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"lineLayer" source:source];
- [self.style addLayer:lineLayer];
- XCTAssertThrowsSpecificNamed([self.style addLayer:lineLayer], NSException, MGLRedundantLayerException);
-
- MGLRasterStyleLayer *rasterLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"rasterLayer" source:source];
- [self.style addLayer:rasterLayer];
- XCTAssertThrowsSpecificNamed([self.style addLayer:rasterLayer], NSException, MGLRedundantLayerException);
-
- MGLSymbolStyleLayer *symbolLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"symbolLayer" source:source];
- [self.style addLayer:symbolLayer];
- XCTAssertThrowsSpecificNamed([self.style addLayer:symbolLayer], NSException, MGLRedundantLayerException);
-}
-
-- (void)testAddingLayersWithDuplicateIdentifiers {
- // Just some source
- MGLVectorTileSource *source = [[MGLVectorTileSource alloc] initWithIdentifier:@"my-source" configurationURL:[NSURL URLWithString:@"mapbox://mapbox.mapbox-terrain-v2"]];
- [self.style addSource: source];
-
- // Add initial layer
- MGLFillStyleLayer *initial = [[MGLFillStyleLayer alloc] initWithIdentifier:@"my-layer" source:source];
- [self.style addLayer:initial];
-
- // Try to add the duplicate
- XCTAssertThrowsSpecificNamed([self.style addLayer:[[MGLFillStyleLayer alloc] initWithIdentifier:@"my-layer" source:source]], NSException, @"MGLRedundantLayerIdentifierException");
- XCTAssertThrowsSpecificNamed([self.style insertLayer:[[MGLFillStyleLayer alloc] initWithIdentifier:@"my-layer" source:source] belowLayer:initial],NSException, @"MGLRedundantLayerIdentifierException");
- XCTAssertThrowsSpecificNamed([self.style insertLayer:[[MGLFillStyleLayer alloc] initWithIdentifier:@"my-layer" source:source] aboveLayer:initial], NSException, @"MGLRedundantLayerIdentifierException");
- XCTAssertThrowsSpecificNamed([self.style insertLayer:[[MGLFillStyleLayer alloc] initWithIdentifier:@"my-layer" source:source] atIndex:0], NSException, @"MGLRedundantLayerIdentifierException");
- XCTAssertThrowsSpecificNamed([self.style insertLayer:[[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"my-layer"] atIndex:0], NSException, @"MGLRedundantLayerIdentifierException");
-}
-
-- (void)testRemovingLayerBeforeAddingSameLayer {
- {
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"shape-source-removing-before-adding" shape:nil options:nil];
-
- // Attempting to find a layer with identifier will trigger an exception if the source associated with the layer is not added
- [self.style addSource:source];
-
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"fill-layer" source:source];
- [self.style removeLayer:fillLayer];
- [self.style addLayer:fillLayer];
- XCTAssertNotNil([self.style layerWithIdentifier:fillLayer.identifier]);
-
- MGLSymbolStyleLayer *symbolLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"symbol-layer" source:source];
- [self.style removeLayer:symbolLayer];
- [self.style addLayer:symbolLayer];
- XCTAssertNotNil([self.style layerWithIdentifier:symbolLayer.identifier]);
-
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"line-layer" source:source];
- [self.style removeLayer:lineLayer];
- [self.style addLayer:lineLayer];
- XCTAssertNotNil([self.style layerWithIdentifier:lineLayer.identifier]);
-
- MGLCircleStyleLayer *circleLayer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"circle-layer" source:source];
- [self.style removeLayer:circleLayer];
- [self.style addLayer:circleLayer];
- XCTAssertNotNil([self.style layerWithIdentifier:circleLayer.identifier]);
-
- MGLBackgroundStyleLayer *backgroundLayer = [[MGLBackgroundStyleLayer alloc] initWithIdentifier:@"background-layer"];
- [self.style removeLayer:backgroundLayer];
- [self.style addLayer:backgroundLayer];
- XCTAssertNotNil([self.style layerWithIdentifier:backgroundLayer.identifier]);
- }
-
- {
- MGLRasterTileSource *rasterSource = [[MGLRasterTileSource alloc] initWithIdentifier:@"raster-tile-source" tileURLTemplates:@[] options:nil];
- [self.style addSource:rasterSource];
-
- MGLRasterStyleLayer *rasterLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"raster-layer" source:rasterSource];
- [self.style removeLayer:rasterLayer];
- [self.style addLayer:rasterLayer];
- XCTAssertNotNil([self.style layerWithIdentifier:rasterLayer.identifier]);
- }
-}
-
-- (void)testAddingLayerOfTypeABeforeRemovingLayerOfTypeBWithSameIdentifier {
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"shape-source-identifier" shape:nil options:nil];
- [self.style addSource:source];
-
- // Add a fill layer
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"some-identifier" source:source];
- [self.style addLayer:fillLayer];
-
- // Attempt to remove a line layer with the same identifier as the fill layer
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:fillLayer.identifier source:source];
- [self.style removeLayer:lineLayer];
-
- XCTAssertTrue([[self.style layerWithIdentifier:fillLayer.identifier] isMemberOfClass:[MGLFillStyleLayer class]]);
-}
-
-- (NSString *)stringWithContentsOfStyleHeader {
- NSURL *styleHeaderURL = [[[NSBundle mgl_frameworkBundle].bundleURL
- URLByAppendingPathComponent:@"Headers" isDirectory:YES]
- URLByAppendingPathComponent:@"MGLStyle.h"];
- NSError *styleHeaderError;
- NSString *styleHeader = [NSString stringWithContentsOfURL:styleHeaderURL usedEncoding:nil error:&styleHeaderError];
- XCTAssertNil(styleHeaderError, @"Error getting contents of MGLStyle.h.");
- return styleHeader;
-}
-
-- (void)testImages {
- NSString *imageName = @"TrackingLocationMask";
-#if TARGET_OS_IPHONE
- MGLImage *image = [MGLImage imageNamed:imageName
- inBundle:[NSBundle bundleForClass:[self class]]
- compatibleWithTraitCollection:nil];
-#else
- MGLImage *image = [[NSBundle bundleForClass:[self class]] imageForResource:imageName];
-#endif
- XCTAssertNotNil(image);
-
- [self.style setImage:image forName:imageName];
- MGLImage *styleImage = [self.style imageForName:imageName];
-
- XCTAssertNotNil(styleImage);
- XCTAssertEqual(image.size.width, styleImage.size.width);
- XCTAssertEqual(image.size.height, styleImage.size.height);
-}
-
-- (void)testLayersOrder {
- NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"amsterdam" ofType:@"geojson"];
- NSURL *url = [NSURL fileURLWithPath:filePath];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" URL:url options:nil];
- [self.style addSource:source];
-
- MGLCircleStyleLayer *layer1 = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"layer1" source:source];
- [self.style addLayer:layer1];
-
- MGLCircleStyleLayer *layer3 = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"layer3" source:source];
- [self.style addLayer:layer3];
-
- MGLCircleStyleLayer *layer2 = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"layer2" source:source];
- [self.style insertLayer:layer2 aboveLayer:layer1];
-
- MGLCircleStyleLayer *layer4 = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"layer4" source:source];
- [self.style insertLayer:layer4 aboveLayer:layer3];
-
- MGLCircleStyleLayer *layer0 = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"layer0" source:source];
- [self.style insertLayer:layer0 belowLayer:layer1];
-
- NSArray<MGLStyleLayer *> *layers = [self.style layers];
- NSUInteger startIndex = 0;
- if ([layers.firstObject.identifier isEqualToString:@"com.mapbox.annotations.points"]) {
- startIndex++;
- }
-
- XCTAssertEqualObjects(layers[startIndex++].identifier, layer0.identifier);
- XCTAssertEqualObjects(layers[startIndex++].identifier, layer1.identifier);
- XCTAssertEqualObjects(layers[startIndex++].identifier, layer2.identifier);
- XCTAssertEqualObjects(layers[startIndex++].identifier, layer3.identifier);
- XCTAssertEqualObjects(layers[startIndex++].identifier, layer4.identifier);
-}
-
-#pragma mark Localization tests
-
-- (void)testLanguageMatching {
- {
- NSArray *preferences = @[@"en"];
- XCTAssertEqualObjects([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences], @"en");
- }
- {
- NSArray *preferences = @[@"en-US"];
- XCTAssertEqualObjects([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences], @"en");
- }
- {
- NSArray *preferences = @[@"fr"];
- XCTAssertEqualObjects([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences], @"fr");
- }
- {
- NSArray *preferences = @[@"zh-Hans"];
- XCTAssertEqualObjects([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences], @"zh-Hans");
- }
- {
- NSArray *preferences = @[@"zh-Hans", @"en"];
- XCTAssertEqualObjects([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences], @"zh-Hans");
- }
- {
- NSArray *preferences = @[@"zh-Hant"];
- XCTAssertNil([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences]);
- }
- {
- NSArray *preferences = @[@"en", @"fr", @"el"];
- XCTAssertEqualObjects([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences], @"en");
- }
- {
- NSArray *preferences = @[@"tlh"];
- XCTAssertNil([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences]);
- }
- {
- NSArray *preferences = @[@"tlh", @"en"];
- XCTAssertEqualObjects([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences], @"en");
- }
- {
- NSArray *preferences = @[@"mul"];
- XCTAssertNil([MGLVectorTileSource preferredMapboxStreetsLanguageForPreferences:preferences]);
- }
-}
-
-#pragma mark Transition tests
-
-- (void)testTransition
-{
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
- self.style.transition = transitionTest;
-
- XCTAssert(self.style.transition.delay == transitionTest.delay);
- XCTAssert(self.style.transition.duration == transitionTest.duration);
-}
-
-- (void)testPerformsPlacementTransitions
-{
- XCTAssertTrue(self.style.performsPlacementTransitions, @"The default value for enabling placement transitions should be YES.");
-
- self.style.performsPlacementTransitions = NO;
- XCTAssertFalse(self.style.performsPlacementTransitions, @"Enabling placement transitions should be NO.");
-}
-
-@end
diff --git a/platform/darwin/test/MGLSymbolStyleLayerTests.mm b/platform/darwin/test/MGLSymbolStyleLayerTests.mm
deleted file mode 100644
index 04ef3fc712..0000000000
--- a/platform/darwin/test/MGLSymbolStyleLayerTests.mm
+++ /dev/null
@@ -1,3204 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-#include "../../darwin/src/MGLAttributedExpression.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/symbol_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/style/expression/dsl.hpp>
-
-@interface MGLSymbolLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLSymbolLayerTests
-
-+ (NSString *)layerType {
- return @"symbol";
-}
-
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLSymbolStyleLayer *layer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithFormat:@"$featureIdentifier = 1"]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLSymbolStyleLayer *layer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertEqualObjects(@(layer.rawLayer->getTypeInfo()->type), @"symbol");
- auto rawLayer = static_cast<mbgl::style::SymbolLayer*>(layer.rawLayer);
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // icon-allow-overlap
- {
- XCTAssertTrue(rawLayer->getIconAllowOverlap().isUndefined(),
- @"icon-allow-overlap should be unset initially.");
- NSExpression *defaultExpression = layer.iconAllowsOverlap;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.iconAllowsOverlap = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getIconAllowOverlap(), propertyValue,
- @"Setting iconAllowsOverlap to a constant value expression should update icon-allow-overlap.");
- XCTAssertEqualObjects(layer.iconAllowsOverlap, constantExpression,
- @"iconAllowsOverlap should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconAllowsOverlap = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconAllowOverlap(), propertyValue,
- @"Setting iconAllowsOverlap to a camera expression should update icon-allow-overlap.");
- XCTAssertEqualObjects(layer.iconAllowsOverlap, functionExpression,
- @"iconAllowsOverlap should round-trip camera expressions.");
-
-
- layer.iconAllowsOverlap = nil;
- XCTAssertTrue(rawLayer->getIconAllowOverlap().isUndefined(),
- @"Unsetting iconAllowsOverlap should return icon-allow-overlap to the default value.");
- XCTAssertEqualObjects(layer.iconAllowsOverlap, defaultExpression,
- @"iconAllowsOverlap should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconAllowsOverlap = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconAllowsOverlap = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-anchor
- {
- XCTAssertTrue(rawLayer->getIconAnchor().isUndefined(),
- @"icon-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.iconAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'bottom-right'"];
- layer.iconAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::SymbolAnchorType> propertyValue = { mbgl::style::SymbolAnchorType::BottomRight };
- XCTAssertEqual(rawLayer->getIconAnchor(), propertyValue,
- @"Setting iconAnchor to a constant value expression should update icon-anchor.");
- XCTAssertEqualObjects(layer.iconAnchor, constantExpression,
- @"iconAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'bottom-right'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::SymbolAnchorType>(
- step(zoom(), literal("bottom-right"), 18.0, literal("bottom-right"))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconAnchor(), propertyValue,
- @"Setting iconAnchor to a camera expression should update icon-anchor.");
- XCTAssertEqualObjects(layer.iconAnchor, functionExpression,
- @"iconAnchor should round-trip camera expressions.");
-
-
- layer.iconAnchor = nil;
- XCTAssertTrue(rawLayer->getIconAnchor().isUndefined(),
- @"Unsetting iconAnchor should return icon-anchor to the default value.");
- XCTAssertEqualObjects(layer.iconAnchor, defaultExpression,
- @"iconAnchor should return the default value after being unset.");
- }
-
- // icon-ignore-placement
- {
- XCTAssertTrue(rawLayer->getIconIgnorePlacement().isUndefined(),
- @"icon-ignore-placement should be unset initially.");
- NSExpression *defaultExpression = layer.iconIgnoresPlacement;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.iconIgnoresPlacement = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getIconIgnorePlacement(), propertyValue,
- @"Setting iconIgnoresPlacement to a constant value expression should update icon-ignore-placement.");
- XCTAssertEqualObjects(layer.iconIgnoresPlacement, constantExpression,
- @"iconIgnoresPlacement should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconIgnoresPlacement = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconIgnorePlacement(), propertyValue,
- @"Setting iconIgnoresPlacement to a camera expression should update icon-ignore-placement.");
- XCTAssertEqualObjects(layer.iconIgnoresPlacement, functionExpression,
- @"iconIgnoresPlacement should round-trip camera expressions.");
-
-
- layer.iconIgnoresPlacement = nil;
- XCTAssertTrue(rawLayer->getIconIgnorePlacement().isUndefined(),
- @"Unsetting iconIgnoresPlacement should return icon-ignore-placement to the default value.");
- XCTAssertEqualObjects(layer.iconIgnoresPlacement, defaultExpression,
- @"iconIgnoresPlacement should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconIgnoresPlacement = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconIgnoresPlacement = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-image
- {
- XCTAssertTrue(rawLayer->getIconImage().isUndefined(),
- @"icon-image should be unset initially.");
- NSExpression *defaultExpression = layer.iconImageName;
-
- NSExpression *constantExpression = [NSExpression expressionForConstantValue:@"Icon Image"];
- layer.iconImageName = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::expression::Image> propertyValue = { "Icon Image" };
- XCTAssertEqual(rawLayer->getIconImage(), propertyValue,
- @"Setting iconImageName to a constant value expression should update icon-image.");
- XCTAssertEqualObjects(layer.iconImageName, constantExpression,
- @"iconImageName should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('image', 'Icon Image')"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconImageName = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Image>(
- step(zoom(), image(literal("Icon Image")), 18.0, image(literal("Icon Image")))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconImage(), propertyValue,
- @"Setting iconImageName to a camera expression should update icon-image.");
- XCTAssertEqualObjects(layer.iconImageName, functionExpression,
- @"iconImageName should round-trip camera expressions.");
-
-
- layer.iconImageName = nil;
- XCTAssertTrue(rawLayer->getIconImage().isUndefined(),
- @"Unsetting iconImageName should return icon-image to the default value.");
- XCTAssertEqualObjects(layer.iconImageName, defaultExpression,
- @"iconImageName should return the default value after being unset.");
-
- // Tokens test
- layer.iconImageName = [NSExpression expressionForConstantValue:@"{token}"];
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Image>(
- image(toString(get(literal("token"))))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconImage(), propertyValue,
- @"Setting iconImageName to a constant string with tokens should convert to an expression.");
-
- NSExpression* tokenExpression = [NSExpression expressionWithFormat:@"MGL_FUNCTION('image', CAST(token, \"NSString\"))"];
- XCTAssertEqualObjects(layer.iconImageName, tokenExpression,
- @"Setting iconImageName to a constant string with tokens should convert to an expression.");
- }
-
- // icon-offset
- {
- XCTAssertTrue(rawLayer->getIconOffset().isUndefined(),
- @"icon-offset should be unset initially.");
- NSExpression *defaultExpression = layer.iconOffset;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.iconOffset = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getIconOffset(), propertyValue,
- @"Setting iconOffset to a constant value expression should update icon-offset.");
- XCTAssertEqualObjects(layer.iconOffset, constantExpression,
- @"iconOffset should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconOffset(), propertyValue,
- @"Setting iconOffset to a camera expression should update icon-offset.");
- XCTAssertEqualObjects(layer.iconOffset, functionExpression,
- @"iconOffset should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- interpolate(linear(), number(get("keyName")), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconOffset(), propertyValue,
- @"Setting iconOffset to a data expression should update icon-offset.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconOffset, pedanticFunctionExpression,
- @"iconOffset should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal({ 1, 1 })))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconOffset(), propertyValue,
- @"Setting iconOffset to a camera-data expression should update icon-offset.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconOffset, pedanticFunctionExpression,
- @"iconOffset should round-trip camera-data expressions.");
-
- layer.iconOffset = nil;
- XCTAssertTrue(rawLayer->getIconOffset().isUndefined(),
- @"Unsetting iconOffset should return icon-offset to the default value.");
- XCTAssertEqualObjects(layer.iconOffset, defaultExpression,
- @"iconOffset should return the default value after being unset.");
- }
-
- // icon-optional
- {
- XCTAssertTrue(rawLayer->getIconOptional().isUndefined(),
- @"icon-optional should be unset initially.");
- NSExpression *defaultExpression = layer.iconOptional;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.iconOptional = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getIconOptional(), propertyValue,
- @"Setting iconOptional to a constant value expression should update icon-optional.");
- XCTAssertEqualObjects(layer.iconOptional, constantExpression,
- @"iconOptional should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconOptional = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconOptional(), propertyValue,
- @"Setting iconOptional to a camera expression should update icon-optional.");
- XCTAssertEqualObjects(layer.iconOptional, functionExpression,
- @"iconOptional should round-trip camera expressions.");
-
-
- layer.iconOptional = nil;
- XCTAssertTrue(rawLayer->getIconOptional().isUndefined(),
- @"Unsetting iconOptional should return icon-optional to the default value.");
- XCTAssertEqualObjects(layer.iconOptional, defaultExpression,
- @"iconOptional should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconOptional = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconOptional = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-padding
- {
- XCTAssertTrue(rawLayer->getIconPadding().isUndefined(),
- @"icon-padding should be unset initially.");
- NSExpression *defaultExpression = layer.iconPadding;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.iconPadding = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getIconPadding(), propertyValue,
- @"Setting iconPadding to a constant value expression should update icon-padding.");
- XCTAssertEqualObjects(layer.iconPadding, constantExpression,
- @"iconPadding should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconPadding = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconPadding(), propertyValue,
- @"Setting iconPadding to a camera expression should update icon-padding.");
- XCTAssertEqualObjects(layer.iconPadding, functionExpression,
- @"iconPadding should round-trip camera expressions.");
-
-
- layer.iconPadding = nil;
- XCTAssertTrue(rawLayer->getIconPadding().isUndefined(),
- @"Unsetting iconPadding should return icon-padding to the default value.");
- XCTAssertEqualObjects(layer.iconPadding, defaultExpression,
- @"iconPadding should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconPadding = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconPadding = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-pitch-alignment
- {
- XCTAssertTrue(rawLayer->getIconPitchAlignment().isUndefined(),
- @"icon-pitch-alignment should be unset initially.");
- NSExpression *defaultExpression = layer.iconPitchAlignment;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- layer.iconPitchAlignment = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::AlignmentType> propertyValue = { mbgl::style::AlignmentType::Auto };
- XCTAssertEqual(rawLayer->getIconPitchAlignment(), propertyValue,
- @"Setting iconPitchAlignment to a constant value expression should update icon-pitch-alignment.");
- XCTAssertEqualObjects(layer.iconPitchAlignment, constantExpression,
- @"iconPitchAlignment should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconPitchAlignment = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::AlignmentType>(
- step(zoom(), literal("auto"), 18.0, literal("auto"))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconPitchAlignment(), propertyValue,
- @"Setting iconPitchAlignment to a camera expression should update icon-pitch-alignment.");
- XCTAssertEqualObjects(layer.iconPitchAlignment, functionExpression,
- @"iconPitchAlignment should round-trip camera expressions.");
-
-
- layer.iconPitchAlignment = nil;
- XCTAssertTrue(rawLayer->getIconPitchAlignment().isUndefined(),
- @"Unsetting iconPitchAlignment should return icon-pitch-alignment to the default value.");
- XCTAssertEqualObjects(layer.iconPitchAlignment, defaultExpression,
- @"iconPitchAlignment should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconPitchAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconPitchAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-rotate
- {
- XCTAssertTrue(rawLayer->getIconRotate().isUndefined(),
- @"icon-rotate should be unset initially.");
- NSExpression *defaultExpression = layer.iconRotation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.iconRotation = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getIconRotate(), propertyValue,
- @"Setting iconRotation to a constant value expression should update icon-rotate.");
- XCTAssertEqualObjects(layer.iconRotation, constantExpression,
- @"iconRotation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconRotation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconRotate(), propertyValue,
- @"Setting iconRotation to a camera expression should update icon-rotate.");
- XCTAssertEqualObjects(layer.iconRotation, functionExpression,
- @"iconRotation should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconRotation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconRotate(), propertyValue,
- @"Setting iconRotation to a data expression should update icon-rotate.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconRotation, pedanticFunctionExpression,
- @"iconRotation should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconRotation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconRotate(), propertyValue,
- @"Setting iconRotation to a camera-data expression should update icon-rotate.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconRotation, pedanticFunctionExpression,
- @"iconRotation should round-trip camera-data expressions.");
-
- layer.iconRotation = nil;
- XCTAssertTrue(rawLayer->getIconRotate().isUndefined(),
- @"Unsetting iconRotation should return icon-rotate to the default value.");
- XCTAssertEqualObjects(layer.iconRotation, defaultExpression,
- @"iconRotation should return the default value after being unset.");
- }
-
- // icon-rotation-alignment
- {
- XCTAssertTrue(rawLayer->getIconRotationAlignment().isUndefined(),
- @"icon-rotation-alignment should be unset initially.");
- NSExpression *defaultExpression = layer.iconRotationAlignment;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- layer.iconRotationAlignment = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::AlignmentType> propertyValue = { mbgl::style::AlignmentType::Auto };
- XCTAssertEqual(rawLayer->getIconRotationAlignment(), propertyValue,
- @"Setting iconRotationAlignment to a constant value expression should update icon-rotation-alignment.");
- XCTAssertEqualObjects(layer.iconRotationAlignment, constantExpression,
- @"iconRotationAlignment should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconRotationAlignment = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::AlignmentType>(
- step(zoom(), literal("auto"), 18.0, literal("auto"))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconRotationAlignment(), propertyValue,
- @"Setting iconRotationAlignment to a camera expression should update icon-rotation-alignment.");
- XCTAssertEqualObjects(layer.iconRotationAlignment, functionExpression,
- @"iconRotationAlignment should round-trip camera expressions.");
-
-
- layer.iconRotationAlignment = nil;
- XCTAssertTrue(rawLayer->getIconRotationAlignment().isUndefined(),
- @"Unsetting iconRotationAlignment should return icon-rotation-alignment to the default value.");
- XCTAssertEqualObjects(layer.iconRotationAlignment, defaultExpression,
- @"iconRotationAlignment should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconRotationAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconRotationAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-size
- {
- XCTAssertTrue(rawLayer->getIconSize().isUndefined(),
- @"icon-size should be unset initially.");
- NSExpression *defaultExpression = layer.iconScale;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.iconScale = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getIconSize(), propertyValue,
- @"Setting iconScale to a constant value expression should update icon-size.");
- XCTAssertEqualObjects(layer.iconScale, constantExpression,
- @"iconScale should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconScale = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconSize(), propertyValue,
- @"Setting iconScale to a camera expression should update icon-size.");
- XCTAssertEqualObjects(layer.iconScale, functionExpression,
- @"iconScale should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconScale = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconSize(), propertyValue,
- @"Setting iconScale to a data expression should update icon-size.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconScale, pedanticFunctionExpression,
- @"iconScale should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconScale = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconSize(), propertyValue,
- @"Setting iconScale to a camera-data expression should update icon-size.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconScale, pedanticFunctionExpression,
- @"iconScale should round-trip camera-data expressions.");
-
- layer.iconScale = nil;
- XCTAssertTrue(rawLayer->getIconSize().isUndefined(),
- @"Unsetting iconScale should return icon-size to the default value.");
- XCTAssertEqualObjects(layer.iconScale, defaultExpression,
- @"iconScale should return the default value after being unset.");
- }
-
- // icon-text-fit
- {
- XCTAssertTrue(rawLayer->getIconTextFit().isUndefined(),
- @"icon-text-fit should be unset initially.");
- NSExpression *defaultExpression = layer.iconTextFit;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'both'"];
- layer.iconTextFit = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::IconTextFitType> propertyValue = { mbgl::style::IconTextFitType::Both };
- XCTAssertEqual(rawLayer->getIconTextFit(), propertyValue,
- @"Setting iconTextFit to a constant value expression should update icon-text-fit.");
- XCTAssertEqualObjects(layer.iconTextFit, constantExpression,
- @"iconTextFit should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'both'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconTextFit = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::IconTextFitType>(
- step(zoom(), literal("both"), 18.0, literal("both"))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconTextFit(), propertyValue,
- @"Setting iconTextFit to a camera expression should update icon-text-fit.");
- XCTAssertEqualObjects(layer.iconTextFit, functionExpression,
- @"iconTextFit should round-trip camera expressions.");
-
-
- layer.iconTextFit = nil;
- XCTAssertTrue(rawLayer->getIconTextFit().isUndefined(),
- @"Unsetting iconTextFit should return icon-text-fit to the default value.");
- XCTAssertEqualObjects(layer.iconTextFit, defaultExpression,
- @"iconTextFit should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconTextFit = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconTextFit = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-text-fit-padding
- {
- XCTAssertTrue(rawLayer->getIconTextFitPadding().isUndefined(),
- @"icon-text-fit-padding should be unset initially.");
- NSExpression *defaultExpression = layer.iconTextFitPadding;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(1, 1, 1, 1)]
-#else
- [NSValue valueWithEdgeInsets:NSEdgeInsetsMake(1, 1, 1, 1)]
-#endif
- ];
- layer.iconTextFitPadding = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 4>> propertyValue = { { 1, 1, 1, 1 } };
- XCTAssertEqual(rawLayer->getIconTextFitPadding(), propertyValue,
- @"Setting iconTextFitPadding to a constant value expression should update icon-text-fit-padding.");
- XCTAssertEqualObjects(layer.iconTextFitPadding, constantExpression,
- @"iconTextFitPadding should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1, 1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconTextFitPadding = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 4>>(
- step(zoom(), literal({ 1, 1, 1, 1 }), 18.0, literal({ 1, 1, 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconTextFitPadding(), propertyValue,
- @"Setting iconTextFitPadding to a camera expression should update icon-text-fit-padding.");
- XCTAssertEqualObjects(layer.iconTextFitPadding, functionExpression,
- @"iconTextFitPadding should round-trip camera expressions.");
-
-
- layer.iconTextFitPadding = nil;
- XCTAssertTrue(rawLayer->getIconTextFitPadding().isUndefined(),
- @"Unsetting iconTextFitPadding should return icon-text-fit-padding to the default value.");
- XCTAssertEqualObjects(layer.iconTextFitPadding, defaultExpression,
- @"iconTextFitPadding should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconTextFitPadding = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconTextFitPadding = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-keep-upright
- {
- XCTAssertTrue(rawLayer->getIconKeepUpright().isUndefined(),
- @"icon-keep-upright should be unset initially.");
- NSExpression *defaultExpression = layer.keepsIconUpright;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.keepsIconUpright = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getIconKeepUpright(), propertyValue,
- @"Setting keepsIconUpright to a constant value expression should update icon-keep-upright.");
- XCTAssertEqualObjects(layer.keepsIconUpright, constantExpression,
- @"keepsIconUpright should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.keepsIconUpright = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconKeepUpright(), propertyValue,
- @"Setting keepsIconUpright to a camera expression should update icon-keep-upright.");
- XCTAssertEqualObjects(layer.keepsIconUpright, functionExpression,
- @"keepsIconUpright should round-trip camera expressions.");
-
-
- layer.keepsIconUpright = nil;
- XCTAssertTrue(rawLayer->getIconKeepUpright().isUndefined(),
- @"Unsetting keepsIconUpright should return icon-keep-upright to the default value.");
- XCTAssertEqualObjects(layer.keepsIconUpright, defaultExpression,
- @"keepsIconUpright should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.keepsIconUpright = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.keepsIconUpright = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-keep-upright
- {
- XCTAssertTrue(rawLayer->getTextKeepUpright().isUndefined(),
- @"text-keep-upright should be unset initially.");
- NSExpression *defaultExpression = layer.keepsTextUpright;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"false"];
- layer.keepsTextUpright = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { false };
- XCTAssertEqual(rawLayer->getTextKeepUpright(), propertyValue,
- @"Setting keepsTextUpright to a constant value expression should update text-keep-upright.");
- XCTAssertEqualObjects(layer.keepsTextUpright, constantExpression,
- @"keepsTextUpright should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"false"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.keepsTextUpright = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(false), 18.0, literal(false))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextKeepUpright(), propertyValue,
- @"Setting keepsTextUpright to a camera expression should update text-keep-upright.");
- XCTAssertEqualObjects(layer.keepsTextUpright, functionExpression,
- @"keepsTextUpright should round-trip camera expressions.");
-
-
- layer.keepsTextUpright = nil;
- XCTAssertTrue(rawLayer->getTextKeepUpright().isUndefined(),
- @"Unsetting keepsTextUpright should return text-keep-upright to the default value.");
- XCTAssertEqualObjects(layer.keepsTextUpright, defaultExpression,
- @"keepsTextUpright should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.keepsTextUpright = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.keepsTextUpright = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-max-angle
- {
- XCTAssertTrue(rawLayer->getTextMaxAngle().isUndefined(),
- @"text-max-angle should be unset initially.");
- NSExpression *defaultExpression = layer.maximumTextAngle;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.maximumTextAngle = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextMaxAngle(), propertyValue,
- @"Setting maximumTextAngle to a constant value expression should update text-max-angle.");
- XCTAssertEqualObjects(layer.maximumTextAngle, constantExpression,
- @"maximumTextAngle should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.maximumTextAngle = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextMaxAngle(), propertyValue,
- @"Setting maximumTextAngle to a camera expression should update text-max-angle.");
- XCTAssertEqualObjects(layer.maximumTextAngle, functionExpression,
- @"maximumTextAngle should round-trip camera expressions.");
-
-
- layer.maximumTextAngle = nil;
- XCTAssertTrue(rawLayer->getTextMaxAngle().isUndefined(),
- @"Unsetting maximumTextAngle should return text-max-angle to the default value.");
- XCTAssertEqualObjects(layer.maximumTextAngle, defaultExpression,
- @"maximumTextAngle should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.maximumTextAngle = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.maximumTextAngle = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-max-width
- {
- XCTAssertTrue(rawLayer->getTextMaxWidth().isUndefined(),
- @"text-max-width should be unset initially.");
- NSExpression *defaultExpression = layer.maximumTextWidth;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.maximumTextWidth = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextMaxWidth(), propertyValue,
- @"Setting maximumTextWidth to a constant value expression should update text-max-width.");
- XCTAssertEqualObjects(layer.maximumTextWidth, constantExpression,
- @"maximumTextWidth should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.maximumTextWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextMaxWidth(), propertyValue,
- @"Setting maximumTextWidth to a camera expression should update text-max-width.");
- XCTAssertEqualObjects(layer.maximumTextWidth, functionExpression,
- @"maximumTextWidth should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.maximumTextWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextMaxWidth(), propertyValue,
- @"Setting maximumTextWidth to a data expression should update text-max-width.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.maximumTextWidth, pedanticFunctionExpression,
- @"maximumTextWidth should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.maximumTextWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextMaxWidth(), propertyValue,
- @"Setting maximumTextWidth to a camera-data expression should update text-max-width.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.maximumTextWidth, pedanticFunctionExpression,
- @"maximumTextWidth should round-trip camera-data expressions.");
-
- layer.maximumTextWidth = nil;
- XCTAssertTrue(rawLayer->getTextMaxWidth().isUndefined(),
- @"Unsetting maximumTextWidth should return text-max-width to the default value.");
- XCTAssertEqualObjects(layer.maximumTextWidth, defaultExpression,
- @"maximumTextWidth should return the default value after being unset.");
- }
-
- // symbol-avoid-edges
- {
- XCTAssertTrue(rawLayer->getSymbolAvoidEdges().isUndefined(),
- @"symbol-avoid-edges should be unset initially.");
- NSExpression *defaultExpression = layer.symbolAvoidsEdges;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.symbolAvoidsEdges = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getSymbolAvoidEdges(), propertyValue,
- @"Setting symbolAvoidsEdges to a constant value expression should update symbol-avoid-edges.");
- XCTAssertEqualObjects(layer.symbolAvoidsEdges, constantExpression,
- @"symbolAvoidsEdges should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.symbolAvoidsEdges = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getSymbolAvoidEdges(), propertyValue,
- @"Setting symbolAvoidsEdges to a camera expression should update symbol-avoid-edges.");
- XCTAssertEqualObjects(layer.symbolAvoidsEdges, functionExpression,
- @"symbolAvoidsEdges should round-trip camera expressions.");
-
-
- layer.symbolAvoidsEdges = nil;
- XCTAssertTrue(rawLayer->getSymbolAvoidEdges().isUndefined(),
- @"Unsetting symbolAvoidsEdges should return symbol-avoid-edges to the default value.");
- XCTAssertEqualObjects(layer.symbolAvoidsEdges, defaultExpression,
- @"symbolAvoidsEdges should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.symbolAvoidsEdges = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.symbolAvoidsEdges = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // symbol-placement
- {
- XCTAssertTrue(rawLayer->getSymbolPlacement().isUndefined(),
- @"symbol-placement should be unset initially.");
- NSExpression *defaultExpression = layer.symbolPlacement;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'line-center'"];
- layer.symbolPlacement = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::SymbolPlacementType> propertyValue = { mbgl::style::SymbolPlacementType::LineCenter };
- XCTAssertEqual(rawLayer->getSymbolPlacement(), propertyValue,
- @"Setting symbolPlacement to a constant value expression should update symbol-placement.");
- XCTAssertEqualObjects(layer.symbolPlacement, constantExpression,
- @"symbolPlacement should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'line-center'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.symbolPlacement = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::SymbolPlacementType>(
- step(zoom(), literal("line-center"), 18.0, literal("line-center"))
- );
- }
-
- XCTAssertEqual(rawLayer->getSymbolPlacement(), propertyValue,
- @"Setting symbolPlacement to a camera expression should update symbol-placement.");
- XCTAssertEqualObjects(layer.symbolPlacement, functionExpression,
- @"symbolPlacement should round-trip camera expressions.");
-
-
- layer.symbolPlacement = nil;
- XCTAssertTrue(rawLayer->getSymbolPlacement().isUndefined(),
- @"Unsetting symbolPlacement should return symbol-placement to the default value.");
- XCTAssertEqualObjects(layer.symbolPlacement, defaultExpression,
- @"symbolPlacement should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.symbolPlacement = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.symbolPlacement = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // symbol-sort-key
- {
- XCTAssertTrue(rawLayer->getSymbolSortKey().isUndefined(),
- @"symbol-sort-key should be unset initially.");
- NSExpression *defaultExpression = layer.symbolSortKey;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.symbolSortKey = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getSymbolSortKey(), propertyValue,
- @"Setting symbolSortKey to a constant value expression should update symbol-sort-key.");
- XCTAssertEqualObjects(layer.symbolSortKey, constantExpression,
- @"symbolSortKey should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.symbolSortKey = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getSymbolSortKey(), propertyValue,
- @"Setting symbolSortKey to a camera expression should update symbol-sort-key.");
- XCTAssertEqualObjects(layer.symbolSortKey, functionExpression,
- @"symbolSortKey should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.symbolSortKey = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getSymbolSortKey(), propertyValue,
- @"Setting symbolSortKey to a data expression should update symbol-sort-key.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.symbolSortKey, pedanticFunctionExpression,
- @"symbolSortKey should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.symbolSortKey = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getSymbolSortKey(), propertyValue,
- @"Setting symbolSortKey to a camera-data expression should update symbol-sort-key.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.symbolSortKey, pedanticFunctionExpression,
- @"symbolSortKey should round-trip camera-data expressions.");
-
- layer.symbolSortKey = nil;
- XCTAssertTrue(rawLayer->getSymbolSortKey().isUndefined(),
- @"Unsetting symbolSortKey should return symbol-sort-key to the default value.");
- XCTAssertEqualObjects(layer.symbolSortKey, defaultExpression,
- @"symbolSortKey should return the default value after being unset.");
- }
-
- // symbol-spacing
- {
- XCTAssertTrue(rawLayer->getSymbolSpacing().isUndefined(),
- @"symbol-spacing should be unset initially.");
- NSExpression *defaultExpression = layer.symbolSpacing;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.symbolSpacing = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getSymbolSpacing(), propertyValue,
- @"Setting symbolSpacing to a constant value expression should update symbol-spacing.");
- XCTAssertEqualObjects(layer.symbolSpacing, constantExpression,
- @"symbolSpacing should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.symbolSpacing = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getSymbolSpacing(), propertyValue,
- @"Setting symbolSpacing to a camera expression should update symbol-spacing.");
- XCTAssertEqualObjects(layer.symbolSpacing, functionExpression,
- @"symbolSpacing should round-trip camera expressions.");
-
-
- layer.symbolSpacing = nil;
- XCTAssertTrue(rawLayer->getSymbolSpacing().isUndefined(),
- @"Unsetting symbolSpacing should return symbol-spacing to the default value.");
- XCTAssertEqualObjects(layer.symbolSpacing, defaultExpression,
- @"symbolSpacing should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.symbolSpacing = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.symbolSpacing = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // symbol-z-order
- {
- XCTAssertTrue(rawLayer->getSymbolZOrder().isUndefined(),
- @"symbol-z-order should be unset initially.");
- NSExpression *defaultExpression = layer.symbolZOrder;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'source'"];
- layer.symbolZOrder = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::SymbolZOrderType> propertyValue = { mbgl::style::SymbolZOrderType::Source };
- XCTAssertEqual(rawLayer->getSymbolZOrder(), propertyValue,
- @"Setting symbolZOrder to a constant value expression should update symbol-z-order.");
- XCTAssertEqualObjects(layer.symbolZOrder, constantExpression,
- @"symbolZOrder should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'source'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.symbolZOrder = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::SymbolZOrderType>(
- step(zoom(), literal("source"), 18.0, literal("source"))
- );
- }
-
- XCTAssertEqual(rawLayer->getSymbolZOrder(), propertyValue,
- @"Setting symbolZOrder to a camera expression should update symbol-z-order.");
- XCTAssertEqualObjects(layer.symbolZOrder, functionExpression,
- @"symbolZOrder should round-trip camera expressions.");
-
-
- layer.symbolZOrder = nil;
- XCTAssertTrue(rawLayer->getSymbolZOrder().isUndefined(),
- @"Unsetting symbolZOrder should return symbol-z-order to the default value.");
- XCTAssertEqualObjects(layer.symbolZOrder, defaultExpression,
- @"symbolZOrder should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.symbolZOrder = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.symbolZOrder = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-field
- {
- XCTAssertTrue(rawLayer->getTextField().isUndefined(),
- @"text-field should be unset initially.");
- NSExpression *defaultExpression = layer.text;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'Text Field'"];
- layer.text = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::expression::Formatted> propertyValue = { "Text Field" };
- XCTAssertEqual(rawLayer->getTextField(), propertyValue,
- @"Setting text to a constant value expression should update text-field.");
- XCTAssertEqualObjects(layer.text, constantExpression,
- @"text should round-trip constant value expressions.");
-
- MGLAttributedExpression *attributedConstantExpression = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionWithFormat:@"'Text Field'"]
- attributes:@{}];
- constantExpression = [NSExpression mgl_expressionForAttributedExpressions:@[[NSExpression expressionForConstantValue:attributedConstantExpression]]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.text = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Formatted>(
- step(zoom(), format("Text Field"), 18.0, format("Text Field"))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextField(), propertyValue,
- @"Setting text to a camera expression should update text-field.");
- XCTAssertEqualObjects(layer.text, functionExpression,
- @"text should round-trip camera expressions.");
-
-
- layer.text = nil;
- XCTAssertTrue(rawLayer->getTextField().isUndefined(),
- @"Unsetting text should return text-field to the default value.");
- XCTAssertEqualObjects(layer.text, defaultExpression,
- @"text should return the default value after being unset.");
-
- // Tokens test
- layer.text = [NSExpression expressionForConstantValue:@"{token}"];
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::expression::Formatted>(
- format(toString(get(literal("token"))))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextField(), propertyValue,
- @"Setting text to a constant string with tokens should convert to an expression.");
-
- MGLAttributedExpression *tokenAttibutedExpression = [[MGLAttributedExpression alloc] initWithExpression:[NSExpression expressionWithFormat:@"CAST(token, 'NSString')"]
- attributes:@{}];
- NSExpression* tokenExpression = [NSExpression mgl_expressionForAttributedExpressions:@[[NSExpression expressionForConstantValue:tokenAttibutedExpression]]];
- XCTAssertEqualObjects(layer.text, tokenExpression,
- @"Setting text to a constant string with tokens should convert to an expression.");
- }
-
- // text-allow-overlap
- {
- XCTAssertTrue(rawLayer->getTextAllowOverlap().isUndefined(),
- @"text-allow-overlap should be unset initially.");
- NSExpression *defaultExpression = layer.textAllowsOverlap;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.textAllowsOverlap = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getTextAllowOverlap(), propertyValue,
- @"Setting textAllowsOverlap to a constant value expression should update text-allow-overlap.");
- XCTAssertEqualObjects(layer.textAllowsOverlap, constantExpression,
- @"textAllowsOverlap should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textAllowsOverlap = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextAllowOverlap(), propertyValue,
- @"Setting textAllowsOverlap to a camera expression should update text-allow-overlap.");
- XCTAssertEqualObjects(layer.textAllowsOverlap, functionExpression,
- @"textAllowsOverlap should round-trip camera expressions.");
-
-
- layer.textAllowsOverlap = nil;
- XCTAssertTrue(rawLayer->getTextAllowOverlap().isUndefined(),
- @"Unsetting textAllowsOverlap should return text-allow-overlap to the default value.");
- XCTAssertEqualObjects(layer.textAllowsOverlap, defaultExpression,
- @"textAllowsOverlap should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textAllowsOverlap = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textAllowsOverlap = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-anchor
- {
- XCTAssertTrue(rawLayer->getTextAnchor().isUndefined(),
- @"text-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.textAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'bottom-right'"];
- layer.textAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::SymbolAnchorType> propertyValue = { mbgl::style::SymbolAnchorType::BottomRight };
- XCTAssertEqual(rawLayer->getTextAnchor(), propertyValue,
- @"Setting textAnchor to a constant value expression should update text-anchor.");
- XCTAssertEqualObjects(layer.textAnchor, constantExpression,
- @"textAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'bottom-right'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::SymbolAnchorType>(
- step(zoom(), literal("bottom-right"), 18.0, literal("bottom-right"))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextAnchor(), propertyValue,
- @"Setting textAnchor to a camera expression should update text-anchor.");
- XCTAssertEqualObjects(layer.textAnchor, functionExpression,
- @"textAnchor should round-trip camera expressions.");
-
-
- layer.textAnchor = nil;
- XCTAssertTrue(rawLayer->getTextAnchor().isUndefined(),
- @"Unsetting textAnchor should return text-anchor to the default value.");
- XCTAssertEqualObjects(layer.textAnchor, defaultExpression,
- @"textAnchor should return the default value after being unset.");
- }
-
- // text-font
- {
- XCTAssertTrue(rawLayer->getTextFont().isUndefined(),
- @"text-font should be unset initially.");
- NSExpression *defaultExpression = layer.textFontNames;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"{'Text Font', 'Tnof Txet'}"];
- layer.textFontNames = constantExpression;
- mbgl::style::PropertyValue<std::vector<std::string>> propertyValue = { { "Text Font", "Tnof Txet" } };
- XCTAssertEqual(rawLayer->getTextFont(), propertyValue,
- @"Setting textFontNames to a constant value expression should update text-font.");
- XCTAssertEqualObjects(layer.textFontNames, constantExpression,
- @"textFontNames should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{'Text Font', 'Tnof Txet'}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textFontNames = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::vector<std::string>>(
- step(zoom(), literal({ "Text Font", "Tnof Txet" }), 18.0, literal({ "Text Font", "Tnof Txet" }))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextFont(), propertyValue,
- @"Setting textFontNames to a camera expression should update text-font.");
- XCTAssertEqualObjects(layer.textFontNames, functionExpression,
- @"textFontNames should round-trip camera expressions.");
-
-
- layer.textFontNames = nil;
- XCTAssertTrue(rawLayer->getTextFont().isUndefined(),
- @"Unsetting textFontNames should return text-font to the default value.");
- XCTAssertEqualObjects(layer.textFontNames, defaultExpression,
- @"textFontNames should return the default value after being unset.");
- }
-
- // text-size
- {
- XCTAssertTrue(rawLayer->getTextSize().isUndefined(),
- @"text-size should be unset initially.");
- NSExpression *defaultExpression = layer.textFontSize;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textFontSize = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextSize(), propertyValue,
- @"Setting textFontSize to a constant value expression should update text-size.");
- XCTAssertEqualObjects(layer.textFontSize, constantExpression,
- @"textFontSize should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textFontSize = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextSize(), propertyValue,
- @"Setting textFontSize to a camera expression should update text-size.");
- XCTAssertEqualObjects(layer.textFontSize, functionExpression,
- @"textFontSize should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textFontSize = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextSize(), propertyValue,
- @"Setting textFontSize to a data expression should update text-size.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textFontSize, pedanticFunctionExpression,
- @"textFontSize should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textFontSize = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextSize(), propertyValue,
- @"Setting textFontSize to a camera-data expression should update text-size.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textFontSize, pedanticFunctionExpression,
- @"textFontSize should round-trip camera-data expressions.");
-
- layer.textFontSize = nil;
- XCTAssertTrue(rawLayer->getTextSize().isUndefined(),
- @"Unsetting textFontSize should return text-size to the default value.");
- XCTAssertEqualObjects(layer.textFontSize, defaultExpression,
- @"textFontSize should return the default value after being unset.");
- }
-
- // text-ignore-placement
- {
- XCTAssertTrue(rawLayer->getTextIgnorePlacement().isUndefined(),
- @"text-ignore-placement should be unset initially.");
- NSExpression *defaultExpression = layer.textIgnoresPlacement;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.textIgnoresPlacement = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getTextIgnorePlacement(), propertyValue,
- @"Setting textIgnoresPlacement to a constant value expression should update text-ignore-placement.");
- XCTAssertEqualObjects(layer.textIgnoresPlacement, constantExpression,
- @"textIgnoresPlacement should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textIgnoresPlacement = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextIgnorePlacement(), propertyValue,
- @"Setting textIgnoresPlacement to a camera expression should update text-ignore-placement.");
- XCTAssertEqualObjects(layer.textIgnoresPlacement, functionExpression,
- @"textIgnoresPlacement should round-trip camera expressions.");
-
-
- layer.textIgnoresPlacement = nil;
- XCTAssertTrue(rawLayer->getTextIgnorePlacement().isUndefined(),
- @"Unsetting textIgnoresPlacement should return text-ignore-placement to the default value.");
- XCTAssertEqualObjects(layer.textIgnoresPlacement, defaultExpression,
- @"textIgnoresPlacement should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textIgnoresPlacement = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textIgnoresPlacement = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-justify
- {
- XCTAssertTrue(rawLayer->getTextJustify().isUndefined(),
- @"text-justify should be unset initially.");
- NSExpression *defaultExpression = layer.textJustification;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'right'"];
- layer.textJustification = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TextJustifyType> propertyValue = { mbgl::style::TextJustifyType::Right };
- XCTAssertEqual(rawLayer->getTextJustify(), propertyValue,
- @"Setting textJustification to a constant value expression should update text-justify.");
- XCTAssertEqualObjects(layer.textJustification, constantExpression,
- @"textJustification should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'right'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textJustification = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TextJustifyType>(
- step(zoom(), literal("right"), 18.0, literal("right"))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextJustify(), propertyValue,
- @"Setting textJustification to a camera expression should update text-justify.");
- XCTAssertEqualObjects(layer.textJustification, functionExpression,
- @"textJustification should round-trip camera expressions.");
-
-
- layer.textJustification = nil;
- XCTAssertTrue(rawLayer->getTextJustify().isUndefined(),
- @"Unsetting textJustification should return text-justify to the default value.");
- XCTAssertEqualObjects(layer.textJustification, defaultExpression,
- @"textJustification should return the default value after being unset.");
- }
-
- // text-letter-spacing
- {
- XCTAssertTrue(rawLayer->getTextLetterSpacing().isUndefined(),
- @"text-letter-spacing should be unset initially.");
- NSExpression *defaultExpression = layer.textLetterSpacing;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textLetterSpacing = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextLetterSpacing(), propertyValue,
- @"Setting textLetterSpacing to a constant value expression should update text-letter-spacing.");
- XCTAssertEqualObjects(layer.textLetterSpacing, constantExpression,
- @"textLetterSpacing should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textLetterSpacing = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextLetterSpacing(), propertyValue,
- @"Setting textLetterSpacing to a camera expression should update text-letter-spacing.");
- XCTAssertEqualObjects(layer.textLetterSpacing, functionExpression,
- @"textLetterSpacing should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textLetterSpacing = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextLetterSpacing(), propertyValue,
- @"Setting textLetterSpacing to a data expression should update text-letter-spacing.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textLetterSpacing, pedanticFunctionExpression,
- @"textLetterSpacing should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textLetterSpacing = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextLetterSpacing(), propertyValue,
- @"Setting textLetterSpacing to a camera-data expression should update text-letter-spacing.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textLetterSpacing, pedanticFunctionExpression,
- @"textLetterSpacing should round-trip camera-data expressions.");
-
- layer.textLetterSpacing = nil;
- XCTAssertTrue(rawLayer->getTextLetterSpacing().isUndefined(),
- @"Unsetting textLetterSpacing should return text-letter-spacing to the default value.");
- XCTAssertEqualObjects(layer.textLetterSpacing, defaultExpression,
- @"textLetterSpacing should return the default value after being unset.");
- }
-
- // text-line-height
- {
- XCTAssertTrue(rawLayer->getTextLineHeight().isUndefined(),
- @"text-line-height should be unset initially.");
- NSExpression *defaultExpression = layer.textLineHeight;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textLineHeight = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextLineHeight(), propertyValue,
- @"Setting textLineHeight to a constant value expression should update text-line-height.");
- XCTAssertEqualObjects(layer.textLineHeight, constantExpression,
- @"textLineHeight should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textLineHeight = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextLineHeight(), propertyValue,
- @"Setting textLineHeight to a camera expression should update text-line-height.");
- XCTAssertEqualObjects(layer.textLineHeight, functionExpression,
- @"textLineHeight should round-trip camera expressions.");
-
-
- layer.textLineHeight = nil;
- XCTAssertTrue(rawLayer->getTextLineHeight().isUndefined(),
- @"Unsetting textLineHeight should return text-line-height to the default value.");
- XCTAssertEqualObjects(layer.textLineHeight, defaultExpression,
- @"textLineHeight should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textLineHeight = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textLineHeight = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-offset
- {
- XCTAssertTrue(rawLayer->getTextOffset().isUndefined(),
- @"text-offset should be unset initially.");
- NSExpression *defaultExpression = layer.textOffset;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.textOffset = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getTextOffset(), propertyValue,
- @"Setting textOffset to a constant value expression should update text-offset.");
- XCTAssertEqualObjects(layer.textOffset, constantExpression,
- @"textOffset should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextOffset(), propertyValue,
- @"Setting textOffset to a camera expression should update text-offset.");
- XCTAssertEqualObjects(layer.textOffset, functionExpression,
- @"textOffset should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- interpolate(linear(), number(get("keyName")), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextOffset(), propertyValue,
- @"Setting textOffset to a data expression should update text-offset.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textOffset, pedanticFunctionExpression,
- @"textOffset should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal({ 1, 1 })))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextOffset(), propertyValue,
- @"Setting textOffset to a camera-data expression should update text-offset.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textOffset, pedanticFunctionExpression,
- @"textOffset should round-trip camera-data expressions.");
-
- layer.textOffset = nil;
- XCTAssertTrue(rawLayer->getTextOffset().isUndefined(),
- @"Unsetting textOffset should return text-offset to the default value.");
- XCTAssertEqualObjects(layer.textOffset, defaultExpression,
- @"textOffset should return the default value after being unset.");
- }
-
- // text-optional
- {
- XCTAssertTrue(rawLayer->getTextOptional().isUndefined(),
- @"text-optional should be unset initially.");
- NSExpression *defaultExpression = layer.textOptional;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"true"];
- layer.textOptional = constantExpression;
- mbgl::style::PropertyValue<bool> propertyValue = { true };
- XCTAssertEqual(rawLayer->getTextOptional(), propertyValue,
- @"Setting textOptional to a constant value expression should update text-optional.");
- XCTAssertEqualObjects(layer.textOptional, constantExpression,
- @"textOptional should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"true"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textOptional = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<bool>(
- step(zoom(), literal(true), 18.0, literal(true))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextOptional(), propertyValue,
- @"Setting textOptional to a camera expression should update text-optional.");
- XCTAssertEqualObjects(layer.textOptional, functionExpression,
- @"textOptional should round-trip camera expressions.");
-
-
- layer.textOptional = nil;
- XCTAssertTrue(rawLayer->getTextOptional().isUndefined(),
- @"Unsetting textOptional should return text-optional to the default value.");
- XCTAssertEqualObjects(layer.textOptional, defaultExpression,
- @"textOptional should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textOptional = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textOptional = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-padding
- {
- XCTAssertTrue(rawLayer->getTextPadding().isUndefined(),
- @"text-padding should be unset initially.");
- NSExpression *defaultExpression = layer.textPadding;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textPadding = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextPadding(), propertyValue,
- @"Setting textPadding to a constant value expression should update text-padding.");
- XCTAssertEqualObjects(layer.textPadding, constantExpression,
- @"textPadding should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textPadding = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextPadding(), propertyValue,
- @"Setting textPadding to a camera expression should update text-padding.");
- XCTAssertEqualObjects(layer.textPadding, functionExpression,
- @"textPadding should round-trip camera expressions.");
-
-
- layer.textPadding = nil;
- XCTAssertTrue(rawLayer->getTextPadding().isUndefined(),
- @"Unsetting textPadding should return text-padding to the default value.");
- XCTAssertEqualObjects(layer.textPadding, defaultExpression,
- @"textPadding should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textPadding = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textPadding = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-pitch-alignment
- {
- XCTAssertTrue(rawLayer->getTextPitchAlignment().isUndefined(),
- @"text-pitch-alignment should be unset initially.");
- NSExpression *defaultExpression = layer.textPitchAlignment;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- layer.textPitchAlignment = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::AlignmentType> propertyValue = { mbgl::style::AlignmentType::Auto };
- XCTAssertEqual(rawLayer->getTextPitchAlignment(), propertyValue,
- @"Setting textPitchAlignment to a constant value expression should update text-pitch-alignment.");
- XCTAssertEqualObjects(layer.textPitchAlignment, constantExpression,
- @"textPitchAlignment should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textPitchAlignment = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::AlignmentType>(
- step(zoom(), literal("auto"), 18.0, literal("auto"))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextPitchAlignment(), propertyValue,
- @"Setting textPitchAlignment to a camera expression should update text-pitch-alignment.");
- XCTAssertEqualObjects(layer.textPitchAlignment, functionExpression,
- @"textPitchAlignment should round-trip camera expressions.");
-
-
- layer.textPitchAlignment = nil;
- XCTAssertTrue(rawLayer->getTextPitchAlignment().isUndefined(),
- @"Unsetting textPitchAlignment should return text-pitch-alignment to the default value.");
- XCTAssertEqualObjects(layer.textPitchAlignment, defaultExpression,
- @"textPitchAlignment should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textPitchAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textPitchAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-radial-offset
- {
- XCTAssertTrue(rawLayer->getTextRadialOffset().isUndefined(),
- @"text-radial-offset should be unset initially.");
- NSExpression *defaultExpression = layer.textRadialOffset;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textRadialOffset = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextRadialOffset(), propertyValue,
- @"Setting textRadialOffset to a constant value expression should update text-radial-offset.");
- XCTAssertEqualObjects(layer.textRadialOffset, constantExpression,
- @"textRadialOffset should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textRadialOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextRadialOffset(), propertyValue,
- @"Setting textRadialOffset to a camera expression should update text-radial-offset.");
- XCTAssertEqualObjects(layer.textRadialOffset, functionExpression,
- @"textRadialOffset should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textRadialOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextRadialOffset(), propertyValue,
- @"Setting textRadialOffset to a data expression should update text-radial-offset.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textRadialOffset, pedanticFunctionExpression,
- @"textRadialOffset should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textRadialOffset = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextRadialOffset(), propertyValue,
- @"Setting textRadialOffset to a camera-data expression should update text-radial-offset.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textRadialOffset, pedanticFunctionExpression,
- @"textRadialOffset should round-trip camera-data expressions.");
-
- layer.textRadialOffset = nil;
- XCTAssertTrue(rawLayer->getTextRadialOffset().isUndefined(),
- @"Unsetting textRadialOffset should return text-radial-offset to the default value.");
- XCTAssertEqualObjects(layer.textRadialOffset, defaultExpression,
- @"textRadialOffset should return the default value after being unset.");
- }
-
- // text-rotate
- {
- XCTAssertTrue(rawLayer->getTextRotate().isUndefined(),
- @"text-rotate should be unset initially.");
- NSExpression *defaultExpression = layer.textRotation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textRotation = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextRotate(), propertyValue,
- @"Setting textRotation to a constant value expression should update text-rotate.");
- XCTAssertEqualObjects(layer.textRotation, constantExpression,
- @"textRotation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textRotation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextRotate(), propertyValue,
- @"Setting textRotation to a camera expression should update text-rotate.");
- XCTAssertEqualObjects(layer.textRotation, functionExpression,
- @"textRotation should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textRotation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextRotate(), propertyValue,
- @"Setting textRotation to a data expression should update text-rotate.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textRotation, pedanticFunctionExpression,
- @"textRotation should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textRotation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextRotate(), propertyValue,
- @"Setting textRotation to a camera-data expression should update text-rotate.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textRotation, pedanticFunctionExpression,
- @"textRotation should round-trip camera-data expressions.");
-
- layer.textRotation = nil;
- XCTAssertTrue(rawLayer->getTextRotate().isUndefined(),
- @"Unsetting textRotation should return text-rotate to the default value.");
- XCTAssertEqualObjects(layer.textRotation, defaultExpression,
- @"textRotation should return the default value after being unset.");
- }
-
- // text-rotation-alignment
- {
- XCTAssertTrue(rawLayer->getTextRotationAlignment().isUndefined(),
- @"text-rotation-alignment should be unset initially.");
- NSExpression *defaultExpression = layer.textRotationAlignment;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- layer.textRotationAlignment = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::AlignmentType> propertyValue = { mbgl::style::AlignmentType::Auto };
- XCTAssertEqual(rawLayer->getTextRotationAlignment(), propertyValue,
- @"Setting textRotationAlignment to a constant value expression should update text-rotation-alignment.");
- XCTAssertEqualObjects(layer.textRotationAlignment, constantExpression,
- @"textRotationAlignment should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'auto'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textRotationAlignment = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::AlignmentType>(
- step(zoom(), literal("auto"), 18.0, literal("auto"))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextRotationAlignment(), propertyValue,
- @"Setting textRotationAlignment to a camera expression should update text-rotation-alignment.");
- XCTAssertEqualObjects(layer.textRotationAlignment, functionExpression,
- @"textRotationAlignment should round-trip camera expressions.");
-
-
- layer.textRotationAlignment = nil;
- XCTAssertTrue(rawLayer->getTextRotationAlignment().isUndefined(),
- @"Unsetting textRotationAlignment should return text-rotation-alignment to the default value.");
- XCTAssertEqualObjects(layer.textRotationAlignment, defaultExpression,
- @"textRotationAlignment should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textRotationAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textRotationAlignment = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-transform
- {
- XCTAssertTrue(rawLayer->getTextTransform().isUndefined(),
- @"text-transform should be unset initially.");
- NSExpression *defaultExpression = layer.textTransform;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'lowercase'"];
- layer.textTransform = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TextTransformType> propertyValue = { mbgl::style::TextTransformType::Lowercase };
- XCTAssertEqual(rawLayer->getTextTransform(), propertyValue,
- @"Setting textTransform to a constant value expression should update text-transform.");
- XCTAssertEqualObjects(layer.textTransform, constantExpression,
- @"textTransform should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'lowercase'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textTransform = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TextTransformType>(
- step(zoom(), literal("lowercase"), 18.0, literal("lowercase"))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextTransform(), propertyValue,
- @"Setting textTransform to a camera expression should update text-transform.");
- XCTAssertEqualObjects(layer.textTransform, functionExpression,
- @"textTransform should round-trip camera expressions.");
-
-
- layer.textTransform = nil;
- XCTAssertTrue(rawLayer->getTextTransform().isUndefined(),
- @"Unsetting textTransform should return text-transform to the default value.");
- XCTAssertEqualObjects(layer.textTransform, defaultExpression,
- @"textTransform should return the default value after being unset.");
- }
-
- // text-variable-anchor
- {
- XCTAssertTrue(rawLayer->getTextVariableAnchor().isUndefined(),
- @"text-variable-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.textVariableAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"{'top','bottom'}"];
- layer.textVariableAnchor = constantExpression;
- mbgl::style::PropertyValue<std::vector<mbgl::style::SymbolAnchorType>> propertyValue = { { mbgl::style::SymbolAnchorType::Top, mbgl::style::SymbolAnchorType::Bottom } };
- XCTAssertEqual(rawLayer->getTextVariableAnchor(), propertyValue,
- @"Setting textVariableAnchor to a constant value expression should update text-variable-anchor.");
- XCTAssertEqualObjects(layer.textVariableAnchor, constantExpression,
- @"textVariableAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{'top','bottom'}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textVariableAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::vector<mbgl::style::SymbolAnchorType>>(
- step(zoom(), literal({"top", "bottom"}), 18.0, literal({"top", "bottom"}))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextVariableAnchor(), propertyValue,
- @"Setting textVariableAnchor to a camera expression should update text-variable-anchor.");
- XCTAssertEqualObjects(layer.textVariableAnchor, functionExpression,
- @"textVariableAnchor should round-trip camera expressions.");
-
-
- layer.textVariableAnchor = nil;
- XCTAssertTrue(rawLayer->getTextVariableAnchor().isUndefined(),
- @"Unsetting textVariableAnchor should return text-variable-anchor to the default value.");
- XCTAssertEqualObjects(layer.textVariableAnchor, defaultExpression,
- @"textVariableAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textVariableAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textVariableAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-writing-mode
- {
- XCTAssertTrue(rawLayer->getTextWritingMode().isUndefined(),
- @"text-writing-mode should be unset initially.");
- NSExpression *defaultExpression = layer.textWritingModes;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"{'horizontal','vertical'}"];
- layer.textWritingModes = constantExpression;
- mbgl::style::PropertyValue<std::vector<mbgl::style::TextWritingModeType>> propertyValue = { { mbgl::style::TextWritingModeType::Horizontal, mbgl::style::TextWritingModeType::Vertical } };
- XCTAssertEqual(rawLayer->getTextWritingMode(), propertyValue,
- @"Setting textWritingModes to a constant value expression should update text-writing-mode.");
- XCTAssertEqualObjects(layer.textWritingModes, constantExpression,
- @"textWritingModes should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{'horizontal','vertical'}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textWritingModes = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::vector<mbgl::style::TextWritingModeType>>(
- step(zoom(), literal({"horizontal", "vertical"}), 18.0, literal({"horizontal", "vertical"}))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextWritingMode(), propertyValue,
- @"Setting textWritingModes to a camera expression should update text-writing-mode.");
- XCTAssertEqualObjects(layer.textWritingModes, functionExpression,
- @"textWritingModes should round-trip camera expressions.");
-
-
- layer.textWritingModes = nil;
- XCTAssertTrue(rawLayer->getTextWritingMode().isUndefined(),
- @"Unsetting textWritingModes should return text-writing-mode to the default value.");
- XCTAssertEqualObjects(layer.textWritingModes, defaultExpression,
- @"textWritingModes should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textWritingModes = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textWritingModes = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-color
- {
- XCTAssertTrue(rawLayer->getIconColor().isUndefined(),
- @"icon-color should be unset initially.");
- NSExpression *defaultExpression = layer.iconColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.iconColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getIconColor(), propertyValue,
- @"Setting iconColor to a constant value expression should update icon-color.");
- XCTAssertEqualObjects(layer.iconColor, constantExpression,
- @"iconColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconColor(), propertyValue,
- @"Setting iconColor to a camera expression should update icon-color.");
- XCTAssertEqualObjects(layer.iconColor, functionExpression,
- @"iconColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconColor(), propertyValue,
- @"Setting iconColor to a data expression should update icon-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconColor, pedanticFunctionExpression,
- @"iconColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconColor(), propertyValue,
- @"Setting iconColor to a camera-data expression should update icon-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconColor, pedanticFunctionExpression,
- @"iconColor should round-trip camera-data expressions.");
-
- layer.iconColor = nil;
- XCTAssertTrue(rawLayer->getIconColor().isUndefined(),
- @"Unsetting iconColor should return icon-color to the default value.");
- XCTAssertEqualObjects(layer.iconColor, defaultExpression,
- @"iconColor should return the default value after being unset.");
- // Transition property test
- layer.iconColorTransition = transitionTest;
- auto toptions = rawLayer->getIconColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition iconColorTransition = layer.iconColorTransition;
- XCTAssertEqual(iconColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(iconColorTransition.duration, transitionTest.duration);
- }
-
- // icon-halo-blur
- {
- XCTAssertTrue(rawLayer->getIconHaloBlur().isUndefined(),
- @"icon-halo-blur should be unset initially.");
- NSExpression *defaultExpression = layer.iconHaloBlur;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.iconHaloBlur = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getIconHaloBlur(), propertyValue,
- @"Setting iconHaloBlur to a constant value expression should update icon-halo-blur.");
- XCTAssertEqualObjects(layer.iconHaloBlur, constantExpression,
- @"iconHaloBlur should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconHaloBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloBlur(), propertyValue,
- @"Setting iconHaloBlur to a camera expression should update icon-halo-blur.");
- XCTAssertEqualObjects(layer.iconHaloBlur, functionExpression,
- @"iconHaloBlur should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconHaloBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloBlur(), propertyValue,
- @"Setting iconHaloBlur to a data expression should update icon-halo-blur.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconHaloBlur, pedanticFunctionExpression,
- @"iconHaloBlur should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconHaloBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloBlur(), propertyValue,
- @"Setting iconHaloBlur to a camera-data expression should update icon-halo-blur.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconHaloBlur, pedanticFunctionExpression,
- @"iconHaloBlur should round-trip camera-data expressions.");
-
- layer.iconHaloBlur = nil;
- XCTAssertTrue(rawLayer->getIconHaloBlur().isUndefined(),
- @"Unsetting iconHaloBlur should return icon-halo-blur to the default value.");
- XCTAssertEqualObjects(layer.iconHaloBlur, defaultExpression,
- @"iconHaloBlur should return the default value after being unset.");
- // Transition property test
- layer.iconHaloBlurTransition = transitionTest;
- auto toptions = rawLayer->getIconHaloBlurTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition iconHaloBlurTransition = layer.iconHaloBlurTransition;
- XCTAssertEqual(iconHaloBlurTransition.delay, transitionTest.delay);
- XCTAssertEqual(iconHaloBlurTransition.duration, transitionTest.duration);
- }
-
- // icon-halo-color
- {
- XCTAssertTrue(rawLayer->getIconHaloColor().isUndefined(),
- @"icon-halo-color should be unset initially.");
- NSExpression *defaultExpression = layer.iconHaloColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.iconHaloColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getIconHaloColor(), propertyValue,
- @"Setting iconHaloColor to a constant value expression should update icon-halo-color.");
- XCTAssertEqualObjects(layer.iconHaloColor, constantExpression,
- @"iconHaloColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconHaloColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloColor(), propertyValue,
- @"Setting iconHaloColor to a camera expression should update icon-halo-color.");
- XCTAssertEqualObjects(layer.iconHaloColor, functionExpression,
- @"iconHaloColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconHaloColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloColor(), propertyValue,
- @"Setting iconHaloColor to a data expression should update icon-halo-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconHaloColor, pedanticFunctionExpression,
- @"iconHaloColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconHaloColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloColor(), propertyValue,
- @"Setting iconHaloColor to a camera-data expression should update icon-halo-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconHaloColor, pedanticFunctionExpression,
- @"iconHaloColor should round-trip camera-data expressions.");
-
- layer.iconHaloColor = nil;
- XCTAssertTrue(rawLayer->getIconHaloColor().isUndefined(),
- @"Unsetting iconHaloColor should return icon-halo-color to the default value.");
- XCTAssertEqualObjects(layer.iconHaloColor, defaultExpression,
- @"iconHaloColor should return the default value after being unset.");
- // Transition property test
- layer.iconHaloColorTransition = transitionTest;
- auto toptions = rawLayer->getIconHaloColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition iconHaloColorTransition = layer.iconHaloColorTransition;
- XCTAssertEqual(iconHaloColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(iconHaloColorTransition.duration, transitionTest.duration);
- }
-
- // icon-halo-width
- {
- XCTAssertTrue(rawLayer->getIconHaloWidth().isUndefined(),
- @"icon-halo-width should be unset initially.");
- NSExpression *defaultExpression = layer.iconHaloWidth;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.iconHaloWidth = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getIconHaloWidth(), propertyValue,
- @"Setting iconHaloWidth to a constant value expression should update icon-halo-width.");
- XCTAssertEqualObjects(layer.iconHaloWidth, constantExpression,
- @"iconHaloWidth should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconHaloWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloWidth(), propertyValue,
- @"Setting iconHaloWidth to a camera expression should update icon-halo-width.");
- XCTAssertEqualObjects(layer.iconHaloWidth, functionExpression,
- @"iconHaloWidth should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconHaloWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloWidth(), propertyValue,
- @"Setting iconHaloWidth to a data expression should update icon-halo-width.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconHaloWidth, pedanticFunctionExpression,
- @"iconHaloWidth should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconHaloWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconHaloWidth(), propertyValue,
- @"Setting iconHaloWidth to a camera-data expression should update icon-halo-width.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconHaloWidth, pedanticFunctionExpression,
- @"iconHaloWidth should round-trip camera-data expressions.");
-
- layer.iconHaloWidth = nil;
- XCTAssertTrue(rawLayer->getIconHaloWidth().isUndefined(),
- @"Unsetting iconHaloWidth should return icon-halo-width to the default value.");
- XCTAssertEqualObjects(layer.iconHaloWidth, defaultExpression,
- @"iconHaloWidth should return the default value after being unset.");
- // Transition property test
- layer.iconHaloWidthTransition = transitionTest;
- auto toptions = rawLayer->getIconHaloWidthTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition iconHaloWidthTransition = layer.iconHaloWidthTransition;
- XCTAssertEqual(iconHaloWidthTransition.delay, transitionTest.delay);
- XCTAssertEqual(iconHaloWidthTransition.duration, transitionTest.duration);
- }
-
- // icon-opacity
- {
- XCTAssertTrue(rawLayer->getIconOpacity().isUndefined(),
- @"icon-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.iconOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.iconOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getIconOpacity(), propertyValue,
- @"Setting iconOpacity to a constant value expression should update icon-opacity.");
- XCTAssertEqualObjects(layer.iconOpacity, constantExpression,
- @"iconOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconOpacity(), propertyValue,
- @"Setting iconOpacity to a camera expression should update icon-opacity.");
- XCTAssertEqualObjects(layer.iconOpacity, functionExpression,
- @"iconOpacity should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.iconOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconOpacity(), propertyValue,
- @"Setting iconOpacity to a data expression should update icon-opacity.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.iconOpacity, pedanticFunctionExpression,
- @"iconOpacity should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.iconOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconOpacity(), propertyValue,
- @"Setting iconOpacity to a camera-data expression should update icon-opacity.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.iconOpacity, pedanticFunctionExpression,
- @"iconOpacity should round-trip camera-data expressions.");
-
- layer.iconOpacity = nil;
- XCTAssertTrue(rawLayer->getIconOpacity().isUndefined(),
- @"Unsetting iconOpacity should return icon-opacity to the default value.");
- XCTAssertEqualObjects(layer.iconOpacity, defaultExpression,
- @"iconOpacity should return the default value after being unset.");
- // Transition property test
- layer.iconOpacityTransition = transitionTest;
- auto toptions = rawLayer->getIconOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition iconOpacityTransition = layer.iconOpacityTransition;
- XCTAssertEqual(iconOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(iconOpacityTransition.duration, transitionTest.duration);
- }
-
- // icon-translate
- {
- XCTAssertTrue(rawLayer->getIconTranslate().isUndefined(),
- @"icon-translate should be unset initially.");
- NSExpression *defaultExpression = layer.iconTranslation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.iconTranslation = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getIconTranslate(), propertyValue,
- @"Setting iconTranslation to a constant value expression should update icon-translate.");
- XCTAssertEqualObjects(layer.iconTranslation, constantExpression,
- @"iconTranslation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconTranslation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconTranslate(), propertyValue,
- @"Setting iconTranslation to a camera expression should update icon-translate.");
- XCTAssertEqualObjects(layer.iconTranslation, functionExpression,
- @"iconTranslation should round-trip camera expressions.");
-
-
- layer.iconTranslation = nil;
- XCTAssertTrue(rawLayer->getIconTranslate().isUndefined(),
- @"Unsetting iconTranslation should return icon-translate to the default value.");
- XCTAssertEqualObjects(layer.iconTranslation, defaultExpression,
- @"iconTranslation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // icon-translate-anchor
- {
- XCTAssertTrue(rawLayer->getIconTranslateAnchor().isUndefined(),
- @"icon-translate-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.iconTranslationAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.iconTranslationAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType> propertyValue = { mbgl::style::TranslateAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getIconTranslateAnchor(), propertyValue,
- @"Setting iconTranslationAnchor to a constant value expression should update icon-translate-anchor.");
- XCTAssertEqualObjects(layer.iconTranslationAnchor, constantExpression,
- @"iconTranslationAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.iconTranslationAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TranslateAnchorType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getIconTranslateAnchor(), propertyValue,
- @"Setting iconTranslationAnchor to a camera expression should update icon-translate-anchor.");
- XCTAssertEqualObjects(layer.iconTranslationAnchor, functionExpression,
- @"iconTranslationAnchor should round-trip camera expressions.");
-
-
- layer.iconTranslationAnchor = nil;
- XCTAssertTrue(rawLayer->getIconTranslateAnchor().isUndefined(),
- @"Unsetting iconTranslationAnchor should return icon-translate-anchor to the default value.");
- XCTAssertEqualObjects(layer.iconTranslationAnchor, defaultExpression,
- @"iconTranslationAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.iconTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.iconTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-color
- {
- XCTAssertTrue(rawLayer->getTextColor().isUndefined(),
- @"text-color should be unset initially.");
- NSExpression *defaultExpression = layer.textColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.textColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getTextColor(), propertyValue,
- @"Setting textColor to a constant value expression should update text-color.");
- XCTAssertEqualObjects(layer.textColor, constantExpression,
- @"textColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextColor(), propertyValue,
- @"Setting textColor to a camera expression should update text-color.");
- XCTAssertEqualObjects(layer.textColor, functionExpression,
- @"textColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextColor(), propertyValue,
- @"Setting textColor to a data expression should update text-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textColor, pedanticFunctionExpression,
- @"textColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextColor(), propertyValue,
- @"Setting textColor to a camera-data expression should update text-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textColor, pedanticFunctionExpression,
- @"textColor should round-trip camera-data expressions.");
-
- layer.textColor = nil;
- XCTAssertTrue(rawLayer->getTextColor().isUndefined(),
- @"Unsetting textColor should return text-color to the default value.");
- XCTAssertEqualObjects(layer.textColor, defaultExpression,
- @"textColor should return the default value after being unset.");
- // Transition property test
- layer.textColorTransition = transitionTest;
- auto toptions = rawLayer->getTextColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition textColorTransition = layer.textColorTransition;
- XCTAssertEqual(textColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(textColorTransition.duration, transitionTest.duration);
- }
-
- // text-halo-blur
- {
- XCTAssertTrue(rawLayer->getTextHaloBlur().isUndefined(),
- @"text-halo-blur should be unset initially.");
- NSExpression *defaultExpression = layer.textHaloBlur;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textHaloBlur = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextHaloBlur(), propertyValue,
- @"Setting textHaloBlur to a constant value expression should update text-halo-blur.");
- XCTAssertEqualObjects(layer.textHaloBlur, constantExpression,
- @"textHaloBlur should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textHaloBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloBlur(), propertyValue,
- @"Setting textHaloBlur to a camera expression should update text-halo-blur.");
- XCTAssertEqualObjects(layer.textHaloBlur, functionExpression,
- @"textHaloBlur should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textHaloBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloBlur(), propertyValue,
- @"Setting textHaloBlur to a data expression should update text-halo-blur.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textHaloBlur, pedanticFunctionExpression,
- @"textHaloBlur should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textHaloBlur = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloBlur(), propertyValue,
- @"Setting textHaloBlur to a camera-data expression should update text-halo-blur.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textHaloBlur, pedanticFunctionExpression,
- @"textHaloBlur should round-trip camera-data expressions.");
-
- layer.textHaloBlur = nil;
- XCTAssertTrue(rawLayer->getTextHaloBlur().isUndefined(),
- @"Unsetting textHaloBlur should return text-halo-blur to the default value.");
- XCTAssertEqualObjects(layer.textHaloBlur, defaultExpression,
- @"textHaloBlur should return the default value after being unset.");
- // Transition property test
- layer.textHaloBlurTransition = transitionTest;
- auto toptions = rawLayer->getTextHaloBlurTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition textHaloBlurTransition = layer.textHaloBlurTransition;
- XCTAssertEqual(textHaloBlurTransition.delay, transitionTest.delay);
- XCTAssertEqual(textHaloBlurTransition.duration, transitionTest.duration);
- }
-
- // text-halo-color
- {
- XCTAssertTrue(rawLayer->getTextHaloColor().isUndefined(),
- @"text-halo-color should be unset initially.");
- NSExpression *defaultExpression = layer.textHaloColor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- layer.textHaloColor = constantExpression;
- mbgl::style::PropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getTextHaloColor(), propertyValue,
- @"Setting textHaloColor to a constant value expression should update text-halo-color.");
- XCTAssertEqualObjects(layer.textHaloColor, constantExpression,
- @"textHaloColor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"%@", [MGLColor redColor]];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textHaloColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- step(zoom(), literal(mbgl::Color(1, 0, 0, 1)), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloColor(), propertyValue,
- @"Setting textHaloColor to a camera expression should update text-halo-color.");
- XCTAssertEqualObjects(layer.textHaloColor, functionExpression,
- @"textHaloColor should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textHaloColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloColor(), propertyValue,
- @"Setting textHaloColor to a data expression should update text-halo-color.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textHaloColor, pedanticFunctionExpression,
- @"textHaloColor should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textHaloColor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::Color>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(mbgl::Color(1, 0, 0, 1))))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloColor(), propertyValue,
- @"Setting textHaloColor to a camera-data expression should update text-halo-color.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textHaloColor, pedanticFunctionExpression,
- @"textHaloColor should round-trip camera-data expressions.");
-
- layer.textHaloColor = nil;
- XCTAssertTrue(rawLayer->getTextHaloColor().isUndefined(),
- @"Unsetting textHaloColor should return text-halo-color to the default value.");
- XCTAssertEqualObjects(layer.textHaloColor, defaultExpression,
- @"textHaloColor should return the default value after being unset.");
- // Transition property test
- layer.textHaloColorTransition = transitionTest;
- auto toptions = rawLayer->getTextHaloColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition textHaloColorTransition = layer.textHaloColorTransition;
- XCTAssertEqual(textHaloColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(textHaloColorTransition.duration, transitionTest.duration);
- }
-
- // text-halo-width
- {
- XCTAssertTrue(rawLayer->getTextHaloWidth().isUndefined(),
- @"text-halo-width should be unset initially.");
- NSExpression *defaultExpression = layer.textHaloWidth;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textHaloWidth = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextHaloWidth(), propertyValue,
- @"Setting textHaloWidth to a constant value expression should update text-halo-width.");
- XCTAssertEqualObjects(layer.textHaloWidth, constantExpression,
- @"textHaloWidth should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textHaloWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloWidth(), propertyValue,
- @"Setting textHaloWidth to a camera expression should update text-halo-width.");
- XCTAssertEqualObjects(layer.textHaloWidth, functionExpression,
- @"textHaloWidth should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textHaloWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloWidth(), propertyValue,
- @"Setting textHaloWidth to a data expression should update text-halo-width.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textHaloWidth, pedanticFunctionExpression,
- @"textHaloWidth should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textHaloWidth = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextHaloWidth(), propertyValue,
- @"Setting textHaloWidth to a camera-data expression should update text-halo-width.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textHaloWidth, pedanticFunctionExpression,
- @"textHaloWidth should round-trip camera-data expressions.");
-
- layer.textHaloWidth = nil;
- XCTAssertTrue(rawLayer->getTextHaloWidth().isUndefined(),
- @"Unsetting textHaloWidth should return text-halo-width to the default value.");
- XCTAssertEqualObjects(layer.textHaloWidth, defaultExpression,
- @"textHaloWidth should return the default value after being unset.");
- // Transition property test
- layer.textHaloWidthTransition = transitionTest;
- auto toptions = rawLayer->getTextHaloWidthTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition textHaloWidthTransition = layer.textHaloWidthTransition;
- XCTAssertEqual(textHaloWidthTransition.delay, transitionTest.delay);
- XCTAssertEqual(textHaloWidthTransition.duration, transitionTest.duration);
- }
-
- // text-opacity
- {
- XCTAssertTrue(rawLayer->getTextOpacity().isUndefined(),
- @"text-opacity should be unset initially.");
- NSExpression *defaultExpression = layer.textOpacity;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"1"];
- layer.textOpacity = constantExpression;
- mbgl::style::PropertyValue<float> propertyValue = { 1.0 };
- XCTAssertEqual(rawLayer->getTextOpacity(), propertyValue,
- @"Setting textOpacity to a constant value expression should update text-opacity.");
- XCTAssertEqualObjects(layer.textOpacity, constantExpression,
- @"textOpacity should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"1"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- step(zoom(), literal(1.0), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextOpacity(), propertyValue,
- @"Setting textOpacity to a camera expression should update text-opacity.");
- XCTAssertEqualObjects(layer.textOpacity, functionExpression,
- @"textOpacity should round-trip camera expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(keyName, 'linear', nil, %@)", @{@18: constantExpression}];
- layer.textOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), number(get("keyName")), 18.0, literal(1.0))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextOpacity(), propertyValue,
- @"Setting textOpacity to a data expression should update text-opacity.");
- NSExpression *pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:(CAST(keyName, 'NSNumber'), 'linear', nil, %@)", @{@18: constantExpression}];
- XCTAssertEqualObjects(layer.textOpacity, pedanticFunctionExpression,
- @"textOpacity should round-trip data expressions.");
-
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- layer.textOpacity = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<float>(
- interpolate(linear(), zoom(), 10.0, interpolate(linear(), number(get("keyName")), 18.0, literal(1.0)))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextOpacity(), propertyValue,
- @"Setting textOpacity to a camera-data expression should update text-opacity.");
- pedanticFunctionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: pedanticFunctionExpression}];
- XCTAssertEqualObjects(layer.textOpacity, pedanticFunctionExpression,
- @"textOpacity should round-trip camera-data expressions.");
-
- layer.textOpacity = nil;
- XCTAssertTrue(rawLayer->getTextOpacity().isUndefined(),
- @"Unsetting textOpacity should return text-opacity to the default value.");
- XCTAssertEqualObjects(layer.textOpacity, defaultExpression,
- @"textOpacity should return the default value after being unset.");
- // Transition property test
- layer.textOpacityTransition = transitionTest;
- auto toptions = rawLayer->getTextOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition textOpacityTransition = layer.textOpacityTransition;
- XCTAssertEqual(textOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(textOpacityTransition.duration, transitionTest.duration);
- }
-
- // text-translate
- {
- XCTAssertTrue(rawLayer->getTextTranslate().isUndefined(),
- @"text-translate should be unset initially.");
- NSExpression *defaultExpression = layer.textTranslation;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"%@",
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.textTranslation = constantExpression;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getTextTranslate(), propertyValue,
- @"Setting textTranslation to a constant value expression should update text-translate.");
- XCTAssertEqualObjects(layer.textTranslation, constantExpression,
- @"textTranslation should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"{1, 1}"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textTranslation = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<std::array<float, 2>>(
- step(zoom(), literal({ 1, 1 }), 18.0, literal({ 1, 1 }))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextTranslate(), propertyValue,
- @"Setting textTranslation to a camera expression should update text-translate.");
- XCTAssertEqualObjects(layer.textTranslation, functionExpression,
- @"textTranslation should round-trip camera expressions.");
-
-
- layer.textTranslation = nil;
- XCTAssertTrue(rawLayer->getTextTranslate().isUndefined(),
- @"Unsetting textTranslation should return text-translate to the default value.");
- XCTAssertEqualObjects(layer.textTranslation, defaultExpression,
- @"textTranslation should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textTranslation = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-
- // text-translate-anchor
- {
- XCTAssertTrue(rawLayer->getTextTranslateAnchor().isUndefined(),
- @"text-translate-anchor should be unset initially.");
- NSExpression *defaultExpression = layer.textTranslationAnchor;
-
- NSExpression *constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- layer.textTranslationAnchor = constantExpression;
- mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType> propertyValue = { mbgl::style::TranslateAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getTextTranslateAnchor(), propertyValue,
- @"Setting textTranslationAnchor to a constant value expression should update text-translate-anchor.");
- XCTAssertEqualObjects(layer.textTranslationAnchor, constantExpression,
- @"textTranslationAnchor should round-trip constant value expressions.");
-
- constantExpression = [NSExpression expressionWithFormat:@"'viewport'"];
- NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
- layer.textTranslationAnchor = functionExpression;
-
- {
- using namespace mbgl::style::expression::dsl;
- propertyValue = mbgl::style::PropertyExpression<mbgl::style::TranslateAnchorType>(
- step(zoom(), literal("viewport"), 18.0, literal("viewport"))
- );
- }
-
- XCTAssertEqual(rawLayer->getTextTranslateAnchor(), propertyValue,
- @"Setting textTranslationAnchor to a camera expression should update text-translate-anchor.");
- XCTAssertEqualObjects(layer.textTranslationAnchor, functionExpression,
- @"textTranslationAnchor should round-trip camera expressions.");
-
-
- layer.textTranslationAnchor = nil;
- XCTAssertTrue(rawLayer->getTextTranslateAnchor().isUndefined(),
- @"Unsetting textTranslationAnchor should return text-translate-anchor to the default value.");
- XCTAssertEqualObjects(layer.textTranslationAnchor, defaultExpression,
- @"textTranslationAnchor should return the default value after being unset.");
-
- functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
- XCTAssertThrowsSpecificNamed(layer.textTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
- functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
- XCTAssertThrowsSpecificNamed(layer.textTranslationAnchor = functionExpression, NSException, NSInvalidArgumentException, @"MGLSymbolLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"icon-allows-overlap" isBoolean:YES];
- [self testPropertyName:@"icon-anchor" isBoolean:NO];
- [self testPropertyName:@"icon-ignores-placement" isBoolean:YES];
- [self testPropertyName:@"icon-image-name" isBoolean:NO];
- [self testPropertyName:@"icon-offset" isBoolean:NO];
- [self testPropertyName:@"is-icon-optional" isBoolean:YES];
- [self testPropertyName:@"icon-padding" isBoolean:NO];
- [self testPropertyName:@"icon-pitch-alignment" isBoolean:NO];
- [self testPropertyName:@"icon-rotation" isBoolean:NO];
- [self testPropertyName:@"icon-rotation-alignment" isBoolean:NO];
- [self testPropertyName:@"icon-scale" isBoolean:NO];
- [self testPropertyName:@"icon-text-fit" isBoolean:NO];
- [self testPropertyName:@"icon-text-fit-padding" isBoolean:NO];
- [self testPropertyName:@"keeps-icon-upright" isBoolean:YES];
- [self testPropertyName:@"keeps-text-upright" isBoolean:YES];
- [self testPropertyName:@"maximum-text-angle" isBoolean:NO];
- [self testPropertyName:@"maximum-text-width" isBoolean:NO];
- [self testPropertyName:@"symbol-avoids-edges" isBoolean:YES];
- [self testPropertyName:@"symbol-placement" isBoolean:NO];
- [self testPropertyName:@"symbol-sort-key" isBoolean:NO];
- [self testPropertyName:@"symbol-spacing" isBoolean:NO];
- [self testPropertyName:@"symbol-z-order" isBoolean:NO];
- [self testPropertyName:@"text" isBoolean:NO];
- [self testPropertyName:@"text-allows-overlap" isBoolean:YES];
- [self testPropertyName:@"text-anchor" isBoolean:NO];
- [self testPropertyName:@"text-font-names" isBoolean:NO];
- [self testPropertyName:@"text-font-size" isBoolean:NO];
- [self testPropertyName:@"text-ignores-placement" isBoolean:YES];
- [self testPropertyName:@"text-justification" isBoolean:NO];
- [self testPropertyName:@"text-letter-spacing" isBoolean:NO];
- [self testPropertyName:@"text-line-height" isBoolean:NO];
- [self testPropertyName:@"text-offset" isBoolean:NO];
- [self testPropertyName:@"is-text-optional" isBoolean:YES];
- [self testPropertyName:@"text-padding" isBoolean:NO];
- [self testPropertyName:@"text-pitch-alignment" isBoolean:NO];
- [self testPropertyName:@"text-radial-offset" isBoolean:NO];
- [self testPropertyName:@"text-rotation" isBoolean:NO];
- [self testPropertyName:@"text-rotation-alignment" isBoolean:NO];
- [self testPropertyName:@"text-transform" isBoolean:NO];
- [self testPropertyName:@"text-variable-anchor" isBoolean:NO];
- [self testPropertyName:@"text-writing-modes" isBoolean:NO];
- [self testPropertyName:@"icon-color" isBoolean:NO];
- [self testPropertyName:@"icon-halo-blur" isBoolean:NO];
- [self testPropertyName:@"icon-halo-color" isBoolean:NO];
- [self testPropertyName:@"icon-halo-width" isBoolean:NO];
- [self testPropertyName:@"icon-opacity" isBoolean:NO];
- [self testPropertyName:@"icon-translation" isBoolean:NO];
- [self testPropertyName:@"icon-translation-anchor" isBoolean:NO];
- [self testPropertyName:@"text-color" isBoolean:NO];
- [self testPropertyName:@"text-halo-blur" isBoolean:NO];
- [self testPropertyName:@"text-halo-color" isBoolean:NO];
- [self testPropertyName:@"text-halo-width" isBoolean:NO];
- [self testPropertyName:@"text-opacity" isBoolean:NO];
- [self testPropertyName:@"text-translation" isBoolean:NO];
- [self testPropertyName:@"text-translation-anchor" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorCenter].MGLIconAnchorValue, MGLIconAnchorCenter);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorLeft].MGLIconAnchorValue, MGLIconAnchorLeft);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorRight].MGLIconAnchorValue, MGLIconAnchorRight);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorTop].MGLIconAnchorValue, MGLIconAnchorTop);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorBottom].MGLIconAnchorValue, MGLIconAnchorBottom);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorTopLeft].MGLIconAnchorValue, MGLIconAnchorTopLeft);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorTopRight].MGLIconAnchorValue, MGLIconAnchorTopRight);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorBottomLeft].MGLIconAnchorValue, MGLIconAnchorBottomLeft);
- XCTAssertEqual([NSValue valueWithMGLIconAnchor:MGLIconAnchorBottomRight].MGLIconAnchorValue, MGLIconAnchorBottomRight);
- XCTAssertEqual([NSValue valueWithMGLIconPitchAlignment:MGLIconPitchAlignmentMap].MGLIconPitchAlignmentValue, MGLIconPitchAlignmentMap);
- XCTAssertEqual([NSValue valueWithMGLIconPitchAlignment:MGLIconPitchAlignmentViewport].MGLIconPitchAlignmentValue, MGLIconPitchAlignmentViewport);
- XCTAssertEqual([NSValue valueWithMGLIconPitchAlignment:MGLIconPitchAlignmentAuto].MGLIconPitchAlignmentValue, MGLIconPitchAlignmentAuto);
- XCTAssertEqual([NSValue valueWithMGLIconRotationAlignment:MGLIconRotationAlignmentMap].MGLIconRotationAlignmentValue, MGLIconRotationAlignmentMap);
- XCTAssertEqual([NSValue valueWithMGLIconRotationAlignment:MGLIconRotationAlignmentViewport].MGLIconRotationAlignmentValue, MGLIconRotationAlignmentViewport);
- XCTAssertEqual([NSValue valueWithMGLIconRotationAlignment:MGLIconRotationAlignmentAuto].MGLIconRotationAlignmentValue, MGLIconRotationAlignmentAuto);
- XCTAssertEqual([NSValue valueWithMGLIconTextFit:MGLIconTextFitNone].MGLIconTextFitValue, MGLIconTextFitNone);
- XCTAssertEqual([NSValue valueWithMGLIconTextFit:MGLIconTextFitWidth].MGLIconTextFitValue, MGLIconTextFitWidth);
- XCTAssertEqual([NSValue valueWithMGLIconTextFit:MGLIconTextFitHeight].MGLIconTextFitValue, MGLIconTextFitHeight);
- XCTAssertEqual([NSValue valueWithMGLIconTextFit:MGLIconTextFitBoth].MGLIconTextFitValue, MGLIconTextFitBoth);
- XCTAssertEqual([NSValue valueWithMGLSymbolPlacement:MGLSymbolPlacementPoint].MGLSymbolPlacementValue, MGLSymbolPlacementPoint);
- XCTAssertEqual([NSValue valueWithMGLSymbolPlacement:MGLSymbolPlacementLine].MGLSymbolPlacementValue, MGLSymbolPlacementLine);
- XCTAssertEqual([NSValue valueWithMGLSymbolPlacement:MGLSymbolPlacementLineCenter].MGLSymbolPlacementValue, MGLSymbolPlacementLineCenter);
- XCTAssertEqual([NSValue valueWithMGLSymbolZOrder:MGLSymbolZOrderAuto].MGLSymbolZOrderValue, MGLSymbolZOrderAuto);
- XCTAssertEqual([NSValue valueWithMGLSymbolZOrder:MGLSymbolZOrderViewportY].MGLSymbolZOrderValue, MGLSymbolZOrderViewportY);
- XCTAssertEqual([NSValue valueWithMGLSymbolZOrder:MGLSymbolZOrderSource].MGLSymbolZOrderValue, MGLSymbolZOrderSource);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorCenter].MGLTextAnchorValue, MGLTextAnchorCenter);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorLeft].MGLTextAnchorValue, MGLTextAnchorLeft);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorRight].MGLTextAnchorValue, MGLTextAnchorRight);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorTop].MGLTextAnchorValue, MGLTextAnchorTop);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorBottom].MGLTextAnchorValue, MGLTextAnchorBottom);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorTopLeft].MGLTextAnchorValue, MGLTextAnchorTopLeft);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorTopRight].MGLTextAnchorValue, MGLTextAnchorTopRight);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorBottomLeft].MGLTextAnchorValue, MGLTextAnchorBottomLeft);
- XCTAssertEqual([NSValue valueWithMGLTextAnchor:MGLTextAnchorBottomRight].MGLTextAnchorValue, MGLTextAnchorBottomRight);
- XCTAssertEqual([NSValue valueWithMGLTextJustification:MGLTextJustificationAuto].MGLTextJustificationValue, MGLTextJustificationAuto);
- XCTAssertEqual([NSValue valueWithMGLTextJustification:MGLTextJustificationLeft].MGLTextJustificationValue, MGLTextJustificationLeft);
- XCTAssertEqual([NSValue valueWithMGLTextJustification:MGLTextJustificationCenter].MGLTextJustificationValue, MGLTextJustificationCenter);
- XCTAssertEqual([NSValue valueWithMGLTextJustification:MGLTextJustificationRight].MGLTextJustificationValue, MGLTextJustificationRight);
- XCTAssertEqual([NSValue valueWithMGLTextPitchAlignment:MGLTextPitchAlignmentMap].MGLTextPitchAlignmentValue, MGLTextPitchAlignmentMap);
- XCTAssertEqual([NSValue valueWithMGLTextPitchAlignment:MGLTextPitchAlignmentViewport].MGLTextPitchAlignmentValue, MGLTextPitchAlignmentViewport);
- XCTAssertEqual([NSValue valueWithMGLTextPitchAlignment:MGLTextPitchAlignmentAuto].MGLTextPitchAlignmentValue, MGLTextPitchAlignmentAuto);
- XCTAssertEqual([NSValue valueWithMGLTextRotationAlignment:MGLTextRotationAlignmentMap].MGLTextRotationAlignmentValue, MGLTextRotationAlignmentMap);
- XCTAssertEqual([NSValue valueWithMGLTextRotationAlignment:MGLTextRotationAlignmentViewport].MGLTextRotationAlignmentValue, MGLTextRotationAlignmentViewport);
- XCTAssertEqual([NSValue valueWithMGLTextRotationAlignment:MGLTextRotationAlignmentAuto].MGLTextRotationAlignmentValue, MGLTextRotationAlignmentAuto);
- XCTAssertEqual([NSValue valueWithMGLTextTransform:MGLTextTransformNone].MGLTextTransformValue, MGLTextTransformNone);
- XCTAssertEqual([NSValue valueWithMGLTextTransform:MGLTextTransformUppercase].MGLTextTransformValue, MGLTextTransformUppercase);
- XCTAssertEqual([NSValue valueWithMGLTextTransform:MGLTextTransformLowercase].MGLTextTransformValue, MGLTextTransformLowercase);
- XCTAssertEqual([NSValue valueWithMGLTextWritingMode:MGLTextWritingModeHorizontal].MGLTextWritingModeValue, MGLTextWritingModeHorizontal);
- XCTAssertEqual([NSValue valueWithMGLTextWritingMode:MGLTextWritingModeVertical].MGLTextWritingModeValue, MGLTextWritingModeVertical);
- XCTAssertEqual([NSValue valueWithMGLIconTranslationAnchor:MGLIconTranslationAnchorMap].MGLIconTranslationAnchorValue, MGLIconTranslationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLIconTranslationAnchor:MGLIconTranslationAnchorViewport].MGLIconTranslationAnchorValue, MGLIconTranslationAnchorViewport);
- XCTAssertEqual([NSValue valueWithMGLTextTranslationAnchor:MGLTextTranslationAnchorMap].MGLTextTranslationAnchorValue, MGLTextTranslationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLTextTranslationAnchor:MGLTextTranslationAnchorViewport].MGLTextTranslationAnchorValue, MGLTextTranslationAnchorViewport);
-}
-
-@end
diff --git a/platform/darwin/test/MGLTestAssertionHandler.h b/platform/darwin/test/MGLTestAssertionHandler.h
deleted file mode 100644
index f1aa39921e..0000000000
--- a/platform/darwin/test/MGLTestAssertionHandler.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <XCTest/XCTest.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-// Use to catch or log assertions that occur in dispatch blocks, timers or
-// other asynchronous operations.
-@interface MGLTestAssertionHandler : NSAssertionHandler
-
-- (instancetype)initWithTestCase:(XCTestCase *)testCase;
-@property (nonatomic, weak) XCTestCase *testCase;
-
-// If YES, use `_XCTPreformattedFailureHandler` to "fail" the test,
-// otherwise log the assert.
-@property (nonatomic) BOOL shouldFail;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/test/MGLTestAssertionHandler.m b/platform/darwin/test/MGLTestAssertionHandler.m
deleted file mode 100644
index 4b504427b5..0000000000
--- a/platform/darwin/test/MGLTestAssertionHandler.m
+++ /dev/null
@@ -1,77 +0,0 @@
-#import "MGLTestAssertionHandler.h"
-
-@implementation MGLTestAssertionHandler
-
-- (instancetype)initWithTestCase:(XCTestCase *)testCase {
- if ((self = [super init])) {
- _testCase = testCase;
- }
- return self;
-}
-
-- (void)handleFailureInMethod:(SEL)selector
- object:(id)object
- file:(NSString *)fileName
- lineNumber:(NSInteger)line
- description:(NSString *)format, ...
-{
- va_list args;
- va_start(args, format);
- NSString *description = [[NSString alloc] initWithFormat:format arguments:args];
- va_end(args);
-
- NSString *condition = [NSString stringWithFormat:
- @"`[%@ %@]`",
- object, NSStringFromSelector(selector)
- ];
-
- if (self.testCase && self.shouldFail) {
- _XCTPreformattedFailureHandler(self.testCase,
- YES,
- fileName,
- line,
- condition,
- description
- );
- }
- else {
- NSLog(@"Assertion Failure: %@:%lu: %@ - %@",
- fileName,
- line,
- condition,
- description);
- }
-}
-
-- (void)handleFailureInFunction:(NSString *)functionName
- file:(NSString *)fileName
- lineNumber:(NSInteger)line
- description:(NSString *)format, ...
-{
- va_list args;
- va_start(args, format);
- NSString *description = [[NSString alloc] initWithFormat:format arguments:args];
- va_end(args);
-
- NSString *condition = [NSString stringWithFormat:
- @"`%@`",
- functionName];
-
- if (self.testCase && self.shouldFail) {
- _XCTPreformattedFailureHandler(self.testCase,
- YES,
- fileName,
- line,
- condition,
- description);
- }
- else {
- NSLog(@"Assertion Failure: %@:%lu: %@ - %@",
- fileName,
- line,
- condition,
- description);
- }
-}
-@end
-
diff --git a/platform/darwin/test/MGLTestUtility.h b/platform/darwin/test/MGLTestUtility.h
deleted file mode 100644
index 2e02e4f9de..0000000000
--- a/platform/darwin/test/MGLTestUtility.h
+++ /dev/null
@@ -1,27 +0,0 @@
-
-/**
- MGL_CHECK_IF_PENDING_TEST_SHOULD_RUN()
-
- Include this macro at the top of a "pending" test - one that would normally fail,
- but you want to include is as a compile-time test or as a reminder.
-
- This will output the included warning in the test log, which `xcpretty` will detect.
- This allows such pending tests to be identified in CI logs.
-
- If you provide `MAPBOX_RUN_PENDING_TESTS` as an environment variable ALL pending
- tests will run.
-
- In addition, it's a good idea to append `PENDING` to the test method name, as this
- will also be picked up by xcpretty. PENDING tests will be distinguished by a `⧖`
- and `[PENDING]`
- */
-#define MGL_CHECK_IF_PENDING_TEST_SHOULD_RUN() \
- /* By default, skip pending tests. Otherwise check environment for MAPBOX_RUN_PENDING_TESTS */ \
- { \
- NSString *runPendingTests = [[NSProcessInfo processInfo] environment][@"MAPBOX_RUN_PENDING_TESTS"]; \
- if (![runPendingTests boolValue]) { \
- /* The following warning will be picked up by xcpretty */ \
- printf("warning: '%s' is a pending test - skipping\n", __PRETTY_FUNCTION__); \
- return; \
- } \
- }
diff --git a/platform/darwin/test/MGLTileSetTests.mm b/platform/darwin/test/MGLTileSetTests.mm
deleted file mode 100644
index 65e096ae7f..0000000000
--- a/platform/darwin/test/MGLTileSetTests.mm
+++ /dev/null
@@ -1,149 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import <Mapbox/Mapbox.h>
-#import "MGLTileSource_Private.h"
-#import "MGLGeometry_Private.h"
-
-#include <mbgl/util/tileset.hpp>
-
-@interface MGLTileSetTests : XCTestCase
-
-@end
-
-@implementation MGLTileSetTests
-
-- (void)testTileSetFromTileURLTemplates {
- // a tile set that provides an mbgl tile set
- NSArray *tileURLTemplates = @[@"tile.1", @"tile.2", @"tile.3"];
- mbgl::Tileset tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, nil);
-
- // has the correct URL templates
- XCTAssertEqual(tileSet.tiles.size(), 3UL);
- XCTAssertEqual(tileSet.tiles[0], "tile.1");
- XCTAssertEqual(tileSet.tiles[1], "tile.2");
- XCTAssertEqual(tileSet.tiles[2], "tile.3");
-
- // has the default scheme
- XCTAssertEqual(tileSet.scheme, mbgl::Tileset::Scheme::XYZ);
-
- // when the tile set has no min or max zoom level set
- // the mbgl object has default values for min and max zoom level
- XCTAssertEqual(tileSet.zoomRange.min, 0);
- XCTAssertEqual(tileSet.zoomRange.max, 22);
-
- // when the tile set has min and/or max zoom level set
- tileSet = MGLTileSetFromTileURLTemplates(@[@"tile.1"], @{
- MGLTileSourceOptionMinimumZoomLevel: @1,
- MGLTileSourceOptionMaximumZoomLevel: @2,
- });
-
- // the mbgl object reflects the set values for min and max zoom level
- XCTAssertEqual(tileSet.zoomRange.min, 1);
- XCTAssertEqual(tileSet.zoomRange.max, 2);
-
- // when the tile set has a bounds set
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(12, 34), CLLocationCoordinate2DMake(56, 78));
- tileSet = MGLTileSetFromTileURLTemplates(@[@"tile.1"], @{
- MGLTileSourceOptionCoordinateBounds: @(bounds),
- });
-
- // the mbgl object reflects the set values for the bounds
- XCTAssert(!!tileSet.bounds, @"The bounds are set after setting the bounds");
- if (tileSet.bounds) {
- MGLCoordinateBounds actual = MGLCoordinateBoundsFromLatLngBounds(*tileSet.bounds);
- XCTAssert(MGLCoordinateBoundsEqualToCoordinateBounds(bounds, actual), @"The bounds round-trip");
- }
-
- // when the tile set has an attribution
- NSString *attribution = @"my tileset © ©️🎈";
- tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
- MGLTileSourceOptionAttributionHTMLString: attribution,
- });
-
- // the attribution is reflected by the mbgl tileset
- XCTAssertEqual(tileSet.attribution, attribution.UTF8String);
-
- // when the tile set has attribution infos
- MGLAttributionInfo *mapboxInfo = [[MGLAttributionInfo alloc] initWithTitle:[[NSAttributedString alloc] initWithString:@"Mapbox"]
- URL:[NSURL URLWithString:@"https://www.mapbox.com/"]];
-#if TARGET_OS_IPHONE
- UIColor *redColor = [UIColor redColor];
-#else
- // CSS uses the sRGB color space. In macOS 10.12 Sierra and below,
- // -[NSColor redColor] is in the calibrated RGB space and has a slightly
- // different sRGB value than on iOS and macOS 10.13 High Sierra.
- NSColor *redColor = [NSColor colorWithSRGBRed:1 green:0 blue:0 alpha:1];
-#endif
- NSAttributedString *gl = [[NSAttributedString alloc] initWithString:@"GL" attributes:@{
- NSBackgroundColorAttributeName: redColor,
- }];
- MGLAttributionInfo *glInfo = [[MGLAttributionInfo alloc] initWithTitle:gl URL:nil];
- tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
- MGLTileSourceOptionAttributionInfos: @[mapboxInfo, glInfo],
- });
-
- // the attribution is reflected by the mbgl tileset
-#if TARGET_OS_IPHONE
- NSString *html;
- if (@available(iOS 13.0, *)) {
- // TODO: investigate visual impact
- // iOS 13 evidently changes font size from points to pixels
- html = (@"<font style=\"font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 12.00px\">"
- @"<a href=\"https://www.mapbox.com/\">Mapbox</a> </font>"
- @"<font style=\"font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 12.00px; background-color: #ff0000\">GL</font>\n");
- } else {
- html = (@"<font style=\"font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 12.00pt\">"
- @"<a href=\"https://www.mapbox.com/\">Mapbox</a> </font>"
- @"<font style=\"font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 12.00pt; background-color: #ff0000\">GL</font>\n");
- }
-#else
- NSString *html = (@"<font face=\"Helvetica\" size=\"3\" style=\"font: 12.0px Helvetica\">"
- @"<a href=\"https://www.mapbox.com/\">Mapbox</a> </font>"
- @"<font face=\"Helvetica\" size=\"3\" style=\"font: 12.0px Helvetica; background-color: #ff0000\">GL</font>\n");
-#endif
- XCTAssertEqualObjects(@(tileSet.attribution.c_str()), html);
-
- // when the tile coordinate system is changed using an NSNumber
- tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
- MGLTileSourceOptionTileCoordinateSystem: @(MGLTileCoordinateSystemTMS),
- });
-
- // the scheme is reflected by the mbgl tileset
- XCTAssertEqual(tileSet.scheme, mbgl::Tileset::Scheme::TMS);
-
- // when the tile coordinate system is changed using an NSValue
- MGLTileCoordinateSystem tms = MGLTileCoordinateSystemTMS;
- tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
- MGLTileSourceOptionTileCoordinateSystem: [NSValue value:&tms withObjCType:@encode(MGLTileCoordinateSystem)],
- });
-
- // the scheme is reflected by the mbgl tileset
- XCTAssertEqual(tileSet.scheme, mbgl::Tileset::Scheme::TMS);
-
- // when the dem encoding is changed using an NSNumber
- tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
- MGLTileSourceOptionDEMEncoding: @(MGLDEMEncodingTerrarium),
- });
-
- // the encoding is reflected by the mbgl tileset
- XCTAssertEqual(tileSet.encoding, mbgl::Tileset::DEMEncoding::Terrarium);
-
- // when the dem encoding is changed using an NSValue
- MGLDEMEncoding terrarium = MGLDEMEncodingTerrarium;
- tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
- MGLTileSourceOptionDEMEncoding: [NSValue value:&terrarium withObjCType:@encode(MGLDEMEncoding)],
- });
-
- // the encoding is reflected by the mbgl tileset
- XCTAssertEqual(tileSet.encoding, mbgl::Tileset::DEMEncoding::Terrarium);
-}
-
-- (void)testInvalidTileSet {
- // a tile set that provides an mbgl tile set and invalid (crossed) minimum and maximum zoom levels throws an exception
- XCTAssertThrowsSpecificNamed(MGLTileSetFromTileURLTemplates(@[@"tile.1"], @{
- MGLTileSourceOptionMinimumZoomLevel: @10,
- MGLTileSourceOptionMaximumZoomLevel: @9,
- }), NSException, NSInvalidArgumentException);
-}
-
-@end
diff --git a/platform/darwin/test/MGLVersionNumber.m b/platform/darwin/test/MGLVersionNumber.m
deleted file mode 100644
index fae08a087d..0000000000
--- a/platform/darwin/test/MGLVersionNumber.m
+++ /dev/null
@@ -1,15 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-#import <XCTest/XCTest.h>
-
-@interface MGLVersionTests : XCTestCase
-
-@end
-
-@implementation MGLVersionTests
-
-- (void)testVersionNumber {
- XCTAssertEqual(1, MapboxVersionNumber);
-}
-
-@end
diff --git a/platform/darwin/test/Media.xcassets/Contents.json b/platform/darwin/test/Media.xcassets/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/darwin/test/Media.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json b/platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json
deleted file mode 100644
index 79be9ed970..0000000000
--- a/platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "radar.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.png b/platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.png
deleted file mode 100644
index e23697f42a..0000000000
--- a/platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json
deleted file mode 100644
index 08cd551fc7..0000000000
--- a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationMask.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationMask@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationMask@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png
deleted file mode 100644
index bb7348c482..0000000000
--- a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png
deleted file mode 100644
index 35c5a293ec..0000000000
--- a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png
deleted file mode 100644
index af523975a5..0000000000
--- a/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/darwin/test/amsterdam.geojson b/platform/darwin/test/amsterdam.geojson
deleted file mode 100644
index a690f8c8aa..0000000000
--- a/platform/darwin/test/amsterdam.geojson
+++ /dev/null
@@ -1,2283 +0,0 @@
-{
- "type": "FeatureCollection",
- "features": [
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Westerpark",
- "type": "park",
- "description": "The \"Westerpark\" is a public urban park in Amsterdam, Netherlands. The former borough of Westerpark is named after the park, as is the current neighborhood. The verdant space of the former Westergasfabriek (gasworks) along Haarlemmerweg has become a place for cultural avant-garde businesses and events. The park is stretched along the railway, offering a biotope area to experience nature in the city. In addition Westerpark is home to one of the Netherlands’ oldest volkstuin (Gardenpark)."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.88093376159668,
- 52.38560608655206
- ],
- [
- 4.881706237792968,
- 52.3864966440161
- ],
- [
- 4.870891571044922,
- 52.388696767789725
- ],
- [
- 4.864625930786133,
- 52.38906344442449
- ],
- [
- 4.85072135925293,
- 52.389220590621235
- ],
- [
- 4.846086502075195,
- 52.38864438516467
- ],
- [
- 4.84522819519043,
- 52.38607756038855
- ],
- [
- 4.845314025878906,
- 52.38560608655206
- ],
- [
- 4.84745979309082,
- 52.38560608655206
- ],
- [
- 4.848232269287109,
- 52.38518699447024
- ],
- [
- 4.88093376159668,
- 52.38560608655206
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "vondelpark",
- "type": "park",
- "description": "Vondelpark has opened its gates since 1885 and is Amsterdam's busiest park, with 10 Million visitors per year, situated at the south-west corner of the canal ring. It is very popular in summer for both tourists and locals, and all year round as a training area for runners, with many bootcamps taking place all over the park."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.881491661071777,
- 52.36194735288177
- ],
- [
- 4.882135391235352,
- 52.361711487760196
- ],
- [
- 4.882307052612305,
- 52.361475621379526
- ],
- [
- 4.875826835632324,
- 52.35966727063089
- ],
- [
- 4.875226020812988,
- 52.35846166234964
- ],
- [
- 4.866771697998047,
- 52.356207610808546
- ],
- [
- 4.867458343505859,
- 52.355159175569305
- ],
- [
- 4.86668586730957,
- 52.35497569684526
- ],
- [
- 4.864239692687988,
- 52.35563097450493
- ],
- [
- 4.861965179443359,
- 52.35578823969753
- ],
- [
- 4.858918190002441,
- 52.35437283281734
- ],
- [
- 4.857029914855957,
- 52.35468737159704
- ],
- [
- 4.855892658233642,
- 52.354634948622525
- ],
- [
- 4.855034351348877,
- 52.356391084418235
- ],
- [
- 4.875226020812988,
- 52.36126596131745
- ],
- [
- 4.876556396484375,
- 52.360453519180375
- ],
- [
- 4.881491661071777,
- 52.36194735288177
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Jordaan",
- "type": "neighbourhood",
- "description": "The Jordan was originally a working-class neighbourhood, and has now become a more upscale neighborhood. It is home to many art galleries, particularly for modern art, and is also dotted with speciality shops and restaurants. Markets are held regularly at Noordermarkt, the Westerstraat and Lindengracht."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.888465404510498,
- 52.38053742479665
- ],
- [
- 4.883208274841309,
- 52.374865596670936
- ],
- [
- 4.882457256317139,
- 52.36667749309006
- ],
- [
- 4.882757663726807,
- 52.36619270976844
- ],
- [
- 4.879302978515624,
- 52.36490866337324
- ],
- [
- 4.874324798583984,
- 52.37186565170666
- ],
- [
- 4.8818135261535645,
- 52.38427021667093
- ],
- [
- 4.888465404510498,
- 52.38053742479665
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Prinseneiland",
- "type": "neighbourhood",
- "description": "Between 1610 and 1615 Prinseneiland was built as an extension of the harbor. Until the end of the 19th century this was an area with many wharfs, little industries and warehouses, related to the shipping trades. After the second World war the desolated area was discovered by many artists, who established their homes and studios in the vacant buildings. During the second half of the 20th century the old warehouses were transformed into apartments one after another, and new apartments were built. Nevertheless a lot of the atmosphere of the glorious past is still present in the old buildings and wooden drawbridges."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.883251190185547,
- 52.38618233166844
- ],
- [
- 4.889817237854004,
- 52.38264616355127
- ],
- [
- 4.896254539489746,
- 52.38356297507495
- ],
- [
- 4.891490936279297,
- 52.390425359543386
- ],
- [
- 4.884967803955078,
- 52.39068726147953
- ],
- [
- 4.883251190185547,
- 52.38618233166844
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Sarphatipark",
- "type": "park",
- "description": "Sarphatipark is a small park in the popular De Pijp neighbourhood. It was openend in late 19th century, and named after Samuel Sarphati."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.894580841064453,
- 52.35337022551748
- ],
- [
- 4.899033308029174,
- 52.354267986060016
- ],
- [
- 4.89815354347229,
- 52.35544094498385
- ],
- [
- 4.893786907196045,
- 52.35446457352601
- ],
- [
- 4.894580841064453,
- 52.35337022551748
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Museumsplein",
- "type": "area",
- "description": "Museumplein is a large open space which hosts different events throughout the year. Along the edges of the open square, some of the Dutch capitals most important art museums, such as Stedelijk Museum, Van Gogh Museum and Rijksmuseum."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.880322217941284,
- 52.35625347928239
- ],
- [
- 4.881459474563598,
- 52.35610932106146
- ],
- [
- 4.882693290710448,
- 52.356921843071525
- ],
- [
- 4.883508682250977,
- 52.357996446011384
- ],
- [
- 4.884324073791504,
- 52.35783263627572
- ],
- [
- 4.884721040725708,
- 52.35903498560687
- ],
- [
- 4.886341094970703,
- 52.35875651523955
- ],
- [
- 4.886770248413086,
- 52.36003418836164
- ],
- [
- 4.884881973266602,
- 52.36113492327348
- ],
- [
- 4.884538650512695,
- 52.36066318309746
- ],
- [
- 4.883229732513428,
- 52.36028971855292
- ],
- [
- 4.883841276168823,
- 52.35953622784582
- ],
- [
- 4.882038831710815,
- 52.35897929167382
- ],
- [
- 4.882339239120483,
- 52.35861236518361
- ],
- [
- 4.880794286727905,
- 52.35790471263422
- ],
- [
- 4.880847930908203,
- 52.357780217032044
- ],
- [
- 4.879699945449829,
- 52.35691529053445
- ],
- [
- 4.880322217941284,
- 52.35625347928239
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Marineterrein",
- "type": "area",
- "description": "The Marineterrein exists already for more than 350 years. The area lies on the island known as ‘Kattenburg’, in close vicinity to Centraal Station and Amsterdam’s Maritime Museum. During the Golden Age the VOC used this area to build large warships. After years of use through the Dutch marines, the area has now been opened for the public and workspaces are filled by tech startups."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.914064407348633,
- 52.37083068892153
- ],
- [
- 4.917154312133789,
- 52.37187875234601
- ],
- [
- 4.921102523803711,
- 52.37444640263532
- ],
- [
- 4.921188354492187,
- 52.37481319763409
- ],
- [
- 4.914150238037109,
- 52.37586116655898
- ],
- [
- 4.913034439086914,
- 52.374917995645625
- ],
- [
- 4.914493560791016,
- 52.37339840013861
- ],
- [
- 4.914064407348633,
- 52.37083068892153
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "erasmuspark"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.849905967712402,
- 52.37300539279099
- ],
- [
- 4.852695465087891,
- 52.37350320150736
- ],
- [
- 4.855098724365234,
- 52.37428920384616
- ],
- [
- 4.854240417480469,
- 52.3765423330248
- ],
- [
- 4.848318099975586,
- 52.37552057938607
- ],
- [
- 4.849905967712402,
- 52.37300539279099
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Sloterdijk",
- "type": "area",
- "description": "To protect the area around Sloten from the as-yet undrained IJ the Spaarndammerdijk was laid along the south bank of this inlet. In this vicinity at the same time, a dam on the Slochter (or Slooter) river was built, the Slooterdam. Trade grew in the vicinity, and in the 15th century a weigh house and a church were built. The area is nowadays best known as a large intersection of train lines and a business and industrial centre north-west of Amsterdam."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.8665571212768555,
- 52.39312287505632
- ],
- [
- 4.849648475646973,
- 52.400638383557414
- ],
- [
- 4.845571517944336,
- 52.39681532315127
- ],
- [
- 4.8445844650268555,
- 52.39411803332277
- ],
- [
- 4.844756126403809,
- 52.38911582655221
- ],
- [
- 4.85072135925293,
- 52.38935154535783
- ],
- [
- 4.871063232421875,
- 52.389299163509826
- ],
- [
- 4.8665571212768555,
- 52.39312287505632
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Nine Streets (Negen Straatjes)",
- "type": "poi",
- "description": "De Negen Straatjes (Dutch for \"the nine little streets\") are nine side streets of the Prinsengracht, Keizersgracht, Herengracht and Singel in central Amsterdam which have been promoting themselves with that name since the 1990s. Together they form a sub-neighborhood within the larger western Grachtengordel (\"Canal Belt\"), one with many small and diverse shops and restaurants. The construction in this area goes back to the first half of the 17th century."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.887650012969971,
- 52.368629674781644
- ],
- [
- 4.8884546756744385,
- 52.37242897568859
- ],
- [
- 4.883047342300415,
- 52.372664783594274
- ],
- [
- 4.882628917694092,
- 52.36839384533322
- ],
- [
- 4.887650012969971,
- 52.368629674781644
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Artis",
- "type": "poi",
- "description": "Artis, short for Natura Artis Magistra (Latin for \"Nature is the teacher of art and science\"), is a zoo in the centre of Amsterdam. It is the oldest zoo in the Netherlands and one of the oldest zoos of mainland Europe. Artis Royal Zoo is not just a zoo, it also contains an aquarium and a planetarium. Artis also has an arboretum and a fairly large art collection. A part of the art collection is on display in the Aquarium building of the zoo. Artis contains 27 monumental buildings, most of which are used as enclosures for the animals, making Artis a unique cultural heritage of the 19th century."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.911768436431885,
- 52.36642855096776
- ],
- [
- 4.913313388824463,
- 52.36802699702209
- ],
- [
- 4.916939735412598,
- 52.36679541255308
- ],
- [
- 4.9175190925598145,
- 52.3673456992188
- ],
- [
- 4.921274185180664,
- 52.366048583971256
- ],
- [
- 4.921660423278808,
- 52.36551138367574
- ],
- [
- 4.918656349182129,
- 52.36400456750192
- ],
- [
- 4.911768436431885,
- 52.36642855096776
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Oosterpark",
- "type": "park",
- "description": "Oosterpark was the first large park opened by the municipality of Amsterdam in 1891. The park was designed as an English garden by Dutch landscape architect Leonard Anthony Springer."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.915802478790282,
- 52.36062387118878
- ],
- [
- 4.9173688888549805,
- 52.35804231262857
- ],
- [
- 4.925351142883301,
- 52.36002108420944
- ],
- [
- 4.923892021179199,
- 52.36192114570822
- ],
- [
- 4.92213249206543,
- 52.36150182881734
- ],
- [
- 4.92161750793457,
- 52.36223563076494
- ],
- [
- 4.919493198394775,
- 52.36159355472725
- ],
- [
- 4.91987943649292,
- 52.36101698870163
- ],
- [
- 4.918956756591797,
- 52.360741806809884
- ],
- [
- 4.918656349182129,
- 52.36097767710775
- ],
- [
- 4.917240142822266,
- 52.36063697516221
- ],
- [
- 4.916982650756836,
- 52.360899053815025
- ],
- [
- 4.915802478790282,
- 52.36062387118878
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Park Frankendael",
- "type": "park",
- "description": "As Amsterdam rapidly grew in the sixteen and the beginning of eighteen century, the real estate in the city became so expensive, that rich people who wanted to enjoy a bigger property had to move further from the capital. The Park Frankendael (7 acres) in East Amsterdam, was originally one of these wealthy estates. The entrance to the park with an old ornamented gate is at the Middenweg, less than one mile (1300m) from the Tropenmuseum, driving out of the city. The beautiful old land house Frankendael (built in 1659) is visible from the street – it is one of the few of these estates remaining in Amsterdam"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.925265312194824,
- 52.35007391180776
- ],
- [
- 4.9283552169799805,
- 52.352079253210675
- ],
- [
- 4.930479526519775,
- 52.3535995821349
- ],
- [
- 4.93483543395996,
- 52.35080790353051
- ],
- [
- 4.929170608520508,
- 52.34772767795072
- ],
- [
- 4.925265312194824,
- 52.35007391180776
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Stedelijk Museum",
- "type": "poi",
- "description": "Colloquially known as the Stedelijk, it is a museum for modern art, contemporary art, and design. The 19th century building was designed by Adriaan Willem Weissman and the 21st century wing with the current entrance was designed by Benthem Crouwel Architects. The collection comprises art from the early 20th century up to the 21st century. "
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.879399538040161,
- 52.357400175655954
- ],
- [
- 4.88067626953125,
- 52.3577933218488
- ],
- [
- 4.880236387252808,
- 52.35841579616774
- ],
- [
- 4.8789381980896,
- 52.35808817919812
- ],
- [
- 4.879399538040161,
- 52.357400175655954
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Rembrandtpark",
- "type": "park",
- "description": "Rembrandtpark is a hidden gem west of the 'famous' Vondelpark. It is often not known to tourists and expats, but loved by locals for the outdoor gym and kids' playgrounds. It's great to combine both, Vondelpark and Rembrandtpark on a run or walk."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.845314025878906,
- 52.369179938598464
- ],
- [
- 4.84522819519043,
- 52.36763394187947
- ],
- [
- 4.843039512634277,
- 52.36755533043126
- ],
- [
- 4.8429107666015625,
- 52.36490866337324
- ],
- [
- 4.8442840576171875,
- 52.36456799173892
- ],
- [
- 4.84419822692871,
- 52.36323148534417
- ],
- [
- 4.843082427978516,
- 52.36302183361385
- ],
- [
- 4.843254089355469,
- 52.36019143788499
- ],
- [
- 4.844799041748047,
- 52.36027006243683
- ],
- [
- 4.8451852798461905,
- 52.35924793235075
- ],
- [
- 4.843854904174805,
- 52.35888100809126
- ],
- [
- 4.844112396240234,
- 52.35822577862119
- ],
- [
- 4.848747253417969,
- 52.35825198798652
- ],
- [
- 4.8487043380737305,
- 52.36079422254044
- ],
- [
- 4.849519729614258,
- 52.361292168879636
- ],
- [
- 4.849262237548828,
- 52.363572167284175
- ],
- [
- 4.850249290466309,
- 52.3637031981001
- ],
- [
- 4.850249290466309,
- 52.36540656334422
- ],
- [
- 4.8484039306640625,
- 52.369546777334904
- ],
- [
- 4.845314025878906,
- 52.369179938598464
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Sloterpark",
- "type": "park",
- "description": "Amsterdam's largest park is Sloter Park with 91 hectares. It was created in the 1950s using excavated soil of the former Sloterdijkermeer Polder."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.823555946350098,
- 52.3639652585661
- ],
- [
- 4.826860427856445,
- 52.36414869996741
- ],
- [
- 4.826817512512207,
- 52.36585204803552
- ],
- [
- 4.830508232116699,
- 52.370280445668364
- ],
- [
- 4.826602935791016,
- 52.373031593389626
- ],
- [
- 4.822740554809569,
- 52.37360800262741
- ],
- [
- 4.821324348449707,
- 52.37235037277361
- ],
- [
- 4.819135665893555,
- 52.371695343041914
- ],
- [
- 4.81201171875,
- 52.37187875234601
- ],
- [
- 4.807548522949219,
- 52.372402774732464
- ],
- [
- 4.805660247802734,
- 52.37046386084771
- ],
- [
- 4.80926513671875,
- 52.36349354860812
- ],
- [
- 4.8105525970458975,
- 52.36328389812132
- ],
- [
- 4.8113250732421875,
- 52.36150182881734
- ],
- [
- 4.807033538818359,
- 52.360899053815025
- ],
- [
- 4.809608459472655,
- 52.35654834690599
- ],
- [
- 4.815659523010254,
- 52.3577540073869
- ],
- [
- 4.818663597106934,
- 52.357963684112846
- ],
- [
- 4.818620681762695,
- 52.359483810623004
- ],
- [
- 4.823555946350098,
- 52.3639652585661
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Amsterdamse Bos",
- "type": "park",
- "description": "Every year almost 4.5 million people visit the Amsterdamse Bos, which has a size of 1,000 hectares and is approximately three times the size of New York's Central Park. The park was designed as a landscape park and is great for running, walking and cycling."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.849991798400879,
- 52.33090717211467
- ],
- [
- 4.849863052368164,
- 52.331746382485676
- ],
- [
- 4.853982925415039,
- 52.33187750766789
- ],
- [
- 4.853467941284179,
- 52.332323330379836
- ],
- [
- 4.848232269287109,
- 52.33258557693488
- ],
- [
- 4.848318099975586,
- 52.33321496232317
- ],
- [
- 4.8319244384765625,
- 52.33145790571652
- ],
- [
- 4.8181915283203125,
- 52.330828495326095
- ],
- [
- 4.820079803466797,
- 52.32327487205222
- ],
- [
- 4.816474914550781,
- 52.31299147898779
- ],
- [
- 4.813899993896484,
- 52.30879348896445
- ],
- [
- 4.809093475341796,
- 52.30585465906291
- ],
- [
- 4.824028015136719,
- 52.29000260620264
- ],
- [
- 4.832954406738281,
- 52.29441235610253
- ],
- [
- 4.8427391052246085,
- 52.29220753602784
- ],
- [
- 4.844627380371094,
- 52.30060626328963
- ],
- [
- 4.842395782470703,
- 52.30396530825102
- ],
- [
- 4.842395782470703,
- 52.30407027430016
- ],
- [
- 4.839649200439453,
- 52.30504119845803
- ],
- [
- 4.841108322143555,
- 52.30732409839935
- ],
- [
- 4.840335845947266,
- 52.31708413595253
- ],
- [
- 4.848575592041015,
- 52.317189070898415
- ],
- [
- 4.8558712005615225,
- 52.31645452105213
- ],
- [
- 4.8566436767578125,
- 52.323484712336324
- ],
- [
- 4.856557846069336,
- 52.32757639896581
- ],
- [
- 4.855785369873047,
- 52.33085472093785
- ],
- [
- 4.849991798400879,
- 52.33090717211467
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Amstelpark",
- "type": "park",
- "description": "The Amstelpark is a park in Amsterdam-Zuid. The park includes a labyrinth, a café, a restaurant, two galleries, an orangery, petting zoo and a mini-golf course. The Amstelpark was built and opened for the 1972 Floriade gardening exhibition. The park offers the Amstel train which runs through the Rosarium, the rhododendron valley and the Riekermolen. The park lost about 30 percent of its larger trees due to disease. The rhododendron valley contains about 139 species of rhododendrons, blooming between April and May. At the Great Pond in the park is the Japanese Garden. At the time of the celebration of the 400-year relationship between the Netherlands and Japan in 2001, the gardens were renovated."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.892907142639159,
- 52.32445521070514
- ],
- [
- 4.891705513000488,
- 52.325110940795255
- ],
- [
- 4.890632629394531,
- 52.32513716979672
- ],
- [
- 4.89041805267334,
- 52.3336869954871
- ],
- [
- 4.892778396606445,
- 52.33373944330546
- ],
- [
- 4.894108772277832,
- 52.333949233956965
- ],
- [
- 4.897370338439941,
- 52.33255935234935
- ],
- [
- 4.897799491882323,
- 52.33085472093785
- ],
- [
- 4.897327423095702,
- 52.32907134391899
- ],
- [
- 4.895954132080078,
- 52.32734035040776
- ],
- [
- 4.894537925720215,
- 52.32458635750065
- ],
- [
- 4.892907142639159,
- 52.32445521070514
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Martin Luther Kingpark",
- "type": "park",
- "description": "Martin Luther Kingpark is part of the Rivierenbuurt and has been renamed from Amstelpark, after the new Amstelpark in Buitenveldert was created. The park hosts the famous theater festival Parade every year in summer since the 1990s. "
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.906554222106933,
- 52.33813172737753
- ],
- [
- 4.906167984008789,
- 52.33685997655858
- ],
- [
- 4.90389347076416,
- 52.33743685775091
- ],
- [
- 4.901747703552246,
- 52.33821039117558
- ],
- [
- 4.901790618896484,
- 52.3400982803501
- ],
- [
- 4.90689754486084,
- 52.34004584007248
- ],
- [
- 4.905717372894287,
- 52.33836771835187
- ],
- [
- 4.906554222106933,
- 52.33813172737753
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Beatrixpark",
- "type": "park",
- "description": "Beatrixpark, named after Queen Beatrix is located in the borough of Amsterdam-Zuid."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.87818717956543,
- 52.34435884510934
- ],
- [
- 4.88093376159668,
- 52.34582700615622
- ],
- [
- 4.882993698120117,
- 52.34456858538671
- ],
- [
- 4.8854827880859375,
- 52.34435884510934
- ],
- [
- 4.884710311889648,
- 52.33984918847747
- ],
- [
- 4.882392883300781,
- 52.33995406943698
- ],
- [
- 4.879045486450195,
- 52.33984918847747
- ],
- [
- 4.878787994384765,
- 52.340688229188224
- ],
- [
- 4.881620407104492,
- 52.34074066870404
- ],
- [
- 4.881706237792968,
- 52.341789445960536
- ],
- [
- 4.878444671630859,
- 52.341789445960536
- ],
- [
- 4.87818717956543,
- 52.34435884510934
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Park de Schinkeleilanden",
- "type": "Park",
- "description": "This park was built between 2005 and 2010 and is popular for the neighborhoods surrounding the Schinkel waterway. It's allowed to BBQ here, and it's a popular spot for running and hiking."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.851171970367432,
- 52.34405734171741
- ],
- [
- 4.851021766662597,
- 52.34514536601911
- ],
- [
- 4.851686954498291,
- 52.34628579648493
- ],
- [
- 4.851021766662597,
- 52.3465610683968
- ],
- [
- 4.848833084106445,
- 52.342785761313266
- ],
- [
- 4.849659204483032,
- 52.340747223639156
- ],
- [
- 4.852405786514282,
- 52.34110774357341
- ],
- [
- 4.852041006088257,
- 52.34196642466951
- ],
- [
- 4.852041006088257,
- 52.341979534175316
- ],
- [
- 4.851665496826172,
- 52.34280870252078
- ],
- [
- 4.851171970367432,
- 52.34405734171741
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Schiphol",
- "type": "area",
- "description": "Schiphol is the main international airport of the Netherlands. Schiphol Airport is an important European airport, ranking as Europe's fifth busiest and the world's fourteenth busiest by total passenger traffic in 2015. It also ranks as the world's fifth busiest by international passenger traffic. The entire airport is below sea level; the lowest point sits at 3.4 m (11 ft) below sea level."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.729099273681641,
- 52.28811257899827
- ],
- [
- 4.734764099121094,
- 52.28559241729168
- ],
- [
- 4.762744903564453,
- 52.292522517043615
- ],
- [
- 4.776134490966797,
- 52.284857343123655
- ],
- [
- 4.7907257080078125,
- 52.293992398835414
- ],
- [
- 4.793128967285156,
- 52.30081621106509
- ],
- [
- 4.803943634033203,
- 52.30564473517634
- ],
- [
- 4.810981750488281,
- 52.311942018805624
- ],
- [
- 4.796905517578125,
- 52.319707434957024
- ],
- [
- 4.788494110107422,
- 52.320966563244205
- ],
- [
- 4.779567718505859,
- 52.32442898129939
- ],
- [
- 4.77081298828125,
- 52.3191827875965
- ],
- [
- 4.756736755371094,
- 52.31886799619451
- ],
- [
- 4.750041961669922,
- 52.310367781878
- ],
- [
- 4.7454071044921875,
- 52.30281066528705
- ],
- [
- 4.7426605224609375,
- 52.29798183210937
- ],
- [
- 4.729099273681641,
- 52.28811257899827
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Noorderpark",
- "type": "park",
- "description": "The Noorderpark is a park just 5 minutes north of the ferry that crosses the IJ canal behind Amsterdam Central Station. It came to exist in 2014 after combining Florapark and Volewijkspark."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.921703338623047,
- 52.39046464493288
- ],
- [
- 4.921939373016357,
- 52.389652739777624
- ],
- [
- 4.92436408996582,
- 52.39068726147955
- ],
- [
- 4.924213886260986,
- 52.390922971893374
- ],
- [
- 4.92460012435913,
- 52.39105392157937
- ],
- [
- 4.923999309539795,
- 52.39326691251008
- ],
- [
- 4.924793243408203,
- 52.39486438729677
- ],
- [
- 4.922282695770264,
- 52.39698553494043
- ],
- [
- 4.919922351837158,
- 52.39847813327716
- ],
- [
- 4.917948246002197,
- 52.397705654476155
- ],
- [
- 4.918398857116699,
- 52.39618684316538
- ],
- [
- 4.917948246002197,
- 52.39527029380819
- ],
- [
- 4.917197227478027,
- 52.39200984251752
- ],
- [
- 4.9161458015441895,
- 52.39068726147955
- ],
- [
- 4.918420314788818,
- 52.389901551009025
- ],
- [
- 4.920244216918945,
- 52.39115868104846
- ],
- [
- 4.921402931213379,
- 52.39157771643836
- ],
- [
- 4.922153949737548,
- 52.39121106068977
- ],
- [
- 4.921703338623047,
- 52.39046464493288
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Vliegenbos",
- "type": "park",
- "description": "The Vliegenbos is the oldest city forest in Amsterdam. Here you've got plenty of space to run or cycle through a dense forest. It also hosts a camping ground, and is an amazingly well located starting point for excursions to the fishing villages along the IJsselmeer. "
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.925222396850586,
- 52.389403927143704
- ],
- [
- 4.925136566162109,
- 52.39003250372539
- ],
- [
- 4.926724433898926,
- 52.39105392157937
- ],
- [
- 4.933032989501953,
- 52.391525337232174
- ],
- [
- 4.93311882019043,
- 52.390739641680284
- ],
- [
- 4.938998222351074,
- 52.38969202585476
- ],
- [
- 4.9376678466796875,
- 52.38686333892666
- ],
- [
- 4.927024841308593,
- 52.38906344442449
- ],
- [
- 4.926466941833496,
- 52.38948249970591
- ],
- [
- 4.9253082275390625,
- 52.38945630886739
- ],
- [
- 4.925222396850586,
- 52.389403927143704
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Flevopark",
- "type": "park",
- "description": "Flevopark is the jewel in the East of Amsterdam. Its offerings include an outdoor swimming pool, several lakes, restaurants. It's awesome for a bbq in summer or a foggy walk or run on a winter morning."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.948225021362305,
- 52.36493486877479
- ],
- [
- 4.9527740478515625,
- 52.36517071668903
- ],
- [
- 4.954404830932617,
- 52.36517071668903
- ],
- [
- 4.955005645751953,
- 52.36459419734253
- ],
- [
- 4.952559471130371,
- 52.36215700971062
- ],
- [
- 4.952859878540038,
- 52.35953622784585
- ],
- [
- 4.952731132507324,
- 52.35809473156134
- ],
- [
- 4.944963455200195,
- 52.35859270832139
- ],
- [
- 4.946165084838867,
- 52.362314251679365
- ],
- [
- 4.947195053100586,
- 52.362602527168704
- ],
- [
- 4.947667121887207,
- 52.36417490581972
- ],
- [
- 4.948225021362305,
- 52.36493486877479
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Amsterdam Centraal",
- "type": "station",
- "description": "Amsterdam's Central Station."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.896576404571533,
- 52.37985631995486
- ],
- [
- 4.89715576171875,
- 52.38066840529253
- ],
- [
- 4.90389347076416,
- 52.37820590695898
- ],
- [
- 4.902949333190918,
- 52.37738067732881
- ],
- [
- 4.896576404571533,
- 52.37985631995486
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Amsterdam Amstel",
- "type": "station",
- "description": "Amsterdam Amstel is a trainstation in the South East, close to the river Amstel."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.916896820068359,
- 52.3468101224592
- ],
- [
- 4.917690753936768,
- 52.34704606711881
- ],
- [
- 4.918248653411864,
- 52.34604984776767
- ],
- [
- 4.9173903465271,
- 52.34584011451739
- ],
- [
- 4.916896820068359,
- 52.3468101224592
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Ouderkerk",
- "type": "poi",
- "description": "Ouderkerk aan de Amstel is a picturesque village in the Dutch province of North Holland. It lies about 9 km south of Amsterdam. The town is a popular destination for Amsterdammers on the weekends. The town is the location of the Beth Haim of Ouderkerk aan de Amstel, the oldest Jewish cemetery in the Netherlands."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.922518730163574,
- 52.29236502681571
- ],
- [
- 4.922819137573242,
- 52.28777131549237
- ],
- [
- 4.90788459777832,
- 52.29034385252062
- ],
- [
- 4.892692565917969,
- 52.29456983905114
- ],
- [
- 4.898228645324707,
- 52.29824428222637
- ],
- [
- 4.902563095092773,
- 52.299267822821434
- ],
- [
- 4.908742904663086,
- 52.29879542240944
- ],
- [
- 4.916167259216309,
- 52.30149853446092
- ],
- [
- 4.920544624328613,
- 52.29666955819423
- ],
- [
- 4.922518730163574,
- 52.29236502681571
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "NDSM terrein",
- "type": "poi",
- "description": "The former NDSM Amsterdam ship wharf is a stunning hangout. Just 10 minutes by free ferry and a large area is there to explore. Restaurants, bars, terraces, skatepark, new and old architecture, all with the amazing view on the IJ-waters. Many of the old buildings that were in use for the making of large ships are still there, housing creative enterprises."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.890182018280029,
- 52.401711923144106
- ],
- [
- 4.894495010375977,
- 52.40307344797437
- ],
- [
- 4.899129867553711,
- 52.400939500955296
- ],
- [
- 4.896554946899414,
- 52.39881854337136
- ],
- [
- 4.8909544944763175,
- 52.39813772055684
- ],
- [
- 4.891490936279297,
- 52.400847856747404
- ],
- [
- 4.890182018280029,
- 52.401711923144106
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Amsterdam Zuid",
- "type": "station",
- "description": "Station Amsterdam Zuid"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.8720502853393555,
- 52.33950832364112
- ],
- [
- 4.874711036682129,
- 52.33969186657182
- ],
- [
- 4.8749041557312,
- 52.338459492279576
- ],
- [
- 4.872071743011475,
- 52.33835460777523
- ],
- [
- 4.8720502853393555,
- 52.33950832364112
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Het Twiske",
- "type": "park",
- "description": "Het Twiske recreational area lies to the north of Amsterdam between Zaanstad and Purmerend. It’s the ideal place for a day out on your bicycle, as Amsterdam’s bike paths connect directly to the paths in Het Twiske."
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.888744354248047,
- 52.43555429631541
- ],
- [
- 4.900503158569336,
- 52.43445541622349
- ],
- [
- 4.910116195678711,
- 52.43586825702301
- ],
- [
- 4.910888671875,
- 52.442199320554714
- ],
- [
- 4.907197952270508,
- 52.44852947442261
- ],
- [
- 4.90565299987793,
- 52.449941863962756
- ],
- [
- 4.905910491943359,
- 52.45135420821245
- ],
- [
- 4.903764724731445,
- 52.4549633266463
- ],
- [
- 4.903507232666016,
- 52.45846754991504
- ],
- [
- 4.904794692993164,
- 52.461866903001194
- ],
- [
- 4.906854629516602,
- 52.46489995032684
- ],
- [
- 4.906940460205078,
- 52.465736616263186
- ],
- [
- 4.9031639099121085,
- 52.4673576112622
- ],
- [
- 4.896640777587891,
- 52.468560246396606
- ],
- [
- 4.895782470703125,
- 52.46793278868704
- ],
- [
- 4.892778396606445,
- 52.465422868400594
- ],
- [
- 4.890289306640625,
- 52.46416785458775
- ],
- [
- 4.882049560546875,
- 52.46191919869101
- ],
- [
- 4.876041412353516,
- 52.45982732264483
- ],
- [
- 4.87492561340332,
- 52.45825835038316
- ],
- [
- 4.873895645141601,
- 52.45648011423114
- ],
- [
- 4.873037338256836,
- 52.454911022694276
- ],
- [
- 4.873552322387695,
- 52.452714200611055
- ],
- [
- 4.874839782714844,
- 52.44805866784458
- ],
- [
- 4.879388809204102,
- 52.44277482667677
- ],
- [
- 4.883165359497069,
- 52.43926935464697
- ],
- [
- 4.887542724609374,
- 52.43597291009513
- ],
- [
- 4.888744354248047,
- 52.43555429631541
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Diemerpark",
- "type": "park"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.974660873413086,
- 52.35694150067703
- ],
- [
- 4.980497360229492,
- 52.357989893633615
- ],
- [
- 4.985218048095703,
- 52.35827819733633
- ],
- [
- 4.986248016357422,
- 52.35720360124792
- ],
- [
- 4.985218048095703,
- 52.355971715048284
- ],
- [
- 4.985218048095703,
- 52.3552640202125
- ],
- [
- 4.986376762390137,
- 52.3545563140442
- ],
- [
- 4.987921714782714,
- 52.353901020450564
- ],
- [
- 4.988865852355957,
- 52.353901020450564
- ],
- [
- 4.989681243896484,
- 52.353219504806525
- ],
- [
- 4.991183280944824,
- 52.352642829515084
- ],
- [
- 4.992728233337402,
- 52.35169916280845
- ],
- [
- 4.994831085205078,
- 52.34996905485244
- ],
- [
- 4.995818138122559,
- 52.34991662628147
- ],
- [
- 4.997320175170898,
- 52.348763181988105
- ],
- [
- 4.997320175170898,
- 52.348081587122245
- ],
- [
- 4.99852180480957,
- 52.34658728467996
- ],
- [
- 4.999551773071289,
- 52.34535510256526
- ],
- [
- 4.999337196350098,
- 52.345197800248926
- ],
- [
- 4.976506233215332,
- 52.35573581802885
- ],
- [
- 4.974660873413086,
- 52.35694150067703
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Amstelfeld",
- "type": "poi"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.897080659866332,
- 52.36253045847271
- ],
- [
- 4.8978424072265625,
- 52.36269425079362
- ],
- [
- 4.89815354347229,
- 52.362137354425165
- ],
- [
- 4.896329641342163,
- 52.36185562770631
- ],
- [
- 4.896275997161865,
- 52.36240597590272
- ],
- [
- 4.897080659866332,
- 52.36253045847271
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Albert Cuyp Markt",
- "type": "poi"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.890514612197876,
- 52.35491672137934
- ],
- [
- 4.894967079162598,
- 52.35580134510498
- ],
- [
- 4.896436929702759,
- 52.356168294935955
- ],
- [
- 4.899580478668213,
- 52.3570725511568
- ],
- [
- 4.899430274963379,
- 52.35731499351983
- ],
- [
- 4.897252321243286,
- 52.356587662440496
- ],
- [
- 4.895503520965576,
- 52.356076557763856
- ],
- [
- 4.893561601638794,
- 52.355683396297984
- ],
- [
- 4.8904502391815186,
- 52.35510020034824
- ],
- [
- 4.890514612197876,
- 52.35491672137934
- ]
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1,
- "fill": "#555555",
- "fill-opacity": 0.5,
- "name": "Noordermarkt",
- "type": "poi"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 4.885987043380737,
- 52.37978100483205
- ],
- [
- 4.886265993118286,
- 52.37907041669766
- ],
- [
- 4.886485934257507,
- 52.37900819875896
- ],
- [
- 4.886732697486877,
- 52.37907041669766
- ],
- [
- 4.887698292732239,
- 52.38007244089837
- ],
- [
- 4.885987043380737,
- 52.37978100483205
- ]
- ]
- ]
- }
- }
- ]
-}
diff --git a/platform/darwin/test/one-liner.json b/platform/darwin/test/one-liner.json
deleted file mode 100644
index 23c546181f..0000000000
--- a/platform/darwin/test/one-liner.json
+++ /dev/null
@@ -1 +0,0 @@
-{"version":8,"sources":{},"layers":[]} \ No newline at end of file
diff --git a/platform/darwin/test/test-Bridging-Header.h b/platform/darwin/test/test-Bridging-Header.h
deleted file mode 100644
index 1b2cb5d6d0..0000000000
--- a/platform/darwin/test/test-Bridging-Header.h
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-// Use this file to import your target's public headers that you would like to expose to Swift.
-//
-
diff --git a/platform/ios/Integration Test Harness/AppDelegate.h b/platform/ios/Integration Test Harness/AppDelegate.h
deleted file mode 100644
index 2a9bac67c9..0000000000
--- a/platform/ios/Integration Test Harness/AppDelegate.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface AppDelegate : UIResponder <UIApplicationDelegate>
-
-@property (strong, nonatomic) UIWindow *window;
-
-@end
-
diff --git a/platform/ios/Integration Test Harness/AppDelegate.m b/platform/ios/Integration Test Harness/AppDelegate.m
deleted file mode 100644
index 4483c5f98a..0000000000
--- a/platform/ios/Integration Test Harness/AppDelegate.m
+++ /dev/null
@@ -1,14 +0,0 @@
-#import "AppDelegate.h"
-
-@interface AppDelegate ()
-
-@end
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
- return YES;
-}
-
-@end
diff --git a/platform/ios/Integration Test Harness/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/Integration Test Harness/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index d8db8d65fd..0000000000
--- a/platform/ios/Integration Test Harness/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "83.5x83.5",
- "scale" : "2x"
- },
- {
- "idiom" : "ios-marketing",
- "size" : "1024x1024",
- "scale" : "1x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/Integration Test Harness/Base.lproj/LaunchScreen.storyboard b/platform/ios/Integration Test Harness/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index f83f6fd581..0000000000
--- a/platform/ios/Integration Test Harness/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" systemVersion="17A277" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
- <capability name="Safe area layout guides" minToolsVersion="9.0"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="EHf-IW-A2E">
- <objects>
- <viewController id="01J-lp-oVM" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
- </view>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="53" y="375"/>
- </scene>
- </scenes>
-</document>
diff --git a/platform/ios/Integration Test Harness/Info.plist b/platform/ios/Integration Test Harness/Info.plist
deleted file mode 100644
index be30bb5cc5..0000000000
--- a/platform/ios/Integration Test Harness/Info.plist
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>NSLocationWhenInUseUsageDescription</key>
- <string>Used to run user location tests</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>$(DEVELOPMENT_LANGUAGE)</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSRequiresIPhoneOS</key>
- <true/>
- <key>UILaunchStoryboardName</key>
- <string>LaunchScreen</string>
- <key>UIRequiredDeviceCapabilities</key>
- <array>
- <string>armv7</string>
- </array>
- <key>UISupportedInterfaceOrientations</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
- <key>UISupportedInterfaceOrientations~ipad</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationPortraitUpsideDown</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
-</dict>
-</plist>
diff --git a/platform/ios/Integration Test Harness/main.m b/platform/ios/Integration Test Harness/main.m
deleted file mode 100644
index 81e84cbb78..0000000000
--- a/platform/ios/Integration Test Harness/main.m
+++ /dev/null
@@ -1,8 +0,0 @@
-#import <UIKit/UIKit.h>
-#import "AppDelegate.h"
-
-int main(int argc, char * argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
-}
diff --git a/platform/ios/Integration Tests/Annotation Tests/MGLAnnotationViewIntegrationTests.mm b/platform/ios/Integration Tests/Annotation Tests/MGLAnnotationViewIntegrationTests.mm
deleted file mode 100644
index 1b3603419e..0000000000
--- a/platform/ios/Integration Tests/Annotation Tests/MGLAnnotationViewIntegrationTests.mm
+++ /dev/null
@@ -1,818 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-#import "MGLTestUtility.h"
-#import "MGLMapAccessibilityElement.h"
-#import "MGLTestLocationManager.h"
-#import "MGLCompactCalloutView.h"
-
-#import "MGLGeometry_Private.h"
-#import "MGLMapView_Private.h"
-
-#include <mbgl/util/geo.hpp>
-#include <mbgl/map/camera.hpp>
-#include <mbgl/map/map.hpp>
-
-@interface MGLTestCalloutView : MGLCompactCalloutView
-@property (nonatomic) BOOL implementsMarginHints;
-@end
-
-@implementation MGLTestCalloutView
-- (BOOL)respondsToSelector:(SEL)aSelector {
- if (!self.implementsMarginHints &&
- (aSelector == @selector(marginInsetsHintForPresentationFromRect:))) {
- return NO;
- }
- return [super respondsToSelector:aSelector];
-}
-@end
-
-
-@interface MGLMapView (Tests)
-- (MGLAnnotationTag)annotationTagAtPoint:(CGPoint)point persistingResults:(BOOL)persist;
-- (id <MGLAnnotation>)annotationWithTag:(MGLAnnotationTag)tag;
-- (MGLMapCamera *)cameraByRotatingToDirection:(CLLocationDirection)degrees aroundAnchorPoint:(CGPoint)anchorPoint;
-- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint;
-- (MGLMapCamera *)cameraForCameraOptions:(const mbgl::CameraOptions &)cameraOptions;
-@property (nonatomic) UIView<MGLCalloutView> *calloutViewForSelectedAnnotation;
-@end
-
-@interface MGLAnnotationViewIntegrationTests : MGLMapViewIntegrationTest
-@end
-
-@implementation MGLAnnotationViewIntegrationTests
-
-#pragma mark - Offscreen/panning selection tests
-
-typedef struct PanTestData {
- CGPoint relativeCoord;
- BOOL showsCallout;
- BOOL implementsMargins;
- BOOL moveIntoView;
- BOOL expectMapToHavePanned;
- BOOL calloutOnScreen;
-} PanTestData;
-
-#define PAN_TEST_TERMINATOR {{FLT_MAX, FLT_MAX}, NO, NO, NO, NO, NO}
-static const CGPoint kAnnotationRelativeScale = { 0.05f, 0.125f };
-
-- (void)internalTestOffscreenSelectionTitle:(NSString*)title withTestData:(PanTestData)test animateSelection:(BOOL)animateSelection {
-
- CGPoint relativeCoordinate = test.relativeCoord;
- BOOL showsCallout = test.showsCallout;
- BOOL calloutImplementsMarginHints = test.implementsMargins;
- BOOL moveIntoView = test.moveIntoView;
- BOOL expectMapToHavePanned = test.expectMapToHavePanned;
- BOOL expectCalloutToBeFullyOnscreen = test.calloutOnScreen;
-
- // Reset the map to a consistent state - want the map to be zoomed in, so that
- // it's free to be panned without hitting boundaries.
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(0, 0) zoomLevel:14 animated:NO];
- [self waitForMapViewToBeRenderedWithTimeout:1.0];
-
- XCTAssert(self.mapView.annotations.count == 0);
-
- NSString * const MGLTestAnnotationReuseIdentifer = @"MGLTestAnnotationReuseIdentifer";
- CGSize size = self.mapView.bounds.size;
- CGSize annotationSize = CGSizeMake(floor(size.width*kAnnotationRelativeScale.x), floor(size.height*kAnnotationRelativeScale.y));
-
- self.viewForAnnotation = ^MGLAnnotationView*(MGLMapView *view, id<MGLAnnotation> annotation) {
-
- if (![annotation isKindOfClass:[MGLPointAnnotation class]]) {
- return nil;
- }
-
- // No dequeue
- MGLAnnotationView *annotationView = [[MGLAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:MGLTestAnnotationReuseIdentifer];
- annotationView.bounds = (CGRect){ .origin = CGPointZero, .size = annotationSize };
- annotationView.backgroundColor = UIColor.redColor;
- annotationView.enabled = YES;
-
- return annotationView;
- };
-
- // Coordinate for annotation screen coordinate
- CGPoint annotationPoint = CGPointMake(floor(relativeCoordinate.x * size.width), floor(relativeCoordinate.y * size.height) );
- CLLocationCoordinate2D coordinate = [self.mapView convertPoint:annotationPoint toCoordinateFromView:self.mapView];
-
- MGLPointAnnotation *point = [[MGLPointAnnotation alloc] init];
- point.title = title;
- point.coordinate = coordinate;
-
- self.mapViewAnnotationCanShowCalloutForAnnotation = ^BOOL(MGLMapView *mapView, id<MGLAnnotation> annotation) {
- return showsCallout;
- };
-
- self.mapViewCalloutViewForAnnotation = ^id<MGLCalloutView>(MGLMapView *mapView, id<MGLAnnotation> annotation) {
- if (!showsCallout)
- return nil;
-
- MGLTestCalloutView *calloutView = [[MGLTestCalloutView alloc] init];
- calloutView.representedObject = annotation;
- calloutView.implementsMarginHints = calloutImplementsMarginHints;
- return calloutView;
- };
-
- [self.mapView addAnnotation:point];
-
- // Check assumptions before selection
- UIView *annotationViewBeforeSelection = [self.mapView viewForAnnotation:point];
- XCTAssertNotNil(annotationViewBeforeSelection);
-
- CLLocationCoordinate2D mapCenterBeforeSelection = self.mapView.centerCoordinate;
- XCTAssert(CLLocationCoordinate2DIsValid(mapCenterBeforeSelection));
-
- // Also note, that at this point, the internal mechanism that determines if
- // an annotation view is offscreen and should be put back in the reuse queue
- // will have run, and `viewForAnnotation` may return nil
-
- XCTestExpectation *selectionCompleted = [self expectationWithDescription:@"Selection completed"];
- [self.mapView selectAnnotation:point moveIntoView:moveIntoView animateSelection:animateSelection completionHandler:^{
- [selectionCompleted fulfill];
- }];
-
- // Animated selection takes MGLAnimationDuration (0.3 seconds), so wait a little
- // longer. We don't need to wait as long if we're not animated (but we do
- // want the runloop to tick over)
- [self waitForExpectations:@[selectionCompleted] timeout:animateSelection ? 0.4: 0.05];
-
- UIView *annotationViewAfterSelection = [self.mapView viewForAnnotation:point];
- CLLocationCoordinate2D mapCenterAfterSelection = self.mapView.centerCoordinate;
- XCTAssert(CLLocationCoordinate2DIsValid(mapCenterAfterSelection));
-
- // If the annotation is still "offscreen" at this point, then the above annotation view
- // may be nil, which is expected.
- BOOL (^CGRectContainsRectWithAccuracy)(CGRect, CGRect, CGFloat) = ^(CGRect rect1, CGRect rect2, CGFloat accuracy) {
- CGRect expandedRect1 = CGRectInset(rect1, -accuracy, -accuracy);
- return (BOOL)CGRectContainsRect(expandedRect1, rect2);
- };
-
- CGFloat epsilon = 0.00001;
- if (expectMapToHavePanned) {
- CLLocationDegrees latitudeDelta = fabs(mapCenterAfterSelection.latitude - mapCenterBeforeSelection.latitude);
- CLLocationDegrees longitudeDelta = fabs(mapCenterAfterSelection.longitude - mapCenterBeforeSelection.longitude);
-
- XCTAssert( (latitudeDelta > epsilon) || (longitudeDelta > epsilon), @"Deltas: lat=%f, long=%f", latitudeDelta, longitudeDelta); // One of them should have moved
-
- // If the map panned - the intention is that the annotation is on-screen,
- // and so should have an annotation view and that it is fully on screen
- CGRect annotationFrameAfterSelection = annotationViewAfterSelection.frame;
-
- XCTAssertNotNil(annotationViewAfterSelection);
-
- XCTAssert(CGRectContainsRectWithAccuracy(self.mapView.bounds, annotationFrameAfterSelection, 0.25), @"Mapview:%@ frame:%@", NSStringFromCGRect(self.mapView.bounds), NSStringFromCGRect(annotationFrameAfterSelection));
-
- // Check the callout
- if (showsCallout) {
- UIView *calloutView = self.mapView.calloutViewForSelectedAnnotation;
- XCTAssertNotNil(calloutView);
-
- // This can fail if the callout view's width is < the annotations. This is really a warning, so
- // if you need this NOT to fail the tests, consider replacing with MGLTestWarning
- XCTAssert(expectCalloutToBeFullyOnscreen == CGRectContainsRectWithAccuracy(self.mapView.bounds, calloutView.frame, 0.25),
- @"Expect contains:%d, Mapview:%@ annotation:%@ callout:%@",
- expectCalloutToBeFullyOnscreen,
- NSStringFromCGRect(self.mapView.bounds),
- NSStringFromCGRect(annotationFrameAfterSelection),
- NSStringFromCGRect(calloutView.frame));
- }
- }
- else {
- // The map shouldn't have moved, so use equality (rather than an error check)
- XCTAssertEqual(mapCenterBeforeSelection.latitude, mapCenterAfterSelection.latitude);
- XCTAssertEqual(mapCenterBeforeSelection.longitude, mapCenterAfterSelection.longitude);
-
- // Annotation shouldn't have moved
- CGPoint annotationPoint2 = [self.mapView convertCoordinate:point.coordinate toPointToView:self.mapView];
- CGFloat xDelta = fabs(annotationPoint2.x - annotationPoint.x);
- CGFloat yDelta = fabs(annotationPoint2.y - annotationPoint.y);
-
- XCTAssert((xDelta < epsilon) && (yDelta < epsilon));
-
- if (showsCallout) {
- UIView *calloutView = self.mapView.calloutViewForSelectedAnnotation;
-
- if (annotationViewAfterSelection) {
- XCTAssertNotNil(calloutView);
-
- // If kAnnotationScale == 0.25, then the following assert can fail.
- // This is really a warning (see https://github.com/mapbox/mapbox-gl-native/issues/13744 )
- // If you need this NOT to fail the tests, consider replacing with MGLTestWarning
- XCTAssert((expectCalloutToBeFullyOnscreen == CGRectContainsRectWithAccuracy(self.mapView.bounds, calloutView.frame, 0.25)),
- @"Mapview:%@ annotation:%@ callout:%@",
- NSStringFromCGRect(self.mapView.bounds),
- NSStringFromCGRect(annotationViewAfterSelection.frame),
- NSStringFromCGRect(calloutView.frame));
- }
- else {
- // If there's no annotation view, should we expect a callout?
- XCTAssertNil(calloutView);
- XCTAssertFalse(expectCalloutToBeFullyOnscreen);
- }
- }
- }
-
- // Remove the annotation
- [self.mapView removeAnnotation:point];
-
- XCTAssert(self.mapView.annotations.count == 0);
-}
-
-// See https://github.com/mapbox/mapbox-gl-native/pull/13727#issuecomment-454028698
-// What follows are tests based on this table.
-// This is not a full-set of possible combinations, just the most important/likely
-// ones
-- (void)internalRunTests:(PanTestData*)testData
-{
- // Test both animated and not-animated.
- for (int i = 0; i<2; i++) {
- int row = 0;
- PanTestData *test = testData;
- while (test->relativeCoord.x != FLT_MAX) {
- NSString *activityTitle = [NSString stringWithFormat:@"Row %d/%d", row, i];
- [XCTContext runActivityNamed:activityTitle
- block:^(id<XCTActivity> _Nonnull activity) {
- [self internalTestOffscreenSelectionTitle:activityTitle
- withTestData:*test
- animateSelection:!i];
- }];
- ++test;
- ++row;
- }
- }
-}
-
-- (void)testBasicSelection {
- // Tests moveIntoView:NO
- // WITHOUT a callout
-
- PanTestData tests[] = {
- // Coord showsCallout impl margins? moveIntoView expectMapToPan calloutOnScreen
- // Offscreen
- { {-1.0f, 0.5f}, NO, NO, NO, NO, NO },
- { { 2.0f, 0.5f}, NO, NO, NO, NO, NO },
- { { 0.5f,-1.0f}, NO, NO, NO, NO, NO },
- { { 0.5f, 2.0f}, NO, NO, NO, NO, NO },
-
- // Partial
- { { 0.0f, 0.5f}, NO, NO, NO, NO, NO },
- { { 1.0f, 0.5f}, NO, NO, NO, NO, NO },
- { { 0.5f, 0.0f}, NO, NO, NO, NO, NO },
- { { 0.5f, 1.0f}, NO, NO, NO, NO, NO },
-
- // Onscreen
- { { 0.5f, 0.5f}, NO, NO, NO, NO, NO },
-
- PAN_TEST_TERMINATOR
- };
-
- [self internalRunTests:tests];
-}
-
-- (void)testBasicSelectionWithCallout {
- // Tests moveIntoView:NO
- // WITH the default callout (implements marginshint)
-
- PanTestData tests[] = {
- // Coord showsCallout impl margins? moveIntoView expectMapToPan calloutOnScreen
- { {-1.0f, 0.5f}, YES, YES, NO, NO, NO },
- { { 0.0f, 0.5f}, YES, YES, NO, NO, NO },
- { { 0.5f, 1.0f}, YES, YES, NO, NO, YES }, // Because annotation was off the bottom of screen, and callout is above annotation
- { { 0.5f, 0.5f}, YES, YES, NO, NO, YES },
-
- PAN_TEST_TERMINATOR
- };
-
- [self internalRunTests:tests];
-}
-
-- (void)testSelectionMoveIntoView {
- // Tests moveIntoView:YES
- // without a callout
-
- // From https://github.com/mapbox/mapbox-gl-native/pull/13727#issuecomment-454028698
- //
- // | Annotation position | Has callout? | Callout implements `marginInsets...`? | Map pans when selected with moveIntoView=YES? |
- // |---------------------|--------------|---------------------------------------|-----------------------------------------------|
- // | Offscreen | No | n/a | Yes (no margins) |
- // | Partially | No | n/a | No |
- // | Onscreen | No | n/a | No |
- //
-
- PanTestData tests[] = {
- // Coord showsCallout impl margins? moveIntoView expectMapToPan calloutOnScreen
- // Offscreen
- { {-1.0f, 0.5f}, NO, NO, YES, YES, NO },
- { { 2.0f, 0.5f}, NO, NO, YES, YES, NO },
- { { 0.5f,-1.0f}, NO, NO, YES, YES, NO },
- { { 0.5f, 2.0f}, NO, NO, YES, YES, NO },
-
- // Partial
- { { 0.0f, 0.5f}, NO, NO, YES, NO, NO },
- { { 1.0f, 0.5f}, NO, NO, YES, NO, NO },
- { { 0.5f, 0.0f}, NO, NO, YES, NO, NO },
- { { 0.5f, 1.0f}, NO, NO, YES, NO, NO },
-
- // Onscreen
- { { 0.5f, 0.5f}, NO, NO, YES, NO, NO },
-
- PAN_TEST_TERMINATOR
- };
-
- [self internalRunTests:tests];
-}
-
-- (void)testSelectionMoveIntoViewWithCallout {
- // Tests moveIntoView:YES
- // WITH the default callout (implements marginshint)
-
- // From https://github.com/mapbox/mapbox-gl-native/pull/13727#issuecomment-454028698
- //
- // | Annotation position | Has callout? | Callout implements `marginInsets...`? | Map pans when selected with moveIntoView=YES? |
- // |---------------------|--------------|---------------------------------------|-----------------------------------------------|
- // | Offscreen | Yes | Yes | Yes to ensure callout is fully visible |
- // | Partially | Yes | Yes | Yes to ensure callout is fully visible |
- // | Onscreen | Yes | Yes | Yes, but *only* to ensure callout is fully visible |
- //
-
- CGFloat offset = kAnnotationRelativeScale.x * 0.5f;
-
- PanTestData tests[] = {
- // Coord showsCallout impl margins? moveIntoView expectMapToPan calloutOnScreen
- // Offscreen
- { {-1.0f, 0.5f}, YES, YES, YES, YES, YES },
- { { 2.0f, 0.5f}, YES, YES, YES, YES, YES },
- { { 0.5f,-1.0f}, YES, YES, YES, YES, YES },
- { { 0.5f, 2.0f}, YES, YES, YES, YES, YES },
-
- // Partial
- { { 0.0f, 0.5f}, YES, YES, YES, YES, YES },
- { { 1.0f, 0.5f}, YES, YES, YES, YES, YES },
- { { 0.5f, 0.0f}, YES, YES, YES, YES, YES },
- { { 0.5f, 1.0f}, YES, YES, YES, YES, YES },
-
- // Onscreen
- { { 0.5f, 0.5f}, YES, YES, YES, NO, YES },
-
- // Just at the edge of the screen.
- // Expects to move, because although onscreen, callout would not be.
- // However, if the scale is 0.25, then expectToPan should be NO, because
- // of the width of the annotation
-
- // Coord showsCallout impl margins? moveIntoView expectMapToPan calloutOnScreen
- { {offset, 0.5f}, YES, YES, YES, YES, YES },
- { {1.0 - offset, 0.5f}, YES, YES, YES, YES, YES },
-
- PAN_TEST_TERMINATOR
- };
-
- [self internalRunTests:tests];
-}
-
-- (void)testSelectionMoveIntoViewWithBasicCallout {
- // Tests moveIntoView:YES
- // WITH a callout that DOES NOT implement marginshint
-
- // From https://github.com/mapbox/mapbox-gl-native/pull/13727#issuecomment-454028698
- //
- // | Annotation position | Has callout? | Callout implements `marginInsets...`? | Map pans when selected with moveIntoView=YES? |
- // |---------------------|--------------|---------------------------------------|-----------------------------------------------|
- // | Offscreen | Yes | No | Yes, but only to show annotation (not callout) with no margins |
- // | Partially | Yes | No | No |
- // | Onscreen | Yes | No | No |
- //
-
- PanTestData tests[] = {
- // Coord showsCallout impl margins? moveIntoView expectMapToPan calloutOnScreen
- // Offscreen
- { {-1.0f, 0.5f}, YES, NO, YES, YES, NO },
- { { 2.0f, 0.5f}, YES, NO, YES, YES, NO },
- { { 0.5f,-1.0f}, YES, NO, YES, YES, NO },
- { { 0.5f, 2.0f}, YES, NO, YES, YES, YES }, // Because annotation was off the bottom of screen, and callout is above annotation
- { { 2.0f, 2.0f}, YES, NO, YES, YES, NO },
-
- // Partial
- { { 0.0f, 0.5f}, YES, NO, YES, NO, NO },
- { { 1.0f, 0.5f}, YES, NO, YES, NO, NO },
- { { 0.5f, 0.0f}, YES, NO, YES, NO, NO },
- { { 0.5f, 1.0f}, YES, NO, YES, NO, YES }, // Because annotation was off the bottom of screen, and callout is above annotation
- { { 1.0f, 1.0f}, YES, NO, YES, NO, NO },
-
- // Onscreen
- { { 0.5f, 0.5f}, YES, NO, YES, NO, YES },
-
- PAN_TEST_TERMINATOR
- };
-
- [self internalRunTests:tests];
-}
-
-#pragma mark - Selection with an offset
-
-- (void)testSelectingAnnotationWithCenterOffset {
-
- for (CGFloat dx = -100.0; dx <= 100.0; dx += 100.0 ) {
- for (CGFloat dy = -100.0; dy <= 100.0; dy += 100.0 ) {
- CGVector offset = CGVectorMake(dx, dy);
- UIEdgeInsets edgeInsets = UIEdgeInsetsMake(fmax(-dy, 0.0), fmax(-dy, 0.0), fmax(dy, 0.0), fmax(dx, 0.0));
- [self internalTestSelectingAnnotationWithCenterOffsetWithOffset:offset edgeInsets:edgeInsets];
- }
- }
-}
-
-- (void)internalTestSelectingAnnotationWithCenterOffsetWithOffset:(CGVector)offset edgeInsets:(UIEdgeInsets)edgeInsets {
-
- NSString * const MGLTestAnnotationReuseIdentifer = @"MGLTestAnnotationReuseIdentifer";
-
- self.mapView.contentInset = edgeInsets;
- CGSize size = self.mapView.bounds.size;
-
- CGSize annotationSize = CGSizeMake(40.0, 40.0);
-
- self.viewForAnnotation = ^MGLAnnotationView*(MGLMapView *view, id<MGLAnnotation> annotation) {
-
- if (![annotation isKindOfClass:[MGLPointAnnotation class]]) {
- return nil;
- }
-
- // No dequeue
- MGLAnnotationView *annotationView = [[MGLAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:MGLTestAnnotationReuseIdentifer];
- annotationView.bounds = (CGRect){ .origin = CGPointZero, .size = annotationSize };
- annotationView.backgroundColor = UIColor.redColor;
- annotationView.enabled = YES;
- annotationView.centerOffset = offset;
-
- return annotationView;
- };
-
- MGLPointAnnotation *point = [[MGLPointAnnotation alloc] init];
- point.title = NSStringFromSelector(_cmd);
- point.coordinate = CLLocationCoordinate2DMake(0.0, 0.0);
- [self.mapView addAnnotation:point];
-
- // From https://github.com/mapbox/mapbox-gl-native/issues/12259#issuecomment-401414168
- //
- // queryRenderedFeatures depends on collision detection having been run
- // before it shows results [...]. Collision detection runs asynchronously
- // (at least every 300ms, sometimes more often), and therefore the results
- // of queryRenderedFeatures are similarly asynchronous.
- //
- // So, we need to wait before `annotationTagAtPoint:persistingResults:` will
- // return out newly added annotation
-
- [self waitForCollisionDetectionToRun];
-
- // Check that the annotation is in the center of the view
- CGPoint annotationPoint = [self.mapView convertCoordinate:point.coordinate toPointToView:self.mapView];
- XCTAssertEqualWithAccuracy(annotationPoint.x, (size.width - edgeInsets.right + edgeInsets.left)/2.0, 0.25);
- XCTAssertEqualWithAccuracy(annotationPoint.y, (size.height - edgeInsets.bottom + edgeInsets.top)/2.0, 0.25);
-
- // Now test taps around the annotation
- CGPoint tapPoint = CGPointMake(annotationPoint.x + offset.dx, annotationPoint.y + offset.dy);
-
- MGLAnnotationTag tagAtPoint = [self.mapView annotationTagAtPoint:tapPoint persistingResults:YES];
- XCTAssert(tagAtPoint != UINT32_MAX, @"Should have tapped on annotation");
-
- CGPoint testPoints[] = {
- { tapPoint.x - annotationSize.width, tapPoint.y },
- { tapPoint.x + annotationSize.width, tapPoint.y },
- { tapPoint.x, tapPoint.y - annotationSize.height },
- { tapPoint.x, tapPoint.y + annotationSize.height },
- CGPointZero
- };
-
- CGPoint *testPoint = testPoints;
-
- while (!CGPointEqualToPoint(*testPoint, CGPointZero)) {
- tagAtPoint = [self.mapView annotationTagAtPoint:*testPoints persistingResults:YES];
- XCTAssert(tagAtPoint == UINT32_MAX, @"Tap should to the side of the annotation");
- testPoint++;
- }
-}
-
-- (void)testUserLocationWithOffsetAnchorPoint {
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(37.787357, -122.39899)];
- MGLTestLocationManager *locationManager = [[MGLTestLocationManager alloc] init];
- self.mapView.locationManager = locationManager;
-
- [self.mapView setUserTrackingMode:MGLUserTrackingModeFollow animated:NO completionHandler:nil];
- CGRect originalFrame = [self.mapView viewForAnnotation:self.mapView.userLocation].frame;
-
- // Temporarily disable location tracking so we can save the value of
- // the originalFrame in memory
- [self.mapView setUserTrackingMode:MGLUserTrackingModeNone animated:NO completionHandler:nil];
-
- CGPoint offset = CGPointMake(20, 20);
-
- self.mapViewUserLocationAnchorPoint = ^CGPoint (MGLMapView *mapView) {
- return offset;;
- };
-
- [self.mapView setUserTrackingMode:MGLUserTrackingModeFollow animated:NO completionHandler:nil];
- CGRect offsetFrame = [self.mapView viewForAnnotation:self.mapView.userLocation].frame;
-
- XCTAssertEqual(originalFrame.origin.x + offset.x, offsetFrame.origin.x);
- XCTAssertEqual(originalFrame.origin.y + offset.y, offsetFrame.origin.y);
-}
-
-#pragma mark - Rotating/zooming
-
-- (void)testSelectingAnnotationWhenMapIsRotated {
-
- CLLocationCoordinate2D coordinates[] = {
- { 40.0, 40.0 },
- { NAN, NAN }
- };
-
- NSArray *annotations = [self internalAddAnnotationsAtCoordinates:coordinates];
- MGLPointAnnotation *annotation = annotations.firstObject;
-
- // Rotate
- CLLocationDirection lastAngle = 0.0;
-
- srand48(0);
- for (NSInteger iter = 0; iter < 10; iter++ ) {
-
- CLLocationDirection angle = (CLLocationDirection)((drand48()*1080.0) - 540.0);
-
- CGPoint anchor = CGPointMake(drand48()*CGRectGetWidth(self.mapView.bounds), drand48()*CGRectGetHeight(self.mapView.bounds));
-
- NSString *activityTitle = [NSString stringWithFormat:@"Rotate to: %0.1f from: %0.1f", angle, lastAngle];
- [XCTContext runActivityNamed:activityTitle
- block:^(id<XCTActivity> _Nonnull activity) {
-
- MGLMapCamera *toCamera = [self.mapView cameraByRotatingToDirection:angle aroundAnchorPoint:anchor];
- [self internalTestSelecting:annotation withCamera:toCamera];
- }];
-
- lastAngle = angle;
- }
-}
-
-- (void)testSelectingAnnotationWhenMapIsScaled {
-
- CLLocationCoordinate2D coordinates[] = {
- { 0.005, 0.005 },
- { NAN, NAN }
- };
-
- NSArray *annotations = [self internalAddAnnotationsAtCoordinates:coordinates];
- MGLPointAnnotation *annotation = annotations.firstObject;
-
- CGPoint anchor = CGPointMake(CGRectGetMidX(self.mapView.bounds), CGRectGetMidY(self.mapView.bounds));
-
- srand48(0);
- for (NSInteger iter = 0; iter < 10; iter++ ) {
-
- double zoom = (double)(drand48()*14.0);
-
- NSString *activityTitle = [NSString stringWithFormat:@"Zoom to %0.1f", zoom];
- [XCTContext runActivityNamed:activityTitle
- block:^(id<XCTActivity> _Nonnull activity) {
- MGLMapCamera *toCamera = [self.mapView cameraByZoomingToZoomLevel:zoom aroundAnchorPoint:anchor];
- [self internalTestSelecting:annotation withCamera:toCamera];
- }];
- }
-}
-
-- (void)testSelectingAnnotationWhenMapIsScaledAndRotated {
-
- CLLocationCoordinate2D coordinates[] = {
- { 0.005, 0.005 },
- { NAN, NAN }
- };
-
- NSArray *annotations = [self internalAddAnnotationsAtCoordinates:coordinates];
- MGLPointAnnotation *annotation = annotations.firstObject;
-
- srand48(0);
- for (NSInteger iter = 0; iter < 10; iter++ ) {
-
- double zoom = (double)(7.0 + drand48()*7.0);
- CLLocationDirection angle = (CLLocationDirection)((drand48()*1080.0) - 540.0);
-
- CGPoint anchor = CGPointMake(drand48()*CGRectGetWidth(self.mapView.bounds), drand48()*CGRectGetHeight(self.mapView.bounds));
-
- NSString *activityTitle = [NSString stringWithFormat:@"Zoom to %0.1f", zoom];
- [XCTContext runActivityNamed:activityTitle
- block:^(id<XCTActivity> _Nonnull activity)
- {
- mbgl::CameraOptions currentCameraOptions;
-
- currentCameraOptions.bearing = angle;
- currentCameraOptions.anchor = mbgl::ScreenCoordinate { anchor.x, anchor.y };
- currentCameraOptions.zoom = zoom;
- MGLMapCamera *toCamera = [self.mapView cameraForCameraOptions:currentCameraOptions];
-
- [self internalTestSelecting:annotation withCamera:toCamera];
- }];
- }
-}
-
-
-- (void)testShowingAnnotationsThenSelectingAnimated {
- [self internalTestShowingAnnotationsThenSelectingAnimated:YES];
-}
-
-- (void)testShowingAnnotationsThenSelecting {
- [self internalTestShowingAnnotationsThenSelectingAnimated:NO];
-}
-
-- (void)internalTestShowingAnnotationsThenSelectingAnimated:(BOOL)animated {
- srand48(0);
-
- CGFloat maxXPadding = std::max(CGRectGetWidth(self.mapView.bounds)/5.0, 100.0);
- CGFloat maxYPadding = std::max(CGRectGetHeight(self.mapView.bounds)/5.0, 100.0);
-
- for (int i = 0; i < 10; i++) {
- UIEdgeInsets edgePadding;
- edgePadding.top = floor(drand48()*maxYPadding);
- edgePadding.bottom = floor(drand48()*maxYPadding);
- edgePadding.left = floor(drand48()*maxXPadding);
- edgePadding.right = floor(drand48()*maxXPadding);
-
- UIEdgeInsets contentInsets;
- contentInsets.top = floor(drand48()*maxYPadding);
- contentInsets.bottom = floor(drand48()*maxYPadding);
- contentInsets.left = floor(drand48()*maxXPadding);
- contentInsets.right = floor(drand48()*maxXPadding);
-
- [self internalTestShowingAnnotationsThenSelectingAnimated:animated edgePadding:edgePadding contentInsets:contentInsets];
- }
-}
-
-- (void)internalTestShowingAnnotationsThenSelectingAnimated:(BOOL)animated edgePadding:(UIEdgeInsets)edgeInsets contentInsets:(UIEdgeInsets)contentInsets {
- CLLocationCoordinate2D coordinates[21];
-
- for (int i = 0; i < (int)(sizeof(coordinates)/sizeof(coordinates[0])); i++)
- {
- coordinates[i].latitude = drand48();
- coordinates[i].longitude = drand48();
- }
- coordinates[20] = CLLocationCoordinate2DMake(NAN, NAN);
-
- NSArray *annotations = [self internalAddAnnotationsAtCoordinates:coordinates];
-
- XCTestExpectation *showCompleted = [self expectationWithDescription:@"showCompleted"];
-
- self.mapView.contentInset = contentInsets;
- [self.mapView showAnnotations:annotations
- edgePadding:edgeInsets
- animated:animated
- completionHandler:^{
- [showCompleted fulfill];
- }];
-
- [self waitForExpectations:@[showCompleted] timeout:3.5];
-
- // These tests will fail if this isn't here. But this isn't quite what we're
- // seeing in https://github.com/mapbox/mapbox-gl-native/issues/15106
- [self waitForCollisionDetectionToRun];
-
- for (MGLPointAnnotation *point in annotations) {
- [self internalSelectDeselectAnnotation:point];
- }
-
- [self.mapView removeAnnotations:annotations];
- self.mapView.contentInset = UIEdgeInsetsZero;
- [self waitForCollisionDetectionToRun];
-}
-
-- (NSArray*)internalAddAnnotationsAtCoordinates:(CLLocationCoordinate2D*)coordinates
-{
- __block NSMutableArray *annotations = [NSMutableArray array];
-
- [XCTContext runActivityNamed:@"Map setup"
- block:^(id<XCTActivity> _Nonnull activity)
- {
-
- NSString * const MGLTestAnnotationReuseIdentifer = @"MGLTestAnnotationReuseIdentifer";
-
- CGSize annotationSize = CGSizeMake(40.0, 40.0);
-
- self.viewForAnnotation = ^MGLAnnotationView*(MGLMapView *view, id<MGLAnnotation> annotation2) {
-
- if (![annotation2 isKindOfClass:[MGLPointAnnotation class]]) {
- return nil;
- }
-
- // No dequeue
- MGLAnnotationView *annotationView = [[MGLAnnotationView alloc] initWithAnnotation:annotation2 reuseIdentifier:MGLTestAnnotationReuseIdentifer];
- annotationView.bounds = (CGRect){ .origin = CGPointZero, .size = annotationSize };
- annotationView.backgroundColor = UIColor.redColor;
- annotationView.enabled = YES;
-
- return annotationView;
- };
-
- CLLocationCoordinate2D *coordinatePtr = coordinates;
- while (!isnan(coordinatePtr->latitude)) {
- CLLocationCoordinate2D coordinate = *coordinatePtr++;
-
- MGLPointAnnotation *annotation = [[MGLPointAnnotation alloc] init];
- annotation.title = NSStringFromSelector(_cmd);
- annotation.coordinate = coordinate;
- [annotations addObject:annotation];
- }
-
- [self.mapView addAnnotations:annotations];
-
- }];
-
- NSArray *copiedAnnotations = [annotations copy];
- annotations = nil;
-
- return copiedAnnotations;
-}
-
-- (void)internalTestSelecting:(MGLPointAnnotation*)point withCamera:(MGLMapCamera*)camera {
-
- // Rotate
- XCTestExpectation *rotationCompleted = [self expectationWithDescription:@"rotationCompleted"];
- [self.mapView setCamera:camera withDuration:0.1 animationTimingFunction:nil completionHandler:^{
- [rotationCompleted fulfill];
- }];
-
- [self waitForExpectations:@[rotationCompleted] timeout:1.5];
-
- // Collision detection may not have completed, if not we may not get our annotation.
- [self waitForCollisionDetectionToRun];
-
- // Look up annotation at point
- [self internalSelectDeselectAnnotation:point];
-}
-
-- (void)internalSelectDeselectAnnotation:(MGLPointAnnotation*)point {
- [XCTContext runActivityNamed:[NSString stringWithFormat:@"Select annotation: %@", point]
- block:^(id<XCTActivity> _Nonnull activity)
- {
- CGPoint annotationPoint = [self.mapView convertCoordinate:point.coordinate toPointToView:self.mapView];
-
- MGLAnnotationTag tagAtPoint = [self.mapView annotationTagAtPoint:annotationPoint persistingResults:YES];
- if (tagAtPoint != UINT32_MAX)
- {
- id <MGLAnnotation> annotation = [self.mapView annotationWithTag:tagAtPoint];
- XCTAssertNotNil(annotation);
-
- // Select
- XCTestExpectation *selectionCompleted = [self expectationWithDescription:@"Selection completed"];
- [self.mapView selectAnnotation:annotation moveIntoView:NO animateSelection:NO completionHandler:^{
- [selectionCompleted fulfill];
- }];
-
- [self waitForExpectations:@[selectionCompleted] timeout:0.05];
-
- XCTAssert(self.mapView.selectedAnnotations.count == 1, @"There should only be 1 selected annotation");
- XCTAssertEqualObjects(self.mapView.selectedAnnotations.firstObject, annotation, @"The annotation should be selected");
-
- // Deselect
- [self.mapView deselectAnnotation:annotation animated:NO];
- }
- else
- {
- XCTFail(@"Should be an annotation at this point: %@", NSStringFromCGPoint(annotationPoint));
- }
- }];
-
-}
-
-#pragma mark - Utilities
-
-- (void)runRunLoop {
- [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
-}
-
-- (void)waitFor:(NSTimeInterval)seconds {
- XCTestExpectation *timerExpired = [self expectationWithDescription:@"Timer expires"];
-
- NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1
- target:self
- selector:@selector(runRunLoop)
- userInfo:nil
- repeats:YES];
-
- double duration = seconds * (double)NSEC_PER_SEC;
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)duration), dispatch_get_main_queue(), ^{
- [timerExpired fulfill];
- });
-
- [self waitForExpectations:@[timerExpired] timeout:seconds + 1.0];
- [timer invalidate];
-}
-
-- (void)waitForCollisionDetectionToRun {
- XCTAssertNil(self.renderFinishedExpectation, @"Incorrect test setup");
-
- [self.mapView setNeedsRerender];
- self.renderFinishedExpectation = [self expectationWithDescription:@"Map view should be rendered"];
- XCTestExpectation *timerExpired = [self expectationWithDescription:@"Timer expires"];
-
- // Wait 1/2 second
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(NSEC_PER_SEC >> 1)), dispatch_get_main_queue(), ^{
- [timerExpired fulfill];
- });
-
- [self waitForExpectations:@[timerExpired, self.renderFinishedExpectation] timeout:5];
-
- self.renderFinishedExpectation = nil;
-}
-
-@end
diff --git a/platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionFinishTests.mm b/platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionFinishTests.mm
deleted file mode 100644
index 1527e8dbe5..0000000000
--- a/platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionFinishTests.mm
+++ /dev/null
@@ -1,109 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-#import "MGLTestUtility.h"
-#import "../../darwin/src/MGLGeometry_Private.h"
-
-#include <mbgl/map/camera.hpp>
-
-@interface MGLCameraTransitionFinishTests : MGLMapViewIntegrationTest
-@end
-
-@implementation MGLCameraTransitionFinishTests
-
-- (void)testEaseToCompletionHandler {
-
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0.0, 0.0),
- CLLocationCoordinate2DMake(1.0, 1.0));
- MGLMapCamera *camera = [self.mapView cameraThatFitsCoordinateBounds:bounds];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"Completion block should be called"];
-
- [self.mapView setCamera:camera
- withDuration:0.0
- animationTimingFunction:nil
- completionHandler:^{
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:0.5];
-}
-
-- (void)testEaseToCompletionHandlerAnimated {
-
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0.0, 0.0),
- CLLocationCoordinate2DMake(1.0, 1.0));
- MGLMapCamera *camera = [self.mapView cameraThatFitsCoordinateBounds:bounds];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"Completion block should be called"];
-
- [self.mapView setCamera:camera
- withDuration:0.3
- animationTimingFunction:nil
- completionHandler:^{
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:0.5];
-}
-
-- (void)testFlyToCompletionHandler {
-
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0.0, 0.0),
- CLLocationCoordinate2DMake(1.0, 1.0));
- MGLMapCamera *camera = [self.mapView cameraThatFitsCoordinateBounds:bounds];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"Completion block should be called"];
-
- [self.mapView flyToCamera:camera
- withDuration:0.0
- completionHandler:^{
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:0.5];
-}
-
-- (void)testFlyToCompletionHandlerAnimated {
-
- MGLCoordinateBounds bounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0.0, 0.0),
- CLLocationCoordinate2DMake(1.0, 1.0));
- MGLMapCamera *camera = [self.mapView cameraThatFitsCoordinateBounds:bounds];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"Completion block should be called"];
-
- [self.mapView flyToCamera:camera
- withDuration:0.3
- completionHandler:^{
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:0.5];
-}
-@end
-
-#pragma mark - camera transitions with NaN values
-
-@interface MGLMapView (MGLCameraTransitionFinishNaNTests)
-- (mbgl::CameraOptions)cameraOptionsObjectForAnimatingToCamera:(MGLMapCamera *)camera edgePadding:(UIEdgeInsets)insets;
-@end
-
-@interface MGLCameraTransitionNaNZoomMapView: MGLMapView
-@end
-
-@implementation MGLCameraTransitionNaNZoomMapView
-- (mbgl::CameraOptions)cameraOptionsObjectForAnimatingToCamera:(MGLMapCamera *)camera edgePadding:(UIEdgeInsets)insets {
- mbgl::CameraOptions options = [super cameraOptionsObjectForAnimatingToCamera:camera edgePadding:insets];
- options.zoom = NAN;
- return options;
-}
-@end
-
-// Subclass the entire test suite, but with a different MGLMapView subclass
-@interface MGLCameraTransitionFinishNaNTests : MGLCameraTransitionFinishTests
-@end
-
-@implementation MGLCameraTransitionFinishNaNTests
-- (MGLMapView *)mapViewForTestWithFrame:(CGRect)rect styleURL:(NSURL *)styleURL {
- return [[MGLCameraTransitionNaNZoomMapView alloc] initWithFrame:rect styleURL:styleURL];
-}
-@end
-
diff --git a/platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionTests.mm b/platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionTests.mm
deleted file mode 100644
index 27ab7964c1..0000000000
--- a/platform/ios/Integration Tests/Camera Tests/MGLCameraTransitionTests.mm
+++ /dev/null
@@ -1,394 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-#import "MGLTestUtility.h"
-#import "../../darwin/src/MGLGeometry_Private.h"
-
-@interface MGLCameraTransitionTests : MGLMapViewIntegrationTest
-@end
-
-@implementation MGLCameraTransitionTests
-
-- (void)testSetAndResetNorthWithDispatchAsyncInDelegateMethod {
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 2;
- expectation.assertForOverFulfill = YES;
-
- __weak typeof(self) weakself = self;
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
-
- MGLCameraTransitionTests *strongSelf = weakself;
-
- if (!strongSelf) return;
-
- [expectation fulfill];
-
- MGLTestAssert(strongSelf, mapView.userTrackingMode != MGLUserTrackingModeFollowWithHeading);
- if (mapView.direction != 0.0) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [mapView resetNorth];
- });
- }
- };
-
- [self.mapView setDirection:90 animated:YES];
-
- // loop, render, and wait
- [self waitForExpectations:@[expectation] timeout:10];
-}
-
-
-- (void)testSetAndResetNorthInDelegateMethod {
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 2;
- expectation.assertForOverFulfill = YES;
-
- __weak typeof(self) weakself = self;
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
-
- MGLCameraTransitionTests *strongSelf = weakself;
-
- if (!strongSelf) return;
-
- [expectation fulfill];
-
- MGLTestAssert(strongSelf, mapView.userTrackingMode != MGLUserTrackingModeFollowWithHeading);
- if (mapView.direction != 0.0) {
- NSLog(@"Reset to north");
- [mapView resetNorth];
- }
- };
-
- [self.mapView setDirection:90 animated:YES];
- [self waitForExpectations:@[expectation] timeout:10];
-}
-
-- (void)testInterruptingAndResetNorthOnlyOnceInIsChanging {
-
- // Reset to non-zero, prior to testing
- [self.mapView setDirection:45 animated:NO];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 1;
- expectation.assertForOverFulfill = YES;
-
- __weak typeof(self) weakself = self;
- __block BOOL startedReset = NO;
- __block BOOL finishedReset = NO;
-
- self.regionIsChanging = ^(MGLMapView *mapView) {
- MGLCameraTransitionTests *strongSelf = weakself;
- if (!strongSelf) return;
-
- if (!startedReset) {
- NSLog(@"Reset to north, interrupting the previous transition");
- startedReset = YES;
- [mapView resetNorth];
- finishedReset = YES;
- }
- };
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
- MGLCameraTransitionTests *strongSelf = weakself;
- if (!strongSelf) return;
-
- MGLTestAssert(strongSelf, startedReset);
-
- if (finishedReset) {
- MGLTestAssert(strongSelf, !(reason & MGLCameraChangeReasonTransitionCancelled));
- [expectation fulfill];
- }
- else {
- MGLTestAssert(strongSelf, reason & MGLCameraChangeReasonTransitionCancelled);
- }
- };
-
- [self.mapView setDirection:90 animated:YES];
- [self waitForExpectations:@[expectation] timeout:10];
-
- XCTAssertEqualWithAccuracy(self.mapView.direction, 0.0, 0.001, @"Camera should have reset to north. %0.3f", self.mapView.direction);
-}
-
-- (void)testSetCenterCancelsTransitions {
- XCTestExpectation *cameraIsInDCExpectation = [self expectationWithDescription:@"camera reset to DC"];
-
- CLLocationCoordinate2D dc = CLLocationCoordinate2DMake(38.894368, -77.036487);
- CLLocationCoordinate2D dc_west = CLLocationCoordinate2DMake(38.894368, -77.076487);
-
- double zoomLevel = 15.0;
-
- [self.mapView setCenterCoordinate:dc zoomLevel:zoomLevel animated:NO];
- [self.mapView setCenterCoordinate:dc_west zoomLevel:zoomLevel animated:YES];
-
- __weak typeof(self) weakself = self;
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.15 * NSEC_PER_SEC),
- dispatch_get_main_queue(),
- ^{
- MGLCameraTransitionTests *strongSelf = weakself;
-
- [strongSelf.mapView setCenterCoordinate:dc zoomLevel:zoomLevel animated:NO];
- MGLTestAssertEqualWithAccuracy(strongSelf,
- dc.latitude,
- strongSelf.mapView.centerCoordinate.latitude,
- 0.0005,
- @"setting center coordinate should cancel transitions");
- MGLTestAssertEqualWithAccuracy(strongSelf,
- dc.longitude,
- strongSelf.mapView.centerCoordinate.longitude,
- 0.0005,
- @"setting center coordinate should cancel transitions");
- [cameraIsInDCExpectation fulfill];
- });
-
- [self waitForExpectations:@[cameraIsInDCExpectation] timeout:10.0];
-}
-
-- (void)testSetCenterCoordinateInDelegateMethod {
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 2;
- expectation.assertForOverFulfill = YES;
-
- __weak typeof(self) weakself = self;
- __block NSInteger delegateCallCount = 0;
-
- CLLocationCoordinate2D target = CLLocationCoordinate2DMake(40.0, 40.0);
- CLLocationCoordinate2D target2 = CLLocationCoordinate2DMake(-40.0, -40.0);
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
-
- MGLCameraTransitionTests *strongSelf = weakself;
-
- if (!strongSelf) return;
-
- MGLTestAssert(strongSelf, mapView.userTrackingMode != MGLUserTrackingModeFollowWithHeading);
-
- CLLocationCoordinate2D center = mapView.centerCoordinate;
-
- switch(delegateCallCount) {
- case 0:
- {
- // Our center coordinate should match our target (assuming we're not
- // constrained by zoom level)
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target.longitude,
- center.longitude,
- 0.0005,
- @"center coordinate longitude should be at target");
-
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target.latitude,
- center.latitude,
- 0.0005,
- @"center coordinate latitude should be at target");
-
- // Now set another coordinate.
- // Should take MGLAnimationDuration seconds (0.3s)
- [mapView setCenterCoordinate:target2 animated:YES];
- break;
- }
-
- case 1:
- {
- // Our center coordinate should match our target (assuming we're not
- // constrained by zoom level)
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target2.longitude,
- center.longitude,
- 0.0005,
- @"center coordinate longitude should be at target2");
-
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target2.latitude,
- center.latitude,
- 0.0005,
- @"center coordinate latitude should be at target2");
- break;
-
- }
-
- default:
- MGLTestFail(strongSelf);
- break;
- }
-
- delegateCallCount++;
-
- [expectation fulfill];
- };
-
- // Should take MGLAnimationDuration seconds (0.3)
- [self.mapView setCenterCoordinate:target zoomLevel:15.0 animated:YES];
- [self waitForExpectations:@[expectation] timeout:10];
-}
-
-- (void)testFlyToCameraInDelegateMethod {
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
-
- __weak typeof(self) weakself = self;
- __block NSInteger delegateCallCount = 0;
- expectation.expectedFulfillmentCount = 3;
- expectation.assertForOverFulfill = YES;
-
- CLLocationCoordinate2D target = CLLocationCoordinate2DMake(40.0, 40.0);
- CLLocationCoordinate2D target2 = CLLocationCoordinate2DMake(30.0, 30.0);
-
- __block BOOL runloop = YES;
-
- NSTimeInterval stop0 = CACurrentMediaTime();
- __block NSTimeInterval stop1 = 0.0;
- __block NSTimeInterval stop2 = 0.0;
-
- double zoomLevel = 5.0;
- double altitude = MGLAltitudeForZoomLevel(zoomLevel, 0.0, target.latitude, self.mapView.frame.size);
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
-
- MGLCameraTransitionTests *strongSelf = weakself;
-
- if (!strongSelf) return;
-
- MGLTestAssert(strongSelf, mapView.userTrackingMode != MGLUserTrackingModeFollowWithHeading);
-
- CLLocationCoordinate2D center = mapView.centerCoordinate;
-
- switch(delegateCallCount) {
- case 0:
- {
- stop1 = CACurrentMediaTime();
-
- // Our center coordinate should match our target (assuming we're not
- // constrained by zoom level)
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target.longitude,
- center.longitude,
- 0.0005,
- @"center coordinate longitude should be at target");
-
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target.latitude,
- center.latitude,
- 0.0005,
- @"center coordinate latitude should be at target");
-
- // Now set another coordinate.
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:target2
- altitude:altitude
- pitch:0.0
- heading:0.0];
-
- // flyToCamera can take a while...
- [mapView flyToCamera:camera completionHandler:^{
- MGLTestAssert(strongSelf, !runloop, @"Completion block should be called after delegate method");
- [expectation fulfill];
- stop2 = CACurrentMediaTime();
- }];
- break;
- }
-
- case 1:
- {
- // Our center coordinate should match our target (assuming we're not
- // constrained by zoom level)
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target2.longitude,
- center.longitude,
- 0.0005,
- @"center coordinate longitude should be at target2");
-
- MGLTestAssertEqualWithAccuracy(strongSelf,
- target2.latitude,
- center.latitude,
- 0.0005,
- @"center coordinate latitude should be at target2");
-
- runloop = NO;
- break;
- }
-
- default:
- MGLTestFail(strongSelf);
- break;
- }
-
- delegateCallCount++;
-
- [expectation fulfill];
- };
-
- // Should take MGLAnimationDuration
- [self.mapView setCenterCoordinate:target zoomLevel:zoomLevel animated:YES];
-
- [self waitForExpectations:@[expectation] timeout:10];
-
- NSLog(@"setCenterCoordinate: %0.4fs", stop1 - stop0);
- NSLog(@"flyToCamera: %0.4fs", stop2 - stop1);
-
- XCTAssert(delegateCallCount == 2, @"Expecting 2 regionDidChange callbacks, got %ld", (long)delegateCallCount); // Once for the setDirection and once for the reset north
-}
-
-#pragma mark - Pending tests
-
-- (void)testContinuallyResettingNorthInIsChanging🙁{
- // See https://github.com/mapbox/mapbox-gl-native/pull/11614
- // This test currently fails, unsurprisingly, since we're continually
- // setting the camera to the same parameters during its update.
- //
- // Possible solutions/expectations:
- // - If you set camera parameters that match the *current* target parameters
- // then the transition could be a no-op. We'd need to consider any completion
- // block
- // - Ideally we would detect this case and disallow it.
-
- // Reset to non-zero, prior to testing
- [self.mapView setDirection:45 animated:NO];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 2;
- expectation.assertForOverFulfill = YES;
-
- self.regionIsChanging = ^(MGLMapView *mapView) {
- [mapView resetNorth];
- };
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
- [expectation fulfill];
- };
-
- [self.mapView setDirection:90 animated:YES];
- [self waitForExpectations:@[expectation] timeout:10];
-
- XCTAssertEqualWithAccuracy(self.mapView.direction, 0.0, 0.001, @"Camera should have reset to north. %0.3f", self.mapView.direction);
-}
-
-- (void)testContinuallySettingCoordinateInIsChanging🙁 {
- // See above comment in `-testContinuallyResettingNorthInIsChanging🙁`
-
- // Reset to non-zero, prior to testing
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(0.0, 0.0) animated:NO];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 2;
- expectation.assertForOverFulfill = YES;
-
- __weak typeof(self) weakself = self;
-
- self.regionIsChanging = ^(MGLMapView *mapView) {
- [weakself.mapView setCenterCoordinate:CLLocationCoordinate2DMake(-40.0, -40.0) animated:YES];
- };
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
- [expectation fulfill];
- };
-
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(40.0, 40.0) animated:YES];
- [self waitForExpectations:@[expectation] timeout:10];
-
- XCTAssertEqualWithAccuracy(self.mapView.direction, 0.0, 0.001, @"Camera should have reset to north. %0.3f", self.mapView.direction);
-}
-
-@end
diff --git a/platform/ios/Integration Tests/Info.plist b/platform/ios/Integration Tests/Info.plist
deleted file mode 100644
index 6c40a6cd0c..0000000000
--- a/platform/ios/Integration Tests/Info.plist
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>$(DEVELOPMENT_LANGUAGE)</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/platform/ios/Integration Tests/MBGLIntegrationTests.mm b/platform/ios/Integration Tests/MBGLIntegrationTests.mm
deleted file mode 100644
index d0f5f6a79d..0000000000
--- a/platform/ios/Integration Tests/MBGLIntegrationTests.mm
+++ /dev/null
@@ -1,252 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-#import "MGLMapView_Private.h"
-#import "MGLMapView+Impl.h"
-
-#include <mbgl/gfx/renderable.hpp>
-
-@interface MBGLIntegrationTests : MGLMapViewIntegrationTest
-@end
-
-@implementation MBGLIntegrationTests
-
-#pragma mark - Tests
-
-- (void)waitForMapViewToBeRendered {
- [self waitForMapViewToBeRenderedWithTimeout:10];
-}
-
-// This test does not strictly need to be in this test file/target. Including here for convenience.
-- (void)testOpenGLLayerDoesNotLeakWhenCreatedAndDestroyedWithoutAddingToStyle {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- __weak id weakLayer = layer;
- layer = nil;
-
- XCTAssertNil(weakLayer);
-}
-
-- (void)testAddingRemovingOpenGLLayerWithoutRendering {
- XCTAssertNotNil(self.style);
-
- void(^addRemoveGLLayer)(void) = ^{
- __weak id weakLayer = nil;
-
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer atIndex:0];
- weakLayer = layer;
-
- // Nil the layer prior to remove to ensure it's being retained
- layer = nil;
- [self.style removeLayer:weakLayer];
- }
-
- XCTAssertNil(weakLayer);
- };
-
- addRemoveGLLayer();
- addRemoveGLLayer();
- addRemoveGLLayer();
-}
-
-- (void)testReusingOpenGLLayerIdentifier {
- __weak MGLOpenGLStyleLayer *weakLayer2;
-
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer1 = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer1 atIndex:0];
- [self waitForMapViewToBeRendered];
- [self.style removeLayer:layer1];
-
- MGLOpenGLStyleLayer *layer2 = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer2 = layer2;
-
- XCTAssertNotNil(layer2);
- XCTAssert(layer1 != layer2);
-
- [self.style insertLayer:layer2 atIndex:0];
- [self waitForMapViewToBeRendered];
- [self.style removeLayer:layer2];
-
- XCTAssertNil([layer1 style]);
- XCTAssertNil([layer2 style]);
- }
-
- // At this point, layer2 (and layer1) should still be around,
- // since the render process needs to keep a reference to them.
- XCTAssertNotNil(weakLayer2);
-
- // Let render loop run enough to release the layers
- [self waitForMapViewToBeRendered];
- XCTAssertNil(weakLayer2);
-}
-
-- (void)testAddingRemovingOpenGLLayer {
- XCTAssertNotNil(self.style);
-
- void(^addRemoveGLLayer)(void) = ^{
-
- __weak id retrievedLayer = nil;
-
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer atIndex:0];
- layer = nil;
-
- [self waitForMapViewToBeRendered];
-
- retrievedLayer = [self.style layerWithIdentifier:@"gl-layer"];
- XCTAssertNotNil(retrievedLayer);
-
- [self.style removeLayer:retrievedLayer];
- [self waitForMapViewToBeRendered];
- }
-
- XCTAssertNil(retrievedLayer);
- };
-
- addRemoveGLLayer();
- addRemoveGLLayer();
- addRemoveGLLayer();
-}
-
-- (void)testReusingOpenGLLayer {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer atIndex:0];
- [self waitForMapViewToBeRendered];
-
- [self.style removeLayer:layer];
- [self waitForMapViewToBeRendered];
-
- [self.style insertLayer:layer atIndex:0];
- [self waitForMapViewToBeRendered];
-
- [self.style removeLayer:layer];
- [self waitForMapViewToBeRendered];
-}
-
-- (void)testOpenGLLayerDoesNotLeakWhenRemovedFromStyle {
- __weak id weakLayer;
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer = layer;
- [self.style insertLayer:layer atIndex:0];
- layer = nil;
-
- [self waitForMapViewToBeRendered];
- [self.style removeLayer:[self.style layerWithIdentifier:@"gl-layer"]];
- }
-
- MGLStyleLayer *layer2 = weakLayer;
-
- XCTAssertNotNil(weakLayer);
- [self waitForMapViewToBeRendered];
-
- layer2 = nil;
- XCTAssertNil(weakLayer);
-}
-
-- (void)testOpenGLLayerDoesNotLeakWhenStyleChanged {
- __weak MGLOpenGLStyleLayer *weakLayer;
-
- @autoreleasepool {
- {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer = layer;
- [self.style insertLayer:layer atIndex:0];
- layer = nil;
- }
- }
-
- XCTAssertNotNil(weakLayer);
-
- [self waitForMapViewToBeRendered];
-
- MGLStyleLayer *layer2 = [self.mapView.style layerWithIdentifier:@"gl-layer"];
-
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self.mapView setStyleURL:styleURL];
- [self waitForExpectations:@[self.styleLoadingExpectation] timeout:10];
-
- // At this point the C++ CustomLayer will have been destroyed, and the rawLayer pointer has been NULLed
- XCTAssert(weakLayer == layer2);
- XCTAssertNotNil(weakLayer);
-
- // Asking the style for the layer should return nil
- MGLStyleLayer *layer3 = [self.mapView.style layerWithIdentifier:@"gl-layer"];
- XCTAssertNil(layer3);
-}
-
-
-- (void)testOpenGLLayerDoesNotLeakWhenMapViewDeallocs {
- __weak id weakLayer;
-
- @autoreleasepool {
-
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- MGLMapView *mapView2 = [[MGLMapView alloc] initWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
- mapView2.delegate = self;
-
- XCTAssertNil(mapView2.style);
-
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self waitForExpectationsWithTimeout:10 handler:nil];
-
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer = layer;
- [mapView2.style insertLayer:layer atIndex:0];
- layer = nil;
-
- [self waitForMapViewToBeRendered];
- }
- XCTAssertNil(weakLayer);
-}
-
-- (void)testMGLMapViewImplHasCorrectSize {
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self.mapView setStyleURL:styleURL];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(9.6315313, 52.4133574) animated:NO];
- [self waitForExpectations:@[self.styleLoadingExpectation] timeout:1];
-
- MGLMapViewImpl *mapViewImpl = [self.mapView viewImpl];
- CGFloat scaleFactor = [UIScreen mainScreen].scale;
- mbgl::Size renderableSize = mapViewImpl->getRendererBackend().getDefaultRenderable().getSize();
- mbgl::Size viewSize = {
- static_cast<uint32_t>(self.mapView.bounds.size.width * scaleFactor),
- static_cast<uint32_t>(self.mapView.bounds.size.height * scaleFactor)
- };
-
- // Test that mapView and default renderable have the same size.
- XCTAssertTrue(renderableSize == viewSize);
-
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(9.6315313, 52.4133574),
- CLLocationCoordinate2DMake(24.9410248, 60.1733244)};
-
- MGLPointCollectionFeature *points = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0])];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"heatmap" shape:points options:nil];
- [self.style addSource:source];
-
- MGLHeatmapStyleLayer *heatmapLayer = [[MGLHeatmapStyleLayer alloc] initWithIdentifier:@"lineLayer" source:source];
- [self.style addLayer:heatmapLayer];
-
- // Test that heatmap layer can create a texture and be successfully rendered.
- [self waitForMapViewToBeRendered];
-
- // Resize frame of the view.
- [self.mapView setFrame: CGRect{self.mapView.bounds.origin, {256, 256}}];
-
- // Force sync re-layout.
- [self.mapView layoutIfNeeded];
-
- // Test that mapView and default renderable have the same size after re-layout.
- renderableSize = mapViewImpl->getRendererBackend().getDefaultRenderable().getSize();
- viewSize = { static_cast<uint32_t>(self.mapView.bounds.size.width * scaleFactor),
- static_cast<uint32_t>(self.mapView.bounds.size.height * scaleFactor) };
- XCTAssertTrue(renderableSize == viewSize);
- [self waitForMapViewToBeRendered];
-}
-
-@end
-
diff --git a/platform/ios/Integration Tests/MGLMapViewIntegrationTest.h b/platform/ios/Integration Tests/MGLMapViewIntegrationTest.h
deleted file mode 100644
index 08576e884a..0000000000
--- a/platform/ios/Integration Tests/MGLMapViewIntegrationTest.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#import <XCTest/XCTest.h>
-#import <Mapbox/Mapbox.h>
-#import "MGLTestUtility.h"
-
-#define MGLTestFail(myself, ...) \
- _XCTPrimitiveFail(myself, __VA_ARGS__)
-
-#define MGLTestAssert(myself, expression, ...) \
- _XCTPrimitiveAssertTrue(myself, expression, @#expression, __VA_ARGS__)
-
-#define MGLTestAssertEqualWithAccuracy(myself, expression1, expression2, accuracy, ...) \
- _XCTPrimitiveAssertEqualWithAccuracy(myself, expression1, @#expression1, expression2, @#expression2, accuracy, @#accuracy, __VA_ARGS__)
-#define MGLTestAssertNil(myself, expression, ...) \
- _XCTPrimitiveAssertNil(myself, expression, @#expression, __VA_ARGS__)
-
-#define MGLTestAssertNotNil(myself, expression, ...) \
- _XCTPrimitiveAssertNotNil(myself, expression, @#expression, __VA_ARGS__)
-
-#define MGLTestWarning(expression, format, ...) \
-({ \
- if (!(expression)) { \
- NSString *message = [NSString stringWithFormat:format, ##__VA_ARGS__]; \
- printf("warning: Test Case '%s' at line %d: '%s' %s\n", __PRETTY_FUNCTION__, __LINE__, #expression, message.UTF8String); \
- } \
-})
-
-@interface MGLMapViewIntegrationTest : XCTestCase <MGLMapViewDelegate>
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic) UIWindow *window;
-@property (nonatomic) MGLStyle *style;
-@property (nonatomic) XCTestExpectation *styleLoadingExpectation;
-@property (nonatomic) XCTestExpectation *renderFinishedExpectation;
-@property (nonatomic) MGLAnnotationView * (^viewForAnnotation)(MGLMapView *mapView, id<MGLAnnotation> annotation);
-@property (nonatomic) void (^regionWillChange)(MGLMapView *mapView, BOOL animated);
-@property (nonatomic) void (^regionIsChanging)(MGLMapView *mapView);
-@property (nonatomic) void (^regionDidChange)(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated);
-@property (nonatomic) CGPoint (^mapViewUserLocationAnchorPoint)(MGLMapView *mapView);
-@property (nonatomic) BOOL (^mapViewAnnotationCanShowCalloutForAnnotation)(MGLMapView *mapView, id<MGLAnnotation> annotation);
-@property (nonatomic) id<MGLCalloutView> (^mapViewCalloutViewForAnnotation)(MGLMapView *mapView, id<MGLAnnotation> annotation);
-
-// Utility methods
-- (void)waitForMapViewToFinishLoadingStyleWithTimeout:(NSTimeInterval)timeout;
-- (void)waitForMapViewToBeRenderedWithTimeout:(NSTimeInterval)timeout;
-- (MGLMapView *)mapViewForTestWithFrame:(CGRect)rect styleURL:(NSURL *)styleURL;
-@end
diff --git a/platform/ios/Integration Tests/MGLMapViewIntegrationTest.m b/platform/ios/Integration Tests/MGLMapViewIntegrationTest.m
deleted file mode 100644
index 4095b4620b..0000000000
--- a/platform/ios/Integration Tests/MGLMapViewIntegrationTest.m
+++ /dev/null
@@ -1,200 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-
-@interface MGLMapView (MGLMapViewIntegrationTest)
-- (void)updateFromDisplayLink:(CADisplayLink *)displayLink;
-- (void)setNeedsRerender;
-@end
-
-@implementation MGLMapViewIntegrationTest
-
-+ (XCTestSuite*)defaultTestSuite {
-
- XCTestSuite *defaultTestSuite = [super defaultTestSuite];
-
- NSArray *tests = defaultTestSuite.tests;
-
- XCTestSuite *newTestSuite = [XCTestSuite testSuiteWithName:defaultTestSuite.name];
-
- BOOL runPendingTests = [[[NSProcessInfo processInfo] environment][@"MAPBOX_RUN_PENDING_TESTS"] boolValue];
- NSString *accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"];
-
- for (XCTest *test in tests) {
-
- // Check for pending tests
- if ([test.name containsString:@"PENDING"] ||
- [test.name containsString:@"🙁"]) {
- if (!runPendingTests) {
- printf("warning: '%s' is a pending test - skipping\n", test.name.UTF8String);
- continue;
- }
- }
-
- // Check for tests that require a valid access token
- if ([test.name containsString:@"🔒"]) {
- if (!accessToken) {
- printf("warning: MAPBOX_ACCESS_TOKEN env var is required for test '%s' - skipping.\n", test.name.UTF8String);
- continue;
- }
- }
-
- [newTestSuite addTest:test];
- }
-
- return newTestSuite;
-}
-
-- (MGLMapView *)mapViewForTestWithFrame:(CGRect)rect styleURL:(NSURL *)styleURL {
- return [[MGLMapView alloc] initWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
-}
-
-- (void)setUp {
- [super setUp];
-
- NSString *accessToken;
-
- if ([self.name containsString:@"🔒"]) {
- accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"];
-
- if (!accessToken) {
- printf("warning: MAPBOX_ACCESS_TOKEN env var is required for test '%s' - trying anyway.\n", self.name.UTF8String);
- }
- }
-
- [MGLAccountManager setAccessToken:accessToken ?: @"pk.feedcafedeadbeefbadebede"];
-
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
-
- self.mapView = [self mapViewForTestWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
- self.mapView.delegate = self;
-
- UIView *superView = [[UIView alloc] initWithFrame:UIScreen.mainScreen.bounds];
- [superView addSubview:self.mapView];
- self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
- [self.window addSubview:superView];
- [self.window makeKeyAndVisible];
-
- if (!self.mapView.style) {
- [self waitForMapViewToFinishLoadingStyleWithTimeout:10];
- }
-}
-
-- (void)tearDown {
- self.styleLoadingExpectation = nil;
- self.renderFinishedExpectation = nil;
- self.mapView = nil;
- self.style = nil;
- self.window = nil;
- [MGLAccountManager setAccessToken:nil];
-
- [super tearDown];
-}
-
-#pragma mark - MGLMapViewDelegate
-
-- (MGLAnnotationView*)mapView:(MGLMapView *)mapView viewForAnnotation:(id<MGLAnnotation>)annotation {
- if (self.viewForAnnotation) {
- return self.viewForAnnotation(mapView, annotation);
- }
-
- return nil;
-}
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style {
- XCTAssertNotNil(mapView.style);
- XCTAssertEqual(mapView.style, style);
-
- [self.styleLoadingExpectation fulfill];
-}
-
-- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(__unused BOOL)fullyRendered {
- [self.renderFinishedExpectation fulfill];
- self.renderFinishedExpectation = nil;
-}
-
-- (void)mapView:(MGLMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
- if (self.regionWillChange) {
- self.regionWillChange(mapView, animated);
- }
-}
-
-- (void)mapViewRegionIsChanging:(MGLMapView *)mapView {
- if (self.regionIsChanging) {
- self.regionIsChanging(mapView);
- }
-}
-
-- (void)mapView:(MGLMapView *)mapView regionDidChangeWithReason:(MGLCameraChangeReason)reason animated:(BOOL)animated {
- if (self.regionDidChange) {
- self.regionDidChange(mapView, reason, animated);
- }
-}
-
-- (CGPoint)mapViewUserLocationAnchorPoint:(MGLMapView *)mapView {
- if (self.mapViewUserLocationAnchorPoint) {
- return self.mapViewUserLocationAnchorPoint(mapView);
- }
- return CGPointZero;
-}
-
-- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id<MGLAnnotation>)annotation {
- if (self.mapViewAnnotationCanShowCalloutForAnnotation) {
- return self.mapViewAnnotationCanShowCalloutForAnnotation(mapView, annotation);
- }
- return NO;
-}
-
-- (id<MGLCalloutView>)mapView:(MGLMapView *)mapView calloutViewForAnnotation:(id<MGLAnnotation>)annotation {
- if (self.mapViewCalloutViewForAnnotation) {
- return self.mapViewCalloutViewForAnnotation(mapView, annotation);
- }
- return nil;
-}
-
-#pragma mark - Utilities
-
-- (void)waitForMapViewToFinishLoadingStyleWithTimeout:(NSTimeInterval)timeout {
- XCTAssertNil(self.styleLoadingExpectation);
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self waitForExpectations:@[self.styleLoadingExpectation] timeout:timeout];
- self.styleLoadingExpectation = nil;
-}
-
-- (void)waitForMapViewToBeRenderedWithTimeout:(NSTimeInterval)timeout {
- XCTAssertNil(self.renderFinishedExpectation);
- [self.mapView setNeedsRerender];
- self.renderFinishedExpectation = [self expectationWithDescription:@"Map view should be rendered"];
- [self waitForExpectations:@[self.renderFinishedExpectation] timeout:timeout];
- self.renderFinishedExpectation = nil;
-}
-
-- (void)waitForExpectations:(NSArray<XCTestExpectation *> *)expectations timeout:(NSTimeInterval)seconds {
-
- NSTimer *timer;
-
- if (@available(iOS 10.0, *)) {
- // We're good.
- }
- else if (self.mapView) {
- // Before iOS 10 it seems that the display link is not called during the
- // waitForExpectations below
-
- timer = [NSTimer scheduledTimerWithTimeInterval:1.0/30.0
- target:self
- selector:@selector(updateMapViewDisplayLinkFromTimer:)
- userInfo:nil
- repeats:YES];
- }
-
- [super waitForExpectations:expectations timeout:seconds];
- [timer invalidate];
-}
-
-- (void)updateMapViewDisplayLinkFromTimer:(NSTimer *)timer {
- [self.mapView updateFromDisplayLink:nil];
-}
-
-- (MGLStyle *)style {
- return self.mapView.style;
-}
-
-@end
diff --git a/platform/ios/Integration Tests/MGLMapViewPendingBlockTests.m b/platform/ios/Integration Tests/MGLMapViewPendingBlockTests.m
deleted file mode 100644
index c7925d7896..0000000000
--- a/platform/ios/Integration Tests/MGLMapViewPendingBlockTests.m
+++ /dev/null
@@ -1,366 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-#import "MGLTestUtility.h"
-
-@interface MGLMapView (MGLMapViewPendingBlockTests)
-@property (nonatomic) NSMutableArray *pendingCompletionBlocks;
-- (void)pauseRendering:(__unused NSNotification *)notification;
-@end
-
-@interface MGLMapViewPendingBlockTests : MGLMapViewIntegrationTest
-@property (nonatomic, copy) void (^observation)(NSDictionary*);
-@property (nonatomic) BOOL completionHandlerCalled;
-@end
-
-@implementation MGLMapViewPendingBlockTests
-
-- (void)testSetCenterCoordinate {
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- [strongSelf.mapView setCenterCoordinate:CLLocationCoordinate2DMake(10.0, 10.0)
- zoomLevel:10.0
- direction:0
- animated:NO
- completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-- (void)testSetCenterCoordinateAnimated {
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- [strongSelf.mapView setCenterCoordinate:CLLocationCoordinate2DMake(10.0, 10.0)
- zoomLevel:10.0
- direction:0
- animated:YES
- completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-- (void)testSetVisibleCoordinateBounds {
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- MGLCoordinateBounds unitBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(1, 1));
- [strongSelf.mapView setVisibleCoordinateBounds:unitBounds
- edgePadding:UIEdgeInsetsZero
- animated:NO
- completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-- (void)testSetVisibleCoordinateBoundsAnimated {
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- MGLCoordinateBounds unitBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(1, 1));
- [strongSelf.mapView setVisibleCoordinateBounds:unitBounds
- edgePadding:UIEdgeInsetsZero
- animated:YES
- completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-- (void)testSetCamera {
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- MGLCoordinateBounds unitBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(1, 1));
- MGLMapCamera *camera = [strongSelf.mapView cameraThatFitsCoordinateBounds:unitBounds];
-
- [strongSelf.mapView setCamera:camera withDuration:0.0 animationTimingFunction:nil completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-- (void)testSetCameraAnimated {
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- MGLCoordinateBounds unitBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(1, 1));
- MGLMapCamera *camera = [strongSelf.mapView cameraThatFitsCoordinateBounds:unitBounds];
-
- [strongSelf.mapView setCamera:camera withDuration:0.3 animationTimingFunction:nil completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-- (void)testFlyToCamera {
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- MGLCoordinateBounds unitBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(1, 1));
- MGLMapCamera *camera = [strongSelf.mapView cameraThatFitsCoordinateBounds:unitBounds];
-
- [strongSelf.mapView flyToCamera:camera withDuration:0.0 completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-- (void)testFlyToCameraAnimated {
-
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- MGLCoordinateBounds unitBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(1, 1));
- MGLMapCamera *camera = [strongSelf.mapView cameraThatFitsCoordinateBounds:unitBounds];
-
- [strongSelf.mapView flyToCamera:camera withDuration:0.3 completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:nil];
-}
-
-
-#pragma mark - test interrupting regular rendering
-
-- (void)testSetCenterCoordinateSetHidden {
-
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- [strongSelf.mapView setCenterCoordinate:CLLocationCoordinate2DMake(10.0, 10.0)
- zoomLevel:10.0
- direction:0
- animated:NO
- completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- dispatch_block_t addedToPending = ^{
- __typeof__(self) strongSelf = weakSelf;
-
- MGLTestAssert(strongSelf, !strongSelf.completionHandlerCalled);
-
- // Now hide the mapview
- strongSelf.mapView.hidden = YES;
-
- MGLTestAssert(strongSelf, strongSelf.completionHandlerCalled);
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:addedToPending];
-}
-
-- (void)testSetCenterCoordinatePauseRendering {
-
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- [strongSelf.mapView setCenterCoordinate:CLLocationCoordinate2DMake(10.0, 10.0)
- zoomLevel:10.0
- direction:0
- animated:NO
- completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- dispatch_block_t addedToPending = ^{
- __typeof__(self) strongSelf = weakSelf;
-
- MGLTestAssert(strongSelf, !strongSelf.completionHandlerCalled);
-
- // Pause rendering, stopping display link
- [strongSelf.mapView pauseRendering:nil];
-
- MGLTestAssert(strongSelf, strongSelf.completionHandlerCalled);
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:addedToPending];
-}
-
-- (void)testSetCenterCoordinateRemoveFromSuperview {
-
- __typeof__(self) weakSelf = self;
-
- void (^transition)(dispatch_block_t) = ^(dispatch_block_t completion) {
- __typeof__(self) strongSelf = weakSelf;
-
- if (strongSelf) {
- [strongSelf.mapView setCenterCoordinate:CLLocationCoordinate2DMake(10.0, 10.0)
- zoomLevel:10.0
- direction:0
- animated:NO
- completionHandler:completion];
- }
- else {
- completion();
- }
- };
-
- dispatch_block_t addedToPending = ^{
- __typeof__(self) strongSelf = weakSelf;
-
- MGLTestAssert(strongSelf, !strongSelf.completionHandlerCalled);
-
- // Remove from window, triggering validateDisplayLink
- [strongSelf.mapView removeFromSuperview];
-
- MGLTestAssert(strongSelf, strongSelf.completionHandlerCalled);
- };
-
- [self internalTestCompletionBlockAddedToPendingForTestName:NSStringFromSelector(_cmd)
- transition:transition
- addToPendingCallback:addedToPending];
-}
-
-#pragma mark - Shared utility methods
-
-- (void)internalTestCompletionBlockAddedToPendingForTestName:(NSString *)testName
- transition:(void (^)(dispatch_block_t))transition
- addToPendingCallback:(dispatch_block_t)addToPendingCallback {
-
- XCTestExpectation *expectation = [self expectationWithDescription:testName];
-
- __weak __typeof__(self) myself = self;
-
- dispatch_block_t block = ^{
- myself.completionHandlerCalled = YES;
- [expectation fulfill];
- };
-
- XCTAssertNotNil(transition);
- transition(block);
-
- XCTAssert(!self.completionHandlerCalled);
- XCTAssert(self.mapView.pendingCompletionBlocks.count == 0);
-
- __block BOOL blockAddedToPendingBlocks = NO;
-
- // Observes changes to pendingCompletionBlocks (including additions)
- self.observation = ^(NSDictionary *change){
-
- NSLog(@"change = %@ count = %lu", change, myself.mapView.pendingCompletionBlocks.count);
-
- NSArray *value = change[NSKeyValueChangeNewKey];
-
- MGLTestAssert(myself, [value isKindOfClass:[NSArray class]]);
-
- if (value.count > 0) {
- MGLTestAssert(myself, [value containsObject:block]);
- MGLTestAssert(myself, !blockAddedToPendingBlocks);
- if ([myself.mapView.pendingCompletionBlocks containsObject:block]) {
- blockAddedToPendingBlocks = YES;
-
- if (addToPendingCallback) {
- addToPendingCallback();
- }
- }
- }
- };
-
- [self.mapView addObserver:self forKeyPath:@"pendingCompletionBlocks" options:NSKeyValueObservingOptionNew context:_cmd];
-
- [self waitForExpectations:@[expectation] timeout:0.5];
-
- XCTAssert(blockAddedToPendingBlocks);
- XCTAssert(self.completionHandlerCalled);
- XCTAssert(self.mapView.pendingCompletionBlocks.count == 0);
-
- [self.mapView removeObserver:self forKeyPath:@"pendingCompletionBlocks" context:_cmd];
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
- if (self.observation) {
- self.observation(change);
- }
-}
-@end
diff --git a/platform/ios/Integration Tests/MGLShapeSourceTests.m b/platform/ios/Integration Tests/MGLShapeSourceTests.m
deleted file mode 100644
index 836118450e..0000000000
--- a/platform/ios/Integration Tests/MGLShapeSourceTests.m
+++ /dev/null
@@ -1,163 +0,0 @@
-//
-// MBShapeSourceTests.m
-// integration
-//
-// Created by Julian Rex on 4/5/18.
-// Copyright © 2018 Mapbox. All rights reserved.
-//
-
-#import "MGLMapViewIntegrationTest.h"
-
-@interface MGLShapeSourceTests : MGLMapViewIntegrationTest
-@end
-
-@implementation MGLShapeSourceTests
-
-- (void)testSettingShapeSourceToNilInRegionDidChange {
-
- NSMutableArray *features = [[NSMutableArray alloc] init];
-
- for (NSUInteger i = 0; i <= 180; i+=5) {
- CLLocationCoordinate2D coord[4] = {
- CLLocationCoordinate2DMake(round(0), round(i)),
- CLLocationCoordinate2DMake(round(20), round(i)),
- CLLocationCoordinate2DMake(round(0), round(i / 2 )),
- CLLocationCoordinate2DMake(round(20), round(i / 2))};
-
- MGLPolygonFeature *feature = [MGLPolygonFeature polygonWithCoordinates:coord count:4];
- [features addObject:feature];
- }
-
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"source" features:features options:nil];
- [self.style addSource:shapeSource];
-
- MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"layer" source:shapeSource];
- layer.fillOpacity = [NSExpression expressionForConstantValue:@0.5];
- [self.style addLayer:layer];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 1;
- expectation.assertForOverFulfill = YES;
-
- __weak typeof(self) weakself = self;
- __block NSInteger delegateCallCount = 0;
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
-
- MGLShapeSourceTests *strongSelf = weakself;
-
- if (!strongSelf)
- return;
-
- delegateCallCount++;
-
- // Setting the shapeSource.shape = nil, was causing an infinite loop, so here
- // we check for a runaway call. 10 here is arbitrary. We could argue that this
- // should check that the call count is only 1, however in this case we particularly
- // want to check for the infinite loop.
- // See https://github.com/mapbox/mapbox-gl-native/issues/11180
-
- if (delegateCallCount > 10) {
- MGLTestFail(strongSelf);
- }
- else {
- shapeSource.shape = nil;
- }
-
- [expectation fulfill];
- };
-
- // setCenterCoordinate is NOT animated here.
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(10.0, 10.0)];
- [self waitForExpectations:@[expectation] timeout:5.0];
-}
-
-- (void)testSettingShapeSourceToNilInRegionIsChanging {
-
- NSMutableArray *features = [[NSMutableArray alloc] init];
-
- for (NSUInteger i = 0; i <= 180; i+=5) {
- CLLocationCoordinate2D coord[4] = {
- CLLocationCoordinate2DMake(round(0), round(i)),
- CLLocationCoordinate2DMake(round(20), round(i)),
- CLLocationCoordinate2DMake(round(0), round(i / 2 )),
- CLLocationCoordinate2DMake(round(20), round(i / 2))};
-
- MGLPolygonFeature *feature = [MGLPolygonFeature polygonWithCoordinates:coord count:4];
- [features addObject:feature];
- }
-
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"source" features:features options:nil];
- [self.style addSource:shapeSource];
-
- MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"layer" source:shapeSource];
- layer.fillOpacity = [NSExpression expressionForConstantValue:@0.5];
- [self.style addLayer:layer];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 1;
- expectation.assertForOverFulfill = YES;
-
- __block NSInteger delegateCallCount = 0;
- __weak typeof(self) weakself = self;
-
- self.regionIsChanging = ^(MGLMapView *mapView) {
- // See https://github.com/mapbox/mapbox-gl-native/issues/11180
- shapeSource.shape = nil;
- };
-
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
-
- delegateCallCount++;
-
- if (delegateCallCount > 1) {
- MGLTestFail(weakself);
- }
-
- [expectation fulfill];
- };
-
- // Should take MGLAnimationDuration seconds (0.3)
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(10.0, 10.0) animated:YES];
- [self waitForExpectations:@[expectation] timeout:1.0];
-}
-
-- (void)testShapeSourceWithLineDistanceMetrics {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(9.6315313, 52.4133574),
- CLLocationCoordinate2DMake(24.9410248, 60.1733244)};
-
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0])];
- NSDictionary *options = @{MGLShapeSourceOptionLineDistanceMetrics: @YES};
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"route" shape:polylineFeature options:options];
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"lineLayer" source:source];
-
- [self.style addSource:source];
- [self.style addLayer:lineLayer];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(9.6315313, 52.4133574) animated:YES];
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"regionDidChange expectation"];
- expectation.expectedFulfillmentCount = 1;
- expectation.assertForOverFulfill = YES;
-
- __weak id weakself = self;
- self.regionDidChange = ^(MGLMapView *mapView, MGLCameraChangeReason reason, BOOL animated) {
-
- id strongSelf = weakself;
- if (!strongSelf)
- return;
-
- NSArray *features = [source featuresMatchingPredicate:nil];
- MGLTestAssert(strongSelf, features.count == 1UL, @"Should contain one Feature");
-
- MGLPolylineFeature *feature = [features objectAtIndex:0];
- MGLTestAssertNotNil(strongSelf, [feature.attributes objectForKey:@"mapbox_clip_start"], @"Attributes should contain mapbox_clip_start property");
- MGLTestAssertNotNil(strongSelf, [feature.attributes objectForKey:@"mapbox_clip_end"], @"Attributes should contain mapbox_clip_end property");
-
- [expectation fulfill];
- };
-
- [self waitForExpectations:@[expectation] timeout:1.0];
-}
-
-@end
diff --git a/platform/ios/Integration Tests/MGLSourceTests.swift b/platform/ios/Integration Tests/MGLSourceTests.swift
deleted file mode 100644
index 69fa0182b5..0000000000
--- a/platform/ios/Integration Tests/MGLSourceTests.swift
+++ /dev/null
@@ -1,45 +0,0 @@
-import XCTest
-
-class MGLSourceTests: MGLMapViewIntegrationTest {
-
- // See testForRaisingExceptionsOnStaleStyleObjects for Obj-C sibling.
- func testForRaisingExceptionsOnStaleStyleObjectsOnRemoveFromMapView() {
-
- guard
- let configURL = URL(string: "mapbox://examples.2uf7qges") else {
- XCTFail()
- return
- }
-
- let source = MGLVectorTileSource(identifier: "trees", configurationURL: configURL)
- mapView.style?.addSource(source)
-
- let bundle = Bundle(for: type(of: self))
-
- guard let styleURL = bundle.url(forResource: "one-liner", withExtension: "json") else {
- XCTFail()
- return
- }
-
- styleLoadingExpectation = nil;
-
- mapView.centerCoordinate = CLLocationCoordinate2D(latitude : 38.897, longitude : -77.039)
- mapView.zoomLevel = 10.5
- mapView.styleURL = styleURL
-
- waitForMapViewToFinishLoadingStyle(withTimeout: 10.0)
-
- let expect = expectation(description: "Remove source should error")
-
- do {
- try mapView.style?.removeSource(source, error: ())
- }
- catch let error as NSError {
- XCTAssertEqual(error.domain, MGLErrorDomain)
- XCTAssertEqual(error.code, MGLErrorCode.sourceCannotBeRemovedFromStyle.rawValue)
- expect.fulfill()
- }
-
- wait(for: [expect], timeout: 0.1)
- }
-}
diff --git a/platform/ios/Integration Tests/MGLStyleLayerIntegrationTests.m b/platform/ios/Integration Tests/MGLStyleLayerIntegrationTests.m
deleted file mode 100644
index f5f2f957d3..0000000000
--- a/platform/ios/Integration Tests/MGLStyleLayerIntegrationTests.m
+++ /dev/null
@@ -1,112 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-
-@interface MGLStyleLayerIntegrationTests : MGLMapViewIntegrationTest
-@end
-
-@implementation MGLStyleLayerIntegrationTests
-
-- (MGLCircleStyleLayer*)setupCircleStyleLayer {
- // Adapted from https://docs.mapbox.com/ios/examples/dds-circle-layer/
-
- // "mapbox://examples.2uf7qges" is a tileset ID. For more
- // more information, see docs.mapbox.com/help/glossary/tileset-id/
- MGLSource *source = [[MGLVectorTileSource alloc] initWithIdentifier:@"trees" configurationURL:[NSURL URLWithString:@"mapbox://examples.2uf7qges"]];
- [self.mapView.style addSource:source];
-
- MGLCircleStyleLayer *layer = [[MGLCircleStyleLayer alloc] initWithIdentifier: @"tree-style" source:source];
-
- // The source name from the source's TileJSON metadata: mapbox.com/api-documentation/maps/#retrieve-tilejson-metadata
- layer.sourceLayerIdentifier = @"yoshino-trees-a0puw5";
-
- return layer;
-}
-
-- (void)testForInterpolatingExpressionRenderCrashWithEmptyStops {
- // Tests: https://github.com/mapbox/mapbox-gl-native/issues/9539
- // Adapted from https://docs.mapbox.com/ios/examples/dds-circle-layer/
- self.mapView.centerCoordinate = CLLocationCoordinate2DMake(38.897,-77.039);
- self.mapView.zoomLevel = 10.5;
-
- MGLCircleStyleLayer *layer = [self setupCircleStyleLayer];
-
- NSExpression *interpExpression = [NSExpression mgl_expressionForInterpolatingExpression:NSExpression.zoomLevelVariableExpression
- withCurveType:MGLExpressionInterpolationModeLinear
- parameters:nil
- stops:[NSExpression expressionForConstantValue:@{}]];
-
- XCTAssertThrowsSpecificNamed((layer.circleColor = interpExpression), NSException, NSInvalidArgumentException);
-
- [self.mapView.style addLayer:layer];
- [self waitForMapViewToBeRenderedWithTimeout:10];
-}
-
-- (void)testForSteppingExpressionRenderCrashWithEmptyStops {
- // Tests: https://github.com/mapbox/mapbox-gl-native/issues/9539
- // Adapted from https://docs.mapbox.com/ios/examples/dds-circle-layer/
- self.mapView.centerCoordinate = CLLocationCoordinate2DMake(38.897,-77.039);
- self.mapView.zoomLevel = 10.5;
-
- MGLCircleStyleLayer *layer = [self setupCircleStyleLayer];
-
- NSExpression *steppingExpression = [NSExpression mgl_expressionForSteppingExpression:NSExpression.zoomLevelVariableExpression
- fromExpression:[NSExpression expressionForConstantValue:[UIColor greenColor]]
- stops:[NSExpression expressionForConstantValue:@{}]];
-
- XCTAssertThrowsSpecificNamed((layer.circleColor = steppingExpression), NSException, NSInvalidArgumentException);
-
- [self.mapView.style addLayer:layer];
- [self waitForMapViewToBeRenderedWithTimeout:10];
-}
-
-- (void)testForRaisingExceptionsOnStaleStyleObjects {
- self.mapView.centerCoordinate = CLLocationCoordinate2DMake(38.897,-77.039);
- self.mapView.zoomLevel = 10.5;
-
- MGLVectorTileSource *source = [[MGLVectorTileSource alloc] initWithIdentifier:@"trees" configurationURL:[NSURL URLWithString:@"mapbox://examples.2uf7qges"]];
- [self.mapView.style addSource:source];
-
- self.styleLoadingExpectation = nil;
- [self.mapView setStyleURL:[[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"]];
- [self waitForMapViewToFinishLoadingStyleWithTimeout:10];
-
- XCTAssertNotNil(source.description);
- XCTAssertThrowsSpecificNamed(source.configurationURL, NSException, MGLInvalidStyleSourceException, @"MGLSource should raise an exception if its core peer got invalidated");
-}
-
-- (void)testForRaisingExceptionsOnStaleLayerObject {
- self.mapView.centerCoordinate = CLLocationCoordinate2DMake(38.897,-77.039);
- self.mapView.zoomLevel = 10.5;
-
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- // Testing generated layers
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"lineLayerID" source:source];
- MGLCircleStyleLayer *circleLayer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"circleLayerID" source:source];
-
- [self.mapView.style addSource:source];
- [self.mapView.style addLayer:lineLayer];
- [self.mapView.style addLayer:circleLayer];
-
- XCTAssertNoThrow(lineLayer.isVisible);
- XCTAssertNoThrow(circleLayer.isVisible);
-
- XCTAssert(![source.description containsString:@"<unknown>"]);
- XCTAssert(![lineLayer.description containsString:@"<unknown>"]);
- XCTAssert(![circleLayer.description containsString:@"<unknown>"]);
-
- self.styleLoadingExpectation = nil;
- [self.mapView setStyleURL:[[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"]];
- [self waitForMapViewToFinishLoadingStyleWithTimeout:10];
-
- XCTAssert([source.description containsString:@"<unknown>"]);
- XCTAssert([lineLayer.description containsString:@"<unknown>"]);
- XCTAssert([circleLayer.description containsString:@"<unknown>"]);
-
- XCTAssertThrowsSpecificNamed(lineLayer.isVisible, NSException, MGLInvalidStyleLayerException, @"Layer should raise an exception if its core peer got invalidated");
- XCTAssertThrowsSpecificNamed(circleLayer.isVisible, NSException, MGLInvalidStyleLayerException, @"Layer should raise an exception if its core peer got invalidated");
-
- XCTAssertThrowsSpecificNamed([self.mapView.style removeLayer:lineLayer], NSException, NSInvalidArgumentException, @"Style should raise an exception when attempting to remove an invalid layer (e.g. if its core peer got invalidated)");
- XCTAssertThrowsSpecificNamed([self.mapView.style removeLayer:circleLayer], NSException, NSInvalidArgumentException, @"Style should raise an exception when attempting to remove an invalid layer (e.g. if its core peer got invalidated)");
-}
-@end
diff --git a/platform/ios/Integration Tests/MGLStyleURLIntegrationTest.m b/platform/ios/Integration Tests/MGLStyleURLIntegrationTest.m
deleted file mode 100644
index 22de4c6aa5..0000000000
--- a/platform/ios/Integration Tests/MGLStyleURLIntegrationTest.m
+++ /dev/null
@@ -1,38 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-
-@interface MGLStyleURLIntegrationTest : MGLMapViewIntegrationTest
-@end
-
-@implementation MGLStyleURLIntegrationTest
-
-- (void)internalTestWithStyleSelector:(SEL)selector {
- self.mapView.styleURL = [MGLStyle performSelector:selector];
- [self waitForMapViewToFinishLoadingStyleWithTimeout:5];
-}
-
-
-- (void)testLoadingStreetsStyleURL🔒 {
- [self internalTestWithStyleSelector:@selector(streetsStyleURL)];
-}
-
-- (void)testLoadingOutdoorsStyleURL🔒 {
- [self internalTestWithStyleSelector:@selector(outdoorsStyleURL)];
-}
-
-- (void)testLoadingLightStyleURL🔒 {
- [self internalTestWithStyleSelector:@selector(lightStyleURL)];
-}
-
-- (void)testLoadingDarkStyleURL🔒 {
- [self internalTestWithStyleSelector:@selector(darkStyleURL)];
-}
-
-- (void)testLoadingSatelliteStyleURL🔒 {
- [self internalTestWithStyleSelector:@selector(satelliteStyleURL)];
-}
-
-- (void)testLoadingSatelliteStreetsStyleURL🔒 {
- [self internalTestWithStyleSelector:@selector(satelliteStreetsStyleURL)];
-}
-
-@end
diff --git a/platform/ios/Integration Tests/MGLTestLocationManager.h b/platform/ios/Integration Tests/MGLTestLocationManager.h
deleted file mode 100644
index e0e6f25bb2..0000000000
--- a/platform/ios/Integration Tests/MGLTestLocationManager.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#import <XCTest/XCTest.h>
-#import <Mapbox/Mapbox.h>
-#import "MGLTestUtility.h"
-
-@interface MGLTestLocationManager : NSObject<MGLLocationManager>
-@end
-
-@interface MGLTestLocationManager()
-
-@end
diff --git a/platform/ios/Integration Tests/MGLTestLocationManager.m b/platform/ios/Integration Tests/MGLTestLocationManager.m
deleted file mode 100644
index f9a5a8650f..0000000000
--- a/platform/ios/Integration Tests/MGLTestLocationManager.m
+++ /dev/null
@@ -1,44 +0,0 @@
-#import "MGLTestLocationManager.h"
-
-// Used to supply integration tests with a simulated location manager.
-// Methods that are empty are not used within integration tests and are
-// therefore unimplemented.
-
-@implementation MGLTestLocationManager
-
-@synthesize delegate;
-
-- (CLAuthorizationStatus)authorizationStatus { return kCLAuthorizationStatusAuthorizedAlways; }
-
-- (void)setHeadingOrientation:(CLDeviceOrientation)headingOrientation { }
-
-- (CLDeviceOrientation)headingOrientation { return 90; }
-
-- (void)requestAlwaysAuthorization { }
-
-- (void)requestWhenInUseAuthorization { }
-
-- (void)startUpdatingHeading { }
-
-// Simulate one location update
-- (void)startUpdatingLocation
-{
- if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateLocations:)]) {
- CLLocation *location = [[CLLocation alloc] initWithLatitude:37.787357 longitude:-122.39899];
- [self.delegate locationManager:self didUpdateLocations:@[location]];
- }
-}
-
-- (void)stopUpdatingHeading { }
-
-- (void)stopUpdatingLocation { }
-
-- (void)dismissHeadingCalibrationDisplay { }
-
-- (void)dealloc { self.delegate = nil; }
-
-- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { }
-
-- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager { return NO; }
-
-@end
diff --git a/platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterSwiftTests.swift b/platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterSwiftTests.swift
deleted file mode 100644
index d33a986beb..0000000000
--- a/platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterSwiftTests.swift
+++ /dev/null
@@ -1,77 +0,0 @@
-import XCTest
-
-class MGLMapSnapshotterSwiftTests: MGLMapViewIntegrationTest {
-
- // Create snapshot options
- private class func snapshotterOptions(size: CGSize) -> MGLMapSnapshotOptions {
- let camera = MGLMapCamera()
-
- let options = MGLMapSnapshotOptions(styleURL: MGLStyle.satelliteStreetsStyleURL, camera: camera, size: size)
-
- let sw = CLLocationCoordinate2D(latitude: 52.3, longitude: 13.0)
- let ne = CLLocationCoordinate2D(latitude: 52.5, longitude: 13.2)
- options.coordinateBounds = MGLCoordinateBounds(sw:sw, ne:ne)
-
- return options
- }
-
- func testCapturingSnapshotterInSnapshotCompletion🔒() {
- // See the Obj-C testDeallocatingSnapshotterDuringSnapshot
- // This Swift test, is essentially the same except for capturing the snapshotter
-
- let timeout: TimeInterval = 10.0
- let expectation = self.expectation(description: "snapshot")
-
- let options = MGLMapSnapshotterSwiftTests.snapshotterOptions(size: mapView.bounds.size)
-
- let backgroundQueue = DispatchQueue.main
-
- backgroundQueue.async {
- let dg = DispatchGroup()
- dg.enter()
-
- DispatchQueue.main.async {
-
- let snapshotter = MGLMapSnapshotter(options: options)
-
- snapshotter.start(completionHandler: { (snapshot, error) in
-
-// // Without capturing snapshotter:
-// XCTAssertNil(snapshot)
-// XCTAssertNotNil(error)
-
- // Capture snapshotter
- dump(snapshotter)
- XCTAssertNotNil(snapshot)
- XCTAssertNil(error)
-
- dg.leave()
- })
- }
-
- dg.notify(queue: .main) {
- expectation.fulfill()
- }
- }
-
- wait(for: [expectation], timeout: timeout)
- }
-
- func testSnapshotOverlaySwiftErgonomics🔒() {
- let options = MGLMapSnapshotterSwiftTests.snapshotterOptions(size: mapView.bounds.size)
- let snapshotter = MGLMapSnapshotter(options: options)
- let expectation = self.expectation(description: "snapshot")
- expectation.expectedFulfillmentCount = 2
-
- snapshotter.start(overlayHandler: { (overlay) in
- guard let _ = overlay.context.makeImage() else {
- XCTFail()
- return
- }
- expectation.fulfill()
- }) { (_, _) in
- expectation.fulfill()
- }
- wait(for: [expectation], timeout: 10)
- }
-}
diff --git a/platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterTest.m b/platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterTest.m
deleted file mode 100644
index 9ef2054dff..0000000000
--- a/platform/ios/Integration Tests/Snapshotter Tests/MGLMapSnapshotterTest.m
+++ /dev/null
@@ -1,537 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-#import "MGLMapSnapshotter_Private.h"
-
-@interface MGLMapSnapshotter ()
-@property (nonatomic) BOOL cancelled;
-@end
-
-
-@interface MGLMapSnapshotterTest : MGLMapViewIntegrationTest
-@end
-
-// Convenience func to create snapshotter
-MGLMapSnapshotter* snapshotterWithCoordinates(CLLocationCoordinate2D coordinates, CGSize size) {
- // Create snapshot options
- MGLMapCamera* mapCamera = [[MGLMapCamera alloc] init];
- mapCamera.pitch = 20;
- mapCamera.centerCoordinate = coordinates;
- MGLMapSnapshotOptions* options = [[MGLMapSnapshotOptions alloc] initWithStyleURL:[MGLStyle satelliteStreetsStyleURL]
- camera:mapCamera
- size:size];
- options.zoomLevel = 10;
-
- // Create and start the snapshotter
- MGLMapSnapshotter* snapshotter = [[MGLMapSnapshotter alloc] initWithOptions:options];
- return snapshotter;
-}
-
-MGLMapSnapshotter* snapshotterWithBounds(MGLCoordinateBounds bounds, CGSize size) {
-
- MGLMapCamera* mapCamera = [[MGLMapCamera alloc] init];
- MGLMapSnapshotOptions* options = [[MGLMapSnapshotOptions alloc] initWithStyleURL:[MGLStyle satelliteStreetsStyleURL]
- camera:mapCamera
- size:size];
- options.coordinateBounds = bounds;
-
- // Create and start the snapshotter
- MGLMapSnapshotter* snapshotter = [[MGLMapSnapshotter alloc] initWithOptions:options];
- return snapshotter;
-}
-
-
-
-@implementation MGLMapSnapshotterTest
-
-- (void)testMultipleSnapshotsWithASingleSnapshotter🔒 {
- CGSize size = self.mapView.bounds.size;
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshots"];
- expectation.expectedFulfillmentCount = 2;
- expectation.assertForOverFulfill = YES;
-
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
- XCTAssertNotNil(snapshotter);
-
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- [expectation fulfill];
- }];
-
- @try {
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- XCTFail(@"Should not be called - but should it?");
- }];
- XCTFail(@"Should not be called");
- }
- @catch (NSException *exception) {
- XCTAssert(exception.name == NSInternalInconsistencyException);
- [expectation fulfill];
- }
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-}
-
-- (void)testDeallocatingSnapshotterDuringSnapshot🔒 {
- // See also https://github.com/mapbox/mapbox-gl-native/issues/12336
-
- NSTimeInterval timeout = 10.0;
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshot"];
- CGSize size = self.mapView.bounds.size;
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- // Test triggering to main queue
- dispatch_queue_t backgroundQueue = dispatch_get_main_queue();
-// dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-
- __weak __typeof__(self) weakself = self;
-
- dispatch_async(backgroundQueue, ^{
-
- dispatch_group_t dg = dispatch_group_create();
- dispatch_group_enter(dg);
-
- dispatch_async(dispatch_get_main_queue(), ^{
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
- __weak MGLMapSnapshotter *weakSnapshotter = snapshotter;
-
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- // We expect this completion block to be called with an error
- __typeof__(self) strongself = weakself;
-
- MGLTestAssertNil(strongself, snapshot);
- MGLTestAssert(strongself,
- ([error.domain isEqualToString:MGLErrorDomain] && error.code == MGLErrorCodeSnapshotFailed),
- @"Should have errored");
- MGLTestAssertNil(strongself, weakSnapshotter, @"Snapshotter should have been deallocated");
-
- dispatch_group_leave(dg);
- }];
- });
-
- dispatch_group_notify(dg, dispatch_get_main_queue(), ^{
- [expectation fulfill];
- });
- });
-
- [self waitForExpectations:@[expectation] timeout:timeout];
-}
-
-- (void)testSnapshotterUsingNestedDispatchQueues🔒 {
- // This is the opposite pair to the above test `testDeallocatingSnapshotterDuringSnapshot`
- // The only significant difference is that the snapshotter is a `__block` variable, so
- // its lifetime should continue until it's set to nil in the completion block.
- // See also https://github.com/mapbox/mapbox-gl-native/issues/12336
-
- NSTimeInterval timeout = 10.0;
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshot"];
- CGSize size = self.mapView.bounds.size;
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- // Test triggering to main queue
- dispatch_queue_t backgroundQueue = dispatch_get_main_queue();
- // dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-
- __weak __typeof__(self) weakself = self;
-
- dispatch_async(backgroundQueue, ^{
-
- dispatch_group_t dg = dispatch_group_create();
- dispatch_group_enter(dg);
-
- dispatch_async(dispatch_get_main_queue(), ^{
-
- __block MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
-
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- // We expect this completion block to be called with an error
- __typeof__(self) strongself = weakself;
- MGLTestAssertNotNil(strongself, snapshot);
- MGLTestAssertNil(strongself, error, @"Snapshotter should have completed");
- dispatch_group_leave(dg);
- snapshotter = nil;
- }];
- });
-
- dispatch_group_notify(dg, dispatch_get_main_queue(), ^{
- [expectation fulfill];
- });
- });
-
- [self waitForExpectations:@[expectation] timeout:timeout];
-}
-
-- (void)testCancellingSnapshot🔒 {
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshots"];
- expectation.assertForOverFulfill = YES;
- expectation.expectedFulfillmentCount = 1;
-
- CGSize size = self.mapView.bounds.size;
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
-
- __weak __typeof__(self) weakself = self;
-
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- // We expect this completion block to be called with an error
- __typeof__(self) strongself = weakself;
-
- MGLTestAssertNil(strongself, snapshot);
- MGLTestAssert(strongself,
- ([error.domain isEqualToString:MGLErrorDomain] && error.code == MGLErrorCodeSnapshotFailed),
- @"Should have been cancelled");
- MGLTestAssert(strongself, snapshotter.cancelled, @"Should have been cancelled");
- [expectation fulfill];
- }];
-
- [snapshotter cancel];
-
- [self waitForExpectations:@[expectation] timeout:5.0];
-}
-
-- (void)testAllocatingSnapshotOnBackgroundQueue🔒 {
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshots"];
-
- CGSize size = self.mapView.bounds.size;
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- dispatch_queue_attr_t attr = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, QOS_MIN_RELATIVE_PRIORITY);
- dispatch_queue_t backgroundQueue = dispatch_queue_create(__PRETTY_FUNCTION__, attr);
-
- dispatch_async(backgroundQueue, ^{
-
- // Create the snapshotter - DO NOT START.
- MGLMapSnapshotter* snapshotter = snapshotterWithCoordinates(coord, size);
-
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_enter(group);
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- dispatch_group_leave(group);
- });
-
- dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
-
- snapshotter = nil;
-
- dispatch_sync(dispatch_get_main_queue(), ^{
- [expectation fulfill];
- });
- });
-
- [self waitForExpectations:@[expectation] timeout:2.0];
-}
-
-- (void)testSnapshotterFromBackgroundQueueShouldFail🔒 {
- CGSize size = self.mapView.bounds.size;
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshots"];
- expectation.expectedFulfillmentCount = 1;
- expectation.assertForOverFulfill = YES;
-
- __weak __typeof__(self) weakself = self;
-
- dispatch_queue_attr_t attr = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, QOS_MIN_RELATIVE_PRIORITY); // also for concurrent
- dispatch_queue_t backgroundQueue = dispatch_queue_create(__PRETTY_FUNCTION__, attr);
-
- // Use dispatch_group to keep the backgroundQueue block around (and
- // so also the MGLMapSnapshotter
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_enter(group);
-
- dispatch_async(backgroundQueue, ^{
-
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
- XCTAssertNotNil(snapshotter);
-
- MGLMapSnapshotCompletionHandler completion = ^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- // The completion block should not be called
- MGLTestFail(weakself);
- dispatch_group_leave(group);
- };
-
- @try {
- [snapshotter startWithCompletionHandler:completion];
- MGLTestFail(weakself, @"startWithCompletionHandler: should raise an exception");
- }
- @catch (NSException *exception) {
- MGLTestAssert(weakself, exception.name == NSInvalidArgumentException);
- dispatch_group_leave(group);
- }
-
- // Wait for the snapshot to complete
- dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
-
- snapshotter = nil;
-
- dispatch_sync(dispatch_get_main_queue(), ^{
- [expectation fulfill];
- });
- });
-
- [self waitForExpectations:@[expectation] timeout:60.0];
-}
-
-- (void)testMultipleSnapshotters🔒🙁 {
- NSUInteger numSnapshots = 8;
- CGSize size = self.mapView.bounds.size;
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshots"];
- expectation.expectedFulfillmentCount = numSnapshots;
- expectation.assertForOverFulfill = YES;
-
- __weak __typeof__(self) weakself = self;
-
- for (size_t run = 0; run < numSnapshots; run++) {
-
- float ratio = (float)run/(float)numSnapshots;
- float lon = (ratio*120.0) + ((1.0-ratio)*54.0);
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(57.0, lon);
-
- __block MGLMapSnapshotter *snapshotter;
-
- // Allocate from an autorelease pool here, to avoid having
- // snapshotter retained for longer than we'd like to test.
- @autoreleasepool {
- snapshotter = snapshotterWithCoordinates(coord, size);
- XCTAssertNotNil(snapshotter);
- }
-
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
-
- // This should be the main queue
- __typeof__(self) strongself = weakself;
-
- MGLTestAssertNotNil(strongself, strongself);
-
- MGLTestAssertNotNil(strongself, snapshot);
- MGLTestAssertNotNil(strongself, snapshot.image);
- MGLTestAssertNil(strongself, error, @"Snapshot should not error with: %@", error);
-
- // Change this to XCTAttachmentLifetimeKeepAlways to be able to look at the snapshots after running
- XCTAttachment *attachment = [XCTAttachment attachmentWithImage:snapshot.image];
- attachment.lifetime = XCTAttachmentLifetimeDeleteOnSuccess;
- [strongself addAttachment:attachment];
-
- // Dealloc the snapshotter (by having this line in the block, we
- // also retained the snapshotter. Setting to nil should release, as
- // this block should be the only thing retaining it (since it was
- // allocated from the above autorelease pool)
- snapshotter = nil;
-
- [expectation fulfill];
- }];
- } // end for loop
-
- [self waitForExpectations:@[expectation] timeout:60.0];
-}
-
-- (void)testSnapshotPointConversion🔒 {
- CGSize size = self.mapView.bounds.size;
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshot"];
- expectation.expectedFulfillmentCount = 1;
- expectation.assertForOverFulfill = YES;
-
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
- XCTAssertNotNil(snapshotter);
-
- __weak __typeof__(self) weakself = self;
-
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
-
- __typeof__(self) myself = weakself;
-
- MGLTestAssertNotNil(myself, snapshot);
-
- CGPoint point = [snapshot pointForCoordinate:coord];
-
- CGFloat epsilon = 0.000001;
-
- MGLTestAssertEqualWithAccuracy(myself, point.x, size.width/2.0, epsilon);
- MGLTestAssertEqualWithAccuracy(myself, point.y, size.height/2.0, epsilon);
-
- CLLocationCoordinate2D coord2 = [snapshot coordinateForPoint:point];
-
- MGLTestAssertEqualWithAccuracy(myself, coord.latitude, coord2.latitude, epsilon);
- MGLTestAssertEqualWithAccuracy(myself, coord.longitude, coord2.longitude, epsilon);
-
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-}
-
-- (void)testSnapshotPointConversionCoordinateOrdering🔒 {
- CGSize size = self.mapView.bounds.size;
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshot"];
- expectation.expectedFulfillmentCount = 1;
- expectation.assertForOverFulfill = YES;
-
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
- XCTAssertNotNil(snapshotter);
-
- __weak __typeof__(self) weakself = self;
-
- [snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
-
- __typeof__(self) myself = weakself;
-
- CGFloat epsilon = 0.000001;
-
- MGLTestAssertNotNil(myself, snapshot);
-
- CLLocationCoordinate2D coordTL = [snapshot coordinateForPoint:CGPointZero];
-
- MGLTestAssert(myself, coordTL.longitude < coord.longitude);
- MGLTestAssert(myself, coordTL.latitude > coord.latitude);
-
- // And check point
- CGPoint tl = [snapshot pointForCoordinate:coordTL];
- MGLTestAssertEqualWithAccuracy(myself, tl.x, 0.0, epsilon);
- MGLTestAssertEqualWithAccuracy(myself, tl.y, 0.0, epsilon);
-
- CLLocationCoordinate2D coordBR = [snapshot coordinateForPoint:CGPointMake(size.width, size.height)];
-
- MGLTestAssert(myself, coordBR.longitude > coord.longitude);
- MGLTestAssert(myself, coordBR.latitude < coord.latitude);
-
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-}
-
-- (void)testSnapshotWithOverlayHandlerFailure🔒 {
- CGSize size = self.mapView.bounds.size;
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshot with overlay fails"];
- expectation.expectedFulfillmentCount = 2;
-
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
- XCTAssertNotNil(snapshotter);
-
- [snapshotter startWithOverlayHandler:^(MGLMapSnapshotOverlay *snapshotOverlay) {
- XCTAssertNotNil(snapshotOverlay);
-
- UIGraphicsEndImageContext();
- [expectation fulfill];
- } completionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- XCTAssertNil(snapshot);
- XCTAssertNotNil(error);
- XCTAssertEqualObjects(error.domain, MGLErrorDomain);
- XCTAssertEqual(error.code, MGLErrorCodeSnapshotFailed);
- XCTAssertEqualObjects(error.localizedDescription, @"Failed to generate composited snapshot.");
-
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-}
-
-- (void)testSnapshotWithOverlayHandlerSuccess🔒 {
- CGSize size = self.mapView.bounds.size;
- CGRect snapshotRect = CGRectMake(0, 0, size.width, size.height);
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshot with overlay succeeds"];
- expectation.expectedFulfillmentCount = 2;
-
- CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(30.0, 30.0);
-
- MGLMapSnapshotter *snapshotter = snapshotterWithCoordinates(coord, size);
- XCTAssertNotNil(snapshotter);
-
- CGFloat scale = snapshotter.options.scale;
-
- [snapshotter startWithOverlayHandler:^(MGLMapSnapshotOverlay *snapshotOverlay) {
- XCTAssertNotNil(snapshotOverlay);
-
- CGFloat width = CGBitmapContextGetWidth(snapshotOverlay.context);
- CGFloat height = CGBitmapContextGetHeight(snapshotOverlay.context);
-
- CGRect contextRect = CGContextConvertRectToDeviceSpace(snapshotOverlay.context, CGRectMake(0, 0, 1, 0));
- CGFloat scaleFromContext = contextRect.size.width;
- XCTAssertEqual(scale, scaleFromContext);
- XCTAssertEqual(width, size.width*scale);
- XCTAssertEqual(height, size.height*scale);
-
- CGContextSetFillColorWithColor(snapshotOverlay.context, [UIColor.greenColor CGColor]);
- CGContextSetAlpha(snapshotOverlay.context, 0.2);
- CGContextAddRect(snapshotOverlay.context, snapshotRect);
- CGContextFillRect(snapshotOverlay.context, snapshotRect);
- [expectation fulfill];
- } completionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- XCTAssertNil(error);
- XCTAssertNotNil(snapshot);
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-}
-
-- (void)testSnapshotCoordinatesWithOverlayHandler🔒 {
- CGSize size = self.mapView.bounds.size;
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"snapshot with overlay succeeds"];
- expectation.expectedFulfillmentCount = 2;
-
- CLLocationCoordinate2D london = { .latitude = 51.5074, .longitude = -0.1278 };
- CLLocationCoordinate2D paris = { .latitude = 48.8566, .longitude = 2.3522 };
-
- MGLCoordinateBounds bounds = {
- .ne = london,
- .sw = paris
- };
-
- MGLMapSnapshotter *snapshotter = snapshotterWithBounds(bounds, size);
- XCTAssertNotNil(snapshotter);
-
- void (^testCoordinates)(id<MGLMapSnapshotProtocol>) = ^(id<MGLMapSnapshotProtocol> snapshot){
- XCTAssertNotNil(snapshot);
-
- CGPoint londonPoint = [snapshot pointForCoordinate:london];
- CGPoint parisPoint = [snapshot pointForCoordinate:paris];
-
- XCTAssertEqualWithAccuracy(londonPoint.x, 0, 0.1);
- XCTAssertEqualWithAccuracy(parisPoint.x, size.width, 0.1);
-
- // Vertically, London and Paris are inset (due to the size vs coordinate bounds)
- XCTAssert(parisPoint.y > londonPoint.y);
- XCTAssert(londonPoint.y > 0.0);
- XCTAssert(parisPoint.y < size.height);
-
- CLLocationCoordinate2D london2 = [snapshot coordinateForPoint:londonPoint];
- CLLocationCoordinate2D paris2 = [snapshot coordinateForPoint:parisPoint];
-
- XCTAssertEqualWithAccuracy(london.latitude, london2.latitude, 0.0000001);
- XCTAssertEqualWithAccuracy(london.longitude, london2.longitude, 0.0000001);
- XCTAssertEqualWithAccuracy(paris.latitude, paris2.latitude, 0.0000001);
- XCTAssertEqualWithAccuracy(paris.longitude, paris2.longitude, 0.0000001);
- };
-
- [snapshotter startWithOverlayHandler:^(MGLMapSnapshotOverlay *snapshotOverlay) {
- XCTAssert([snapshotOverlay conformsToProtocol:@protocol(MGLMapSnapshotProtocol)]);
- testCoordinates((id<MGLMapSnapshotProtocol>)snapshotOverlay);
-
- [expectation fulfill];
- } completionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
- XCTAssert([snapshot conformsToProtocol:@protocol(MGLMapSnapshotProtocol)]);
- testCoordinates((id<MGLMapSnapshotProtocol>)snapshot);
-
- [expectation fulfill];
- }];
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-}
-
-
-@end
diff --git a/platform/ios/Integration Tests/integration-Bridging-Header.h b/platform/ios/Integration Tests/integration-Bridging-Header.h
deleted file mode 100644
index 55b44ea57b..0000000000
--- a/platform/ios/Integration Tests/integration-Bridging-Header.h
+++ /dev/null
@@ -1,5 +0,0 @@
-//
-// Use this file to import your target's public headers that you would like to expose to Swift.
-//
-#import "MGLMapViewIntegrationTest.h"
-
diff --git a/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec b/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec
deleted file mode 100644
index 84ce50bb4f..0000000000
--- a/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec
+++ /dev/null
@@ -1,32 +0,0 @@
-Pod::Spec.new do |m|
-
- version = '5.5.0-alpha.2'
-
- m.name = 'Mapbox-iOS-SDK-snapshot-dynamic'
- m.version = "#{version}-snapshot"
-
- m.summary = 'Open source vector map solution for iOS with full styling capabilities.'
- m.description = 'Open source, OpenGL-based vector map solution for iOS with full styling capabilities and Cocoa Touch APIs.'
- m.homepage = 'https://docs.mapbox.com/ios/maps/'
- m.license = { :type => 'BSD', :file => 'LICENSE.md' }
- m.author = { 'Mapbox' => 'mobile@mapbox.com' }
- m.screenshot = "https://docs.mapbox.com/ios/api/maps/#{version}/img/screenshot.png"
- m.social_media_url = 'https://twitter.com/mapbox'
- m.documentation_url = 'https://docs.mapbox.com/ios/api/maps/'
-
- m.source = {
- :http => "https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-snapshot-dynamic.zip",
- :flatten => true
- }
-
- m.platform = :ios
- m.ios.deployment_target = '9.0'
-
- m.requires_arc = true
-
- m.vendored_frameworks = 'dynamic/Mapbox.framework'
- m.module_name = 'Mapbox'
-
- m.preserve_path = '**/*.bcsymbolmap'
-
-end
diff --git a/platform/ios/Mapbox-iOS-SDK-stripped.podspec b/platform/ios/Mapbox-iOS-SDK-stripped.podspec
deleted file mode 100644
index 51d7087c63..0000000000
--- a/platform/ios/Mapbox-iOS-SDK-stripped.podspec
+++ /dev/null
@@ -1,32 +0,0 @@
-Pod::Spec.new do |m|
-
- version = '5.5.0-alpha.2'
-
- m.name = 'Mapbox-iOS-SDK-stripped'
- m.version = "#{version}-stripped"
-
- m.summary = 'Open source vector map solution for iOS with full styling capabilities.'
- m.description = 'Open source, OpenGL-based vector map solution for iOS with full styling capabilities and Cocoa Touch APIs.'
- m.homepage = 'https://docs.mapbox.com/ios/maps/'
- m.license = { :type => 'BSD', :file => 'LICENSE.md' }
- m.author = { 'Mapbox' => 'mobile@mapbox.com' }
- m.screenshot = "https://docs.mapbox.com/ios/api/maps/#{version}/img/screenshot.png"
- m.social_media_url = 'https://twitter.com/mapbox'
- m.documentation_url = 'https://docs.mapbox.com/ios/api/maps/'
-
- m.source = {
- :http => "https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-#{m.version.to_s}-dynamic.zip",
- :flatten => true
- }
-
- m.platform = :ios
- m.ios.deployment_target = '9.0'
-
- m.requires_arc = true
-
- m.vendored_frameworks = 'dynamic/Mapbox.framework'
- m.module_name = 'Mapbox'
-
- m.preserve_path = '**/*.bcsymbolmap'
-
-end
diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec
deleted file mode 100644
index c4f686f060..0000000000
--- a/platform/ios/Mapbox-iOS-SDK.podspec
+++ /dev/null
@@ -1,32 +0,0 @@
-Pod::Spec.new do |m|
-
- version = '5.5.0-alpha.2'
-
- m.name = 'Mapbox-iOS-SDK'
- m.version = version
-
- m.summary = 'Open source vector map solution for iOS with full styling capabilities.'
- m.description = 'Open source, OpenGL-based vector map solution for iOS with full styling capabilities and Cocoa Touch APIs.'
- m.homepage = 'https://docs.mapbox.com/ios/maps/'
- m.license = { :type => 'BSD', :file => 'LICENSE.md' }
- m.author = { 'Mapbox' => 'mobile@mapbox.com' }
- m.screenshot = "https://docs.mapbox.com/ios/api/maps/#{version}/img/screenshot.png"
- m.social_media_url = 'https://twitter.com/mapbox'
- m.documentation_url = 'https://docs.mapbox.com/ios/api/maps/'
-
- m.source = {
- :http => "https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-#{m.version.to_s}-dynamic.zip",
- :flatten => true
- }
-
- m.platform = :ios
- m.ios.deployment_target = '9.0'
-
- m.requires_arc = true
-
- m.vendored_frameworks = 'dynamic/Mapbox.framework'
- m.module_name = 'Mapbox'
-
- m.preserve_path = '**/*.bcsymbolmap'
-
-end
diff --git a/platform/ios/Mapbox.playground/Contents.swift b/platform/ios/Mapbox.playground/Contents.swift
deleted file mode 100644
index 3bdb870fb5..0000000000
--- a/platform/ios/Mapbox.playground/Contents.swift
+++ /dev/null
@@ -1,154 +0,0 @@
-import UIKit
-import PlaygroundSupport
-import Mapbox
-
-let width: CGFloat = 700
-let height: CGFloat = 800
-
-class Responder: NSObject {
- var mapView: MGLMapView?
- @objc func togglePitch(sender: UISwitch) {
- let camera = mapView!.camera
- camera.pitch = sender.isOn ? 60 : 0
- mapView!.setCamera(camera, animated: false)
- }
-}
-
-//: A control panel
-let panelWidth: CGFloat = 200
-let panel = UIView(frame: CGRect(x: width - panelWidth, y: 0, width: 200, height: 100))
-panel.alpha = 0.8
-panel.backgroundColor = .white
-
-// Delete markers
-let deleteSwitchLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
-deleteSwitchLabel.adjustsFontSizeToFitWidth = true
-deleteSwitchLabel.text = "Delete Markers"
-let deleteMarkerSwitchView = UISwitch(frame: CGRect(x: panelWidth - panelWidth / 2.0, y:0, width: 100, height: 50))
-panel.addSubview(deleteSwitchLabel)
-panel.addSubview(deleteMarkerSwitchView)
-
-// Hide markers
-let hideSwitchLabel = UILabel(frame: CGRect(x: 0, y: 30, width: 100, height: 30))
-hideSwitchLabel.adjustsFontSizeToFitWidth = true
-hideSwitchLabel.text = "Hide Markers"
-let hideMarkerSwitchView = UISwitch(frame: CGRect(x: panelWidth - panelWidth / 2.0, y: 30, width: 100, height: 50))
-panel.addSubview(hideSwitchLabel)
-panel.addSubview(hideMarkerSwitchView)
-
-// Pitch map
-let pitchLabel = UILabel(frame: CGRect(x: 0, y: 60, width: 100, height: 30))
-pitchLabel.text = "Pitch"
-let pitchSwitch = UISwitch(frame: CGRect(x: panelWidth-panelWidth / 2.0, y: 60, width: 100, height: 50))
-let responder = Responder()
-pitchSwitch.addTarget(responder, action: #selector(responder.togglePitch(sender:)), for: .valueChanged)
-panel.addSubview(pitchLabel)
-panel.addSubview(pitchSwitch)
-
-//: # Mapbox Maps
-
-/*:
- Put your access token into a plain text file called `token`. Then select the “token” placeholder below, go to Editor ‣ Insert File Literal, and select the `token` file.
- */
-var accessToken = try String(contentsOfURL: <#token#>)
-MGLAccountManager.accessToken = accessToken
-
-class PlaygroundAnnotationView: MGLAnnotationView {
-
- override func prepareForReuse() {
- isHidden = hideMarkerSwitchView.isOn
- }
-
-}
-
-//: Define a map delegate
-
-class MapDelegate: NSObject, MGLMapViewDelegate {
-
- var annotationViewByAnnotation = [MGLPointAnnotation: PlaygroundAnnotationView]()
-
- func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? {
-
- var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "annotation") as? PlaygroundAnnotationView
-
- if (annotationView == nil) {
- let av = PlaygroundAnnotationView(reuseIdentifier: "annotation")
- av.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
- av.centerOffset = CGVector(dx: -15, dy: -15)
- let centerView = UIView(frame: av.bounds.insetBy(dx: 3, dy: 3))
- centerView.backgroundColor = .white
- av.addSubview(centerView)
- av.backgroundColor = .purple
- annotationView = av
- } else {
- annotationView!.subviews.first?.backgroundColor = .green
- }
-
- annotationViewByAnnotation[annotation as! MGLPointAnnotation] = annotationView
-
- return annotationView
- }
-
- func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
- let pointAnnotation = annotation as! MGLPointAnnotation
- let annotationView: PlaygroundAnnotationView = annotationViewByAnnotation[pointAnnotation]!
-
- for view in annotationViewByAnnotation.values {
- view.layer.zPosition = -1
- }
-
- annotationView.layer.zPosition = 1
-
- UIView.animate(withDuration: 1.25, delay: 0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.6, options: .curveEaseOut, animations: {
- annotationView.transform = CGAffineTransform(scaleX: 1.8, y: 1.8)
- }) { _ in
- annotationView.transform = CGAffineTransform(scaleX: 1, y: 1)
-
- if deleteMarkerSwitchView.isOn {
- mapView.removeAnnotation(pointAnnotation)
- return
- }
-
- if hideMarkerSwitchView.isOn {
- annotationView.isHidden = true
- }
- }
- }
-
- @objc func handleTap(press: UILongPressGestureRecognizer) {
- let mapView: MGLMapView = press.view as! MGLMapView
-
- let isRecognized = press.state == .recognized
-
- if (isRecognized) {
- let annotation = MGLPointAnnotation()
- annotation.title = "Dropped Marker"
- annotation.coordinate = mapView.convert(press.location(in: mapView), toCoordinateFrom: mapView)
- mapView.addAnnotation(annotation)
- mapView.showAnnotations([annotation], animated: true)
- }
- }
-
-}
-
-//: Create a map and its delegate
-
-let mapView = MGLMapView(frame: CGRect(x: 0, y: 0, width: width, height: height))
-mapView.frame = CGRect(x: 0, y: 0, width: width, height: height)
-
-PlaygroundPage.current.liveView = mapView
-
-let mapDelegate = MapDelegate()
-mapView.delegate = mapDelegate
-responder.mapView = mapView
-
-let tapGesture = UILongPressGestureRecognizer(target: mapDelegate, action: #selector(mapDelegate.handleTap))
-mapView.addGestureRecognizer(tapGesture)
-
-//: Zoom in to a location
-
-mapView.setCenter(CLLocationCoordinate2D(latitude: 37.174057, longitude: -104.490984), zoomLevel: 12, animated: false)
-
-//: Add control panel
-
-mapView.addSubview(panel)
diff --git a/platform/ios/Mapbox.playground/contents.xcplayground b/platform/ios/Mapbox.playground/contents.xcplayground
deleted file mode 100644
index c8659f26e4..0000000000
--- a/platform/ios/Mapbox.playground/contents.xcplayground
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<playground version='5.0' target-platform='ios' display-mode='raw' last-migration='1100'>
- <timeline fileName='timeline.xctimeline'/>
-</playground> \ No newline at end of file
diff --git a/platform/ios/WorkspaceSettings.xcsettings b/platform/ios/WorkspaceSettings.xcsettings
deleted file mode 100644
index 20a7accf01..0000000000
--- a/platform/ios/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>BuildLocationStyle</key>
- <string>CustomLocation</string>
- <key>CustomBuildIntermediatesPath</key>
- <string>../../build/ios</string>
- <key>CustomBuildLocationType</key>
- <string>RelativeToWorkspace</string>
- <key>CustomBuildProductsPath</key>
- <string>../../build/ios</string>
- <key>DerivedDataCustomLocation</key>
- <string>../../build/ios</string>
- <key>DerivedDataLocationStyle</key>
- <string>WorkspaceRelativePath</string>
- <key>IssueFilterStyle</key>
- <string>ShowActiveSchemeOnly</string>
- <key>LiveSourceIssuesEnabled</key>
- <true/>
-</dict>
-</plist>
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index ccfb66f047..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,112 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "3x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-29@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-29@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-Spotlight-40@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-60@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-60@3x.png",
- "scale" : "3x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-Small.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-29@2x-1.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-40.png",
- "scale" : "1x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-40@2x-1.png",
- "scale" : "2x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-76.png",
- "scale" : "1x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-76@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "83.5x83.5",
- "idiom" : "ipad",
- "filename" : "Icon-83.5@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "1024x1024",
- "idiom" : "ios-marketing",
- "filename" : "Icon-1024.png",
- "scale" : "1x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png
deleted file mode 100644
index d1cb5c50f7..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png
deleted file mode 100644
index 15544d2701..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png
deleted file mode 100644
index 15544d2701..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png
deleted file mode 100644
index a07e385c76..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png
deleted file mode 100644
index c69a417af3..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png
deleted file mode 100644
index a15e380f0f..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
deleted file mode 100644
index a15e380f0f..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
deleted file mode 100644
index a46522d368..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
deleted file mode 100644
index 5bad7a72f7..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png
deleted file mode 100644
index 6866ac111b..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
deleted file mode 100644
index db8f040ca4..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
deleted file mode 100644
index 7dc725be77..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
deleted file mode 100644
index 6973929c91..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
deleted file mode 100644
index a46522d368..0000000000
--- a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/Contents.json b/platform/ios/app/Assets.xcassets/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/ios/app/Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json
deleted file mode 100644
index 957660ab78..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "TrackingHeadingMask.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingHeadingMask@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingHeadingMask@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png
deleted file mode 100644
index 9ec0567a3f..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png
deleted file mode 100644
index 0df8ccc229..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png
deleted file mode 100644
index e4b93e42e7..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json
deleted file mode 100644
index 08cd551fc7..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationMask.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationMask@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationMask@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png
deleted file mode 100644
index bb7348c482..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png
deleted file mode 100644
index 35c5a293ec..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png
deleted file mode 100644
index af523975a5..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json
deleted file mode 100644
index 3ccbab44aa..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationOffMask.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationOffMask@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "TrackingLocationOffMask@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png
deleted file mode 100644
index 87b26c5710..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png
deleted file mode 100644
index 232d534b41..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png
deleted file mode 100644
index b609fbe84e..0000000000
--- a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json b/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json
deleted file mode 100644
index 228b81a818..0000000000
--- a/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "settings.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/settings.imageset/settings.pdf b/platform/ios/app/Assets.xcassets/settings.imageset/settings.pdf
deleted file mode 100644
index 46aa7443f0..0000000000
--- a/platform/ios/app/Assets.xcassets/settings.imageset/settings.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Base.lproj/Localizable.strings b/platform/ios/app/Base.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/Base.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/Info.plist b/platform/ios/app/Info.plist
deleted file mode 100644
index c302f306a6..0000000000
--- a/platform/ios/app/Info.plist
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleDisplayName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>com.mapbox.MapboxGL</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.0.2</string>
- <key>CFBundleSignature</key>
- <string>MBGL</string>
- <key>CFBundleVersion</key>
- <string>7877</string>
- <key>LSRequiresIPhoneOS</key>
- <true/>
- <key>NSHumanReadableCopyright</key>
- <string>© 2014–2019 Mapbox</string>
- <key>NSLocationAlwaysUsageDescription</key>
- <string>The map will display your location. The map may also use your location when it isn’t visible in order to improve OpenStreetMap and Mapbox products.</string>
- <key>NSLocationWhenInUseUsageDescription</key>
- <string>The map will display your location.</string>
- <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
- <string>The map will display your location. If you choose Always, the map may also use your location when it isn’t visible in order to improve OpenStreetMap and Mapbox products.</string>
- <key>UILaunchStoryboardName</key>
- <string>LaunchScreen</string>
- <key>UIMainStoryboardFile</key>
- <string>Main</string>
- <key>UIRequiredDeviceCapabilities</key>
- <array>
- <string>armv7</string>
- </array>
- <key>UISupportedInterfaceOrientations</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
- <key>UISupportedInterfaceOrientations~ipad</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationPortraitUpsideDown</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
- <key>UIApplicationShortcutItems</key>
- <array>
- <dict>
- <key>UIApplicationShortcutItemTitle</key>
- <string>Settings</string>
- <key>UIApplicationShortcutItemType</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER).settings</string>
- <key>UIApplicationShortcutItemIconFile</key>
- <string>settings</string>
- </dict>
- </array>
-</dict>
-</plist>
diff --git a/platform/ios/app/LaunchScreen.storyboard b/platform/ios/app/LaunchScreen.storyboard
deleted file mode 100644
index 299e186886..0000000000
--- a/platform/ios/app/LaunchScreen.storyboard
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
- <device id="retina4_7" orientation="portrait">
- <adaptation id="fullscreen"/>
- </device>
- <dependencies>
- <deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="EHf-IW-A2E">
- <objects>
- <viewController id="01J-lp-oVM" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
- <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- </view>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="53" y="375"/>
- </scene>
- </scenes>
-</document>
diff --git a/platform/ios/app/MBXAnnotationView.h b/platform/ios/app/MBXAnnotationView.h
deleted file mode 100644
index 6bd799673d..0000000000
--- a/platform/ios/app/MBXAnnotationView.h
+++ /dev/null
@@ -1,4 +0,0 @@
-@import Mapbox;
-
-@interface MBXAnnotationView : MGLAnnotationView
-@end
diff --git a/platform/ios/app/MBXAnnotationView.m b/platform/ios/app/MBXAnnotationView.m
deleted file mode 100644
index 6877c5cd3d..0000000000
--- a/platform/ios/app/MBXAnnotationView.m
+++ /dev/null
@@ -1,52 +0,0 @@
-#import "MBXAnnotationView.h"
-
-@interface MBXAnnotationView ()
-@end
-
-@implementation MBXAnnotationView
-
-- (void)layoutSubviews {
- [super layoutSubviews];
-
- self.layer.borderColor = [UIColor blueColor].CGColor;
- self.layer.borderWidth = 1;
- self.layer.cornerRadius = 2;
-}
-
-- (void)setSelected:(BOOL)selected animated:(BOOL)animated
-{
- [super setSelected:selected animated:animated];
-
- self.layer.borderColor = selected ? [UIColor blackColor].CGColor : [UIColor whiteColor].CGColor;
- self.layer.borderWidth = selected ? 2.0 : 0;
-}
-
-- (void)setDragState:(MGLAnnotationViewDragState)dragState animated:(BOOL)animated
-{
- [super setDragState:dragState animated:NO];
-
- switch (dragState) {
- case MGLAnnotationViewDragStateNone:
- break;
- case MGLAnnotationViewDragStateStarting: {
- [UIView animateWithDuration:.4 delay:0 usingSpringWithDamping:.4 initialSpringVelocity:.5 options:UIViewAnimationOptionCurveLinear animations:^{
- self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2, 2);
- } completion:nil];
- break;
- }
- case MGLAnnotationViewDragStateDragging:
- break;
- case MGLAnnotationViewDragStateCanceling:
- break;
- case MGLAnnotationViewDragStateEnding: {
- self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2, 2);
- [UIView animateWithDuration:.4 delay:0 usingSpringWithDamping:.4 initialSpringVelocity:.5 options:UIViewAnimationOptionCurveLinear animations:^{
- self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1);
- } completion:nil];
- break;
- }
- }
-
-}
-
-@end
diff --git a/platform/ios/app/MBXAppDelegate.h b/platform/ios/app/MBXAppDelegate.h
deleted file mode 100644
index e719cd9e6a..0000000000
--- a/platform/ios/app/MBXAppDelegate.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXAppDelegate : UIResponder <UIApplicationDelegate>
-
-@property (strong, nonatomic) UIWindow *window;
-
-@end
diff --git a/platform/ios/app/MBXAppDelegate.m b/platform/ios/app/MBXAppDelegate.m
deleted file mode 100644
index bf62866b8e..0000000000
--- a/platform/ios/app/MBXAppDelegate.m
+++ /dev/null
@@ -1,48 +0,0 @@
-@import Mapbox;
-
-#import "MBXAppDelegate.h"
-#import "MBXViewController.h"
-
-@interface MBXAppDelegate() <MGLMetricsManagerDelegate>
-
-@end
-
-@implementation MBXAppDelegate
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-{
-#ifndef MGL_DISABLE_LOGGING
- [MGLLoggingConfiguration sharedConfiguration].loggingLevel = MGLLoggingLevelFault;
-#endif
-
- [MGLMetricsManager sharedManager].delegate = self;
- return YES;
-}
-
-#pragma mark - Quick actions
-
-- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
- completionHandler([self handleShortcut:shortcutItem]);
-}
-
-- (BOOL)handleShortcut:(UIApplicationShortcutItem *)shortcut {
- if ([[shortcut.type componentsSeparatedByString:@"."].lastObject isEqual:@"settings"]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
- });
-
- return YES;
- }
-
- return NO;
-}
-
-- (BOOL)metricsManager:(MGLMetricsManager *)metricsManager shouldHandleMetric:(MGLMetricType)metricType {
- return YES;
-}
-
-- (void)metricsManager:(MGLMetricsManager *)metricsManager didCollectMetric:(MGLMetricType)metricType withAttributes:(NSDictionary *)attributes {
- [[MGLMetricsManager sharedManager] pushMetric:metricType withAttributes:attributes];
-}
-
-@end
diff --git a/platform/ios/app/MBXCustomCalloutView.h b/platform/ios/app/MBXCustomCalloutView.h
deleted file mode 100644
index 5a7c9c926f..0000000000
--- a/platform/ios/app/MBXCustomCalloutView.h
+++ /dev/null
@@ -1,13 +0,0 @@
-@import Mapbox;
-
-/**
- * Basic custom callout view to demonstrate how to
- * add your own on your app. Will only show the
- * callout title for demonstration purpose.
- */
-@interface MBXCustomCalloutView : UIView <MGLCalloutView>
-
-@property (nonatomic, assign, getter=isAnchoredToAnnotation) BOOL anchoredToAnnotation;
-@property (nonatomic, assign) BOOL dismissesAutomatically;
-
-@end
diff --git a/platform/ios/app/MBXCustomCalloutView.m b/platform/ios/app/MBXCustomCalloutView.m
deleted file mode 100644
index 2d70e8b7b3..0000000000
--- a/platform/ios/app/MBXCustomCalloutView.m
+++ /dev/null
@@ -1,110 +0,0 @@
-#import "MBXCustomCalloutView.h"
-
-static CGFloat const tipHeight = 10.0;
-static CGFloat const tipWidth = 10.0;
-
-@interface MBXCustomCalloutView ()
-
-@property (strong, nonatomic) UILabel *mainLabel;
-
-@end
-
-@implementation MBXCustomCalloutView {
- id <MGLAnnotation> _representedObject;
- UIView *_leftAccessoryView;
- UIView *_rightAccessoryView;
- __weak id <MGLCalloutViewDelegate> _delegate;
-}
-
-@synthesize representedObject = _representedObject;
-@synthesize anchoredToAnnotation = _anchoredToAnnotation;
-@synthesize dismissesAutomatically = _dismissesAutomatically;
-@synthesize leftAccessoryView = _leftAccessoryView;
-@synthesize rightAccessoryView = _rightAccessoryView;
-@synthesize delegate = _delegate;
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
- if (self)
- {
- self.backgroundColor = [UIColor clearColor];
- _mainLabel = [[UILabel alloc] initWithFrame: CGRectZero];
- _mainLabel.backgroundColor = [UIColor clearColor];
-
- [self addSubview: _mainLabel];
- }
- return self;
-}
-
-#pragma mark - API
-
-- (void)presentCalloutFromRect:(CGRect)rect inView:(nonnull UIView *)view constrainedToRect:(__unused CGRect)constrainedRect animated:(BOOL)animated
-{
- if ([self.delegate respondsToSelector:@selector(calloutViewWillAppear:)])
- {
- [self.delegate performSelector:@selector(calloutViewWillAppear:) withObject:self];
- }
-
- [view addSubview:self];
- // prepare title label
- if ([self.representedObject respondsToSelector:@selector(title)])
- {
- self.mainLabel.text = self.representedObject.title;
- [self.mainLabel sizeToFit];
- }
- // prepare our frame
- CGFloat frameWidth = self.mainLabel.bounds.size.width;
- CGFloat frameHeight = self.mainLabel.bounds.size.height * 2.0;
- CGFloat frameOriginX = rect.origin.x + (rect.size.width/2.0) - (frameWidth/2.0);
- CGFloat frameOriginY = rect.origin.y - frameHeight;
- self.frame = CGRectMake(frameOriginX, frameOriginY,
- frameWidth, frameHeight);
-
- if ([self.delegate respondsToSelector:@selector(calloutViewDidAppear:)])
- {
- [self.delegate performSelector:@selector(calloutViewDidAppear:) withObject:self];
- }
-}
-
-- (void)setCenter:(CGPoint)center {
- center.y = center.y - CGRectGetMidY(self.bounds);
- [super setCenter:center];
-}
-
-- (void)dismissCalloutAnimated:(BOOL)animated
-{
- if (self.superview)
- [self removeFromSuperview];
-}
-
-#pragma mark - internals
-
-- (void)drawRect:(CGRect)rect
-{
- UIColor *fillColor = [UIColor colorWithWhite:0.7 alpha:1.0];
-
- CGFloat tipLeft = rect.origin.x + (rect.size.width / 2.0) - (tipWidth / 2.0);
- CGPoint tipBottom = CGPointMake(rect.origin.x + (rect.size.width / 2.0), rect.origin.y +rect.size.height);
- CGFloat heightWithoutTip = rect.size.height - tipHeight;
-
- // draw the white background with tip
- CGContextRef ctxt = UIGraphicsGetCurrentContext();
-
- CGMutablePathRef tipPath = CGPathCreateMutable();
- CGPathMoveToPoint(tipPath, NULL, 0, 0);
- CGPathAddLineToPoint(tipPath, NULL, 0, heightWithoutTip);
- CGPathAddLineToPoint(tipPath, NULL, tipLeft, heightWithoutTip);
- CGPathAddLineToPoint(tipPath, NULL, tipBottom.x, tipBottom.y);
- CGPathAddLineToPoint(tipPath, NULL, tipLeft + tipWidth, heightWithoutTip);
- CGPathAddLineToPoint(tipPath, NULL, CGRectGetWidth(rect), heightWithoutTip);
- CGPathAddLineToPoint(tipPath, NULL, CGRectGetWidth(rect), 0);
- CGPathCloseSubpath(tipPath);
-
- [fillColor setFill];
- CGContextAddPath(ctxt, tipPath);
- CGContextFillPath(ctxt);
- CGPathRelease(tipPath);
-}
-
-@end
diff --git a/platform/ios/app/MBXCustomLocationViewController.h b/platform/ios/app/MBXCustomLocationViewController.h
deleted file mode 100644
index ae6c14fe2c..0000000000
--- a/platform/ios/app/MBXCustomLocationViewController.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXCustomLocationViewController : UIViewController
-
-@end
diff --git a/platform/ios/app/MBXCustomLocationViewController.m b/platform/ios/app/MBXCustomLocationViewController.m
deleted file mode 100644
index c77d990bac..0000000000
--- a/platform/ios/app/MBXCustomLocationViewController.m
+++ /dev/null
@@ -1,175 +0,0 @@
-@import Mapbox;
-
-#import "MBXCustomLocationViewController.h"
-
-@interface MBXCustomLocationManager : NSObject<MGLLocationManager>
-@end
-
-@interface MBXCustomLocationManager()
-
-@property (nonatomic) CLLocationManager *locationManager;
-@property (nonatomic, strong) NSTimer *locationUpdateTimer;
-@property (nonatomic) NSUInteger index;
-@property (strong, nonatomic) NSDictionary *routeCoordinates;
-@property (strong, nonatomic) NSArray *coordinates;
-
-@end
-
-@implementation MBXCustomLocationManager
-
-@synthesize delegate;
-
-- (instancetype)init
-{
- if (self = [super init]) {
- _locationManager = [[CLLocationManager alloc] init];
- _index = 0;
- }
- return self;
-}
-
-- (CLAuthorizationStatus)authorizationStatus
-{
- return [CLLocationManager authorizationStatus];
-}
-
-- (void)setHeadingOrientation:(CLDeviceOrientation)headingOrientation
-{
- _locationManager.headingOrientation = headingOrientation;
-}
-
-- (CLDeviceOrientation)headingOrientation
-{
- return _locationManager.headingOrientation;
-}
-
-- (void)requestAlwaysAuthorization
-{
- [self.locationManager requestAlwaysAuthorization];
-}
-
-- (void)requestWhenInUseAuthorization
-{
- [self.locationManager requestWhenInUseAuthorization];
-}
-
-- (void)startUpdatingHeading
-{
- [self.locationManager startUpdatingHeading];
-}
-
-- (void)startUpdatingLocation
-{
- [self loadRouteCoordinates];
- self.locationUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:0.8
- target:self
- selector:@selector(updateLocation)
- userInfo:nil
- repeats:YES];
-}
-
-- (void)stopUpdatingHeading
-{
- [self.locationManager stopUpdatingHeading];
-}
-
-- (void)stopUpdatingLocation
-{
- [self.locationUpdateTimer invalidate];
- self.locationUpdateTimer = nil;
-}
-
-- (void)dismissHeadingCalibrationDisplay
-{
- [self.locationManager dismissHeadingCalibrationDisplay];
-}
-
-- (void)dealloc
-{
- [self.locationManager stopUpdatingLocation];
- [self.locationManager stopUpdatingHeading];
- self.delegate = nil;
-}
-
-#pragma mark - Location Updates
-
-- (void)loadRouteCoordinates
-{
- NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"simple_route" ofType:@"json"];
- NSData *data = [NSData dataWithContentsOfFile:filePath];
- _routeCoordinates = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
- _coordinates = [self.routeCoordinates objectForKey:@"coordinates"];
-}
-
-- (void)updateLocation
-{
- if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateLocations:)]) {
-
- if (self.index >= [self.coordinates count] ) {
- self.index = 0;
- self.coordinates = [[self.coordinates reverseObjectEnumerator] allObjects];
- }
- NSArray *loc = self.coordinates[self.index];
- CLLocationDegrees latitude = [[loc objectAtIndex:1] doubleValue];
- CLLocationDegrees longitude = [[loc objectAtIndex:0] doubleValue];
- CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
- self.index++;
- [self.delegate locationManager:self didUpdateLocations:@[location]];
- }
-}
-
-- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
-{
- if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateHeading:)]) {
- [self.delegate locationManager:self didUpdateHeading:newHeading];
- }
-}
-
-- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager
-{
- if ([self.delegate respondsToSelector:@selector(locationManagerShouldDisplayHeadingCalibration:)]) {
- return [self.delegate locationManagerShouldDisplayHeadingCalibration:self];
- }
-
- return NO;
-}
-
-- (void)locationManager:(CLLocationManager *)locationManager didFailWithError:(nonnull NSError *)error {
- if ([self.delegate respondsToSelector:@selector(locationManager:didFailWithError:)]) {
- [self.delegate locationManager:self didFailWithError:error];
- }
-}
-
-@end
-
-@interface MBXCustomLocationViewController ()
-
-@property (strong, nonatomic) MGLMapView *mapView;
-
-@end
-
-@implementation MBXCustomLocationViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds];
-
- self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- MBXCustomLocationManager *mbxLocationManager = [[MBXCustomLocationManager alloc] init];
- self.mapView.locationManager = mbxLocationManager;
- // Set the map’s center coordinate and zoom level.
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(37.788380, -122.400121)
- zoomLevel:13
- animated:NO];
-
- [self.view addSubview:self.mapView];
- self.mapView.showsUserLocation = YES;
-}
-
-- (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
- self.mapView.showsUserLocation = NO;
-}
-
-@end
diff --git a/platform/ios/app/MBXEmbeddedMapViewController.h b/platform/ios/app/MBXEmbeddedMapViewController.h
deleted file mode 100644
index 976893d491..0000000000
--- a/platform/ios/app/MBXEmbeddedMapViewController.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXEmbeddedMapViewController : UIViewController
-
-@end
diff --git a/platform/ios/app/MBXEmbeddedMapViewController.m b/platform/ios/app/MBXEmbeddedMapViewController.m
deleted file mode 100644
index dacbdb5124..0000000000
--- a/platform/ios/app/MBXEmbeddedMapViewController.m
+++ /dev/null
@@ -1,90 +0,0 @@
-@import Mapbox;
-
-#import "MBXEmbeddedMapViewController.h"
-
-typedef NS_ENUM(NSInteger, MBXEmbeddedControl) {
- MBXEmbeddedControlZoom = 0,
- MBXEmbeddedControlScroll,
- MBXEmbeddedControlRotation,
- MBXEmbeddedControlPitch
-};
-
-@interface MBXEmbeddedMapViewController () <UIScrollViewDelegate>
-
-@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
-@property (weak, nonatomic) IBOutlet MGLMapView *mapView;
-
-@end
-
-@implementation MBXEmbeddedMapViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- self.scrollView.delegate = self;
- self.scrollView.contentSize = self.view.bounds.size;
-}
-
-- (IBAction)didSwitch:(UISwitch *)controlSwitch {
- [self switchControl:controlSwitch.tag];
-}
-
-- (IBAction)rotation:(UIRotationGestureRecognizer *)rotationGesture {
- self.mapView.transform = CGAffineTransformRotate(rotationGesture.view.transform, rotationGesture.rotation);
-}
-
-- (void)switchControl:(MBXEmbeddedControl) control {
- switch (control) {
- case MBXEmbeddedControlZoom:
- self.mapView.zoomEnabled = !self.mapView.zoomEnabled;
- break;
- case MBXEmbeddedControlScroll:
- self.mapView.scrollEnabled = !self.mapView.scrollEnabled;
- break;
- case MBXEmbeddedControlRotation:
- self.mapView.rotateEnabled = !self.mapView.rotateEnabled;
- break;
- case MBXEmbeddedControlPitch:
- self.mapView.pitchEnabled = !self.mapView.pitchEnabled;
- break;
- }
-}
-
-- (BOOL)statusForControl:(MBXEmbeddedControl) control {
- switch (control) {
- case MBXEmbeddedControlZoom:
- return self.mapView.zoomEnabled;
- case MBXEmbeddedControlScroll:
- return self.mapView.scrollEnabled;
- case MBXEmbeddedControlRotation:
- return self.mapView.rotateEnabled;
- case MBXEmbeddedControlPitch:
- return self.mapView.pitchEnabled;
- }
-}
-
-#pragma mark UIScrollViewDelegate methods
-
-- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
- return self.mapView;
-}
-
-#pragma mark Class method
-
-+ (NSString *)titleForControl:(MBXEmbeddedControl) control {
- switch (control) {
- case MBXEmbeddedControlZoom:
- return @"Zoom Enabled";
- case MBXEmbeddedControlScroll:
- return @"Scroll Enabled";
- break;
- case MBXEmbeddedControlRotation:
- return @"Rotation Enabled";
- break;
- case MBXEmbeddedControlPitch:
- return @"Pitch Enabled";
- break;
- }
-}
-
-@end
diff --git a/platform/ios/app/MBXFrameTimeGraphView.h b/platform/ios/app/MBXFrameTimeGraphView.h
deleted file mode 100644
index 9c3f6f8c32..0000000000
--- a/platform/ios/app/MBXFrameTimeGraphView.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MBXFrameTimeGraphView : UIView
-
-- (void)updatePathWithFrameDuration:(CFTimeInterval)frameDuration;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/app/MBXFrameTimeGraphView.m b/platform/ios/app/MBXFrameTimeGraphView.m
deleted file mode 100644
index e881eb9f48..0000000000
--- a/platform/ios/app/MBXFrameTimeGraphView.m
+++ /dev/null
@@ -1,145 +0,0 @@
-#import "MBXFrameTimeGraphView.h"
-
-const CGFloat MBXFrameTimeExaggeration = 4.f * 1000.f;
-const CGFloat MBXFrameTimeBarWidth = 4.f;
-
-@interface MBXFrameTimeGraphView ()
-
-@property (nonatomic) CAScrollLayer *scrollLayer;
-@property (nonatomic) CAShapeLayer *thresholdLayer;
-@property (nonatomic) CGFloat currentX;
-@property (nonatomic) NSMutableArray<CAShapeLayer *> *barLayers;
-
-@property (nonatomic) UIColor *safeColor;
-@property (nonatomic) UIColor *warningColor;
-@property (nonatomic) UIColor *dangerColor;
-
-@end
-
-@implementation MBXFrameTimeGraphView
-
-- (instancetype)init {
- if (self = [super init]) {
- [self commonInit];
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)aDecoder {
- if (self = [super initWithCoder:aDecoder]) {
- [self commonInit];
- }
- return self;
-}
-
-- (void)commonInit {
- self.userInteractionEnabled = NO;
- self.layer.opacity = 0.9f;
-
- self.scrollLayer = [CAScrollLayer layer];
- self.scrollLayer.scrollMode = kCAScrollHorizontally;
- self.scrollLayer.masksToBounds = YES;
- [self.layer addSublayer:self.scrollLayer];
-
- self.thresholdLayer = [CAShapeLayer layer];
- self.thresholdLayer.fillColor = [UIColor darkGrayColor].CGColor;
- [self.layer addSublayer:self.thresholdLayer];
-
- self.barLayers = [NSMutableArray array];
-
- self.safeColor = [UIColor colorWithRed:(CGFloat)(0.f/255.f) green:(CGFloat)(190.f/255.f) blue:(CGFloat)(123.f/255.f) alpha:1.f];
- self.warningColor = [UIColor colorWithRed:(CGFloat)(255.f/255.f) green:(CGFloat)(154.f/255.f) blue:(CGFloat)(82.f/255.f) alpha:1.f];
- self.dangerColor = [UIColor colorWithRed:(CGFloat)(255.f/255.f) green:(CGFloat)(91.f/255.f) blue:(CGFloat)(86.f/255.f) alpha:1.f];
-}
-
-- (void)layoutSubviews {
- [super layoutSubviews];
-
- if (!CGRectEqualToRect(self.scrollLayer.frame, self.bounds)) {
- self.scrollLayer.frame = self.bounds;
-
- CGRect thresholdLineRect = CGRectMake(0, self.frame.size.height - [self renderDurationTargetMilliseconds], self.frame.size.width, 1);
-
- {
- CGPathRef path = CGPathCreateWithRect(thresholdLineRect, nil);
- self.thresholdLayer.path = path;
- CGPathRelease(path);
- }
- }
-}
-
-- (void)updatePathWithFrameDuration:(CFTimeInterval)frameDuration {
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
-
- self.currentX += MBXFrameTimeBarWidth;
-
- CAShapeLayer *bar = [self barWithFrameDuration:frameDuration];
- bar.position = CGPointMake(self.currentX, self.frame.size.height);
-
- [self.scrollLayer addSublayer:bar];
- [self.barLayers addObject:bar];
-
- [self.scrollLayer scrollToPoint:CGPointMake(self.currentX - self.frame.size.width, 0)];
-
- [self removeStaleBars];
-
- [CATransaction commit];
-}
-
-- (CGFloat)renderDurationTargetMilliseconds {
- CGFloat maximumFramesPerSecond;
- if (@available(iOS 10.3, *)) {
- maximumFramesPerSecond = UIScreen.mainScreen.maximumFramesPerSecond;
- } else {
- // Not always strictly accurate, but works as an expedient approximation.
- maximumFramesPerSecond = 60;
- }
-
- CGFloat target = (1.0 / maximumFramesPerSecond) * MBXFrameTimeExaggeration;
- return [self roundedFloat:target];
-}
-
-- (CGFloat)roundedFloat:(CGFloat)f {
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- CGFloat scaleFactor = [UIScreen mainScreen].nativeScale;
-#elif TARGET_OS_MAC
- CGFloat scaleFactor = [NSScreen mainScreen].backingScaleFactor;
-#endif
- return round(f * scaleFactor) / scaleFactor;
-}
-
-- (CAShapeLayer *)barWithFrameDuration:(CFTimeInterval)frameDuration {
- CAShapeLayer *bar = [CAShapeLayer layer];
-
- CGRect barRect = CGRectMake(0, 0, MBXFrameTimeBarWidth, -(fminf(frameDuration * MBXFrameTimeExaggeration, self.frame.size.height)));
- UIBezierPath *barPath = [UIBezierPath bezierPathWithRect:barRect];
- bar.path = barPath.CGPath;
- bar.fillColor = [self colorForFrameDuration:frameDuration].CGColor;
-
- return bar;
-}
-
-- (UIColor *)colorForFrameDuration:(CFTimeInterval)frameDuration {
- CGFloat renderDurationTargetMilliseconds = [self renderDurationTargetMilliseconds];
- frameDuration *= MBXFrameTimeExaggeration;
-
- if (frameDuration < renderDurationTargetMilliseconds && frameDuration > (renderDurationTargetMilliseconds * 0.75)) {
- return self.warningColor;
- } else if (frameDuration > renderDurationTargetMilliseconds) {
- return self.dangerColor;
- } else {
- return self.safeColor;
- }
-}
-
-- (void)removeStaleBars {
- if (self.barLayers.count > (self.frame.size.width / MBXFrameTimeBarWidth * 3)) {
- NSRange staleBarsRange = NSMakeRange(0, self.frame.size.width / MBXFrameTimeBarWidth);
- NSArray *staleBars = [self.barLayers subarrayWithRange:staleBarsRange];
- [staleBars makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
- [self.barLayers removeObjectsInRange:staleBarsRange];
- }
-}
-
-@end
diff --git a/platform/ios/app/MBXOfflinePacksTableViewController.h b/platform/ios/app/MBXOfflinePacksTableViewController.h
deleted file mode 100644
index a0d8e703ef..0000000000
--- a/platform/ios/app/MBXOfflinePacksTableViewController.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@class MGLMapView;
-
-@interface MBXOfflinePacksTableViewController : UITableViewController
-
-@property (nonatomic, weak) MGLMapView *mapView;
-
-@end
diff --git a/platform/ios/app/MBXOfflinePacksTableViewController.m b/platform/ios/app/MBXOfflinePacksTableViewController.m
deleted file mode 100644
index bc8407a46d..0000000000
--- a/platform/ios/app/MBXOfflinePacksTableViewController.m
+++ /dev/null
@@ -1,284 +0,0 @@
-@import Mapbox;
-
-#import "MBXOfflinePacksTableViewController.h"
-
-
-static NSString * const MBXOfflinePackContextNameKey = @"Name";
-
-static NSString * const MBXOfflinePacksTableViewInactiveCellReuseIdentifier = @"Inactive";
-static NSString * const MBXOfflinePacksTableViewActiveCellReuseIdentifier = @"Active";
-
-@implementation MGLOfflinePack (MBXAdditions)
-
-- (NSString *)name {
- NSDictionary *userInfo = [NSKeyedUnarchiver unarchiveObjectWithData:self.context];
- NSAssert([userInfo isKindOfClass:[NSDictionary class]], @"Context of offline pack isn’t a dictionary.");
- NSString *name = userInfo[MBXOfflinePackContextNameKey];
- NSAssert([name isKindOfClass:[NSString class]], @"Name of offline pack isn’t a string.");
- return name;
-}
-
-@end
-
-@implementation MGLTilePyramidOfflineRegion (MBXAdditions)
-
-- (void)applyToMapView:(MGLMapView *)mapView {
- mapView.styleURL = self.styleURL;
- [mapView setVisibleCoordinateBounds:self.bounds];
- mapView.zoomLevel = MIN(self.maximumZoomLevel, MAX(self.minimumZoomLevel, mapView.zoomLevel));
-}
-
-@end
-
-@implementation MBXOfflinePacksTableViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- [[MGLOfflineStorage sharedOfflineStorage] addObserver:self forKeyPath:@"packs" options:NSKeyValueObservingOptionInitial context:NULL];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackProgressDidChange:) name:MGLOfflinePackProgressChangedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidReceiveError:) name:MGLOfflinePackErrorNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidReceiveMaximumAllowedMapboxTiles:) name:MGLOfflinePackMaximumMapboxTilesReachedNotification object:nil];
-}
-
-- (void)dealloc {
- [[MGLOfflineStorage sharedOfflineStorage] removeObserver:self forKeyPath:@"packs"];
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *, id> *)change context:(void *)context {
- if ([keyPath isEqualToString:@"packs"]) {
- NSKeyValueChange changeKind = [change[NSKeyValueChangeKindKey] unsignedIntegerValue];
- NSIndexSet *indices = change[NSKeyValueChangeIndexesKey];
- NSMutableArray *indexPaths;
- if (indices) {
- indexPaths = [NSMutableArray arrayWithCapacity:indices.count];
- [indices enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) {
- [indexPaths addObject:[NSIndexPath indexPathForRow:idx inSection:0]];
- }];
- }
- switch (changeKind) {
- case NSKeyValueChangeInsertion:
- [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
- break;
-
- case NSKeyValueChangeRemoval:
- [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
- break;
-
- case NSKeyValueChangeReplacement:
- [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
- break;
-
- default:
- [self.tableView reloadData];
-
- for (MGLOfflinePack *pack in [MGLOfflineStorage sharedOfflineStorage].packs) {
- if (pack.state == MGLOfflinePackStateUnknown) {
- [pack requestProgress];
- }
- }
-
- break;
- }
- } else {
- [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
- }
-}
-
-- (IBAction)addCurrentRegion:(id)sender {
- UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Add Offline Pack" message:@"Choose a name for the pack:" preferredStyle:UIAlertControllerStyleAlert];
- [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
- textField.placeholder = [NSString stringWithFormat:@"%@", MGLStringFromCoordinateBounds(self.mapView.visibleCoordinateBounds)];
- }];
- [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
-
- UIAlertAction *downloadAction = [UIAlertAction actionWithTitle:@"Download" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
- MGLMapView *mapView = self.mapView;
- NSAssert(mapView, @"No map view to get the current region from.");
-
- UITextField *nameField = alertController.textFields.firstObject;
- NSString *name = nameField.text;
- if (!name.length) {
- name = nameField.placeholder;
- }
-
- MGLTilePyramidOfflineRegion *region = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:mapView.styleURL bounds:mapView.visibleCoordinateBounds fromZoomLevel:mapView.zoomLevel toZoomLevel:mapView.maximumZoomLevel];
- id ideographicFontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"];
- if([ideographicFontFamilyName isKindOfClass:[NSNumber class]] && ![ideographicFontFamilyName boolValue]){
- region.includesIdeographicGlyphs = YES;
- }
- NSData *context = [NSKeyedArchiver archivedDataWithRootObject:@{
- MBXOfflinePackContextNameKey: name,
- }];
-
- [[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:region withContext:context completionHandler:^(MGLOfflinePack *pack, NSError *error) {
- if (error) {
- NSString *message = [NSString stringWithFormat:@"Mapbox GL was unable to add the offline pack “%@”.", name];
- UIAlertController *errorAlertController = [UIAlertController alertControllerWithTitle:@"Can’t Add Offline Pack" message:message preferredStyle:UIAlertControllerStyleAlert];
- [errorAlertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
- [self presentViewController:errorAlertController animated:YES completion:nil];
- } else {
- [pack resume];
- }
- }];
- }];
- [alertController addAction:downloadAction];
- alertController.preferredAction = downloadAction;
-
- [self presentViewController:alertController animated:YES completion:nil];
-}
-
-- (IBAction)invalidatePacks:(id)sender {
- for (MGLOfflinePack *pack in [MGLOfflineStorage sharedOfflineStorage].packs) {
-
- CFTimeInterval start = CACurrentMediaTime();
- [[MGLOfflineStorage sharedOfflineStorage] invalidatePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- CFTimeInterval end = CACurrentMediaTime();
- CFTimeInterval difference = end - start;
- NSLog(@"invalidatePack Started: %f Ended: %f Total Time: %f", start, end, difference);
- }];
- }
-}
-
-
-#pragma mark - Table view data source
-
-- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- return [MGLOfflineStorage sharedOfflineStorage].packs.count;
-}
-
-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- MGLOfflinePack *pack = [MGLOfflineStorage sharedOfflineStorage].packs[indexPath.row];
-
- NSString *reuseIdentifier = pack.state == MGLOfflinePackStateActive ? MBXOfflinePacksTableViewActiveCellReuseIdentifier : MBXOfflinePacksTableViewInactiveCellReuseIdentifier;
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier forIndexPath:indexPath];
- [self updateTableViewCell:cell atIndexPath:indexPath forPack:pack];
-
- return cell;
-}
-
-- (void)updateTableViewCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath forPack:(MGLOfflinePack *)pack {
- cell.textLabel.text = pack.name;
- MGLOfflinePackProgress progress = pack.progress;
- NSString *completedString = [NSNumberFormatter localizedStringFromNumber:@(progress.countOfResourcesCompleted)
- numberStyle:NSNumberFormatterDecimalStyle];
- NSString *expectedString = [NSNumberFormatter localizedStringFromNumber:@(progress.countOfResourcesExpected)
- numberStyle:NSNumberFormatterDecimalStyle];
- NSString *byteCountString = [NSByteCountFormatter stringFromByteCount:progress.countOfBytesCompleted
- countStyle:NSByteCountFormatterCountStyleFile];
- NSString *statusString;
- switch (pack.state) {
- case MGLOfflinePackStateUnknown:
- statusString = @"Calculating progress…";
- break;
-
- case MGLOfflinePackStateInactive:
- statusString = [NSString stringWithFormat:@"%@ of %@ resources (%@)",
- completedString, expectedString, byteCountString];
- break;
-
- case MGLOfflinePackStateComplete:
- statusString = [NSString stringWithFormat:@"%@ resources (%@)",
- completedString, byteCountString];
- break;
-
- case MGLOfflinePackStateActive:
- if (progress.countOfResourcesExpected) {
- completedString = [NSNumberFormatter localizedStringFromNumber:@(progress.countOfResourcesCompleted + 1)
- numberStyle:NSNumberFormatterDecimalStyle];
- }
- if (progress.maximumResourcesExpected > progress.countOfResourcesExpected) {
- expectedString = [NSString stringWithFormat:@"at least %@", expectedString];
- }
- statusString = [NSString stringWithFormat:@"Downloading %@ of %@ resources (%@ so far)…",
- completedString, expectedString, byteCountString];
- break;
-
- case MGLOfflinePackStateInvalid:
- NSAssert(NO, @"Invalid offline pack at index path %@", indexPath);
- break;
- }
- cell.detailTextLabel.text = statusString;
-}
-
-- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
- if (editingStyle == UITableViewCellEditingStyleDelete) {
- MGLOfflinePack *pack = [MGLOfflineStorage sharedOfflineStorage].packs[indexPath.row];
- [[MGLOfflineStorage sharedOfflineStorage] removePack:pack withCompletionHandler:nil];
- }
-}
-
-#pragma mark - Table view delegate
-
-- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
-
- MGLOfflinePack *pack = [MGLOfflineStorage sharedOfflineStorage].packs[indexPath.row];
- switch (pack.state) {
- case MGLOfflinePackStateUnknown:
- break;
-
- case MGLOfflinePackStateComplete:
- if ([pack.region respondsToSelector:@selector(applyToMapView:)]) {
- [pack.region performSelector:@selector(applyToMapView:) withObject:self.mapView];
- }
- [self performSegueWithIdentifier:@"ReturnToMap" sender:self];
- break;
-
- case MGLOfflinePackStateInactive:
- [pack resume];
- break;
-
- case MGLOfflinePackStateActive:
- [pack suspend];
- break;
-
- case MGLOfflinePackStateInvalid:
- NSAssert(NO, @"Invalid offline pack at index path %@", indexPath);
- break;
- }
-}
-
-#pragma mark - Offline pack delegate
-
-- (void)offlinePackProgressDidChange:(NSNotification *)notification {
- MGLOfflinePack *pack = notification.object;
- NSAssert([pack isKindOfClass:[MGLOfflinePack class]], @"MGLOfflineStorage notification has a non-pack object.");
-
- NSUInteger index = [[MGLOfflineStorage sharedOfflineStorage].packs indexOfObject:pack];
- if (index == NSNotFound) {
- return;
- }
-
- NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0];
- UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
- [self updateTableViewCell:cell atIndexPath:indexPath forPack:pack];
-}
-
-- (void)offlinePackDidReceiveError:(NSNotification *)notification {
- MGLOfflinePack *pack = notification.object;
- NSAssert([pack isKindOfClass:[MGLOfflinePack class]], @"MGLOfflineStorage notification has a non-pack object.");
-
- NSError *error = notification.userInfo[MGLOfflinePackUserInfoKeyError];
- NSAssert([error isKindOfClass:[NSError class]], @"MGLOfflineStorage notification has a non-error error.");
-
- NSString *message = [NSString stringWithFormat:@"Mapbox GL encountered an error while downloading the offline pack “%@”: %@", pack.name, error.localizedFailureReason];
- if (error.code == MGLErrorCodeConnectionFailed) {
- NSLog(@"%@", message);
- } else {
- UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Error Downloading Offline Pack" message:message preferredStyle:UIAlertControllerStyleAlert];
- [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
- [self presentViewController:alertController animated:YES completion:nil];
- }
-}
-
-- (void)offlinePackDidReceiveMaximumAllowedMapboxTiles:(NSNotification *)notification {
- MGLOfflinePack *pack = notification.object;
- NSAssert([pack isKindOfClass:[MGLOfflinePack class]], @"MGLOfflineStorage notification has a non-pack object.");
-
- uint64_t maximumCount = [notification.userInfo[MGLOfflinePackUserInfoKeyMaximumCount] unsignedLongLongValue];
- NSLog(@"Offline pack “%@” reached limit of %llu tiles.", pack.name, maximumCount);
-}
-
-@end
diff --git a/platform/ios/app/MBXOrnamentsViewController.h b/platform/ios/app/MBXOrnamentsViewController.h
deleted file mode 100644
index 087101cdc0..0000000000
--- a/platform/ios/app/MBXOrnamentsViewController.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXOrnamentsViewController : UIViewController
-
-@end
diff --git a/platform/ios/app/MBXOrnamentsViewController.m b/platform/ios/app/MBXOrnamentsViewController.m
deleted file mode 100644
index f451f647e5..0000000000
--- a/platform/ios/app/MBXOrnamentsViewController.m
+++ /dev/null
@@ -1,96 +0,0 @@
-@import Mapbox;
-
-#import "MBXOrnamentsViewController.h"
-
-@interface MBXOrnamentsViewController ()<MGLMapViewDelegate>
-
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic) NSTimer *timer;
-@property (nonatomic) NSInteger currentPositionIndex;
-
-@end
-
-@implementation MBXOrnamentsViewController
-
-- (void)setCurrentPositionIndex:(NSInteger)currentPositionIndex {
- MGLOrnamentPosition ornamentPositions[5][4] = {
- {
- MGLOrnamentPositionTopLeft,
- MGLOrnamentPositionTopRight,
- MGLOrnamentPositionBottomRight,
- MGLOrnamentPositionBottomLeft
- },
- {
- MGLOrnamentPositionTopRight,
- MGLOrnamentPositionBottomRight,
- MGLOrnamentPositionBottomLeft,
- MGLOrnamentPositionTopLeft
- },
- {
- MGLOrnamentPositionBottomRight,
- MGLOrnamentPositionBottomLeft,
- MGLOrnamentPositionTopLeft,
- MGLOrnamentPositionTopRight
- },
- {
- MGLOrnamentPositionBottomLeft,
- MGLOrnamentPositionTopLeft,
- MGLOrnamentPositionTopRight,
- MGLOrnamentPositionBottomRight
- },
- {
- MGLOrnamentPositionTopLeft,
- MGLOrnamentPositionTopRight,
- MGLOrnamentPositionBottomRight,
- MGLOrnamentPositionBottomLeft
- }
- };
- MGLOrnamentPosition *currentPosition = ornamentPositions[currentPositionIndex];
- self.mapView.scaleBarPosition = currentPosition[0];
- self.mapView.compassViewPosition = currentPosition[1];
- self.mapView.logoViewPosition = currentPosition[2];
- self.mapView.attributionButtonPosition = currentPosition[3];
-
- _currentPositionIndex = currentPositionIndex;
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- self.title = @"Ornaments";
-
- MGLMapView *mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds];
- mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- [mapView setCenterCoordinate:CLLocationCoordinate2DMake(39.915143, 116.404053)
- zoomLevel:16
- direction:30
- animated:NO];
- mapView.delegate = self;
- mapView.showsScale = YES;
- [self.view addSubview:mapView];
-
- self.mapView = mapView;
-}
-
-- (void)viewDidDisappear:(BOOL)animated {
- [super viewDidDisappear:animated];
- [self.timer invalidate];
- self.timer = nil;
-}
-
-- (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
- self.timer = [NSTimer scheduledTimerWithTimeInterval:1
- target:self
- selector:@selector(onTimerTick)
- userInfo:nil
- repeats:YES];
-}
-
-- (void)onTimerTick {
- self.currentPositionIndex ++;
- if (self.currentPositionIndex >= 4) {
- self.currentPositionIndex = 0;
- }
-}
-
-@end
diff --git a/platform/ios/app/MBXSnapshotsViewController.h b/platform/ios/app/MBXSnapshotsViewController.h
deleted file mode 100644
index f791602e98..0000000000
--- a/platform/ios/app/MBXSnapshotsViewController.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXSnapshotsViewController : UIViewController
-
-@end
diff --git a/platform/ios/app/MBXSnapshotsViewController.m b/platform/ios/app/MBXSnapshotsViewController.m
deleted file mode 100644
index 747ff39248..0000000000
--- a/platform/ios/app/MBXSnapshotsViewController.m
+++ /dev/null
@@ -1,67 +0,0 @@
-@import Mapbox;
-
-#import "MBXSnapshotsViewController.h"
-
-@interface MBXSnapshotsViewController ()
-
-// Top row
-@property (weak, nonatomic) IBOutlet UIImageView *snapshotImageViewTL;
-@property (weak, nonatomic) IBOutlet UIImageView *snapshotImageViewTM;
-@property (weak, nonatomic) IBOutlet UIImageView *snapshotImageViewTR;
-
-// Bottom row
-@property (weak, nonatomic) IBOutlet UIImageView *snapshotImageViewBL;
-@property (weak, nonatomic) IBOutlet UIImageView *snapshotImageViewBM;
-@property (weak, nonatomic) IBOutlet UIImageView *snapshotImageViewBR;
-
-@end
-
-@implementation MBXSnapshotsViewController {
- // Top row
- MGLMapSnapshotter* topLeftSnapshotter;
- MGLMapSnapshotter* topCenterSnapshotter;
- MGLMapSnapshotter* topRightSnapshotter;
-
- // Bottom row
- MGLMapSnapshotter* bottomLeftSnapshotter;
- MGLMapSnapshotter* bottomCenterSnapshotter;
- MGLMapSnapshotter* bottomRightSnapshotter;
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- // Start snapshotters
- topLeftSnapshotter = [self startSnapshotterForImageView:_snapshotImageViewTL coordinates:CLLocationCoordinate2DMake(37.7184, -122.4365)];
- topCenterSnapshotter = [self startSnapshotterForImageView:_snapshotImageViewTM coordinates:CLLocationCoordinate2DMake(38.8936, -77.0146)];
- topRightSnapshotter = [self startSnapshotterForImageView:_snapshotImageViewTR coordinates:CLLocationCoordinate2DMake(-13.1356, -74.2442)];
-
- bottomLeftSnapshotter = [self startSnapshotterForImageView:_snapshotImageViewBL coordinates:CLLocationCoordinate2DMake(52.5072, 13.4247)];
- bottomCenterSnapshotter = [self startSnapshotterForImageView:_snapshotImageViewBM coordinates:CLLocationCoordinate2DMake(60.2118, 24.6754)];
- bottomRightSnapshotter = [self startSnapshotterForImageView:_snapshotImageViewBR coordinates:CLLocationCoordinate2DMake(31.2780, 121.4286)];
-}
-
-- (MGLMapSnapshotter*) startSnapshotterForImageView:(UIImageView*) imageView coordinates:(CLLocationCoordinate2D) coordinates {
- // Create snapshot options
- MGLMapCamera* mapCamera = [[MGLMapCamera alloc] init];
- mapCamera.pitch = 20;
- mapCamera.centerCoordinate = coordinates;
- MGLMapSnapshotOptions* options = [[MGLMapSnapshotOptions alloc] initWithStyleURL:[MGLStyle satelliteStreetsStyleURL] camera:mapCamera size:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)];
- options.zoomLevel = 10;
-
- // Create and start the snapshotter
- __weak UIImageView *weakImageView = imageView;
- MGLMapSnapshotter* snapshotter = [[MGLMapSnapshotter alloc] initWithOptions:options];
- [snapshotter startWithCompletionHandler: ^(MGLMapSnapshot* snapshot, NSError *error) {
- if (error) {
- NSLog(@"Could not load snapshot: %@", [error localizedDescription]);
- } else {
- weakImageView.image = snapshot.image;
- }
- }];
-
- return snapshotter;
-}
-
-
-@end
diff --git a/platform/ios/app/MBXState.h b/platform/ios/app/MBXState.h
deleted file mode 100644
index cf68016e98..0000000000
--- a/platform/ios/app/MBXState.h
+++ /dev/null
@@ -1,33 +0,0 @@
-@import Mapbox;
-
-NS_ASSUME_NONNULL_BEGIN
-
-FOUNDATION_EXTERN NSString *const MBXCamera;
-FOUNDATION_EXTERN NSString *const MBXShowsUserLocation;
-FOUNDATION_EXTERN NSString *const MBXUserTrackingMode;
-FOUNDATION_EXTERN NSString *const MBXMapShowsHeadingIndicator;
-FOUNDATION_EXTERN NSString *const MBXShowsMapScale;
-FOUNDATION_EXTERN NSString *const MBXShowsZoomLevelOrnament;
-FOUNDATION_EXTERN NSString *const MBXShowsTimeFrameGraph;
-FOUNDATION_EXTERN NSString *const MBXMapFramerateMeasurementEnabled;
-FOUNDATION_EXTERN NSString *const MBXDebugMaskValue;
-FOUNDATION_EXTERN NSString *const MBXReuseQueueStatsEnabled;
-
-@interface MBXState : NSObject <NSSecureCoding>
-
-@property (nonatomic, nullable) MGLMapCamera *camera;
-@property (nonatomic) BOOL showsUserLocation;
-@property (nonatomic) MGLUserTrackingMode userTrackingMode;
-@property (nonatomic) BOOL showsUserHeadingIndicator;
-@property (nonatomic) BOOL showsMapScale;
-@property (nonatomic) BOOL showsZoomLevelOrnament;
-@property (nonatomic) BOOL showsTimeFrameGraph;
-@property (nonatomic) BOOL framerateMeasurementEnabled;
-@property (nonatomic) MGLMapDebugMaskOptions debugMask;
-@property (nonatomic) BOOL reuseQueueStatsEnabled;
-
-@property (nonatomic, readonly) NSString *debugDescription;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/app/MBXState.m b/platform/ios/app/MBXState.m
deleted file mode 100644
index 455961e88a..0000000000
--- a/platform/ios/app/MBXState.m
+++ /dev/null
@@ -1,80 +0,0 @@
-#import "MBXState.h"
-
-NSString *const MBXCamera = @"MBXCamera";
-NSString *const MBXUserTrackingMode = @"MBXUserTrackingMode";
-NSString *const MBXShowsUserLocation = @"MBXShowsUserLocation";
-NSString *const MBXDebugMaskValue = @"MBXDebugMaskValue";
-NSString *const MBXShowsZoomLevelOrnament = @"MBXShowsZoomLevelOrnament";
-NSString *const MBXShowsTimeFrameGraph = @"MBXShowsFrameTimeGraph";
-NSString *const MBXShowsMapScale = @"MBXMapShowsScale";
-NSString *const MBXMapShowsHeadingIndicator = @"MBXMapShowsHeadingIndicator";
-NSString *const MBXMapFramerateMeasurementEnabled = @"MBXMapFramerateMeasurementEnabled";
-NSString *const MBXReuseQueueStatsEnabled = @"MBXReuseQueueStatsEnabled";
-
-@interface MBXState()
-
-@end
-
-@implementation MBXState
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [coder encodeObject:_camera forKey:MBXCamera];
- [coder encodeObject:[NSNumber numberWithUnsignedInteger:_userTrackingMode] forKey:MBXUserTrackingMode];
- [coder encodeBool:_showsUserLocation forKey:MBXShowsUserLocation];
- [coder encodeObject:[NSNumber numberWithUnsignedInteger:_debugMask] forKey:MBXDebugMaskValue];
- [coder encodeBool:_showsZoomLevelOrnament forKey:MBXShowsZoomLevelOrnament];
- [coder encodeBool:_showsTimeFrameGraph forKey:MBXShowsTimeFrameGraph];
- [coder encodeBool:_showsMapScale forKey:MBXShowsMapScale];
- [coder encodeBool:_showsUserHeadingIndicator forKey:MBXMapShowsHeadingIndicator];
- [coder encodeBool:_framerateMeasurementEnabled forKey:MBXMapFramerateMeasurementEnabled];
- [coder encodeBool:_reuseQueueStatsEnabled forKey:MBXReuseQueueStatsEnabled];
-}
-
-- (nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder {
- if (self = [super init]) {
- MGLMapCamera *decodedCamera = [decoder decodeObjectForKey:MBXCamera];
- NSNumber *decodedUserTrackingMode = [decoder decodeObjectForKey:MBXUserTrackingMode];
- BOOL decodedShowsUserLocation = [decoder decodeBoolForKey:MBXShowsUserLocation];
- NSNumber *decodedDebugMaskOptions = [decoder decodeObjectForKey:MBXDebugMaskValue];
- BOOL decodedZoomLevelOrnament = [decoder decodeBoolForKey:MBXShowsZoomLevelOrnament];
- BOOL decodedShowsTimeFrameGraph = [decoder decodeBoolForKey:MBXShowsTimeFrameGraph];
- BOOL decodedShowsMapScale = [decoder decodeBoolForKey:MBXShowsMapScale];
- BOOL decodedShowsUserHeadingIndicator = [decoder decodeBoolForKey:MBXMapShowsHeadingIndicator];
- BOOL decodedFramerateMeasurementEnabled = [decoder decodeBoolForKey:MBXMapFramerateMeasurementEnabled];
- BOOL decodedReuseQueueStatsEnabled = [decoder decodeBoolForKey:MBXReuseQueueStatsEnabled];
-
- _camera = decodedCamera;
- _userTrackingMode = decodedUserTrackingMode.intValue;
- _showsUserLocation = decodedShowsUserLocation;
- _debugMask = decodedDebugMaskOptions.intValue;
- _showsZoomLevelOrnament = decodedZoomLevelOrnament;
- _showsTimeFrameGraph = decodedShowsTimeFrameGraph;
- _showsMapScale = decodedShowsMapScale;
- _showsUserHeadingIndicator = decodedShowsUserHeadingIndicator;
- _framerateMeasurementEnabled = decodedFramerateMeasurementEnabled;
- _reuseQueueStatsEnabled = decodedReuseQueueStatsEnabled;
- }
-
- return self;
-}
-
-+ (BOOL)supportsSecureCoding {
- return YES;
-}
-
-- (NSString *)debugDescription {
- return [NSString stringWithFormat:@"Camera: %@\nTracking mode: %lu\nShows user location: %@\nDebug mask value: %lu\nShows zoom level ornament: %@\nShows time frame graph: %@\nShows map scale: %@\nShows user heading indicator: %@\nFramerate measurement enabled: %@\nReuse queue stats enabled: %@",
- self.camera,
- (unsigned long)self.userTrackingMode,
- self.showsUserLocation ? @"YES" : @"NO",
- (unsigned long)self.debugMask,
- self.showsZoomLevelOrnament ? @"YES" : @"NO",
- self.showsTimeFrameGraph ? @"YES" : @"NO",
- self.showsMapScale ? @"YES" : @"NO",
- self.showsUserHeadingIndicator ? @"YES" : @"NO",
- self.framerateMeasurementEnabled ? @"YES" : @"NO",
- self.reuseQueueStatsEnabled ? @"YES" : @"NO"];
-}
-
-@end
diff --git a/platform/ios/app/MBXStateManager.h b/platform/ios/app/MBXStateManager.h
deleted file mode 100644
index 1a3c8810eb..0000000000
--- a/platform/ios/app/MBXStateManager.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#import <Foundation/Foundation.h>
-#import "MBXViewController.h"
-@class MBXState;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MBXStateManager : NSObject
-
-+ (instancetype) sharedManager;
-
-- (MBXState *)currentState;
-
-- (void)saveState:(MBXState*)mapViewController;
-
-- (void)resetState;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/app/MBXStateManager.m b/platform/ios/app/MBXStateManager.m
deleted file mode 100644
index f9dc771e26..0000000000
--- a/platform/ios/app/MBXStateManager.m
+++ /dev/null
@@ -1,43 +0,0 @@
-#import "MBXStateManager.h"
-#import "MBXState.h"
-#import "MBXViewController.h"
-
-static NSString * const MBXStateManagerMapStateKey = @"mapStateKey";
-
-@interface MBXStateManager()
-
-@property (strong, nonatomic) MBXState *currentState;
-
-@end
-
-@implementation MBXStateManager
-
-+ (instancetype) sharedManager {
- static dispatch_once_t once;
- static MBXStateManager* sharedManager;
- dispatch_once(&once, ^{
- sharedManager = [[self alloc] init];
- });
-
- return sharedManager;
-}
-
-- (MBXState*)currentState {
- NSData *encodedMapState = [[NSUserDefaults standardUserDefaults] objectForKey:MBXStateManagerMapStateKey];
- MBXState *currentState = (MBXState *)[NSKeyedUnarchiver unarchiveObjectWithData:encodedMapState];
-
- return currentState;
-}
-
-- (void)saveState:(MBXState*)mapState {
- NSData *encodedMapState = [NSKeyedArchiver archivedDataWithRootObject:mapState];
- [[NSUserDefaults standardUserDefaults] setObject:encodedMapState forKey:MBXStateManagerMapStateKey];
-}
-
-- (void)resetState {
- [[NSUserDefaults standardUserDefaults] removeObjectForKey:MBXStateManagerMapStateKey];
-}
-
-
-
-@end
diff --git a/platform/ios/app/MBXUserLocationAnnotationView.h b/platform/ios/app/MBXUserLocationAnnotationView.h
deleted file mode 100644
index a60658dd18..0000000000
--- a/platform/ios/app/MBXUserLocationAnnotationView.h
+++ /dev/null
@@ -1,5 +0,0 @@
-@import Mapbox;
-
-@interface MBXUserLocationAnnotationView : MGLUserLocationAnnotationView
-
-@end
diff --git a/platform/ios/app/MBXUserLocationAnnotationView.m b/platform/ios/app/MBXUserLocationAnnotationView.m
deleted file mode 100644
index 675a01930a..0000000000
--- a/platform/ios/app/MBXUserLocationAnnotationView.m
+++ /dev/null
@@ -1,165 +0,0 @@
-#import "MBXUserLocationAnnotationView.h"
-
-const CGFloat MBXUserLocationDotSize = 10;
-
-@implementation MBXUserLocationAnnotationView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
- if (self == nil) return nil;
- self.backgroundColor = [UIColor clearColor];
- return self;
-}
-
-- (void)update
-{
- [self updateFrameWithSize:self.intrinsicContentSize];
- [self setNeedsDisplay];
-}
-
-
-- (CGSize)intrinsicContentSize
-{
- CGSize carSize = CGSizeMake(30, 60);
- return (self.mapView.userTrackingMode == MGLUserTrackingModeFollowWithCourse) ? carSize : [self dotSize];
-}
-
-- (CGSize)dotSize
-{
- CGFloat minDotSize = 30;
- CGFloat dotSize = MAX(minDotSize, self.accuracyInPoints);
- return CGSizeMake(dotSize, dotSize);
-}
-
-- (void)updateFrameWithSize:(CGSize)size
-{
- if (CGSizeEqualToSize(self.frame.size, size)) return;
-
- // Update frame size, keeping the existing center point.
- CGRect newFrame = self.frame;
- CGPoint oldCenter = self.center;
- newFrame.size = size;
- self.frame = newFrame;
- self.center = oldCenter;
-}
-
-- (CGFloat)accuracyInPoints
-{
- CGFloat metersPerPoint = [self.mapView metersPerPointAtLatitude:self.userLocation.location.coordinate.latitude];
- return self.userLocation.location.horizontalAccuracy / metersPerPoint;
-}
-
-- (void)drawRect:(CGRect)rect
-{
- (self.mapView.userTrackingMode == MGLUserTrackingModeFollowWithCourse) ? [self drawCar] : [self drawDot];
-}
-
-- (void)drawDot
-{
- // Accuracy
- CGFloat accuracy = self.accuracyInPoints;
-
- CGFloat center = self.bounds.size.width / 2.0 - accuracy / 2.0;
- UIBezierPath *accuracyPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(center, center, accuracy, accuracy)];
- UIColor *accuracyColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:.4];
- [accuracyColor setFill];
- [accuracyPath fill];
-
- // Dot
- center = self.bounds.size.width / 2.0 - MBXUserLocationDotSize / 2.0;
- UIBezierPath *ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(center, center, MBXUserLocationDotSize, MBXUserLocationDotSize)];
- [UIColor.greenColor setFill];
- [ovalPath fill];
-
- [UIColor.blackColor setStroke];
- ovalPath.lineWidth = 1;
- [ovalPath stroke];
-
- // Accuracy text
- UIFont *font = [UIFont systemFontOfSize:11];
- [[NSString stringWithFormat:@"%.0f", accuracy]
- drawAtPoint:CGPointZero withAttributes:@{NSFontAttributeName: font,
- NSBackgroundColorAttributeName: [UIColor colorWithWhite:0 alpha:.5],
- NSForegroundColorAttributeName: [UIColor whiteColor]}];
-}
-
-- (void)drawCar
-{
- UIColor* fillColor = [UIColor colorWithRed: 0 green: 0 blue: 0 alpha: 1];
- UIColor* strokeColor = [UIColor colorWithRed: 0.592 green: 0.592 blue: 0.592 alpha: 1];
- UIColor* fillColor2 = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 1];
-
- UIBezierPath* bezier2Path = [UIBezierPath bezierPath];
- [bezier2Path moveToPoint: CGPointMake(30, 7.86)];
- [bezier2Path addLineToPoint: CGPointMake(30, 52.66)];
- [bezier2Path addCurveToPoint: CGPointMake(0, 52.66) controlPoint1: CGPointMake(30, 62.05) controlPoint2: CGPointMake(0, 62.84)];
- [bezier2Path addCurveToPoint: CGPointMake(0, 7.86) controlPoint1: CGPointMake(0, 42.48) controlPoint2: CGPointMake(0, 17.89)];
- [bezier2Path addCurveToPoint: CGPointMake(30, 7.86) controlPoint1: CGPointMake(-0, -2.17) controlPoint2: CGPointMake(30, -3.05)];
- [bezier2Path closePath];
- bezier2Path.usesEvenOddFillRule = YES;
-
- [fillColor setFill];
- [bezier2Path fill];
-
- UIBezierPath* bezier3Path = [UIBezierPath bezierPath];
- [bezier3Path moveToPoint: CGPointMake(30, 7.86)];
- [bezier3Path addLineToPoint: CGPointMake(30, 52.66)];
- [bezier3Path addCurveToPoint: CGPointMake(0, 52.66) controlPoint1: CGPointMake(30, 62.05) controlPoint2: CGPointMake(0, 62.84)];
- [bezier3Path addCurveToPoint: CGPointMake(0, 7.86) controlPoint1: CGPointMake(0, 42.48) controlPoint2: CGPointMake(0, 17.89)];
- [bezier3Path addCurveToPoint: CGPointMake(30, 7.86) controlPoint1: CGPointMake(0, -2.17) controlPoint2: CGPointMake(30, -3.05)];
- [bezier3Path closePath];
- [strokeColor setStroke];
- bezier3Path.lineWidth = 1;
- [bezier3Path stroke];
-
- UIBezierPath* bezier4Path = [UIBezierPath bezierPath];
- [bezier4Path moveToPoint: CGPointMake(15.56, 4.26)];
- [bezier4Path addCurveToPoint: CGPointMake(26, 6) controlPoint1: CGPointMake(21, 4.26) controlPoint2: CGPointMake(26, 6)];
- [bezier4Path addCurveToPoint: CGPointMake(23, 21) controlPoint1: CGPointMake(26, 6) controlPoint2: CGPointMake(29, 17)];
- [bezier4Path addCurveToPoint: CGPointMake(16, 21) controlPoint1: CGPointMake(20.03, 22.98) controlPoint2: CGPointMake(16, 21)];
- [bezier4Path addCurveToPoint: CGPointMake(7, 21) controlPoint1: CGPointMake(16, 21) controlPoint2: CGPointMake(9.02, 23.53)];
- [bezier4Path addCurveToPoint: CGPointMake(4, 6) controlPoint1: CGPointMake(3, 16) controlPoint2: CGPointMake(4, 6)];
- [bezier4Path addCurveToPoint: CGPointMake(15.56, 4.26) controlPoint1: CGPointMake(4, 6) controlPoint2: CGPointMake(10.12, 4.26)];
- [bezier4Path closePath];
- bezier4Path.usesEvenOddFillRule = YES;
-
- [fillColor2 setFill];
- [bezier4Path fill];
-
- UIBezierPath* rectanglePath = [UIBezierPath bezierPath];
- [rectanglePath moveToPoint: CGPointMake(25, 46)];
- [rectanglePath addCurveToPoint: CGPointMake(21, 55) controlPoint1: CGPointMake(31, 46) controlPoint2: CGPointMake(28.5, 55)];
- [rectanglePath addCurveToPoint: CGPointMake(9, 55) controlPoint1: CGPointMake(13.5, 55) controlPoint2: CGPointMake(14, 55)];
- [rectanglePath addCurveToPoint: CGPointMake(5, 46) controlPoint1: CGPointMake(4, 55) controlPoint2: CGPointMake(0, 46)];
- [rectanglePath addCurveToPoint: CGPointMake(25, 46) controlPoint1: CGPointMake(10, 46) controlPoint2: CGPointMake(19, 46)];
- [rectanglePath closePath];
- [UIColor.whiteColor setFill];
- [rectanglePath fill];
-
- UIBezierPath* bezierPath = [UIBezierPath bezierPath];
- [UIColor.whiteColor setFill];
- [bezierPath fill];
-
- UIBezierPath* rectangle2Path = [UIBezierPath bezierPath];
- [rectangle2Path moveToPoint: CGPointMake(2, 35)];
- [rectangle2Path addCurveToPoint: CGPointMake(4.36, 35) controlPoint1: CGPointMake(2, 39) controlPoint2: CGPointMake(4.36, 35)];
- [rectangle2Path addCurveToPoint: CGPointMake(4.36, 22) controlPoint1: CGPointMake(4.36, 35) controlPoint2: CGPointMake(5.55, 26)];
- [rectangle2Path addCurveToPoint: CGPointMake(2, 22) controlPoint1: CGPointMake(3.18, 18) controlPoint2: CGPointMake(2, 22)];
- [rectangle2Path addCurveToPoint: CGPointMake(2, 35) controlPoint1: CGPointMake(2, 22) controlPoint2: CGPointMake(2, 31)];
- [rectangle2Path closePath];
- [UIColor.whiteColor setFill];
- [rectangle2Path fill];
-
- UIBezierPath* rectangle3Path = [UIBezierPath bezierPath];
- [rectangle3Path moveToPoint: CGPointMake(28, 35)];
- [rectangle3Path addCurveToPoint: CGPointMake(25.64, 35) controlPoint1: CGPointMake(28, 39) controlPoint2: CGPointMake(25.64, 35)];
- [rectangle3Path addCurveToPoint: CGPointMake(25.64, 22) controlPoint1: CGPointMake(25.64, 35) controlPoint2: CGPointMake(24.45, 26)];
- [rectangle3Path addCurveToPoint: CGPointMake(28, 22) controlPoint1: CGPointMake(26.82, 18) controlPoint2: CGPointMake(28, 22)];
- [rectangle3Path addCurveToPoint: CGPointMake(28, 35) controlPoint1: CGPointMake(28, 22) controlPoint2: CGPointMake(28, 31)];
- [rectangle3Path closePath];
- [UIColor.whiteColor setFill];
- [rectangle3Path fill];
-}
-
-@end
diff --git a/platform/ios/app/MBXViewController.h b/platform/ios/app/MBXViewController.h
deleted file mode 100644
index 924d3af60c..0000000000
--- a/platform/ios/app/MBXViewController.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXViewController : UIViewController
-
-@end
diff --git a/platform/ios/app/MBXViewController.m b/platform/ios/app/MBXViewController.m
deleted file mode 100644
index 82a68e074a..0000000000
--- a/platform/ios/app/MBXViewController.m
+++ /dev/null
@@ -1,2369 +0,0 @@
-@import Mapbox;
-
-#import "MBXViewController.h"
-
-#import "MBXAppDelegate.h"
-#import "MBXCustomCalloutView.h"
-#import "MBXOfflinePacksTableViewController.h"
-#import "MBXAnnotationView.h"
-#import "MBXUserLocationAnnotationView.h"
-#import "LimeGreenStyleLayer.h"
-#import "MBXEmbeddedMapViewController.h"
-#import "MBXOrnamentsViewController.h"
-#import "MBXStateManager.h"
-#import "MBXState.h"
-
-#import "MBXFrameTimeGraphView.h"
-#import "../src/MGLMapView_Experimental.h"
-
-#import <objc/runtime.h>
-
-static const CLLocationCoordinate2D WorldTourDestinations[] = {
- { .latitude = 38.8999418, .longitude = -77.033996 },
- { .latitude = 37.7884307, .longitude = -122.3998631 },
- { .latitude = 52.5003103, .longitude = 13.4197763 },
- { .latitude = 60.1712627, .longitude = 24.9378866 },
- { .latitude = 53.8948782, .longitude = 27.5558476 },
-};
-
-static const MGLCoordinateBounds colorado = {
- .sw = { .latitude = 36.986207, .longitude = -109.049896},
- .ne = { .latitude = 40.989329, .longitude = -102.062592},
-};
-
-static NSString * const MBXViewControllerAnnotationViewReuseIdentifer = @"MBXViewControllerAnnotationViewReuseIdentifer";
-
-typedef NS_ENUM(NSInteger, MBXSettingsSections) {
- MBXSettingsDebugTools = 0,
- MBXSettingsAnnotations,
- MBXSettingsRuntimeStyling,
- MBXSettingsMiscellaneous,
-};
-
-typedef NS_ENUM(NSInteger, MBXSettingsDebugToolsRows) {
- MBXSettingsDebugToolsResetPosition = 0,
- MBXSettingsDebugToolsTileBoundaries,
- MBXSettingsDebugToolsTileInfo,
- MBXSettingsDebugToolsTimestamps,
- MBXSettingsDebugToolsCollisionBoxes,
- MBXSettingsDebugToolsOverdrawVisualization,
- MBXSettingsDebugToolsShowZoomLevel,
- MBXSettingsDebugToolsShowFrameTimeGraph,
- MBXSettingsDebugToolsShowReuseQueueStats
-};
-
-typedef NS_ENUM(NSInteger, MBXSettingsAnnotationsRows) {
- MBXSettingsAnnotations100Views = 0,
- MBXSettingsAnnotations1000Views,
- MBXSettingsAnnotations10000Views,
- MBXSettingsAnnotations100Sprites,
- MBXSettingsAnnotations1000Sprites,
- MBXSettingsAnnotations10000Sprites,
- MBXSettingsAnnotationAnimation,
- MBXSettingsAnnotationsTestShapes,
- MBXSettingsAnnotationsCustomCallout,
- MBXSettingsAnnotationsQueryAnnotations,
- MBXSettingsAnnotationsCustomUserDot,
- MBXSettingsAnnotationsRemoveAnnotations,
- MBXSettingsAnnotationSelectRandomOffscreenPointAnnotation,
- MBXSettingsAnnotationCenterSelectedAnnotation,
- MBXSettingsAnnotationAddVisibleAreaPolyline
-};
-
-typedef NS_ENUM(NSInteger, MBXSettingsRuntimeStylingRows) {
- MBXSettingsRuntimeStylingBuildingExtrusions = 0,
- MBXSettingsRuntimeStylingWater,
- MBXSettingsRuntimeStylingRoads,
- MBXSettingsRuntimeStylingRaster,
- MBXSettingsRuntimeStylingShape,
- MBXSettingsRuntimeStylingSymbols,
- MBXSettingsRuntimeStylingBuildings,
- MBXSettingsRuntimeStylingFerry,
- MBXSettingsRuntimeStylingParks,
- MBXSettingsRuntimeStylingFilteredFill,
- MBXSettingsRuntimeStylingFilteredLines,
- MBXSettingsRuntimeStylingNumericFilteredFill,
- MBXSettingsRuntimeStylingStyleQuery,
- MBXSettingsRuntimeStylingFeatureSource,
- MBXSettingsRuntimeStylingPointCollection,
- MBXSettingsRuntimeStylingUpdateShapeSourceData,
- MBXSettingsRuntimeStylingUpdateShapeSourceURL,
- MBXSettingsRuntimeStylingUpdateShapeSourceFeatures,
- MBXSettingsRuntimeStylingVectorTileSource,
- MBXSettingsRuntimeStylingRasterTileSource,
- MBXSettingsRuntimeStylingImageSource,
- MBXSettingsRuntimeStylingRouteLine,
- MBXSettingsRuntimeStylingAddLimeGreenTriangleLayer,
- MBXSettingsRuntimeStylingDDSPolygon,
- MBXSettingsRuntimeStylingCustomLatLonGrid,
-};
-
-typedef NS_ENUM(NSInteger, MBXSettingsMiscellaneousRows) {
- MBXSettingsMiscellaneousWorldTour,
- MBXSettingsMiscellaneousRandomTour,
- MBXSettingsMiscellaneousScrollView,
- MBXSettingsMiscellaneousToggleTwoMaps,
- MBXSettingsMiscellaneousLocalizeLabels,
- MBXSettingsMiscellaneousShowSnapshots,
- MBXSettingsMiscellaneousMissingIcon,
- MBXSettingsMiscellaneousShouldLimitCameraChanges,
- MBXSettingsMiscellaneousSetContentInsets,
- MBXSettingsMiscellaneousShowCustomLocationManager,
- MBXSettingsMiscellaneousOrnamentsPlacement,
- MBXSettingsMiscellaneousPrintLogFile,
- MBXSettingsMiscellaneousDeleteLogFile
-};
-
-// Utility methods
-CLLocationCoordinate2D coordinateCentered(CLLocationCoordinate2D origin, CLLocationDegrees bearing, CLLocationDistance distance) {
-
- // Convert to radians
- double multiplier = M_PI / 180.0;
- double sourceLatitude = multiplier * origin.latitude;
- double sourceLongitude = multiplier * origin.longitude;
- bearing *= multiplier;
- distance /= 6378137.0;
-
- // Pulled from MGLRadianCoordinateAtDistanceFacingDirection:
- double latitude = asin((sin(sourceLatitude) * cos(distance)) +
- (cos(sourceLatitude) * sin(distance) * cos(bearing)));
-
- double longitude = sourceLongitude + atan2((sin(bearing) * sin(distance) * cos(sourceLatitude)),
- cos(distance) - (sin(sourceLatitude) * sin(latitude)));
-
- CLLocationCoordinate2D result;
- result.latitude = fmin(85.0, fmax(-85.0, (latitude / multiplier)));
- result.longitude = longitude / multiplier;
- return result;
-}
-
-CLLocationCoordinate2D randomWorldCoordinate() {
-
- static const struct {
- CLLocationCoordinate2D coordinate;
- CLLocationDistance radius;
- } landmasses[] = {
- // Rough land masses
- {{ 38.328531, 94.778736 }, 4100000 }, // Asia
- {{ 1.477244, 18.138111 }, 4100000 }, // Africa
- {{ 52.310059, 22.295425 }, 2000000 }, // Europe
- {{ 42.344216, -96.532700 }, 3000000 }, // N America
- {{ -11.537273, -57.035181 }, 2220000 }, // S America
- {{ -20.997030, 134.660541 }, 2220000 }, // Australia
-
- // A few cities
- {{ 51.504787, -0.106977 }, 33000 }, // London
- {{ 37.740186, -122.437086 }, 8500 }, // SF
- {{ 52.509978, 13.406510 }, 12000 }, // Berlin
- {{ 12.966246, 77.586505 }, 19000 } // Bengaluru
- };
-
- NSInteger index = arc4random_uniform(sizeof(landmasses)/sizeof(landmasses[0]));
- CLLocationCoordinate2D coordinate = landmasses[index].coordinate;
- CLLocationDistance radius = landmasses[index].radius;
-
- // Now create a world coord
- CLLocationDegrees heading = (CLLocationDegrees)arc4random_uniform(360);
- CLLocationDistance distance = (CLLocationDistance)arc4random_uniform(radius);
- CLLocationCoordinate2D newLocation = coordinateCentered(coordinate, heading, distance);
- return newLocation;
-}
-
-
-
-
-
-@interface MBXDroppedPinAnnotation : MGLPointAnnotation
-@end
-
-@implementation MBXDroppedPinAnnotation
-@end
-
-@interface MBXCustomCalloutAnnotation : MGLPointAnnotation
-@property (nonatomic, assign) BOOL anchoredToAnnotation;
-@property (nonatomic, assign) BOOL dismissesAutomatically;
-@end
-
-@implementation MBXCustomCalloutAnnotation
-@end
-
-@interface MBXSpriteBackedAnnotation : MGLPointAnnotation
-@end
-
-@implementation MBXSpriteBackedAnnotation
-@end
-
-@interface MBXViewController () <UITableViewDelegate,
- UITableViewDataSource,
- MGLMapViewDelegate,
- MGLComputedShapeSourceDataSource>
-
-
-@property (nonatomic) IBOutlet MGLMapView *mapView;
-@property (nonatomic) MBXState *currentState;
-@property (weak, nonatomic) IBOutlet UIButton *hudLabel;
-@property (weak, nonatomic) IBOutlet MBXFrameTimeGraphView *frameTimeGraphView;
-@property (nonatomic) NSInteger styleIndex;
-@property (nonatomic) BOOL customUserLocationAnnnotationEnabled;
-@property (nonatomic, getter=isLocalizingLabels) BOOL localizingLabels;
-@property (nonatomic) BOOL reuseQueueStatsEnabled;
-@property (nonatomic) BOOL frameTimeGraphEnabled;
-@property (nonatomic) BOOL shouldLimitCameraChanges;
-@property (nonatomic) BOOL randomWalk;
-@property (nonatomic) BOOL zoomLevelOrnamentEnabled;
-@property (nonatomic) NSMutableArray<UIWindow *> *helperWindows;
-@property (nonatomic) NSMutableArray<UIView *> *contentInsetsOverlays;
-
-@end
-
-@interface MGLMapView (MBXViewController)
-@property (nonatomic) NSDictionary *annotationViewReuseQueueByIdentifier;
-@end
-
-@implementation MBXViewController
-{
- BOOL _isTouringWorld;
- BOOL _contentInsetsEnabled;
- UIEdgeInsets _originalContentInsets;
-}
-
-#pragma mark - Setup & Teardown
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
-
- // Keep track of current map state and debug preferences,
- // saving and restoring when the application's state changes.
- self.currentState = [MBXStateManager sharedManager].currentState;
-
- if (!self.currentState) {
- // Create a new state with the below default values
- self.currentState = [[MBXState alloc] init];
-
- self.mapView.showsUserHeadingIndicator = YES;
- self.mapView.showsScale = YES;
- self.zoomLevelOrnamentEnabled = NO;
- self.frameTimeGraphEnabled = NO;
- } else {
- // Revert to the previously saved state
- [self restoreMapState:nil];
- }
-
- [self updateHUD];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveCurrentMapState:) name:UIApplicationDidEnterBackgroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(restoreMapState:) name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveCurrentMapState:) name:UIApplicationWillTerminateNotification object:nil];
-
- if ([MGLAccountManager accessToken].length)
- {
- self.styleIndex = -1;
- [self cycleStyles:self];
- }
-
- self.mapView.experimental_enableFrameRateMeasurement = YES;
- self.hudLabel.titleLabel.font = [UIFont monospacedDigitSystemFontOfSize:10 weight:UIFontWeightRegular];
-
- // Add fall-through single tap gesture recognizer. This will be called when
- // the map view's tap recognizers fail.
- UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
- for (UIGestureRecognizer *gesture in self.mapView.gestureRecognizers) {
- if ([gesture isKindOfClass:[UITapGestureRecognizer class]]) {
- [singleTap requireGestureRecognizerToFail:gesture];
- }
- }
- [self.mapView addGestureRecognizer:singleTap];
-
- // Display a secondary map on any connected external display.
- // https://developer.apple.com/documentation/uikit/windows_and_screens/displaying_content_on_a_connected_screen?language=objc
- self.helperWindows = [NSMutableArray array];
- [[NSNotificationCenter defaultCenter] addObserverForName:UIScreenDidConnectNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
- UIScreen *helperScreen = note.object;
- UIWindow *helperWindow = [[UIWindow alloc] initWithFrame:helperScreen.bounds];
- helperWindow.screen = helperScreen;
- UIViewController *helperViewController = [[UIViewController alloc] init];
- MGLMapView *helperMapView = [[MGLMapView alloc] initWithFrame:helperWindow.bounds styleURL:MGLStyle.satelliteStreetsStyleURL];
- helperMapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- helperMapView.camera = self.mapView.camera;
- helperMapView.compassView.hidden = YES;
- helperViewController.view = helperMapView;
- helperWindow.rootViewController = helperViewController;
- helperWindow.hidden = NO;
- [self.helperWindows addObject:helperWindow];
- }];
- [[NSNotificationCenter defaultCenter] addObserverForName:UIScreenDidDisconnectNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
- UIScreen *helperScreen = note.object;
- for (UIWindow *window in self.helperWindows) {
- if (window.screen == helperScreen) {
- [self.helperWindows removeObject:window];
- }
- }
- }];
-}
-
-- (UIInterfaceOrientationMask)supportedInterfaceOrientations
-{
- return UIInterfaceOrientationMaskAll;
-}
-
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(__unused id)sender {
- if ([segue.identifier isEqualToString:@"ShowOfflinePacks"]) {
- MBXOfflinePacksTableViewController *controller = [segue destinationViewController];
- controller.mapView = self.mapView;
- }
-}
-
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-#pragma mark - Debugging Interface
-
-- (IBAction)showSettings:(__unused id)sender
-{
- self.randomWalk = NO;
-
- UITableViewController *settingsViewController = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
- settingsViewController.tableView.delegate = self;
- settingsViewController.tableView.dataSource = self;
- settingsViewController.title = @"Debugging";
- settingsViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissSettings:)];
- UINavigationController *wrapper = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
- wrapper.navigationBar.tintColor = self.navigationController.navigationBar.tintColor;
- [self.navigationController presentViewController:wrapper animated:YES completion:nil];
-}
-
-- (void)dismissSettings:(__unused id)sender
-{
- [self dismissViewControllerAnimated:YES completion:nil];
-}
-
-- (NSArray <NSString *> *)settingsSectionTitles
-{
- return @[
- @"Debug Tools",
- @"Annotations",
- @"Runtime Styling",
- @"Miscellaneous"
- ];
-}
-
-- (NSArray <NSString *> *)settingsTitlesForSection:(NSInteger)section
-{
- NSMutableArray *settingsTitles = [NSMutableArray array];
-
- MGLMapDebugMaskOptions debugMask = self.mapView.debugMask;
-
- switch (section)
- {
- case MBXSettingsDebugTools:
- [settingsTitles addObjectsFromArray:@[
- @"Reset position",
- [NSString stringWithFormat:@"%@ tile boundaries",
- (debugMask & MGLMapDebugTileBoundariesMask ? @"Hide" :@"Show")],
- [NSString stringWithFormat:@"%@ tile info",
- (debugMask & MGLMapDebugTileInfoMask ? @"Hide" :@"Show")],
- [NSString stringWithFormat:@"%@ tile timestamps",
- (debugMask & MGLMapDebugTimestampsMask ? @"Hide" :@"Show")],
- [NSString stringWithFormat:@"%@ collision boxes",
- (debugMask & MGLMapDebugCollisionBoxesMask ? @"Hide" :@"Show")],
- [NSString stringWithFormat:@"%@ overdraw visualization",
- (debugMask & MGLMapDebugOverdrawVisualizationMask ? @"Hide" :@"Show")],
- [NSString stringWithFormat:@"%@ zoom level ornament", (self.zoomLevelOrnamentEnabled ? @"Hide" :@"Show")],
- [NSString stringWithFormat:@"%@ frame time graph", (self.frameTimeGraphEnabled ? @"Hide" :@"Show")],
- [NSString stringWithFormat:@"%@ reuse queue stats", (self.reuseQueueStatsEnabled ? @"Hide" :@"Show")]
- ]];
- break;
- case MBXSettingsAnnotations:
- [settingsTitles addObjectsFromArray:@[
- @"Add 100 Views",
- @"Add 1,000 Views",
- @"Add 10,000 Views",
- @"Add 100 Sprites",
- @"Add 1,000 Sprites",
- @"Add 10,000 Sprites",
- @"Animate an Annotation View",
- @"Add Test Shapes",
- @"Add Point With Custom Callout",
- @"Query Annotations",
- [NSString stringWithFormat:@"%@ Custom User Dot", (_customUserLocationAnnnotationEnabled ? @"Disable" : @"Enable")],
- @"Remove Annotations",
- @"Select an offscreen point annotation",
- @"Center selected annotation",
- @"Add visible area polyline"
- ]];
- break;
- case MBXSettingsRuntimeStyling:
- [settingsTitles addObjectsFromArray:@[
- @"Add Building Extrusions",
- @"Style Water With Function",
- @"Style Roads With Function",
- @"Add Raster & Apply Function",
- @"Add Shapes & Apply Fill",
- @"Style Symbol Color",
- @"Style Building Fill Color",
- @"Style Ferry Line Color",
- @"Remove Parks",
- @"Style Fill With Filter",
- @"Style Lines With Filter",
- @"Style Fill With Numeric Filter",
- @"Query and Style Features",
- @"Style Feature",
- @"Style Dynamic Point Collection",
- @"Update Shape Source: Data",
- @"Update Shape Source: URL",
- @"Update Shape Source: Features",
- @"Style Vector Tile Source",
- @"Style Raster Tile Source",
- @"Style Image Source",
- @"Add Route Line",
- @"Add Lime Green Triangle Layer",
- @"Dynamically Style Polygon",
- @"Add Custom Lat/Lon Grid",
- ]];
- break;
- case MBXSettingsMiscellaneous:
- [settingsTitles addObjectsFromArray:@[
- @"Start World Tour",
- @"Random Tour",
- @"Embedded Map View",
- [NSString stringWithFormat:@"%@ Second Map", ([self.view viewWithTag:2] == nil ? @"Show" : @"Hide")],
- [NSString stringWithFormat:@"Show Labels in %@", (_localizingLabels ? @"Default Language" : [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[self bestLanguageForUser]])],
- @"Show Snapshots",
- @"Missing Icon",
- [NSString stringWithFormat:@"%@ Camera Changes", (_shouldLimitCameraChanges ? @"Unlimit" : @"Limit")],
- [NSString stringWithFormat:@"Turn %@ Content Insets", (_contentInsetsEnabled ? @"Off" : @"On")],
- @"View Route Simulation",
- @"Ornaments Placement",
- ]];
-
- break;
- default:
- NSAssert(NO, @"All settings sections should be implemented");
- break;
- }
-
- return settingsTitles;
-}
-
-- (void)performActionForSettingAtIndexPath:(NSIndexPath *)indexPath
-{
- switch (indexPath.section)
- {
- case MBXSettingsDebugTools:
- switch (indexPath.row)
- {
- case MBXSettingsDebugToolsResetPosition:
- [self.mapView resetPosition];
- break;
- case MBXSettingsDebugToolsTileBoundaries:
- self.currentState.debugMask ^= MGLMapDebugTileBoundariesMask;
- break;
- case MBXSettingsDebugToolsTileInfo:
- self.currentState.debugMask ^= MGLMapDebugTileInfoMask;
- break;
- case MBXSettingsDebugToolsTimestamps:
- self.currentState.debugMask ^= MGLMapDebugTimestampsMask;
- break;
- case MBXSettingsDebugToolsCollisionBoxes:
- self.currentState.debugMask ^= MGLMapDebugCollisionBoxesMask;
- break;
- case MBXSettingsDebugToolsOverdrawVisualization:
- self.currentState.debugMask ^= MGLMapDebugOverdrawVisualizationMask;
- break;
- case MBXSettingsDebugToolsShowZoomLevel:
- {
- self.zoomLevelOrnamentEnabled = !self.zoomLevelOrnamentEnabled;
- self.currentState.showsZoomLevelOrnament = self.zoomLevelOrnamentEnabled;
- self.hudLabel.hidden = !self.zoomLevelOrnamentEnabled;
- self.reuseQueueStatsEnabled = NO;
- [self updateHUD];
- break;
- }
- case MBXSettingsDebugToolsShowFrameTimeGraph:
- {
- self.frameTimeGraphEnabled = !self.frameTimeGraphEnabled;
- self.currentState.showsTimeFrameGraph = !self.currentState.showsTimeFrameGraph;
- self.frameTimeGraphView.hidden = !self.frameTimeGraphEnabled;
- [self updateHUD];
- break;
- }
- case MBXSettingsDebugToolsShowReuseQueueStats:
- {
- self.reuseQueueStatsEnabled = !self.currentState.reuseQueueStatsEnabled;
- self.hudLabel.hidden = !self.currentState.reuseQueueStatsEnabled;
- self.zoomLevelOrnamentEnabled = NO;
- [self updateHUD];
- break;
- }
- default:
- NSAssert(NO, @"All debug tools setting rows should be implemented");
- break;
- }
-
- self.mapView.debugMask = self.currentState.debugMask;
-
- break;
- case MBXSettingsAnnotations:
- switch (indexPath.row)
- {
- case MBXSettingsAnnotations100Views:
- [self parseFeaturesAddingCount:100 usingViews:YES];
- break;
- case MBXSettingsAnnotations1000Views:
- [self parseFeaturesAddingCount:1000 usingViews:YES];
- break;
- case MBXSettingsAnnotations10000Views:
- [self parseFeaturesAddingCount:10000 usingViews:YES];
- break;
- case MBXSettingsAnnotations100Sprites:
- [self parseFeaturesAddingCount:100 usingViews:NO];
- break;
- case MBXSettingsAnnotations1000Sprites:
- [self parseFeaturesAddingCount:1000 usingViews:NO];
- break;
- case MBXSettingsAnnotations10000Sprites:
- [self parseFeaturesAddingCount:10000 usingViews:NO];
- break;
- case MBXSettingsAnnotationAnimation:
- [self animateAnnotationView];
- break;
- case MBXSettingsAnnotationsTestShapes:
- [self addTestShapes];
- break;
- case MBXSettingsAnnotationsCustomCallout:
- [self addAnnotationWithCustomCallout];
- break;
- case MBXSettingsAnnotationsQueryAnnotations:
- [self testQueryPointAnnotations];
- break;
- case MBXSettingsAnnotationsCustomUserDot:
- [self toggleCustomUserDot];
- break;
- case MBXSettingsAnnotationsRemoveAnnotations:
- [self.mapView removeAnnotations:self.mapView.annotations];
- break;
- case MBXSettingsAnnotationSelectRandomOffscreenPointAnnotation:
- [self selectAnOffscreenPointAnnotation];
- break;
- case MBXSettingsAnnotationCenterSelectedAnnotation:
- [self centerSelectedAnnotation];
- break;
- case MBXSettingsAnnotationAddVisibleAreaPolyline:
- [self addVisibleAreaPolyline];
- break;
- default:
- NSAssert(NO, @"All annotations setting rows should be implemented");
- break;
- }
- break;
- case MBXSettingsRuntimeStyling:
- switch (indexPath.row)
- {
- case MBXSettingsRuntimeStylingBuildingExtrusions:
- [self styleBuildingExtrusions];
- break;
- case MBXSettingsRuntimeStylingWater:
- [self styleWaterLayer];
- break;
- case MBXSettingsRuntimeStylingRoads:
- [self styleRoadLayer];
- break;
- case MBXSettingsRuntimeStylingRaster:
- [self styleRasterLayer];
- break;
- case MBXSettingsRuntimeStylingShape:
- [self styleShapeSource];
- break;
- case MBXSettingsRuntimeStylingSymbols:
- [self styleSymbolLayer];
- break;
- case MBXSettingsRuntimeStylingBuildings:
- [self styleBuildingLayer];
- break;
- case MBXSettingsRuntimeStylingFerry:
- [self styleFerryLayer];
- break;
- case MBXSettingsRuntimeStylingParks:
- [self removeParkLayer];
- break;
- case MBXSettingsRuntimeStylingFilteredFill:
- [self styleFilteredFill];
- break;
- case MBXSettingsRuntimeStylingFilteredLines:
- [self styleFilteredLines];
- break;
- case MBXSettingsRuntimeStylingNumericFilteredFill:
- [self styleNumericFilteredFills];
- break;
- case MBXSettingsRuntimeStylingStyleQuery:
- [self styleQuery];
- break;
- case MBXSettingsRuntimeStylingFeatureSource:
- [self styleFeature];
- break;
- case MBXSettingsRuntimeStylingPointCollection:
- [self styleDynamicPointCollection];
- break;
- case MBXSettingsRuntimeStylingUpdateShapeSourceURL:
- [self updateShapeSourceURL];
- break;
- case MBXSettingsRuntimeStylingUpdateShapeSourceData:
- [self updateShapeSourceData];
- break;
- case MBXSettingsRuntimeStylingUpdateShapeSourceFeatures:
- [self updateShapeSourceFeatures];
- break;
- case MBXSettingsRuntimeStylingVectorTileSource:
- [self styleVectorTileSource];
- break;
- case MBXSettingsRuntimeStylingRasterTileSource:
- [self styleRasterTileSource];
- break;
- case MBXSettingsRuntimeStylingImageSource:
- [self styleImageSource];
- break;
- case MBXSettingsRuntimeStylingRouteLine:
- [self styleRouteLine];
- break;
- case MBXSettingsRuntimeStylingAddLimeGreenTriangleLayer:
- [self styleAddLimeGreenTriangleLayer];
- break;
- case MBXSettingsRuntimeStylingDDSPolygon:
- [self stylePolygonWithDDS];
- break;
- case MBXSettingsRuntimeStylingCustomLatLonGrid:
- [self addLatLonGrid];
- break;
- default:
- NSAssert(NO, @"All runtime styling setting rows should be implemented");
- break;
- }
- break;
- case MBXSettingsMiscellaneous:
- switch (indexPath.row)
- {
- case MBXSettingsMiscellaneousLocalizeLabels:
- [self toggleStyleLabelsLanguage];
- break;
- case MBXSettingsMiscellaneousWorldTour:
- [self startWorldTour];
- break;
- case MBXSettingsMiscellaneousRandomTour:
- [self randomWorldTour];
- break;
- case MBXSettingsMiscellaneousScrollView:
- {
- UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
- MBXEmbeddedMapViewController *embeddedMapViewController = (MBXEmbeddedMapViewController *)[storyboard instantiateViewControllerWithIdentifier:@"MBXEmbeddedMapViewController"];
- [self.navigationController pushViewController:embeddedMapViewController animated:YES];
- break;
- }
- case MBXSettingsMiscellaneousToggleTwoMaps:
- [self toggleSecondMapView];
- break;
- case MBXSettingsMiscellaneousShowSnapshots:
- {
- [self performSegueWithIdentifier:@"ShowSnapshots" sender:nil];
- break;
- }
- case MBXSettingsMiscellaneousMissingIcon:
- {
- [self loadMissingIcon];
- break;
- }
- case MBXSettingsMiscellaneousShowCustomLocationManager:
- {
- [self performSegueWithIdentifier:@"ShowCustomLocationManger" sender:nil];
- break;
- }
- case MBXSettingsMiscellaneousShouldLimitCameraChanges:
- {
- self.shouldLimitCameraChanges = !self.shouldLimitCameraChanges;
- if (self.shouldLimitCameraChanges) {
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(39.748947, -104.995882) zoomLevel:10 direction:0 animated:NO];
- }
- break;
- }
- case MBXSettingsMiscellaneousSetContentInsets:
- {
- if (!_contentInsetsEnabled) {
- _originalContentInsets = [self.mapView contentInset];
- }
- _contentInsetsEnabled = !_contentInsetsEnabled;
- self.automaticallyAdjustsScrollViewInsets = !_contentInsetsEnabled;
- UIEdgeInsets contentInsets = self.mapView.bounds.size.width > self.mapView.bounds.size.height
- ? UIEdgeInsetsMake(_originalContentInsets.top, 0.5 * self.mapView.bounds.size.width, _originalContentInsets.bottom, 0.0)
- : UIEdgeInsetsMake(0.25 * self.mapView.bounds.size.height, 0.0, _originalContentInsets.bottom, 0.25 * self.mapView.bounds.size.width);
- if (_contentInsetsEnabled) {
- if (!self.contentInsetsOverlays)
- self.contentInsetsOverlays = [NSMutableArray array];
- if (![self.contentInsetsOverlays count]) {
- UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.mapView.bounds.size.width, contentInsets.top)];
- view.backgroundColor = [UIColor colorWithRed:0.0 green:0.3 blue:0.3 alpha:0.5];
- [self.contentInsetsOverlays addObject:view];
- [self.view addSubview:view];
- view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, contentInsets.left, self.mapView.bounds.size.height)];
- view.backgroundColor = [UIColor colorWithRed:0.0 green:0.3 blue:0.3 alpha:0.5];
- [self.contentInsetsOverlays addObject:view];
- [self.view addSubview:view];
- view = [[UIView alloc]initWithFrame:CGRectMake(self.mapView.bounds.size.width - contentInsets.right, 0, contentInsets.right, self.mapView.bounds.size.height)];
- view.backgroundColor = [UIColor colorWithRed:0.0 green:0.3 blue:0.3 alpha:0.5];
- [self.contentInsetsOverlays addObject:view];
- [self.view addSubview:view];
- view = [[UIView alloc]initWithFrame:CGRectMake(0, self.mapView.bounds.size.height - contentInsets.bottom, self.mapView.bounds.size.width, self.mapView.bounds.size.height)];
- view.backgroundColor = [UIColor colorWithRed:0.0 green:0.3 blue:0.3 alpha:0.5];
- [self.contentInsetsOverlays addObject:view];
- [self.view addSubview:view];
- }
- [self.view bringSubviewToFront:self.contentInsetsOverlays[0]];
- [self.view bringSubviewToFront:self.contentInsetsOverlays[1]];
- [self.view bringSubviewToFront:self.contentInsetsOverlays[2]];
- [self.view bringSubviewToFront:self.contentInsetsOverlays[3]];
-
- // Denver streets parallel to cardinal directions help illustrate
- // viewport center offset when edge insets are set.
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:CLLocationCoordinate2DMake(39.72707, -104.9986)
- acrossDistance:100
- pitch:60
- heading:0];
- __weak MBXViewController *weakSelf = self;
- [self.mapView setCamera:camera withDuration:0.3 animationTimingFunction:nil completionHandler:^{
- [weakSelf.mapView setContentInset:contentInsets animated:YES completionHandler:nil];
- }];
- } else {
- [self.view sendSubviewToBack:self.contentInsetsOverlays[0]];
- [self.view sendSubviewToBack:self.contentInsetsOverlays[1]];
- [self.view sendSubviewToBack:self.contentInsetsOverlays[2]];
- [self.view sendSubviewToBack:self.contentInsetsOverlays[3]];
- [self.mapView setContentInset:_originalContentInsets animated:YES completionHandler:nil];
- }
- break;
- }
- case MBXSettingsMiscellaneousOrnamentsPlacement:
- {
- MBXOrnamentsViewController *ornamentsViewController = [[MBXOrnamentsViewController alloc] init];
- [self.navigationController pushViewController:ornamentsViewController animated:YES];
- break;
- }
- default:
- NSAssert(NO, @"All miscellaneous setting rows should be implemented");
- break;
- }
- break;
- default:
- NSAssert(NO, @"All settings sections should be implemented");
- break;
- }
-}
-
-- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
-{
- return [[self settingsSectionTitles] count];
-}
-
-- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-{
- return [[self settingsTitlesForSection:section] count];
-}
-
-- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
-{
- return [[self settingsSectionTitles] objectAtIndex:section];
-}
-
-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
-{
- UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
-
- cell.textLabel.text = [[self settingsTitlesForSection:indexPath.section] objectAtIndex:indexPath.row];
-
- return cell;
-}
-
-- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
-{
- [tableView deselectRowAtIndexPath:indexPath animated:NO];
-
- [self dismissViewControllerAnimated:YES completion:^
- {
- [self performActionForSettingAtIndexPath:indexPath];
- }];
-}
-
-#pragma mark - Debugging Actions
-
-- (void)parseFeaturesAddingCount:(NSUInteger)featuresCount usingViews:(BOOL)useViews
-{
- [self.mapView removeAnnotations:self.mapView.annotations];
-
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
- {
- NSData *featuresData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"points" ofType:@"geojson"]];
-
- id features = [NSJSONSerialization JSONObjectWithData:featuresData
- options:0
- error:nil];
-
- if ([features isKindOfClass:[NSDictionary class]])
- {
- NSMutableArray *annotations = [NSMutableArray array];
-
- for (NSDictionary *feature in features[@"features"])
- {
- CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake([feature[@"geometry"][@"coordinates"][1] doubleValue],
- [feature[@"geometry"][@"coordinates"][0] doubleValue]);
- NSString *title = feature[@"properties"][@"NAME"];
-
- MGLPointAnnotation *annotation = (useViews ? [MGLPointAnnotation new] : [MBXSpriteBackedAnnotation new]);
-
- annotation.coordinate = coordinate;
- annotation.title = title;
-
- [annotations addObject:annotation];
-
- if (annotations.count == featuresCount) break;
- }
-
- dispatch_async(dispatch_get_main_queue(), ^
- {
- [self.mapView addAnnotations:annotations];
- [self.mapView showAnnotations:annotations animated:YES];
- });
- }
- });
-}
-
-- (void)animateAnnotationView
- {
- MGLPointAnnotation *annot = [[MGLPointAnnotation alloc] init];
- annot.coordinate = self.mapView.centerCoordinate;
- [self.mapView addAnnotation:annot];
-
- // Move the annotation to a point that is offscreen.
- CGPoint point = CGPointMake(self.view.frame.origin.x - 200, CGRectGetMidY(self.view.frame));
-
- CLLocationCoordinate2D coord = [self.mapView convertPoint:point toCoordinateFromView:self.view];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [UIView animateWithDuration:10 animations:^{
- annot.coordinate = coord;
- }];
- });
- };
-
-- (void)addTestShapes
-{
- // Pacific Northwest triangle
- //
- CLLocationCoordinate2D triangleCoordinates[3] =
- {
- CLLocationCoordinate2DMake(44, -122),
- CLLocationCoordinate2DMake(46, -122),
- CLLocationCoordinate2DMake(46, -121)
- };
-
- MGLPolygon *triangle = [MGLPolygon polygonWithCoordinates:triangleCoordinates count:3];
-
- [self.mapView addAnnotation:triangle];
-
- // West coast polyline
- //
- CLLocationCoordinate2D lineCoordinates[4] = {
- CLLocationCoordinate2DMake(47.6025, -122.3327),
- CLLocationCoordinate2DMake(45.5189, -122.6726),
- CLLocationCoordinate2DMake(37.7790, -122.4177),
- CLLocationCoordinate2DMake(34.0532, -118.2349)
- };
- MGLPolyline *line = [MGLPolyline polylineWithCoordinates:lineCoordinates count:4];
- [self.mapView addAnnotation:line];
-
- // Orcas Island, WA hike polyline
- //
- NSDictionary *hike = [NSJSONSerialization JSONObjectWithData:
- [NSData dataWithContentsOfFile:
- [[NSBundle mainBundle] pathForResource:@"polyline" ofType:@"geojson"]]
- options:0
- error:nil];
-
- NSArray *hikeCoordinatePairs = hike[@"features"][0][@"geometry"][@"coordinates"];
-
- CLLocationCoordinate2D *polylineCoordinates = (CLLocationCoordinate2D *)malloc([hikeCoordinatePairs count] * sizeof(CLLocationCoordinate2D));
-
- for (NSUInteger i = 0; i < [hikeCoordinatePairs count]; i++)
- {
- polylineCoordinates[i] = CLLocationCoordinate2DMake([hikeCoordinatePairs[i][1] doubleValue], [hikeCoordinatePairs[i][0] doubleValue]);
- }
-
- MGLPolyline *polyline = [MGLPolyline polylineWithCoordinates:polylineCoordinates
- count:[hikeCoordinatePairs count]];
-
- [self.mapView addAnnotation:polyline];
-
- free(polylineCoordinates);
-
- // PA/NJ/DE polygons
- //
- NSDictionary *threestates = [NSJSONSerialization JSONObjectWithData:
- [NSData dataWithContentsOfFile:
- [[NSBundle mainBundle] pathForResource:@"threestates" ofType:@"geojson"]]
- options:0
- error:nil];
-
- for (NSDictionary *feature in threestates[@"features"])
- {
- NSArray *stateCoordinatePairs = feature[@"geometry"][@"coordinates"];
-
- while ([stateCoordinatePairs count] == 1) stateCoordinatePairs = stateCoordinatePairs[0];
-
- CLLocationCoordinate2D *polygonCoordinates = (CLLocationCoordinate2D *)malloc([stateCoordinatePairs count] * sizeof(CLLocationCoordinate2D));
-
- for (NSUInteger i = 0; i < [stateCoordinatePairs count]; i++)
- {
- polygonCoordinates[i] = CLLocationCoordinate2DMake([stateCoordinatePairs[i][1] doubleValue], [stateCoordinatePairs[i][0] doubleValue]);
- }
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:polygonCoordinates count:[stateCoordinatePairs count]];
- polygon.title = feature[@"properties"][@"NAME"];
-
- [self.mapView addAnnotation:polygon];
-
- free(polygonCoordinates);
- }
-
- // Null Island polygon with an interior hole
- //
- CLLocationCoordinate2D innerCoordinates[] = {
- CLLocationCoordinate2DMake(-5, -5),
- CLLocationCoordinate2DMake(-5, 5),
- CLLocationCoordinate2DMake(5, 5),
- CLLocationCoordinate2DMake(5, -5),
- };
- MGLPolygon *innerPolygon = [MGLPolygon polygonWithCoordinates:innerCoordinates count:sizeof(innerCoordinates) / sizeof(innerCoordinates[0])];
- CLLocationCoordinate2D outerCoordinates[] = {
- CLLocationCoordinate2DMake(-10, -10),
- CLLocationCoordinate2DMake(-10, 10),
- CLLocationCoordinate2DMake(10, 10),
- CLLocationCoordinate2DMake(10, -10),
- };
- MGLPolygon *outerPolygon = [MGLPolygon polygonWithCoordinates:outerCoordinates count:sizeof(outerCoordinates) / sizeof(outerCoordinates[0]) interiorPolygons:@[innerPolygon]];
- [self.mapView addAnnotation:outerPolygon];
-}
-
-- (void)addAnnotationWithCustomCallout
-{
- [self.mapView removeAnnotations:self.mapView.annotations];
-
- MBXCustomCalloutAnnotation *firstAnnotation = [[MBXCustomCalloutAnnotation alloc] init];
- firstAnnotation.coordinate = CLLocationCoordinate2DMake(48.8533940, 2.3775439);
- firstAnnotation.title = @"Open anchored to annotation";
- firstAnnotation.anchoredToAnnotation = YES;
- firstAnnotation.dismissesAutomatically = NO;
-
- MBXCustomCalloutAnnotation *secondAnnotation = [[MBXCustomCalloutAnnotation alloc] init];
- secondAnnotation.coordinate = CLLocationCoordinate2DMake(48.8543940, 2.3775439);
- secondAnnotation.title = @"Open not anchored to annotation";
- secondAnnotation.anchoredToAnnotation = NO;
- secondAnnotation.dismissesAutomatically = NO;
-
- MBXCustomCalloutAnnotation *thirdAnnotation = [[MBXCustomCalloutAnnotation alloc] init];
- thirdAnnotation.coordinate = CLLocationCoordinate2DMake(48.8553940, 2.3775439);
- thirdAnnotation.title = @"Dismisses automatically";
- thirdAnnotation.anchoredToAnnotation = YES;
- thirdAnnotation.dismissesAutomatically = YES;
-
- NSArray *annotations = @[firstAnnotation, secondAnnotation, thirdAnnotation];
- [self.mapView addAnnotations:annotations];
-
- [self.mapView showAnnotations:annotations animated:YES];
-}
-
-- (void)styleBuildingExtrusions
-{
- MGLSource* source = [self.mapView.style sourceWithIdentifier:@"composite"];
- if (source) {
-
- MGLFillExtrusionStyleLayer* layer = [[MGLFillExtrusionStyleLayer alloc] initWithIdentifier:@"extrudedBuildings" source:source];
- layer.sourceLayerIdentifier = @"building";
- layer.predicate = [NSPredicate predicateWithFormat:@"extrude == 'true' AND CAST(height, 'NSNumber') > 0"];
- layer.fillExtrusionBase = [NSExpression expressionForKeyPath:@"min_height"];
- layer.fillExtrusionHeight = [NSExpression expressionForKeyPath:@"height"];
-
- // Set the fill color to that of the existing building footprint layer, if it exists.
- MGLFillStyleLayer* buildingLayer = (MGLFillStyleLayer*)[self.mapView.style layerWithIdentifier:@"building"];
- if (buildingLayer) {
- if (buildingLayer.fillColor) {
- layer.fillExtrusionColor = buildingLayer.fillColor;
- } else {
- layer.fillExtrusionColor = [NSExpression expressionForConstantValue:[UIColor whiteColor]];
- }
-
- layer.fillExtrusionOpacity = [NSExpression expressionForConstantValue:@0.75];
- }
-
- MGLStyleLayer* labelLayer = [self.mapView.style layerWithIdentifier:@"waterway-label"];
- if (labelLayer) {
- [self.mapView.style insertLayer:layer belowLayer:labelLayer];
- } else {
- [self.mapView.style addLayer:layer];
- }
- }
-}
-
-- (void)styleWaterLayer
-{
- MGLFillStyleLayer *waterLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"water"];
- NSDictionary *waterColorStops = @{@6.0f: [UIColor yellowColor],
- @8.0f: [UIColor blueColor],
- @10.0f: [UIColor redColor],
- @12.0f: [UIColor greenColor],
- @14.0f: [UIColor blueColor]};
- NSExpression *fillColorExpression = [NSExpression mgl_expressionForInterpolatingExpression:NSExpression.zoomLevelVariableExpression
- withCurveType:MGLExpressionInterpolationModeLinear
- parameters:nil
- stops:[NSExpression expressionForConstantValue:waterColorStops]];
- waterLayer.fillColor = fillColorExpression;
-
- NSDictionary *fillAntialiasedStops = @{@11: @YES,
- @12: @NO,
- @13: @YES,
- @14: @NO,
- @15: @YES};
- waterLayer.fillAntialiased = [NSExpression mgl_expressionForSteppingExpression:NSExpression.zoomLevelVariableExpression
- fromExpression:[NSExpression expressionForConstantValue:@NO]
- stops:[NSExpression expressionForConstantValue:fillAntialiasedStops]];
-}
-
-- (void)styleRoadLayer
-{
- MGLLineStyleLayer *roadLayer = (MGLLineStyleLayer *)[self.mapView.style layerWithIdentifier:@"road-primary"];
- roadLayer.lineColor = [NSExpression expressionForConstantValue:[UIColor blackColor]];
-
- NSDictionary *lineWidthStops = @{@5: @5,
- @10: @15,
- @15: @30};
- NSExpression *lineWidthExpression = [NSExpression expressionWithFormat:
- @"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)",
- lineWidthStops];
- roadLayer.lineWidth = lineWidthExpression;
- roadLayer.lineGapWidth = lineWidthExpression;
-
- NSDictionary *roadLineColorStops = @{@10: [UIColor purpleColor],
- @13: [UIColor yellowColor],
- @16: [UIColor cyanColor]};
- roadLayer.lineColor = [NSExpression expressionWithFormat:
- @"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)",
- roadLineColorStops];
-
- roadLayer.visible = YES;
- roadLayer.maximumZoomLevel = 15;
- roadLayer.minimumZoomLevel = 13;
-}
-
-- (void)styleRasterLayer
-{
- NSURL *rasterURL = [NSURL URLWithString:@"mapbox://mapbox.satellite"];
- MGLRasterTileSource *rasterTileSource = [[MGLRasterTileSource alloc] initWithIdentifier:@"my-raster-tile-source" configurationURL:rasterURL tileSize:512];
- [self.mapView.style addSource:rasterTileSource];
-
- MGLRasterStyleLayer *rasterLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"my-raster-layer" source:rasterTileSource];
- NSDictionary *opacityStops = @{@20.0f: @1.0f,
- @5.0f: @0.0f};
- rasterLayer.rasterOpacity = [NSExpression expressionWithFormat:
- @"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)",
- opacityStops];
- [self.mapView.style addLayer:rasterLayer];
-}
-
-- (void)styleShapeSource
-{
- NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"amsterdam" ofType:@"geojson"];
- NSURL *geoJSONURL = [NSURL fileURLWithPath:filePath];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"ams" URL:geoJSONURL options:nil];
- [self.mapView.style addSource:source];
-
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"test" source:source];
- fillLayer.fillColor = [NSExpression expressionForConstantValue:[UIColor purpleColor]];
- [self.mapView.style addLayer:fillLayer];
-
-}
-
-- (void)styleSymbolLayer
-{
- MGLSymbolStyleLayer *stateLayer = (MGLSymbolStyleLayer *)[self.mapView.style layerWithIdentifier:@"state-label-lg"];
- stateLayer.textColor = [NSExpression expressionForConstantValue:[UIColor redColor]];
-}
-
-- (void)styleBuildingLayer
-{
- MGLTransition transition = { 5, 1 };
- self.mapView.style.transition = transition;
- MGLFillStyleLayer *buildingLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"building"];
- buildingLayer.fillColor = [NSExpression expressionForConstantValue:[UIColor purpleColor]];
-}
-
-- (void)styleFerryLayer
-{
- MGLLineStyleLayer *ferryLineLayer = (MGLLineStyleLayer *)[self.mapView.style layerWithIdentifier:@"ferry"];
- ferryLineLayer.lineColor = [NSExpression expressionForConstantValue:[UIColor redColor]];
-}
-
-- (void)removeParkLayer
-{
- MGLFillStyleLayer *parkLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"park"];
- [self.mapView.style removeLayer:parkLayer];
-}
-
-- (void)styleFilteredFill
-{
- // set style and focus on Texas
- [self.mapView setStyleURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"fill_filter_style" ofType:@"json"]]];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(31, -100) zoomLevel:3 animated:NO];
-
- // after slight delay, fill in Texas (atypical use; we want to clearly see the change for test purposes)
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
- {
- MGLFillStyleLayer *statesLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"states"];
-
- // filter
- statesLayer.predicate = [NSPredicate predicateWithFormat:@"name == 'Texas'"];
-
- // paint properties
- statesLayer.fillColor = [NSExpression expressionForConstantValue:[UIColor redColor]];
- statesLayer.fillOpacity = [NSExpression expressionForConstantValue:@0.25];
- });
-}
-
-- (void)styleFilteredLines
-{
- // set style and focus on lower 48
- [self.mapView setStyleURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"line_filter_style" ofType:@"json"]]];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(40, -97) zoomLevel:5 animated:NO];
-
- // after slight delay, change styling for all Washington-named counties (atypical use; we want to clearly see the change for test purposes)
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
- {
- MGLLineStyleLayer *countiesLayer = (MGLLineStyleLayer *)[self.mapView.style layerWithIdentifier:@"counties"];
-
- // filter
- countiesLayer.predicate = [NSPredicate predicateWithFormat:@"NAME10 == 'Washington'"];
-
- // paint properties
- countiesLayer.lineColor = [NSExpression expressionForConstantValue:[UIColor redColor]];
- countiesLayer.lineOpacity = [NSExpression expressionForConstantValue:@0.75];
- countiesLayer.lineWidth = [NSExpression expressionForConstantValue:@5];
- });
-}
-
-- (void)styleNumericFilteredFills
-{
- // set style and focus on lower 48
- [self.mapView setStyleURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"numeric_filter_style" ofType:@"json"]]];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(40, -97) zoomLevel:5 animated:NO];
-
- // after slight delay, change styling for regions 200-299 (atypical use; we want to clearly see the change for test purposes)
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
- {
- MGLFillStyleLayer *regionsLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"regions"];
-
- // filter (testing both inline and format strings)
- regionsLayer.predicate = [NSPredicate predicateWithFormat:@"CAST(HRRNUM, 'NSNumber') >= %@ AND CAST(HRRNUM, 'NSNumber') < 300", @(200)];
-
- // paint properties
- regionsLayer.fillColor = [NSExpression expressionForConstantValue:[UIColor blueColor]];
- regionsLayer.fillOpacity = [NSExpression expressionForConstantValue:@0.5];
- });
-}
-
-- (void)styleQuery
-{
- CGRect queryRect = CGRectInset(self.mapView.bounds, 100, 200);
- NSArray *visibleFeatures = [self.mapView visibleFeaturesInRect:queryRect];
-
- NSString *querySourceID = @"query-source-id";
- NSString *queryLayerID = @"query-layer-id";
-
- // RTE if you don't remove the layer first
- // RTE if you pass a nill layer to remove layer
- MGLStyleLayer *layer = [self.mapView.style layerWithIdentifier:queryLayerID];
- if (layer) {
- [self.mapView.style removeLayer:layer];
- }
-
- // RTE if you pass a nill source to remove source
- MGLSource *source = [self.mapView.style sourceWithIdentifier:querySourceID];
- if (source) {
- [self.mapView.style removeSource:source];
- }
-
- dispatch_async(dispatch_get_main_queue(), ^{
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:querySourceID features:visibleFeatures options:nil];
- [self.mapView.style addSource:shapeSource];
-
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:queryLayerID source:shapeSource];
- fillLayer.fillColor = [NSExpression expressionForConstantValue:[UIColor blueColor]];
- fillLayer.fillOpacity = [NSExpression expressionForConstantValue:@0.5];
- [self.mapView.style addLayer:fillLayer];
- });
-}
-
-- (void)styleFeature
-{
- self.mapView.zoomLevel = 10;
- self.mapView.centerCoordinate = CLLocationCoordinate2DMake(51.068585180672635, -114.06074523925781);
-
- CLLocationCoordinate2D leafCoords[] = {
- {50.9683733218221,-114.07035827636719},
- {51.02325750523972,-114.06967163085938},
- {51.009434536947786,-114.14245605468749},
- {51.030599281184124,-114.12597656249999},
- {51.060386316691016,-114.21043395996094},
- {51.063838646941576,-114.17816162109375},
- {51.08152779888779,-114.19876098632812},
- {51.08066507029602,-114.16854858398438},
- {51.09662294502995,-114.17472839355469},
- {51.07764539352731,-114.114990234375},
- {51.13670896949613,-114.12391662597656},
- {51.13369295212583,-114.09576416015624},
- {51.17546878815025,-114.07585144042969},
- {51.140155605265896,-114.04632568359375},
- {51.15049396880196,-114.01542663574219},
- {51.088860342359965,-114.00924682617186},
- {51.12205789681453,-113.94813537597656},
- {51.106539930027225,-113.94882202148438},
- {51.117747873223344,-113.92616271972656},
- {51.10093493903458,-113.92616271972656},
- {51.10697105503078,-113.90625},
- {51.09144802136697,-113.9117431640625},
- {51.04916446529361,-113.97010803222655},
- {51.045279344649146,-113.9398956298828},
- {51.022825599852496,-114.06211853027344},
- {51.045279344649146,-113.9398956298828},
- {51.022825599852496,-114.06211853027344},
- {51.022825599852496,-114.06280517578125},
- {50.968805734317804,-114.06280517578125},
- {50.9683733218221,-114.07035827636719},
- };
- NSUInteger coordsCount = sizeof(leafCoords) / sizeof(leafCoords[0]);
-
- MGLPolygonFeature *feature = [MGLPolygonFeature polygonWithCoordinates:leafCoords count:coordsCount];
- feature.identifier = @"leaf-feature";
- feature.attributes = @{@"color": @"red"};
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"leaf-source" shape:feature options:nil];
- [self.mapView.style addSource:source];
-
- MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"leaf-fill-layer" source:source];
- layer.predicate = [NSPredicate predicateWithFormat:@"color = 'red'"];
- layer.fillColor = [NSExpression expressionForConstantValue:[UIColor redColor]];
- [self.mapView.style addLayer:layer];
-
- NSString *geoJSON = @"{\"type\": \"Feature\", \"properties\": {\"color\": \"green\"}, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -114.06847000122069, 51.050459433092655 ] }}";
-
- NSData *data = [geoJSON dataUsingEncoding:NSUTF8StringEncoding];
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:NULL];
- MGLShapeSource *pointSource = [[MGLShapeSource alloc] initWithIdentifier:@"leaf-point-source" shape:shape options:nil];
- [self.mapView.style addSource:pointSource];
-
- MGLCircleStyleLayer *circleLayer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"leaf-circle-layer" source:pointSource];
- circleLayer.circleColor = [NSExpression expressionForConstantValue:[UIColor greenColor]];
- circleLayer.predicate = [NSPredicate predicateWithFormat:@"color = 'green'"];
- [self.mapView.style addLayer:circleLayer];
-
-
- CLLocationCoordinate2D squareCoords[] = {
- {51.056070541830934, -114.0274429321289},
- {51.07937094724242, -114.0274429321289},
- {51.07937094724242, -113.98761749267578},
- {51.05607054183093, -113.98761749267578},
- {51.056070541830934, -114.0274429321289},
- };
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:squareCoords count:sizeof(squareCoords)/sizeof(squareCoords[0])];
- MGLShapeSource *plainShapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"leaf-plain-shape-source" shape:polygon options:nil];
- [self.mapView.style addSource:plainShapeSource];
-
- MGLFillStyleLayer *plainFillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"leaf-plain-fill-layer" source:plainShapeSource];
- plainFillLayer.fillColor = [NSExpression expressionForConstantValue:[UIColor yellowColor]];
- [self.mapView.style addLayer:plainFillLayer];
-}
-
-- (void)updateShapeSourceData
-{
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(40.329795743702064, -107.75390625) zoomLevel:11 animated:NO];
-
- NSString *geoJSON = @"{\"type\": \"FeatureCollection\",\"features\": [{\"type\": \"Feature\",\"properties\": {},\"geometry\": {\"type\": \"LineString\",\"coordinates\": [[-107.75390625,40.329795743702064],[-104.34814453125,37.64903402157866]]}}]}";
-
- NSData *data = [geoJSON dataUsingEncoding:NSUTF8StringEncoding];
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:NULL];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"mutable-data-source-id" shape:shape options:nil];
- [self.mapView.style addSource:source];
-
- MGLLineStyleLayer *layer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"mutable-data-layer-id" source:source];
- [self.mapView.style addLayer:layer];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- NSString *updatedGeoJSON = @"{\"type\": \"FeatureCollection\",\"features\": [{\"type\": \"Feature\",\"properties\": {},\"geometry\": {\"type\": \"LineString\",\"coordinates\": [[-107.75390625,40.329795743702064],[-109.34814453125,37.64903402157866]]}}]}";
- NSData *updatedData = [updatedGeoJSON dataUsingEncoding:NSUTF8StringEncoding];
- MGLShape *updatedShape = [MGLShape shapeWithData:updatedData encoding:NSUTF8StringEncoding error:NULL];
- source.shape = updatedShape;
- });
-}
-
-- (void)updateShapeSourceURL
-{
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(48.668731, -122.857151) zoomLevel:11 animated:NO];
-
- NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"polyline" ofType:@"geojson"];
- NSURL *geoJSONURL = [NSURL fileURLWithPath:filePath];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"mutable-data-source-url-id" URL:geoJSONURL options:nil];
- [self.mapView.style addSource:source];
-
- MGLLineStyleLayer *layer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"mutable-data-layer-url-id" source:source];
- [self.mapView.style addLayer:layer];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(41.563986787078704, -75.04843935793578) zoomLevel:8 animated:NO];
-
- NSString *threeStatesFilePath = [[NSBundle bundleForClass:self.class] pathForResource:@"threestates" ofType:@"geojson"];
- NSURL *updatedGeoJSONURL = [NSURL fileURLWithPath:threeStatesFilePath];
-
- source.URL = updatedGeoJSONURL;
- });
-}
-
-- (void)updateShapeSourceFeatures
-{
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(-41.1520, 288.6592) zoomLevel:10 animated:NO];
-
- CLLocationCoordinate2D smallBox[] = {
- {-41.14763798539186, 288.68019104003906},
- {-41.140915920129665, 288.68019104003906},
- {-41.140915920129665, 288.6887741088867},
- {-41.14763798539186, 288.6887741088867},
- {-41.14763798539186, 288.68019104003906}
- };
-
- CLLocationCoordinate2D largeBox[] = {
- {-41.17710352162799, 288.67298126220703},
- {-41.13962313627545, 288.67298126220703},
- {-41.13962313627545, 288.7261962890625},
- {-41.17710352162799, 288.7261962890625},
- {-41.17710352162799, 288.67298126220703}
- };
-
- MGLPolygonFeature *smallBoxFeature = [MGLPolygonFeature polygonWithCoordinates:smallBox count:sizeof(smallBox)/sizeof(smallBox[0])];
- MGLPolygonFeature *largeBoxFeature = [MGLPolygonFeature polygonWithCoordinates:largeBox count:sizeof(largeBox)/sizeof(largeBox[0])];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"mutable-data-source-features-id"
- shape:smallBoxFeature
- options:nil];
- [self.mapView.style addSource:source];
-
- MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"mutable-data-layer-features-id" source:source];
- layer.fillColor = [NSExpression expressionForConstantValue:[UIColor redColor]];
- [self.mapView.style addLayer:layer];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- source.shape = largeBoxFeature;
- });
-}
-
-- (void)styleDynamicPointCollection
-{
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(36.9979, -109.0441) zoomLevel:14 animated:NO];
-
- CLLocationCoordinate2D coordinates[] = {
- {37.00145594210082, -109.04960632324219},
- {37.00173012609867, -109.0404224395752},
- {36.99453246847359, -109.04960632324219},
- {36.99508088541243, -109.04007911682129},
- };
- MGLPointCollectionFeature *feature = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:4];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"wiggle-source" shape:feature options:nil];
- [self.mapView.style addSource:source];
-
- MGLCircleStyleLayer *layer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"wiggle-layer" source:source];
- [self.mapView.style addLayer:layer];
-}
-
-- (void)styleVectorTileSource
-{
- NSURL *url = [[NSURL alloc] initWithString:@"mapbox://mapbox.mapbox-terrain-v2"];
- MGLVectorTileSource *vectorTileSource = [[MGLVectorTileSource alloc] initWithIdentifier:@"style-vector-tile-source-id" configurationURL:url];
- [self.mapView.style addSource:vectorTileSource];
-
- MGLBackgroundStyleLayer *backgroundLayer = [[MGLBackgroundStyleLayer alloc] initWithIdentifier:@"style-vector-background-layer-id"];
- backgroundLayer.backgroundColor = [NSExpression expressionForConstantValue:[UIColor blackColor]];
- [self.mapView.style addLayer:backgroundLayer];
-
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"style-vector-line-layer-id" source:vectorTileSource];
- lineLayer.sourceLayerIdentifier = @"contour";
- lineLayer.lineJoin = [NSExpression expressionForConstantValue:@"round"];
- lineLayer.lineCap = [NSExpression expressionForConstantValue:@"round"];
- lineLayer.lineColor = [NSExpression expressionForConstantValue:[UIColor greenColor]];
-
- [self.mapView.style addLayer:lineLayer];
-}
-
-- (void)styleRasterTileSource
-{
- NSString *tileURL = [NSString stringWithFormat:@"https://stamen-tiles.a.ssl.fastly.net/terrain-background/{z}/{x}/{y}%@.jpg", UIScreen.mainScreen.nativeScale > 1 ? @"@2x" : @""];
- MGLRasterTileSource *rasterTileSource = [[MGLRasterTileSource alloc] initWithIdentifier:@"style-raster-tile-source-id" tileURLTemplates:@[tileURL] options:@{
- MGLTileSourceOptionTileSize: @256,
- }];
- [self.mapView.style addSource:rasterTileSource];
-
- MGLRasterStyleLayer *rasterLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"style-raster-layer-id" source:rasterTileSource];
- [self.mapView.style addLayer:rasterLayer];
-}
-
-- (void)styleImageSource
-{
- MGLCoordinateQuad coordinateQuad = {
- { 46.437, -80.425 },
- { 37.936, -80.425 },
- { 37.936, -71.516 },
- { 46.437, -71.516 } };
-
- MGLImageSource *imageSource = [[MGLImageSource alloc] initWithIdentifier:@"style-image-source-id" coordinateQuad:coordinateQuad URL:[NSURL URLWithString:@"https://www.mapbox.com/mapbox-gl-js/assets/radar0.gif"]];
-
- [self.mapView.style addSource:imageSource];
-
- MGLRasterStyleLayer *rasterLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"style-raster-image-layer-id" source:imageSource];
- [self.mapView.style addLayer:rasterLayer];
-
- [NSTimer scheduledTimerWithTimeInterval:1.0
- target:self
- selector:@selector(updateAnimatedImageSource:)
- userInfo:imageSource
- repeats:YES];
-}
-
-
-- (void)updateAnimatedImageSource:(NSTimer *)timer {
- static int radarSuffix = 0;
- MGLImageSource *imageSource = (MGLImageSource *)timer.userInfo;
- NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.mapbox.com/mapbox-gl-js/assets/radar%d.gif", radarSuffix++]];
- [imageSource setValue:url forKey:@"URL"];
- if (radarSuffix > 3) {
- radarSuffix = 0;
- }
-}
-
--(void)toggleStyleLabelsLanguage
-{
- _localizingLabels = !_localizingLabels;
- [self.mapView.style localizeLabelsIntoLocale:_localizingLabels ? [NSLocale localeWithLocaleIdentifier:@"mul"] : nil];
-}
-
-- (void)styleRouteLine
-{
- CLLocationCoordinate2D coords[] = {
- { 43.84455590478528, 10.504238605499268 },
- { 43.84385562343126, 10.504125952720642 },
- { 43.84388657526694, 10.503299832344055 },
- { 43.84332557075269, 10.503235459327698 },
- { 43.843441641085036, 10.502264499664307 },
- { 43.84396395478592, 10.50242006778717 },
- { 43.84406067904351, 10.501744151115416 },
- { 43.84422317544319, 10.501792430877686 }
- };
- NSInteger count = sizeof(coords) / sizeof(coords[0]);
-
- [self.mapView setCenterCoordinate:coords[0] zoomLevel:16 animated:YES];
-
- MGLPolylineFeature *routeLine = [MGLPolylineFeature polylineWithCoordinates:coords count:count];
-
- MGLShapeSource *routeSource = [[MGLShapeSource alloc] initWithIdentifier:@"style-route-source" shape:routeLine options:nil];
- [self.mapView.style addSource:routeSource];
-
- MGLLineStyleLayer *baseRouteLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"style-base-route-layer" source:routeSource];
- baseRouteLayer.lineColor = [NSExpression expressionForConstantValue:[UIColor orangeColor]];
- baseRouteLayer.lineWidth = [NSExpression expressionForConstantValue:@20];
- baseRouteLayer.lineOpacity = [NSExpression expressionForConstantValue:@0.5];
- baseRouteLayer.lineCap = [NSExpression expressionForConstantValue:@"round"];
- baseRouteLayer.lineJoin = [NSExpression expressionForConstantValue:@"round"];
- [self.mapView.style addLayer:baseRouteLayer];
-
- MGLLineStyleLayer *routeLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"style-route-layer" source:routeSource];
- routeLayer.lineColor = [NSExpression expressionForConstantValue:[UIColor whiteColor]];
- routeLayer.lineWidth = [NSExpression expressionForConstantValue:@15];
- routeLayer.lineOpacity = [NSExpression expressionForConstantValue:@0.8];
- routeLayer.lineCap = [NSExpression expressionForConstantValue:@"round"];
- routeLayer.lineJoin = [NSExpression expressionForConstantValue:@"round"];
- [self.mapView.style addLayer:routeLayer];
-}
-
-- (void)styleAddLimeGreenTriangleLayer
-{
- LimeGreenStyleLayer *layer = [[LimeGreenStyleLayer alloc] initWithIdentifier:@"mbx-custom"];
- [self.mapView.style addLayer:layer];
-}
-
-- (void)stylePolygonWithDDS {
- CLLocationCoordinate2D leftCoords[] = {
- {37.73081027834234, -122.49412536621094},
- {37.7566013348511, -122.49412536621094},
- {37.7566013348511, -122.46253967285156},
- {37.73081027834234, -122.46253967285156},
- {37.73081027834234, -122.49412536621094},
- };
- CLLocationCoordinate2D rightCoords[] = {
- {37.73135334055843, -122.44640350341795},
- {37.75741564287944, -122.44640350341795},
- {37.75741564287944, -122.41310119628906},
- {37.73135334055843, -122.41310119628906},
- {37.73135334055843, -122.44640350341795},
- };
- MGLPolygonFeature *leftFeature = [MGLPolygonFeature polygonWithCoordinates:leftCoords count:5];
- leftFeature.attributes = @{@"fill": @(YES)};
-
- MGLPolygonFeature *rightFeature = [MGLPolygonFeature polygonWithCoordinates:rightCoords count:5];
- rightFeature.attributes = @{@"opacity": @(0.5)};
-
- MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"shape-source" features:@[leftFeature, rightFeature] options:nil];
- [self.mapView.style addSource:shapeSource];
-
- // source, categorical function that sets any feature with a "fill" attribute value of true to red color and anything without to green
- MGLFillStyleLayer *fillStyleLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"fill-layer" source:shapeSource];
- fillStyleLayer.fillColor = [NSExpression mgl_expressionForConditional:[NSPredicate predicateWithFormat:@"fill == YES"]
- trueExpression:[NSExpression expressionForConstantValue:[UIColor greenColor]]
- falseExpresssion:[NSExpression expressionForConstantValue:[UIColor redColor]]];
-
-
-
- // source, identity function that sets any feature with an "opacity" attribute to use that value and anything without to 1.0
- fillStyleLayer.fillOpacity = [NSExpression mgl_expressionForConditional:[NSPredicate predicateWithFormat:@"opacity != nil"]
- trueExpression:[NSExpression expressionForKeyPath:@"opacity"]
- falseExpresssion:[NSExpression expressionForConstantValue:@1.0]];
- [self.mapView.style addLayer:fillStyleLayer];
-}
-
-- (void)addLatLonGrid
-{
- MGLComputedShapeSource *source = [[MGLComputedShapeSource alloc] initWithIdentifier:@"latlon"
- options:@{MGLShapeSourceOptionMaximumZoomLevel:@14}];
- source.dataSource = self;
- [self.mapView.style addSource:source];
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"latlonlines"
- source:source];
- [self.mapView.style addLayer:lineLayer];
- MGLSymbolStyleLayer *labelLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"latlonlabels"
- source:source];
- labelLayer.text = [NSExpression expressionForKeyPath:@"value"];
- [self.mapView.style addLayer:labelLayer];
-}
-
-- (NSString *)bestLanguageForUser
-{
- // https://www.mapbox.com/vector-tiles/mapbox-streets-v8/#name-text--name_lang-code-text
- NSArray *supportedLanguages = @[ @"ar", @"de", @"en", @"es", @"fr", @"ja", @"ko", @"pt", @"ru", @"zh", @"zh-Hans", @"zh-Hant" ];
- NSArray<NSString *> *preferredLanguages = [NSBundle preferredLocalizationsFromArray:supportedLanguages forPreferences:[NSLocale preferredLanguages]];
- NSString *mostSpecificLanguage;
-
- for (NSString *language in preferredLanguages)
- {
- if (language.length > mostSpecificLanguage.length)
- {
- mostSpecificLanguage = language;
- }
- }
-
- return mostSpecificLanguage ?: @"en";
-}
-
-- (IBAction)startWorldTour
-{
- _isTouringWorld = YES;
-
- [self.mapView removeAnnotations:self.mapView.annotations];
- NSUInteger numberOfAnnotations = sizeof(WorldTourDestinations) / sizeof(WorldTourDestinations[0]);
- NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:numberOfAnnotations];
- for (NSUInteger i = 0; i < numberOfAnnotations; i++)
- {
- MBXDroppedPinAnnotation *annotation = [[MBXDroppedPinAnnotation alloc] init];
- annotation.coordinate = WorldTourDestinations[i];
- [annotations addObject:annotation];
- }
- [self.mapView addAnnotations:annotations];
- [self continueWorldTourWithRemainingAnnotations:annotations];
-}
-
-- (void)continueWorldTourWithRemainingAnnotations:(NSMutableArray<MGLPointAnnotation *> *)annotations
-{
- MGLPointAnnotation *nextAnnotation = annotations.firstObject;
- if (!nextAnnotation || !_isTouringWorld)
- {
- _isTouringWorld = NO;
- return;
- }
-
- [annotations removeObjectAtIndex:0];
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:nextAnnotation.coordinate
- acrossDistance:10
- pitch:arc4random_uniform(60)
- heading:arc4random_uniform(360)];
- __weak MBXViewController *weakSelf = self;
- [self.mapView flyToCamera:camera completionHandler:^{
- MBXViewController *strongSelf = weakSelf;
- [strongSelf performSelector:@selector(continueWorldTourWithRemainingAnnotations:)
- withObject:annotations
- afterDelay:2];
- }];
-}
-
-- (void)toggleCustomUserDot
-{
- _customUserLocationAnnnotationEnabled = !_customUserLocationAnnnotationEnabled;
- self.mapView.showsUserLocation = NO;
- self.mapView.userTrackingMode = MGLUserTrackingModeFollow;
-}
-
-- (void)testQueryPointAnnotations {
- NSNumber *visibleAnnotationCount = @(self.mapView.visibleAnnotations.count);
- NSString *message;
- if ([visibleAnnotationCount integerValue] == 1) {
- message = [NSString stringWithFormat:@"There is %@ visible annotation.", visibleAnnotationCount];
- } else {
- message = [NSString stringWithFormat:@"There are %@ visible annotations.", visibleAnnotationCount];
- }
-
- UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Visible Annotations" message:message preferredStyle:UIAlertControllerStyleAlert];
- [alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleCancel handler:nil]];
- [self presentViewController:alertController animated:YES completion:nil];
-}
-
-- (id<MGLAnnotation>)randomOffscreenPointAnnotation {
-
- NSPredicate *pointAnnotationPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
- return [evaluatedObject isKindOfClass:[MGLPointAnnotation class]];
- }];
-
- NSArray *annotations = [self.mapView.annotations filteredArrayUsingPredicate:pointAnnotationPredicate];
-
- if (annotations.count == 0) {
- return nil;
- }
-
- NSArray *visibleAnnotations = [self.mapView.visibleAnnotations filteredArrayUsingPredicate:pointAnnotationPredicate];
-
- if (visibleAnnotations.count == annotations.count) {
- return nil;
- }
-
- NSMutableArray *invisibleAnnotations = [annotations mutableCopy];
-
- if (visibleAnnotations.count > 0) {
- [invisibleAnnotations removeObjectsInArray:visibleAnnotations];
- }
-
- // Now pick a random offscreen annotation.
- uint32_t index = arc4random_uniform((uint32_t)invisibleAnnotations.count);
- return invisibleAnnotations[index];
-}
-
-- (void)selectAnOffscreenPointAnnotation {
- id<MGLAnnotation> annotation = [self randomOffscreenPointAnnotation];
- if (annotation) {
- [self.mapView selectAnnotation:annotation animated:YES completionHandler:nil];
-
- NSAssert(self.mapView.selectedAnnotations.firstObject, @"The annotation was not selected");
- }
-}
-
-- (void)centerSelectedAnnotation {
- id<MGLAnnotation> annotation = self.mapView.selectedAnnotations.firstObject;
-
- if (!annotation)
- return;
-
- CGPoint point = [self.mapView convertCoordinate:annotation.coordinate toPointToView:self.mapView];
-
- // Animate, so that point becomes the the center
- CLLocationCoordinate2D center = [self.mapView convertPoint:point toCoordinateFromView:self.mapView];
- [self.mapView setCenterCoordinate:center animated:YES];
-}
-
-- (void)addVisibleAreaPolyline {
- CGRect constrainedRect = UIEdgeInsetsInsetRect(self.mapView.bounds, self.mapView.contentInset);
-
- CLLocationCoordinate2D lineCoords[5];
-
- lineCoords[0] = [self.mapView convertPoint: CGPointMake(CGRectGetMinX(constrainedRect), CGRectGetMinY(constrainedRect)) toCoordinateFromView:self.mapView];
- lineCoords[1] = [self.mapView convertPoint: CGPointMake(CGRectGetMaxX(constrainedRect), CGRectGetMinY(constrainedRect)) toCoordinateFromView:self.mapView];
- lineCoords[2] = [self.mapView convertPoint: CGPointMake(CGRectGetMaxX(constrainedRect), CGRectGetMaxY(constrainedRect)) toCoordinateFromView:self.mapView];
- lineCoords[3] = [self.mapView convertPoint: CGPointMake(CGRectGetMinX(constrainedRect), CGRectGetMaxY(constrainedRect)) toCoordinateFromView:self.mapView];
- lineCoords[4] = lineCoords[0];
-
- MGLPolyline *line = [MGLPolyline polylineWithCoordinates:lineCoords
- count:sizeof(lineCoords)/sizeof(lineCoords[0])];
- [self.mapView addAnnotation:line];
-}
-
-- (void)loadMissingIcon
-{
- self.mapView.centerCoordinate = CLLocationCoordinate2DMake(0, 0);
- self.mapView.zoomLevel = 1;
- NSURL *customStyleJSON = [[NSBundle mainBundle] URLForResource:@"missing_icon" withExtension:@"json"];
- [self.mapView setStyleURL:customStyleJSON];
-}
-
-- (UIImage *)mapView:(MGLMapView *)mapView didFailToLoadImage:(NSString *)imageName {
- UIImage *backupImage = [UIImage imageNamed:@"AppIcon"];
- return backupImage;
-}
-
-#pragma mark - Random World Tour
-
-- (void)addAnnotations:(NSInteger)numAnnotations aroundCoordinate:(CLLocationCoordinate2D)coordinate radius:(CLLocationDistance)radius {
- NSMutableArray *annotations = [[NSMutableArray alloc] initWithCapacity:numAnnotations];
- for (NSInteger i = 0; i<numAnnotations; i++) {
-
- CLLocationDegrees heading = (CLLocationDegrees)arc4random_uniform(360);
- CLLocationDistance distance = (CLLocationDistance)arc4random_uniform(radius);
- CLLocationCoordinate2D newLocation = coordinateCentered(coordinate, heading, distance);
-
- MBXDroppedPinAnnotation *annotation = [[MBXDroppedPinAnnotation alloc] init];
- annotation.coordinate = newLocation;
- [annotations addObject:annotation];
- }
- [self.mapView addAnnotations:annotations];
-}
-
-- (void)randomWorldTour {
- // Consistent initial conditions (consider setting these by test params)
- srand48(0);
- [self.mapView removeAnnotations:self.mapView.annotations];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(31, -100) zoomLevel:3 animated:NO];
-
- [self randomWorldTourInternal];
-}
-
-- (void)randomWorldTourInternal {
-
- self.randomWalk = YES;
-
- // Remove all annotations
- NSTimeInterval duration = 16.0;
- __weak MBXViewController *weakSelf = self;
-
- // Remove old annotations, half-way through the flight.
- NSArray *annotationsToRemove = [self.mapView.annotations copy];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * 0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [weakSelf.mapView removeAnnotations:annotationsToRemove];
- });
-
- MBXDroppedPinAnnotation *annotation = [[MBXDroppedPinAnnotation alloc] init];
- annotation.coordinate = randomWorldCoordinate();
- [self.mapView addAnnotation:annotation];
-
- // Add annotations around that coord
- [self addAnnotations:50 aroundCoordinate:annotation.coordinate radius:100000]; // 100km
-
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:annotation.coordinate
- altitude:10000.0
- pitch:(CLLocationDegrees)arc4random_uniform(60)
- heading:(CLLocationDegrees)arc4random_uniform(360)];
- [self.mapView flyToCamera:camera
- withDuration:duration
- peakAltitude:2000000.0
- completionHandler:^{
- // This completion handler is currently called BEFORE the
- // region did change delegate method, and we don't have a "reason"
- // so we can't tell if the motion was cancelled. We use the delegate
- // for that, and set self.randomWalk. But since we want a delay
- // anyway, we can just check later. Not ideal though..
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- MBXViewController *strongSelf = weakSelf;
- if (strongSelf.randomWalk) {
- [strongSelf randomWorldTourInternal];
- }
- });
- }];
-}
-
-- (void)toggleSecondMapView {
- if ([self.view viewWithTag:2] == nil) {
- MGLMapView *secondMapView = [[MGLMapView alloc] initWithFrame:
- CGRectMake(0, self.view.bounds.size.height / 2,
- self.view.bounds.size.width, self.view.bounds.size.height / 2)];
- secondMapView.showsScale = YES;
- secondMapView.translatesAutoresizingMaskIntoConstraints = NO;
- secondMapView.tag = 2;
- for (NSLayoutConstraint *constraint in self.view.constraints)
- {
- if ((constraint.firstItem == self.mapView && constraint.firstAttribute == NSLayoutAttributeBottom) ||
- (constraint.secondItem == self.mapView && constraint.secondAttribute == NSLayoutAttributeBottom))
- {
- [self.view removeConstraint:constraint];
- break;
- }
- }
- [self.view addSubview:secondMapView];
- [self.view addConstraints:@[
- [NSLayoutConstraint constraintWithItem:self.mapView
- attribute:NSLayoutAttributeBottom
- relatedBy:NSLayoutRelationEqual
- toItem:self.view
- attribute:NSLayoutAttributeCenterY
- multiplier:1
- constant:0],
- [NSLayoutConstraint constraintWithItem:secondMapView
- attribute:NSLayoutAttributeCenterX
- relatedBy:NSLayoutRelationEqual
- toItem:self.view
- attribute:NSLayoutAttributeCenterX
- multiplier:1
- constant:0],
- [NSLayoutConstraint constraintWithItem:secondMapView
- attribute:NSLayoutAttributeWidth
- relatedBy:NSLayoutRelationEqual
- toItem:self.view
- attribute:NSLayoutAttributeWidth
- multiplier:1
- constant:0],
- [NSLayoutConstraint constraintWithItem:secondMapView
- attribute:NSLayoutAttributeTop
- relatedBy:NSLayoutRelationEqual
- toItem:self.view
- attribute:NSLayoutAttributeCenterY
- multiplier:1
- constant:0],
- [NSLayoutConstraint constraintWithItem:secondMapView
- attribute:NSLayoutAttributeBottom
- relatedBy:NSLayoutRelationEqual
- toItem:self.bottomLayoutGuide
- attribute:NSLayoutAttributeBottom
- multiplier:1
- constant:0],
- ]];
- } else {
- NSMutableArray *constraintsToRemove = [NSMutableArray array];
- MGLMapView *secondMapView = (MGLMapView *)[self.view viewWithTag:2];
- for (NSLayoutConstraint *constraint in self.view.constraints)
- {
- if (constraint.firstItem == secondMapView || constraint.secondItem == secondMapView)
- {
- [constraintsToRemove addObject:constraint];
- }
- }
- [self.view removeConstraints:constraintsToRemove];
- [secondMapView removeFromSuperview];
- [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.mapView
- attribute:NSLayoutAttributeBottom
- relatedBy:NSLayoutRelationEqual
- toItem:self.bottomLayoutGuide
- attribute:NSLayoutAttributeTop
- multiplier:1
- constant:0]];
- }
-}
-
-#pragma mark - User Actions
-
-- (void)handleSingleTap:(UITapGestureRecognizer *)singleTap {
- [self.navigationController setNavigationBarHidden:!self.navigationController.navigationBarHidden animated:YES];
-
- // This is how you'd get the coordinate for the point where the user tapped:
- // CGPoint tapPoint = [singleTap locationInView:self.mapView];
- // CLLocationCoordinate2D tapCoordinate = [self.mapView convertPoint:tapPoint toCoordinateFromView:nil];
-}
-
-- (IBAction)handleLongPress:(UILongPressGestureRecognizer *)longPress
-{
- if (longPress.state == UIGestureRecognizerStateBegan)
- {
- CGPoint point = [longPress locationInView:longPress.view];
- NSArray *features = [self.mapView visibleFeaturesAtPoint:point];
- NSString *title;
- for (id <MGLFeature> feature in features) {
- if (!title) {
- title = [feature attributeForKey:@"name_en"] ?: [feature attributeForKey:@"name"];
- }
- }
-
- MBXDroppedPinAnnotation *pin = [[MBXDroppedPinAnnotation alloc] init];
- pin.coordinate = [self.mapView convertPoint:point
- toCoordinateFromView:self.mapView];
- pin.title = title ?: @"Dropped Pin";
- pin.subtitle = [[[MGLCoordinateFormatter alloc] init] stringFromCoordinate:pin.coordinate];
-
-
- // Calling `addAnnotation:` on mapView is required here (since `selectAnnotation:animated` has
- // the side effect of adding the annotation if required, but returning an incorrect callout
- // positioning rect)
-
- [self.mapView addAnnotation:pin];
- [self.mapView selectAnnotation:pin animated:YES completionHandler:nil];
- }
-}
-
-- (IBAction)cycleStyles:(__unused id)sender
-{
- static NSArray *styleNames;
- static NSArray *styleURLs;
-
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- styleNames = @[
- @"Streets",
- @"Outdoors",
- @"Light",
- @"Dark",
- @"Satellite",
- @"Satellite Streets",
- ];
- styleURLs = @[
- [MGLStyle streetsStyleURL],
- [MGLStyle outdoorsStyleURL],
- [MGLStyle lightStyleURL],
- [MGLStyle darkStyleURL],
- [MGLStyle satelliteStyleURL],
- [MGLStyle satelliteStreetsStyleURL]
- ];
- NSAssert(styleNames.count == styleURLs.count, @"Style names and URLs don’t match.");
-
- // Make sure defaultStyleURLs is up-to-date.
- unsigned numMethods = 0;
- Method *methods = class_copyMethodList(object_getClass([MGLStyle class]), &numMethods);
- unsigned numStyleURLMethods = 0;
- for (NSUInteger i = 0; i < numMethods; i++) {
- Method method = methods[i];
- if (method_getNumberOfArguments(method) == 3 /* _cmd, self, version */) {
- SEL selector = method_getName(method);
- NSString *name = @(sel_getName(selector));
- if ([name hasSuffix:@"StyleURLWithVersion:"]) {
- numStyleURLMethods += 1;
- }
- }
- }
- NSAssert(numStyleURLMethods == styleNames.count,
- @"MGLStyle provides %u default styles but iosapp only knows about %lu of them.",
- numStyleURLMethods, (unsigned long)styleNames.count);
- });
-
- self.styleIndex = (self.styleIndex + 1) % styleNames.count;
-
- self.mapView.styleURL = styleURLs[self.styleIndex];
-
- UIButton *titleButton = (UIButton *)self.navigationItem.titleView;
- [titleButton setTitle:styleNames[self.styleIndex] forState:UIControlStateNormal];
-}
-
-- (IBAction)locateUser:(id)sender
-{
- MGLUserTrackingMode nextMode;
- NSString *nextAccessibilityValue;
- switch (self.mapView.userTrackingMode) {
- case MGLUserTrackingModeNone:
- nextMode = MGLUserTrackingModeFollow;
- nextAccessibilityValue = @"Follow location";
- break;
- case MGLUserTrackingModeFollow:
- nextMode = MGLUserTrackingModeFollowWithHeading;
- nextAccessibilityValue = @"Follow location and heading";
- break;
- case MGLUserTrackingModeFollowWithHeading:
- nextMode = MGLUserTrackingModeFollowWithCourse;
- nextAccessibilityValue = @"Follow course";
- break;
- case MGLUserTrackingModeFollowWithCourse:
- nextMode = MGLUserTrackingModeNone;
- nextAccessibilityValue = @"Off";
- break;
- }
- self.mapView.userTrackingMode = nextMode;
- [sender setAccessibilityValue:nextAccessibilityValue];
-}
-
-#pragma mark - UIViewDelegate
-
-- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
-{
- [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
- if (_contentInsetsEnabled)
- {
- _contentInsetsEnabled = NO;
- self.automaticallyAdjustsScrollViewInsets = YES;
- [self.mapView setContentInset:UIEdgeInsetsZero];
- }
- while (self.contentInsetsOverlays && [self.contentInsetsOverlays count]) {
- [[self.contentInsetsOverlays lastObject] removeFromSuperview];
- [self.contentInsetsOverlays removeLastObject];
- }
-}
-
-#pragma mark - MGLMapViewDelegate
-
-- (MGLAnnotationView *)mapView:(MGLMapView *)mapView viewForAnnotation:(id<MGLAnnotation>)annotation
-{
- if (annotation == mapView.userLocation)
- {
- if (_customUserLocationAnnnotationEnabled)
- {
- MBXUserLocationAnnotationView *annotationView = [[MBXUserLocationAnnotationView alloc] initWithFrame:CGRectZero];
- annotationView.frame = CGRectMake(0, 0, annotationView.intrinsicContentSize.width, annotationView.intrinsicContentSize.height);
- return annotationView;
- }
-
- return nil;
- }
- // Use GL backed pins for dropped pin annotations
- if ([annotation isKindOfClass:[MBXDroppedPinAnnotation class]] || [annotation isKindOfClass:[MBXSpriteBackedAnnotation class]])
- {
- return nil;
- }
-
- MBXAnnotationView *annotationView = (MBXAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:MBXViewControllerAnnotationViewReuseIdentifer];
- if (!annotationView)
- {
- annotationView = [[MBXAnnotationView alloc] initWithReuseIdentifier:MBXViewControllerAnnotationViewReuseIdentifer];
- annotationView.frame = CGRectMake(0, 0, 10, 10);
- annotationView.backgroundColor = [UIColor whiteColor];
-
- // Note that having two long press gesture recognizers on overlapping
- // views (`self.view` & `annotationView`) will cause weird behavior.
- // Comment out the pin dropping functionality in the handleLongPress:
- // method in this class to make draggable annotation views play nice.
- annotationView.draggable = YES;
- } else {
- // orange indicates that the annotation view was reused
- annotationView.backgroundColor = [UIColor orangeColor];
- }
- return annotationView;
-}
-
-- (MGLAnnotationImage *)mapView:(MGLMapView * __nonnull)mapView imageForAnnotation:(id <MGLAnnotation> __nonnull)annotation
-{
- if ([annotation isKindOfClass:[MBXDroppedPinAnnotation class]] || [annotation isKindOfClass:[MBXCustomCalloutAnnotation class]])
- {
- return nil; // use default marker
- }
-
- NSAssert([annotation isKindOfClass:[MBXSpriteBackedAnnotation class]], @"Annotations should be sprite-backed.");
-
- NSString *title = [(MGLPointAnnotation *)annotation title];
- if (!title.length) return nil;
- NSString *lastTwoCharacters = [title substringFromIndex:title.length - 2];
-
- MGLAnnotationImage *annotationImage = [mapView dequeueReusableAnnotationImageWithIdentifier:lastTwoCharacters];
-
- if ( ! annotationImage)
- {
- UIColor *color;
-
- // make every tenth annotation blue
- if ([lastTwoCharacters hasSuffix:@"0"]) {
- color = [UIColor blueColor];
- } else {
- color = [UIColor redColor];
- }
-
- UIImage *image = [self imageWithText:lastTwoCharacters backgroundColor:color];
- annotationImage = [MGLAnnotationImage annotationImageWithImage:image reuseIdentifier:lastTwoCharacters];
-
- // don't allow touches on blue annotations
- if ([color isEqual:[UIColor blueColor]]) annotationImage.enabled = NO;
- }
-
- return annotationImage;
-}
-
-
-- (UIImage *)imageWithText:(NSString *)text backgroundColor:(UIColor *)color
-{
- CGRect rect = CGRectMake(0, 0, 20, 15);
-
- UIGraphicsBeginImageContextWithOptions(rect.size, NO, [[UIScreen mainScreen] scale]);
-
- CGContextRef ctx = UIGraphicsGetCurrentContext();
-
- CGContextSetFillColorWithColor(ctx, [[color colorWithAlphaComponent:0.75] CGColor]);
- CGContextFillRect(ctx, rect);
-
- CGContextSetStrokeColorWithColor(ctx, [[UIColor blackColor] CGColor]);
- CGContextStrokeRectWithWidth(ctx, rect, 2);
-
- NSAttributedString *drawString = [[NSAttributedString alloc] initWithString:text attributes:@{
- NSFontAttributeName: [UIFont fontWithName:@"Arial-BoldMT" size:12],
- NSForegroundColorAttributeName: [UIColor whiteColor],
- }];
- CGSize stringSize = drawString.size;
- CGRect stringRect = CGRectMake((rect.size.width - stringSize.width) / 2,
- (rect.size.height - stringSize.height) / 2,
- stringSize.width,
- stringSize.height);
- [drawString drawInRect:stringRect];
-
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return image;
-}
-
-- (BOOL)mapView:(__unused MGLMapView *)mapView annotationCanShowCallout:(__unused id <MGLAnnotation>)annotation
-{
- return YES;
-}
-
-- (CGFloat)mapView:(__unused MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation
-{
- return ([annotation isKindOfClass:[MGLPolygon class]] ? 0.5 : 1.0);
-}
-
-- (UIColor *)mapView:(__unused MGLMapView *)mapView strokeColorForShapeAnnotation:(MGLShape *)annotation
-{
- UIColor *color = [annotation isKindOfClass:[MGLPolyline class]] ? [UIColor greenColor] : [UIColor blackColor];
- return [color colorWithAlphaComponent:0.9];
-}
-
-- (UIColor *)mapView:(__unused MGLMapView *)mapView fillColorForPolygonAnnotation:(__unused MGLPolygon *)annotation
-{
- UIColor *color = annotation.pointCount > 3 ? [UIColor greenColor] : [UIColor redColor];
- return [color colorWithAlphaComponent:0.5];
-}
-
-- (void)mapView:(__unused MGLMapView *)mapView didChangeUserTrackingMode:(MGLUserTrackingMode)mode animated:(__unused BOOL)animated
-{
- UIImage *newButtonImage;
- NSString *newButtonTitle;
-
- switch (mode) {
- case MGLUserTrackingModeNone:
- newButtonImage = [UIImage imageNamed:@"TrackingLocationOffMask.png"];
- break;
-
- case MGLUserTrackingModeFollow:
- newButtonImage = [UIImage imageNamed:@"TrackingLocationMask.png"];
- break;
-
- case MGLUserTrackingModeFollowWithHeading:
- newButtonImage = [UIImage imageNamed:@"TrackingHeadingMask.png"];
- break;
- case MGLUserTrackingModeFollowWithCourse:
- newButtonImage = nil;
- newButtonTitle = @"Course";
- break;
- }
-
- self.navigationItem.rightBarButtonItem.title = newButtonTitle;
- [UIView animateWithDuration:0.25 animations:^{
- self.navigationItem.rightBarButtonItem.image = newButtonImage;
- }];
-}
-
-- (nullable id <MGLCalloutView>)mapView:(__unused MGLMapView *)mapView calloutViewForAnnotation:(id<MGLAnnotation>)annotation
-{
- if ([annotation respondsToSelector:@selector(title)]
- && [annotation isKindOfClass:[MBXCustomCalloutAnnotation class]])
- {
- MBXCustomCalloutAnnotation *customAnnotation = (MBXCustomCalloutAnnotation *)annotation;
- MBXCustomCalloutView *calloutView = [[MBXCustomCalloutView alloc] init];
- calloutView.representedObject = annotation;
- calloutView.anchoredToAnnotation = customAnnotation.anchoredToAnnotation;
- calloutView.dismissesAutomatically = customAnnotation.dismissesAutomatically;
- return calloutView;
- }
- return nil;
-}
-
-- (UIView *)mapView:(__unused MGLMapView *)mapView leftCalloutAccessoryViewForAnnotation:(__unused id<MGLAnnotation>)annotation
-{
- UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
- button.frame = CGRectZero;
- [button setTitle:@"Left" forState:UIControlStateNormal];
- [button sizeToFit];
- return button;
-}
-
-- (UIView *)mapView:(__unused MGLMapView *)mapView rightCalloutAccessoryViewForAnnotation:(__unused id<MGLAnnotation>)annotation
-{
- UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
- button.frame = CGRectZero;
- [button setTitle:@"Right" forState:UIControlStateNormal];
- [button sizeToFit];
- return button;
-}
-
-- (void)mapView:(MGLMapView *)mapView tapOnCalloutForAnnotation:(id <MGLAnnotation>)annotation
-{
- if ( ! [annotation isKindOfClass:[MGLPointAnnotation class]])
- {
- return;
- }
-
- MGLPointAnnotation *point = (MGLPointAnnotation *)annotation;
- point.coordinate = [self.mapView convertPoint:self.mapView.center toCoordinateFromView:self.mapView];
-}
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style
-{
- // Default Mapbox styles use {name_en} as their label language, which means
- // that a device with an English-language locale is already effectively
- // using locale-based country labels.
- _localizingLabels = [[self bestLanguageForUser] isEqualToString:@"en"];
-}
-
-- (BOOL)mapView:(MGLMapView *)mapView shouldChangeFromCamera:(MGLMapCamera *)oldCamera toCamera:(MGLMapCamera *)newCamera {
- if (_shouldLimitCameraChanges) {
- // Get the current camera to restore it after.
- MGLMapCamera *currentCamera = mapView.camera;
-
- // From the new camera obtain the center to test if it’s inside the boundaries.
- CLLocationCoordinate2D newCameraCenter = newCamera.centerCoordinate;
-
- // Set the map’s visible bounds to newCamera.
- mapView.camera = newCamera;
- MGLCoordinateBounds newVisibleCoordinates = mapView.visibleCoordinateBounds;
-
- // Revert the camera.
- mapView.camera = currentCamera;
-
- // Test if the newCameraCenter and newVisibleCoordinates are inside Colorado.
- BOOL inside = MGLCoordinateInCoordinateBounds(newCameraCenter, colorado);
- BOOL intersects = MGLCoordinateInCoordinateBounds(newVisibleCoordinates.ne, colorado) && MGLCoordinateInCoordinateBounds(newVisibleCoordinates.sw, colorado);
-
- return inside && intersects;
- } else {
- return YES;
- }
-}
-
-- (void)mapViewRegionIsChanging:(MGLMapView *)mapView
-{
- [self updateHUD];
- [self updateHelperMapViews];
-}
-
-- (void)mapView:(MGLMapView *)mapView regionDidChangeWithReason:(MGLCameraChangeReason)reason animated:(BOOL)animated
-{
- if (reason != MGLCameraChangeReasonProgrammatic) {
- self.randomWalk = NO;
- }
-
- [self updateHUD];
- [self updateHelperMapViews];
-}
-
-- (void)mapView:(MGLMapView *)mapView didUpdateUserLocation:(MGLUserLocation *)userLocation {
- [self updateHUD];
-}
-
-- (void)updateHelperMapViews {
- for (UIWindow *window in self.helperWindows) {
- MGLMapView *mapView = (MGLMapView *)window.rootViewController.view;
- mapView.camera = self.mapView.camera;
- }
-}
-
-- (void)updateHUD {
-
- if (self.reuseQueueStatsEnabled == NO && self.zoomLevelOrnamentEnabled == NO) {
- return;
- }
-
- NSString *hudString;
-
- if (self.reuseQueueStatsEnabled) {
- NSUInteger queuedAnnotations = 0;
- for (NSArray *queue in self.mapView.annotationViewReuseQueueByIdentifier.allValues) {
- queuedAnnotations += queue.count;
- }
- hudString = [NSString stringWithFormat:@"Visible: %ld Queued: %ld", (unsigned long)self.mapView.visibleAnnotations.count, (unsigned long)queuedAnnotations];
- } else if (self.zoomLevelOrnamentEnabled) {
- hudString = [NSString stringWithFormat:@"%.f FPS (%.1fms) ∕ %.2f ∕ ↕\U0000FE0E%.f° ∕ %.f°",
- roundf(self.mapView.averageFrameRate), self.mapView.averageFrameTime,
- self.mapView.zoomLevel, self.mapView.camera.pitch, self.mapView.direction];
- }
-
- [self.hudLabel setTitle:hudString forState:UIControlStateNormal];
-}
-
-#pragma mark - MGLComputedShapeSourceDataSource
-
-- (NSArray<id <MGLFeature>>*)featuresInCoordinateBounds:(MGLCoordinateBounds)bounds zoomLevel:(NSUInteger)zoom {
- double gridSpacing;
- if(zoom >= 13) {
- gridSpacing = 0.01;
- } else if(zoom >= 11) {
- gridSpacing = 0.05;
- } else if(zoom == 10) {
- gridSpacing = .1;
- } else if(zoom == 9) {
- gridSpacing = 0.25;
- } else if(zoom == 8) {
- gridSpacing = 0.5;
- } else if (zoom >= 6) {
- gridSpacing = 1;
- } else if(zoom == 5) {
- gridSpacing = 2;
- } else if(zoom >= 4) {
- gridSpacing = 5;
- } else if(zoom == 2) {
- gridSpacing = 10;
- } else {
- gridSpacing = 20;
- }
-
- NSMutableArray <id <MGLFeature>> * features = [NSMutableArray array];
- CLLocationCoordinate2D coords[2];
-
- for (double y = ceil(bounds.ne.latitude / gridSpacing) * gridSpacing; y >= floor(bounds.sw.latitude / gridSpacing) * gridSpacing; y -= gridSpacing) {
- coords[0] = CLLocationCoordinate2DMake(y, bounds.sw.longitude);
- coords[1] = CLLocationCoordinate2DMake(y, bounds.ne.longitude);
- MGLPolylineFeature *feature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
- feature.attributes = @{@"value": @(y)};
- [features addObject:feature];
- }
-
- for (double x = floor(bounds.sw.longitude / gridSpacing) * gridSpacing; x <= ceil(bounds.ne.longitude / gridSpacing) * gridSpacing; x += gridSpacing) {
- coords[0] = CLLocationCoordinate2DMake(bounds.sw.latitude, x);
- coords[1] = CLLocationCoordinate2DMake(bounds.ne.latitude, x);
- MGLPolylineFeature *feature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
- feature.attributes = @{@"value": @(x)};
- [features addObject:feature];
- }
-
- return features;
-}
-
-- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered {
- if (self.frameTimeGraphEnabled) {
- [self.frameTimeGraphView updatePathWithFrameDuration:mapView.frameTime];
- }
-}
-
-- (void)saveCurrentMapState:(__unused NSNotification *)notification {
-
- // The following properties can change after the view loads so we need to save their
- // state before exiting the view controller.
- self.currentState.camera = self.mapView.camera;
- self.currentState.showsUserLocation = self.mapView.showsUserLocation;
- self.currentState.userTrackingMode = self.mapView.userTrackingMode;
- self.currentState.showsUserHeadingIndicator = self.mapView.showsUserHeadingIndicator;
- self.currentState.showsMapScale = self.mapView.showsScale;
- self.currentState.showsZoomLevelOrnament = self.zoomLevelOrnamentEnabled;
- self.currentState.showsTimeFrameGraph = self.frameTimeGraphEnabled;
- self.currentState.debugMask = self.mapView.debugMask;
- self.currentState.reuseQueueStatsEnabled = self.reuseQueueStatsEnabled;
-
- [[MBXStateManager sharedManager] saveState:self.currentState];
-}
-
-- (void)restoreMapState:(__unused NSNotification *)notification {
- MBXState *currentState = [MBXStateManager sharedManager].currentState;
-
- self.mapView.camera = currentState.camera;
- self.mapView.showsUserLocation = currentState.showsUserLocation;
- self.mapView.userTrackingMode = currentState.userTrackingMode;
- self.mapView.showsUserHeadingIndicator = currentState.showsUserHeadingIndicator;
- self.mapView.showsScale = currentState.showsMapScale;
- self.zoomLevelOrnamentEnabled = currentState.showsZoomLevelOrnament;
- self.frameTimeGraphEnabled = currentState.showsTimeFrameGraph;
- self.mapView.debugMask = currentState.debugMask;
- self.reuseQueueStatsEnabled = currentState.reuseQueueStatsEnabled;
-
- self.currentState = currentState;
-}
-
-@end
diff --git a/platform/ios/app/Main.storyboard b/platform/ios/app/Main.storyboard
deleted file mode 100644
index ac83bd968f..0000000000
--- a/platform/ios/app/Main.storyboard
+++ /dev/null
@@ -1,473 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14865.1" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="PSe-Ot-7Ff">
- <device id="retina4_7" orientation="portrait" appearance="light"/>
- <dependencies>
- <deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14819.2"/>
- <capability name="Safe area layout guides" minToolsVersion="9.0"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <scenes>
- <!--Map View Controller-->
- <scene sceneID="p0T-1N-kQ6">
- <objects>
- <viewController id="WaX-pd-UZQ" userLabel="Map View Controller" customClass="MBXViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="Z9X-fc-PUC">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kNe-zV-9ha" customClass="MGLMapView">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <subviews>
- <button hidden="YES" opaque="NO" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="58y-pX-YyB">
- <rect key="frame" x="8" y="82" width="40" height="20"/>
- <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
- <accessibility key="accessibilityConfiguration">
- <accessibilityTraits key="traits" button="YES" notEnabled="YES"/>
- </accessibility>
- <constraints>
- <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="40" id="viz-kn-dfK"/>
- <constraint firstAttribute="height" constant="20" id="zSU-Mb-f1v"/>
- </constraints>
- <fontDescription key="fontDescription" type="system" pointSize="10"/>
- <inset key="contentEdgeInsets" minX="4" minY="2" maxX="4" maxY="2"/>
- <userDefinedRuntimeAttributes>
- <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
- <integer key="value" value="2"/>
- </userDefinedRuntimeAttribute>
- </userDefinedRuntimeAttributes>
- </button>
- <view hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BHE-Wn-x69" customClass="MBXFrameTimeGraphView">
- <rect key="frame" x="0.0" y="467" width="375" height="200"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- <accessibility key="accessibilityConfiguration">
- <accessibilityTraits key="traits" notEnabled="YES"/>
- </accessibility>
- <constraints>
- <constraint firstAttribute="height" constant="200" id="TgT-yb-9e5"/>
- </constraints>
- </view>
- </subviews>
- <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <gestureRecognizers/>
- <constraints>
- <constraint firstItem="58y-pX-YyB" firstAttribute="top" secondItem="kNe-zV-9ha" secondAttribute="topMargin" constant="30" id="89S-qk-mPR"/>
- <constraint firstItem="BHE-Wn-x69" firstAttribute="leading" secondItem="kNe-zV-9ha" secondAttribute="leading" id="aHd-3F-9nV"/>
- <constraint firstAttribute="bottom" secondItem="BHE-Wn-x69" secondAttribute="bottom" id="bfH-4q-2uU"/>
- <constraint firstItem="58y-pX-YyB" firstAttribute="leading" secondItem="kNe-zV-9ha" secondAttribute="leadingMargin" id="cXU-Qh-ilW"/>
- <constraint firstAttribute="trailing" secondItem="BHE-Wn-x69" secondAttribute="trailing" id="lZL-gi-2XC"/>
- <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="58y-pX-YyB" secondAttribute="trailing" id="txU-Gp-2du"/>
- </constraints>
- <connections>
- <outlet property="delegate" destination="WaX-pd-UZQ" id="za0-3B-qR6"/>
- <outletCollection property="gestureRecognizers" destination="lfd-mn-7en" appends="YES" id="0PH-gH-GRm"/>
- </connections>
- </view>
- </subviews>
- <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstItem="kNe-zV-9ha" firstAttribute="leading" secondItem="Z9X-fc-PUC" secondAttribute="leading" id="53e-Tz-QxF"/>
- <constraint firstItem="kNe-zV-9ha" firstAttribute="bottom" secondItem="Z9X-fc-PUC" secondAttribute="bottom" id="Etp-BC-E1N"/>
- <constraint firstAttribute="trailing" secondItem="kNe-zV-9ha" secondAttribute="trailing" id="MGr-8G-VEb"/>
- <constraint firstItem="kNe-zV-9ha" firstAttribute="top" secondItem="Z9X-fc-PUC" secondAttribute="top" id="qMm-e9-jxH"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="ujE-Rp-qaA"/>
- </view>
- <navigationItem key="navigationItem" id="p8W-eP-el5">
- <nil key="title"/>
- <barButtonItem key="leftBarButtonItem" image="settings.png" id="Jw8-JP-CaZ" userLabel="Map Settings">
- <userDefinedRuntimeAttributes>
- <userDefinedRuntimeAttribute type="string" keyPath="accessibilityLabel" value="Map settings"/>
- </userDefinedRuntimeAttributes>
- <connections>
- <action selector="showSettings:" destination="WaX-pd-UZQ" id="X2C-Ee-Qvt"/>
- </connections>
- </barButtonItem>
- <button key="titleView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="KsN-ny-Hou">
- <rect key="frame" x="89" y="5.5" width="148" height="33"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
- <state key="normal" title="Streets"/>
- <connections>
- <action selector="cycleStyles:" destination="WaX-pd-UZQ" eventType="touchUpInside" id="PnY-mb-J6m"/>
- </connections>
- </button>
- <rightBarButtonItems>
- <barButtonItem image="TrackingLocationOffMask.png" id="CQ1-GP-M6x" userLabel="User Tracking Mode">
- <userDefinedRuntimeAttributes>
- <userDefinedRuntimeAttribute type="string" keyPath="accessibilityLabel" value="User tracking mode"/>
- </userDefinedRuntimeAttributes>
- <connections>
- <action selector="locateUser:" destination="WaX-pd-UZQ" id="XgF-DB-z3f"/>
- </connections>
- </barButtonItem>
- <barButtonItem systemItem="organize" id="5IK-vz-jKQ" userLabel="Offline Packs">
- <userDefinedRuntimeAttributes>
- <userDefinedRuntimeAttribute type="string" keyPath="accessibilityLabel" value="Offline packs"/>
- </userDefinedRuntimeAttributes>
- <connections>
- <segue destination="7q0-lI-zqb" kind="show" identifier="ShowOfflinePacks" id="xjx-0t-0LD"/>
- </connections>
- </barButtonItem>
- </rightBarButtonItems>
- </navigationItem>
- <connections>
- <outlet property="frameTimeGraphView" destination="BHE-Wn-x69" id="sFg-9b-DgH"/>
- <outlet property="hudLabel" destination="58y-pX-YyB" id="aGG-7a-bZR"/>
- <outlet property="mapView" destination="kNe-zV-9ha" id="VNR-WO-1q4"/>
- <segue destination="zvf-Qd-4Ru" kind="show" identifier="ShowSnapshots" id="hzX-Jp-UJq"/>
- <segue destination="dgL-Bu-te0" kind="show" identifier="ShowCustomLocationManger" id="kDM-0K-hSf"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="AAd-8J-9UU" userLabel="First Responder" sceneMemberID="firstResponder"/>
- <pongPressGestureRecognizer allowableMovement="10" minimumPressDuration="1" id="lfd-mn-7en">
- <connections>
- <action selector="handleLongPress:" destination="WaX-pd-UZQ" id="dkk-bc-rvl"/>
- </connections>
- </pongPressGestureRecognizer>
- </objects>
- <point key="canvasLocation" x="1365.5999999999999" y="348.57571214392806"/>
- </scene>
- <!--Offline Packs-->
- <scene sceneID="xIg-PA-7r3">
- <objects>
- <tableViewController id="7q0-lI-zqb" customClass="MBXOfflinePacksTableViewController" sceneMemberID="viewController">
- <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="eeN-6b-zqe">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <prototypes>
- <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Inactive" editingAccessoryType="detailDisclosureButton" textLabel="JtH-Ce-MI5" detailTextLabel="tTJ-jv-U9v" style="IBUITableViewCellStyleSubtitle" id="fGu-Ys-Eh1">
- <rect key="frame" x="0.0" y="28" width="375" height="44"/>
- <autoresizingMask key="autoresizingMask"/>
- <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fGu-Ys-Eh1" id="sUf-bc-8xG">
- <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="My Inactive Offline Pack" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="JtH-Ce-MI5">
- <rect key="frame" x="16" y="6" width="174.5" height="19.5"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <fontDescription key="fontDescription" type="system" pointSize="16"/>
- <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <nil key="highlightedColor"/>
- </label>
- <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="456 resources (789 MB)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="tTJ-jv-U9v">
- <rect key="frame" x="16" y="25.5" width="128.5" height="13.5"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <fontDescription key="fontDescription" type="system" pointSize="11"/>
- <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <nil key="highlightedColor"/>
- </label>
- </subviews>
- </tableViewCellContentView>
- </tableViewCell>
- <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Active" editingAccessoryType="detailDisclosureButton" textLabel="9ZK-gS-wJ4" detailTextLabel="0xK-p8-Mmh" style="IBUITableViewCellStyleSubtitle" id="mKB-tz-Zfl">
- <rect key="frame" x="0.0" y="72" width="375" height="44"/>
- <autoresizingMask key="autoresizingMask"/>
- <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mKB-tz-Zfl" id="nS3-aU-nBr">
- <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="My Active Offline Pack" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9ZK-gS-wJ4">
- <rect key="frame" x="16" y="6" width="163" height="19.5"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <fontDescription key="fontDescription" type="system" pointSize="16"/>
- <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <nil key="highlightedColor"/>
- </label>
- <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Downloading 123 of 456 resources… (789 MB downloaded)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0xK-p8-Mmh">
- <rect key="frame" x="16" y="25.5" width="311" height="13.5"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <fontDescription key="fontDescription" type="system" pointSize="11"/>
- <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <nil key="highlightedColor"/>
- </label>
- </subviews>
- </tableViewCellContentView>
- </tableViewCell>
- </prototypes>
- <connections>
- <outlet property="dataSource" destination="7q0-lI-zqb" id="oe8-d5-Rjo"/>
- <outlet property="delegate" destination="7q0-lI-zqb" id="D5X-oy-DSc"/>
- </connections>
- </tableView>
- <navigationItem key="navigationItem" title="Offline Packs" id="UcK-PK-eQA">
- <rightBarButtonItems>
- <barButtonItem systemItem="add" id="gCV-hl-Mzc">
- <connections>
- <action selector="addCurrentRegion:" destination="7q0-lI-zqb" id="G2O-3V-aEA"/>
- </connections>
- </barButtonItem>
- <barButtonItem systemItem="refresh" id="2fx-iS-Veb">
- <connections>
- <action selector="invalidatePacks:" destination="7q0-lI-zqb" id="5lx-FY-aTt"/>
- </connections>
- </barButtonItem>
- </rightBarButtonItems>
- </navigationItem>
- <connections>
- <segue destination="x2D-ga-sM5" kind="unwind" identifier="ReturnToMap" unwindAction="unwindToMapViewController:" id="6MZ-Ed-tu2"/>
- </connections>
- </tableViewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="Dga-Vh-IxZ" userLabel="First Responder" sceneMemberID="firstResponder"/>
- <exit id="x2D-ga-sM5" userLabel="Exit" sceneMemberID="exit"/>
- </objects>
- <point key="canvasLocation" x="2075" y="350"/>
- </scene>
- <!--Navigation Controller-->
- <scene sceneID="LFg-oU-zTK">
- <objects>
- <navigationController automaticallyAdjustsScrollViewInsets="NO" id="PSe-Ot-7Ff" sceneMemberID="viewController">
- <toolbarItems/>
- <navigationBar key="navigationBar" contentMode="scaleToFill" id="ONr-CS-J5X">
- <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
- <autoresizingMask key="autoresizingMask"/>
- </navigationBar>
- <nil name="viewControllers"/>
- <connections>
- <segue destination="WaX-pd-UZQ" kind="relationship" relationship="rootViewController" id="lV0-PD-2Ag"/>
- </connections>
- </navigationController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="Lom-R7-kwe" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="554" y="350"/>
- </scene>
- <!--Embedded Map View Controller-->
- <scene sceneID="dGM-LS-4VE">
- <objects>
- <viewController storyboardIdentifier="MBXEmbeddedMapViewController" id="Tsi-Cv-L66" customClass="MBXEmbeddedMapViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="vKr-y9-AZt">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" alwaysBounceHorizontal="YES" minimumZoomScale="0.5" maximumZoomScale="5" translatesAutoresizingMaskIntoConstraints="NO" id="Awd-m3-zh2">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <subviews>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EPE-uN-4XB" customClass="MGLMapView">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <gestureRecognizers/>
- <connections>
- <outletCollection property="gestureRecognizers" destination="JkF-BS-3oQ" appends="YES" id="yaD-hc-uit"/>
- </connections>
- </view>
- </subviews>
- <constraints>
- <constraint firstAttribute="trailing" secondItem="EPE-uN-4XB" secondAttribute="trailing" id="2sl-Ru-a5Y"/>
- <constraint firstAttribute="bottom" secondItem="EPE-uN-4XB" secondAttribute="bottom" id="8Rw-xR-dVh"/>
- <constraint firstItem="EPE-uN-4XB" firstAttribute="centerX" secondItem="Awd-m3-zh2" secondAttribute="centerX" id="Cj3-w6-vZ5"/>
- <constraint firstItem="EPE-uN-4XB" firstAttribute="leading" secondItem="Awd-m3-zh2" secondAttribute="leading" id="atf-fU-XKg"/>
- <constraint firstItem="EPE-uN-4XB" firstAttribute="centerY" secondItem="Awd-m3-zh2" secondAttribute="centerY" id="bIx-MH-m69"/>
- <constraint firstItem="EPE-uN-4XB" firstAttribute="top" secondItem="Awd-m3-zh2" secondAttribute="top" id="eUo-r5-eDb"/>
- </constraints>
- </scrollView>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l5l-w7-P80" userLabel="Control Panel View">
- <rect key="frame" x="0.0" y="0.0" width="375" height="64"/>
- <subviews>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Zoom" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DgB-BD-Ltx">
- <rect key="frame" x="29.5" y="6" width="35" height="16"/>
- <constraints>
- <constraint firstAttribute="width" constant="35" id="DaP-YL-kD7"/>
- </constraints>
- <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="g15-JY-ZNb">
- <rect key="frame" x="22.5" y="25" width="51" height="31"/>
- <connections>
- <action selector="didSwitch:" destination="Tsi-Cv-L66" eventType="valueChanged" id="Obk-GN-o7t"/>
- </connections>
- </switch>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Scroll" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z7C-yW-Y69" userLabel="Scroll">
- <rect key="frame" x="123" y="6" width="35" height="16"/>
- <constraints>
- <constraint firstAttribute="width" constant="35" id="tr6-4a-XN7"/>
- </constraints>
- <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <switch opaque="NO" tag="1" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tqS-cU-tlc">
- <rect key="frame" x="116" y="25" width="51" height="31"/>
- <connections>
- <action selector="didSwitch:" destination="Tsi-Cv-L66" eventType="valueChanged" id="Dhk-0Y-V4f"/>
- </connections>
- </switch>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rotation" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vio-XU-tgS">
- <rect key="frame" x="209" y="6" width="50.5" height="16"/>
- <constraints>
- <constraint firstAttribute="width" constant="50.5" id="OiV-2P-9xm"/>
- </constraints>
- <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <switch opaque="NO" tag="2" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e57-jT-2xD">
- <rect key="frame" x="210" y="25" width="51" height="31"/>
- <connections>
- <action selector="didSwitch:" destination="Tsi-Cv-L66" eventType="valueChanged" id="DNZ-Uw-kDg"/>
- </connections>
- </switch>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pitch" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0uK-zq-Ys2">
- <rect key="frame" x="312.5" y="6" width="31" height="16"/>
- <constraints>
- <constraint firstAttribute="width" constant="31" id="gM8-I7-4d3"/>
- </constraints>
- <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <switch opaque="NO" tag="3" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KcQ-OU-a39">
- <rect key="frame" x="303.5" y="25" width="51" height="31"/>
- <connections>
- <action selector="didSwitch:" destination="Tsi-Cv-L66" eventType="valueChanged" id="WhV-yJ-avj"/>
- </connections>
- </switch>
- </subviews>
- <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
- <gestureRecognizers/>
- <constraints>
- <constraint firstItem="KcQ-OU-a39" firstAttribute="centerX" secondItem="l5l-w7-P80" secondAttribute="centerX" multiplier="1.75" id="4KT-16-PTD"/>
- <constraint firstItem="g15-JY-ZNb" firstAttribute="top" secondItem="DgB-BD-Ltx" secondAttribute="bottom" constant="3" id="85K-VT-rjv"/>
- <constraint firstItem="tqS-cU-tlc" firstAttribute="centerX" secondItem="l5l-w7-P80" secondAttribute="centerX" multiplier="0.75" id="8jz-5L-klT"/>
- <constraint firstItem="z7C-yW-Y69" firstAttribute="centerX" secondItem="tqS-cU-tlc" secondAttribute="centerX" id="DXz-6O-RE3"/>
- <constraint firstItem="0uK-zq-Ys2" firstAttribute="centerX" secondItem="KcQ-OU-a39" secondAttribute="centerX" id="Mde-fT-Bcq"/>
- <constraint firstItem="z7C-yW-Y69" firstAttribute="bottom" secondItem="DgB-BD-Ltx" secondAttribute="bottom" id="PnN-Hv-drW"/>
- <constraint firstItem="z7C-yW-Y69" firstAttribute="top" secondItem="DgB-BD-Ltx" secondAttribute="top" id="Q2C-Qw-gvB"/>
- <constraint firstAttribute="bottom" secondItem="e57-jT-2xD" secondAttribute="bottom" constant="8" id="WWq-zC-XdG"/>
- <constraint firstItem="0uK-zq-Ys2" firstAttribute="bottom" secondItem="DgB-BD-Ltx" secondAttribute="bottom" id="aBL-og-FYW"/>
- <constraint firstItem="Vio-XU-tgS" firstAttribute="bottom" secondItem="DgB-BD-Ltx" secondAttribute="bottom" id="aMh-TW-sMO"/>
- <constraint firstAttribute="height" constant="64" id="aSG-KD-M7a"/>
- <constraint firstAttribute="bottom" secondItem="KcQ-OU-a39" secondAttribute="bottom" constant="8" id="cdo-Mc-M8y"/>
- <constraint firstItem="e57-jT-2xD" firstAttribute="centerX" secondItem="l5l-w7-P80" secondAttribute="centerX" multiplier="1.25" id="e4H-V7-rMk"/>
- <constraint firstAttribute="bottom" secondItem="tqS-cU-tlc" secondAttribute="bottom" constant="8" id="e6X-7b-GNt"/>
- <constraint firstItem="Vio-XU-tgS" firstAttribute="top" secondItem="DgB-BD-Ltx" secondAttribute="top" id="g0I-sb-f7w"/>
- <constraint firstItem="Vio-XU-tgS" firstAttribute="centerX" secondItem="e57-jT-2xD" secondAttribute="centerX" id="gXC-pq-4Aa"/>
- <constraint firstAttribute="bottom" secondItem="g15-JY-ZNb" secondAttribute="bottom" constant="8" id="kBT-94-cqr"/>
- <constraint firstItem="DgB-BD-Ltx" firstAttribute="centerX" secondItem="g15-JY-ZNb" secondAttribute="centerX" id="wjr-6Z-EUS"/>
- <constraint firstItem="g15-JY-ZNb" firstAttribute="centerX" secondItem="l5l-w7-P80" secondAttribute="centerX" multiplier="0.25" id="xsC-iQ-ytS"/>
- <constraint firstItem="0uK-zq-Ys2" firstAttribute="top" secondItem="DgB-BD-Ltx" secondAttribute="top" id="zK5-CA-VoR"/>
- </constraints>
- </view>
- </subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <constraints>
- <constraint firstItem="ZvP-HW-chV" firstAttribute="trailing" secondItem="l5l-w7-P80" secondAttribute="trailing" id="3lX-X1-azn"/>
- <constraint firstItem="Awd-m3-zh2" firstAttribute="leading" secondItem="ZvP-HW-chV" secondAttribute="leading" id="9yi-vl-QxH"/>
- <constraint firstItem="l5l-w7-P80" firstAttribute="top" secondItem="ZvP-HW-chV" secondAttribute="top" id="AN8-3I-WUs"/>
- <constraint firstItem="ZvP-HW-chV" firstAttribute="trailing" secondItem="Awd-m3-zh2" secondAttribute="trailing" id="IfY-Eb-UaJ"/>
- <constraint firstItem="Awd-m3-zh2" firstAttribute="top" secondItem="vKr-y9-AZt" secondAttribute="top" id="ZCQ-9O-kJP"/>
- <constraint firstItem="l5l-w7-P80" firstAttribute="leading" secondItem="ZvP-HW-chV" secondAttribute="leading" id="gGq-lE-d7X"/>
- <constraint firstItem="Awd-m3-zh2" firstAttribute="bottom" secondItem="ZvP-HW-chV" secondAttribute="bottom" id="tV3-fH-i8W"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="ZvP-HW-chV"/>
- </view>
- <connections>
- <outlet property="mapView" destination="EPE-uN-4XB" id="EDJ-xp-uBi"/>
- <outlet property="scrollView" destination="Awd-m3-zh2" id="TJn-gU-Hgs"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="k2c-Gr-mpl" userLabel="First Responder" sceneMemberID="firstResponder"/>
- <rotationGestureRecognizer id="JkF-BS-3oQ">
- <connections>
- <action selector="rotation:" destination="Tsi-Cv-L66" id="Zba-E5-Dmz"/>
- </connections>
- </rotationGestureRecognizer>
- </objects>
- <point key="canvasLocation" x="594.39999999999998" y="1083.5082458770617"/>
- </scene>
- <!--Snapshots View Controller-->
- <scene sceneID="Ooh-2U-4Bz">
- <objects>
- <viewController id="zvf-Qd-4Ru" customClass="MBXSnapshotsViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="Jxm-v6-zI0">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="miZ-Fw-EWq" userLabel="Image View TL">
- <rect key="frame" x="0.0" y="44" width="125" height="311.5"/>
- </imageView>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="XuN-T4-Z83" userLabel="Image View TM">
- <rect key="frame" x="125" y="44" width="125" height="311.5"/>
- </imageView>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ykR-Ku-i9l" userLabel="Image View TR">
- <rect key="frame" x="250" y="44" width="125" height="311.5"/>
- </imageView>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TL0-V8-T2F" userLabel="Image View BL">
- <rect key="frame" x="0.0" y="355.5" width="125" height="311.5"/>
- </imageView>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="eMy-JU-rq4" userLabel="Image View BM">
- <rect key="frame" x="125" y="355.5" width="125" height="311.5"/>
- </imageView>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="zT0-3J-0xw" userLabel="Image View BR">
- <rect key="frame" x="250" y="355.5" width="125" height="311.5"/>
- </imageView>
- </subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <constraints>
- <constraint firstItem="eMy-JU-rq4" firstAttribute="leading" secondItem="TL0-V8-T2F" secondAttribute="trailing" id="0xP-ii-cyV"/>
- <constraint firstItem="eMy-JU-rq4" firstAttribute="top" secondItem="XuN-T4-Z83" secondAttribute="bottom" id="1HV-Tp-mUB"/>
- <constraint firstItem="TL0-V8-T2F" firstAttribute="leading" secondItem="0Ve-S1-bkK" secondAttribute="leading" id="3fH-bn-5ND"/>
- <constraint firstItem="miZ-Fw-EWq" firstAttribute="leading" secondItem="0Ve-S1-bkK" secondAttribute="leading" id="4yV-CW-c5n"/>
- <constraint firstItem="0Ve-S1-bkK" firstAttribute="bottom" secondItem="eMy-JU-rq4" secondAttribute="bottom" id="57P-Qo-M11"/>
- <constraint firstItem="ykR-Ku-i9l" firstAttribute="top" secondItem="0Ve-S1-bkK" secondAttribute="top" id="ARo-Nk-uVV"/>
- <constraint firstItem="0Ve-S1-bkK" firstAttribute="trailing" secondItem="ykR-Ku-i9l" secondAttribute="trailing" id="BRi-93-PGb"/>
- <constraint firstItem="eMy-JU-rq4" firstAttribute="height" secondItem="miZ-Fw-EWq" secondAttribute="height" id="FqJ-zb-pkb"/>
- <constraint firstItem="TL0-V8-T2F" firstAttribute="height" secondItem="miZ-Fw-EWq" secondAttribute="height" id="GrM-9L-dba"/>
- <constraint firstItem="XuN-T4-Z83" firstAttribute="height" secondItem="miZ-Fw-EWq" secondAttribute="height" id="HSd-2T-Kz7"/>
- <constraint firstItem="0Ve-S1-bkK" firstAttribute="trailing" secondItem="zT0-3J-0xw" secondAttribute="trailing" id="HaC-la-079"/>
- <constraint firstItem="0Ve-S1-bkK" firstAttribute="bottom" secondItem="TL0-V8-T2F" secondAttribute="bottom" id="JgE-s8-RAh"/>
- <constraint firstItem="zT0-3J-0xw" firstAttribute="top" secondItem="ykR-Ku-i9l" secondAttribute="bottom" id="KQm-ue-i3z"/>
- <constraint firstItem="zT0-3J-0xw" firstAttribute="width" secondItem="miZ-Fw-EWq" secondAttribute="width" id="LUI-BF-66V"/>
- <constraint firstItem="0Ve-S1-bkK" firstAttribute="bottom" secondItem="zT0-3J-0xw" secondAttribute="bottom" id="MAe-3N-78O"/>
- <constraint firstItem="TL0-V8-T2F" firstAttribute="width" secondItem="miZ-Fw-EWq" secondAttribute="width" id="OvH-2m-yli"/>
- <constraint firstItem="XuN-T4-Z83" firstAttribute="top" secondItem="0Ve-S1-bkK" secondAttribute="top" id="bzY-6Y-K80"/>
- <constraint firstItem="XuN-T4-Z83" firstAttribute="leading" secondItem="miZ-Fw-EWq" secondAttribute="trailing" id="jhf-gz-4UF"/>
- <constraint firstItem="eMy-JU-rq4" firstAttribute="width" secondItem="miZ-Fw-EWq" secondAttribute="width" id="l3m-tf-b1h"/>
- <constraint firstItem="ykR-Ku-i9l" firstAttribute="leading" secondItem="XuN-T4-Z83" secondAttribute="trailing" id="oEV-Yi-iLs"/>
- <constraint firstItem="TL0-V8-T2F" firstAttribute="top" secondItem="miZ-Fw-EWq" secondAttribute="bottom" id="oLW-zh-Fnk"/>
- <constraint firstItem="miZ-Fw-EWq" firstAttribute="top" secondItem="0Ve-S1-bkK" secondAttribute="top" id="qpD-mN-wfP"/>
- <constraint firstItem="ykR-Ku-i9l" firstAttribute="height" secondItem="miZ-Fw-EWq" secondAttribute="height" id="sP4-HJ-Vgk"/>
- <constraint firstItem="XuN-T4-Z83" firstAttribute="width" secondItem="miZ-Fw-EWq" secondAttribute="width" id="sTw-zD-Jid"/>
- <constraint firstItem="zT0-3J-0xw" firstAttribute="height" secondItem="miZ-Fw-EWq" secondAttribute="height" id="t0u-eQ-Ail"/>
- <constraint firstItem="ykR-Ku-i9l" firstAttribute="width" secondItem="miZ-Fw-EWq" secondAttribute="width" id="uQU-pB-kvq"/>
- <constraint firstItem="zT0-3J-0xw" firstAttribute="leading" secondItem="eMy-JU-rq4" secondAttribute="trailing" id="w8M-MN-cmx"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="0Ve-S1-bkK"/>
- </view>
- <connections>
- <outlet property="snapshotImageViewBL" destination="TL0-V8-T2F" id="e6C-dB-kHm"/>
- <outlet property="snapshotImageViewBM" destination="eMy-JU-rq4" id="zeR-3U-EbH"/>
- <outlet property="snapshotImageViewBR" destination="zT0-3J-0xw" id="6YR-lR-ela"/>
- <outlet property="snapshotImageViewTL" destination="miZ-Fw-EWq" id="2Jj-kh-3Zw"/>
- <outlet property="snapshotImageViewTM" destination="XuN-T4-Z83" id="MXY-7F-jB2"/>
- <outlet property="snapshotImageViewTR" destination="ykR-Ku-i9l" id="aEL-Sg-RIW"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="5xV-Ua-pqK" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="1365.5999999999999" y="1083.5082458770617"/>
- </scene>
- <!--Custom Location View Controller-->
- <scene sceneID="TUi-Dc-6uA">
- <objects>
- <viewController id="dgL-Bu-te0" customClass="MBXCustomLocationViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="ero-1d-Jm5">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- <viewLayoutGuide key="safeArea" id="t2S-ES-YuE"/>
- </view>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="RtO-ic-8Nc" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="2073" y="1082"/>
- </scene>
- </scenes>
- <resources>
- <image name="TrackingLocationOffMask.png" width="23" height="23"/>
- <image name="settings.png" width="28" height="28"/>
- </resources>
- <color key="tintColor" red="0.12156862745098039" green="0.5490196078431373" blue="0.6705882352941176" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-</document>
diff --git a/platform/ios/app/Settings.bundle/Base.lproj/Root.strings b/platform/ios/app/Settings.bundle/Base.lproj/Root.strings
deleted file mode 100644
index 1945fe1141..0000000000
--- a/platform/ios/app/Settings.bundle/Base.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Privacy Settings";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetry";
-"TELEMETRY_GROUP_FOOTER" = "This setting allows the application to share anonymized location and usage data with Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/Root.plist b/platform/ios/app/Settings.bundle/Root.plist
deleted file mode 100644
index fba2065a8f..0000000000
--- a/platform/ios/app/Settings.bundle/Root.plist
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>PreferenceSpecifiers</key>
- <array>
- <dict>
- <key>Title</key>
- <string>TELEMETRY_GROUP_TITLE</string>
- <key>Type</key>
- <string>PSGroupSpecifier</string>
- <key>FooterText</key>
- <string>TELEMETRY_GROUP_FOOTER</string>
- </dict>
- <dict>
- <key>DefaultValue</key>
- <true/>
- <key>Key</key>
- <string>MGLMapboxMetricsEnabled</string>
- <key>Title</key>
- <string>TELEMETRY_SWITCH_TITLE</string>
- <key>Type</key>
- <string>PSToggleSwitchSpecifier</string>
- <key>TrueValue</key>
- <true/>
- <key>FalseValue</key>
- <false/>
- </dict>
- </array>
- <key>StringsTable</key>
- <string>Root</string>
-</dict>
-</plist>
diff --git a/platform/ios/app/Settings.bundle/ar.lproj/Root.strings b/platform/ios/app/Settings.bundle/ar.lproj/Root.strings
deleted file mode 100644
index 352bb0eddc..0000000000
--- a/platform/ios/app/Settings.bundle/ar.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "إعدادات الخصوصية";
-"TELEMETRY_SWITCH_TITLE" = "القياس عن بعد";
-"TELEMETRY_GROUP_FOOTER" = "يتيح هذا الإعداد للتطبيق مشاركة المكان وبيانات الاستخدام مجهّلة مع Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/bg.lproj/Root.strings b/platform/ios/app/Settings.bundle/bg.lproj/Root.strings
deleted file mode 100644
index c86decde32..0000000000
--- a/platform/ios/app/Settings.bundle/bg.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Настройки за поверителност";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Телеметрия";
-"TELEMETRY_GROUP_FOOTER" = "Тази настройка позволява на приложението да споделя анонимни локации и данни за използване с Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/ca.lproj/Root.strings b/platform/ios/app/Settings.bundle/ca.lproj/Root.strings
deleted file mode 100644
index 3f6104a075..0000000000
--- a/platform/ios/app/Settings.bundle/ca.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Configuració de privacitat";
-"TELEMETRY_SWITCH_TITLE" = "Telemetria Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Aquest ajust permet que l’aplicació comparteixi dades anònimes de localització i ús amb Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/cs.lproj/Root.strings b/platform/ios/app/Settings.bundle/cs.lproj/Root.strings
deleted file mode 100644
index 4af82f3ac6..0000000000
--- a/platform/ios/app/Settings.bundle/cs.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Nastavení ochrany osobních údajů";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox telemetrie";
-"TELEMETRY_GROUP_FOOTER" = "Toto nastavení umožňuje aplikaci sdílet anonymní údaje o poloze a využití s Mapboxem.";
diff --git a/platform/ios/app/Settings.bundle/da.lproj/Root.strings b/platform/ios/app/Settings.bundle/da.lproj/Root.strings
deleted file mode 100644
index b1129a865a..0000000000
--- a/platform/ios/app/Settings.bundle/da.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Privatlivs indstillinger";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetry";
-"TELEMETRY_GROUP_FOOTER" = "Denne indstilling giver app'en tilladelse til at dele anonyme bruger data og position med Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/de.lproj/Root.strings b/platform/ios/app/Settings.bundle/de.lproj/Root.strings
deleted file mode 100644
index 30bd2252ce..0000000000
--- a/platform/ios/app/Settings.bundle/de.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Privatsphäre-Einstellungen";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox-Telemetrie";
-"TELEMETRY_GROUP_FOOTER" = "Diese Einstellung erlaubt der Applikation, anonymisierte Orts- und Nutzungsdaten an Mapbox zu senden.";
diff --git a/platform/ios/app/Settings.bundle/en.lproj/Root.strings b/platform/ios/app/Settings.bundle/en.lproj/Root.strings
deleted file mode 100644
index 1945fe1141..0000000000
--- a/platform/ios/app/Settings.bundle/en.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Privacy Settings";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetry";
-"TELEMETRY_GROUP_FOOTER" = "This setting allows the application to share anonymized location and usage data with Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/es.lproj/Root.strings b/platform/ios/app/Settings.bundle/es.lproj/Root.strings
deleted file mode 100644
index 48da358189..0000000000
--- a/platform/ios/app/Settings.bundle/es.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Ajustes de privacidad";
-"TELEMETRY_SWITCH_TITLE" = "Telemetría Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Esta configuración permite que la aplicación comparta datos anónimos de ubicación y uso con Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/fi.lproj/Root.strings b/platform/ios/app/Settings.bundle/fi.lproj/Root.strings
deleted file mode 100644
index b12a017e8a..0000000000
--- a/platform/ios/app/Settings.bundle/fi.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Yksityisyysasetukset";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox-telemetria";
-"TELEMETRY_GROUP_FOOTER" = "Tämä asetus antaa sovellukselle luvan jakaa anonymisoituja sijainti- ja käyttötietoja Mapboxille.";
diff --git a/platform/ios/app/Settings.bundle/fr.lproj/Root.strings b/platform/ios/app/Settings.bundle/fr.lproj/Root.strings
deleted file mode 100644
index f00e8e2fe8..0000000000
--- a/platform/ios/app/Settings.bundle/fr.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Paramètres de confidentialité";
-"TELEMETRY_SWITCH_TITLE" = "Télémétrie Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Cette option permet à l’application de partager des données de localisation et d’utilisation anonymes avec Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/gl.lproj/Root.strings b/platform/ios/app/Settings.bundle/gl.lproj/Root.strings
deleted file mode 100644
index 50510348de..0000000000
--- a/platform/ios/app/Settings.bundle/gl.lproj/Root.strings
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Settings.bundle/he.lproj/Root.strings b/platform/ios/app/Settings.bundle/he.lproj/Root.strings
deleted file mode 100644
index 0fd5881e5f..0000000000
--- a/platform/ios/app/Settings.bundle/he.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "הגדרות פרטיות";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetry";
-"TELEMETRY_GROUP_FOOTER" = "הגדרה זו מתירה לאפליקציה לשתף באופן אנונימי את נתוני המיקום והשימוש עם Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/hu.lproj/Root.strings b/platform/ios/app/Settings.bundle/hu.lproj/Root.strings
deleted file mode 100644
index 3d761f2b97..0000000000
--- a/platform/ios/app/Settings.bundle/hu.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Adatvédelmi beállítások";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetria";
-"TELEMETRY_GROUP_FOOTER" = "Ez a beállítás megengedi az alkalmazásnak, hogy névtelen helyzeti és használati adatokat osszon meg a Mapbox-szal.";
diff --git a/platform/ios/app/Settings.bundle/it.lproj/Root.strings b/platform/ios/app/Settings.bundle/it.lproj/Root.strings
deleted file mode 100644
index 4e2c67ff69..0000000000
--- a/platform/ios/app/Settings.bundle/it.lproj/Root.strings
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/Settings.bundle/ko.lproj/Root.strings b/platform/ios/app/Settings.bundle/ko.lproj/Root.strings
deleted file mode 100644
index 1fc9f9ce51..0000000000
--- a/platform/ios/app/Settings.bundle/ko.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "개인 정보 설정";
-"TELEMETRY_SWITCH_TITLE" = "맵박스 텔레메트리";
-"TELEMETRY_GROUP_FOOTER" = "이 설정은 어플리케이션이 익명화된 장소와 사용데이터를 맵박스와 공유하는것을 허용합니다.";
diff --git a/platform/ios/app/Settings.bundle/lt.lproj/Root.strings b/platform/ios/app/Settings.bundle/lt.lproj/Root.strings
deleted file mode 100644
index 5ae715439a..0000000000
--- a/platform/ios/app/Settings.bundle/lt.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Privatumo nustatymai";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetrija";
-"TELEMETRY_GROUP_FOOTER" = "Šis nustatymas leidžia programėlei dalintis su Mapbox anonimizuota lokacija bei naudojimosi duomenimis.";
diff --git a/platform/ios/app/Settings.bundle/nl.lproj/Root.strings b/platform/ios/app/Settings.bundle/nl.lproj/Root.strings
deleted file mode 100644
index 9f09002349..0000000000
--- a/platform/ios/app/Settings.bundle/nl.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Privacy Instellingen";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetrie";
-"TELEMETRY_GROUP_FOOTER" = "Deze instelling laat toe om anonieme locatie en gebruiksgegevens te delen met Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/pl.lproj/Root.strings b/platform/ios/app/Settings.bundle/pl.lproj/Root.strings
deleted file mode 100644
index f273a15293..0000000000
--- a/platform/ios/app/Settings.bundle/pl.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Ustawienia prywatności";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetria";
-"TELEMETRY_GROUP_FOOTER" = "Ta opcja pozwala aplikacji na anonimowe wysyłanie lokalizacji i danych do Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings b/platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings
deleted file mode 100644
index f96fadd205..0000000000
--- a/platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Configurações de privacidade";
-"TELEMETRY_SWITCH_TITLE" = "Telemetria do Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Essa configuração permite que o aplicativo compartilhe dados de localização e uso anônimos com o Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings b/platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings
deleted file mode 100644
index 8e077c3d1f..0000000000
--- a/platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Definições de Privacidade";
-"TELEMETRY_SWITCH_TITLE" = "Telemetria Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Esta definição permite à aplicação partilhar a localização e dados de utilização tornados anónimos com a Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/ru.lproj/Root.strings b/platform/ios/app/Settings.bundle/ru.lproj/Root.strings
deleted file mode 100644
index 3e37d64126..0000000000
--- a/platform/ios/app/Settings.bundle/ru.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Настройки приватности";
-"TELEMETRY_SWITCH_TITLE" = "Телеметрия Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Эта настройка разрешает приложению отправлять обезличенные данные об использовании и местоположении в Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/sv.lproj/Root.strings b/platform/ios/app/Settings.bundle/sv.lproj/Root.strings
deleted file mode 100644
index e771af505a..0000000000
--- a/platform/ios/app/Settings.bundle/sv.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Sekretessinställningar";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetri";
-"TELEMETRY_GROUP_FOOTER" = "Denna inställning tillåter applikationen att dela anonymiserad plats och användningsdata med Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/uk.lproj/Root.strings b/platform/ios/app/Settings.bundle/uk.lproj/Root.strings
deleted file mode 100644
index b1615849f6..0000000000
--- a/platform/ios/app/Settings.bundle/uk.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Налаштування конфіденційності";
-"TELEMETRY_SWITCH_TITLE" = "Телеметрія Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Ці налаштування дозволяють застосунку надсилати анонімізовані дані про місце знаходження та використання даних до Mapbox.";
diff --git a/platform/ios/app/Settings.bundle/vi.lproj/Root.strings b/platform/ios/app/Settings.bundle/vi.lproj/Root.strings
deleted file mode 100644
index 29060d00a4..0000000000
--- a/platform/ios/app/Settings.bundle/vi.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "Thiết lập Quyền riêng tư";
-"TELEMETRY_SWITCH_TITLE" = "Trình viễn trắc Mapbox";
-"TELEMETRY_GROUP_FOOTER" = "Tùy chọn này cho phép ứng dụng gửi cho Mapbox các vị trí và dữ liệu sử dụng được vô danh hóa.";
diff --git a/platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings b/platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings
deleted file mode 100644
index b9e1a98325..0000000000
--- a/platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "隐私设置";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox传感数据";
-"TELEMETRY_GROUP_FOOTER" = "此设置允许应用将用户位置和数据以匿名的方式分享给Mapbox。";
diff --git a/platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings b/platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings
deleted file mode 100644
index c6dc565d50..0000000000
--- a/platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"TELEMETRY_GROUP_TITLE" = "隱私設置";
-"TELEMETRY_SWITCH_TITLE" = "Mapbox遙測";
-"TELEMETRY_GROUP_FOOTER" = "此設置允許應用程式將位置資訊及使用數據以匿名的方式分享給Mapbox。";
diff --git a/platform/ios/app/ar.lproj/Localizable.strings b/platform/ios/app/ar.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/ar.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/bg.lproj/Localizable.strings b/platform/ios/app/bg.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/bg.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/ca.lproj/Localizable.strings b/platform/ios/app/ca.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/ca.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/cs.lproj/Localizable.strings b/platform/ios/app/cs.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/cs.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/da.lproj/Localizable.strings b/platform/ios/app/da.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/da.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/de.lproj/Localizable.strings b/platform/ios/app/de.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/de.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/es.lproj/Localizable.strings b/platform/ios/app/es.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/es.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/fi.lproj/Localizable.strings b/platform/ios/app/fi.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/fi.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/fill_filter_style.json b/platform/ios/app/fill_filter_style.json
deleted file mode 100644
index dd7e05b051..0000000000
--- a/platform/ios/app/fill_filter_style.json
+++ /dev/null
@@ -1,10976 +0,0 @@
-{
- "version": 8,
- "name": "States Highlight 2-copy-copy",
- "metadata": {
- "mapbox:autocomposite": true,
- "mapbox:type": "default",
- "mapbox:groups": {
- "1444934828655.3389": {
- "name": "Aeroways",
- "collapsed": true
- },
- "1444933322393.2852": {
- "name": "POI labels (scalerank 1)",
- "collapsed": true
- },
- "1444855786460.0557": {
- "name": "Roads",
- "collapsed": true
- },
- "1444933575858.6992": {
- "name": "Highway shields",
- "collapsed": true
- },
- "1444934295202.7542": {
- "name": "Admin boundaries",
- "collapsed": true
- },
- "1444856151690.9143": {
- "name": "State labels",
- "collapsed": true
- },
- "1444933721429.3076": {
- "name": "Road labels",
- "collapsed": true
- },
- "1444933358918.2366": {
- "name": "POI labels (scalerank 2)",
- "collapsed": true
- },
- "1444933808272.805": {
- "name": "Water labels",
- "collapsed": true
- },
- "1444933372896.5967": {
- "name": "POI labels (scalerank 3)",
- "collapsed": true
- },
- "1444855799204.86": {
- "name": "Bridges",
- "collapsed": true
- },
- "1444856087950.3635": {
- "name": "Marine labels",
- "collapsed": true
- },
- "1456969573402.7817": {
- "name": "Hillshading",
- "collapsed": true
- },
- "1444862510685.128": {
- "name": "City labels",
- "collapsed": true
- },
- "1444855769305.6016": {
- "name": "Tunnels",
- "collapsed": true
- },
- "1456970288113.8113": {
- "name": "Landcover",
- "collapsed": true
- },
- "1444856144497.7825": {
- "name": "Country labels",
- "collapsed": true
- },
- "1444933456003.5437": {
- "name": "POI labels (scalerank 4)",
- "collapsed": true
- }
- }
- },
- "center": [
- -123.10121879440052,
- 44.996395931523324
- ],
- "zoom": 5.047455905107722,
- "bearing": 0,
- "pitch": 0,
- "sources": {
- "composite": {
- "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7,justin.ceee0bde",
- "type": "vector"
- }
- },
- "sprite": "mapbox://sprites/justin/citc7ya7w00002jpa0z16cjah",
- "glyphs": "mapbox://fonts/justin/{fontstack}/{range}.pbf",
- "layers": [
- {
- "id": "background",
- "type": "background",
- "interactive": true,
- "layout": {},
- "paint": {
- "background-color": {
- "base": 1,
- "stops": [
- [
- 11,
- "hsl(35, 32%, 91%)"
- ],
- [
- 13,
- "hsl(35, 12%, 89%)"
- ]
- ]
- }
- }
- },
- {
- "id": "states",
- "type": "fill",
- "source": "composite",
- "source-layer": "states",
- "interactive": true,
- "filter": [
- "in",
- "$type",
- "LineString",
- "Point",
- "Polygon"
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#f00",
- "fill-opacity": 0
- }
- },
- {
- "id": "landcover_snow",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "snow"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 100%)",
- "fill-opacity": 0.2,
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_wood",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "wood"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(75, 62%, 81%)",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 7,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_scrub",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "scrub"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(75, 62%, 81%)",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 7,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_grass",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "grass"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(75, 62%, 81%)",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 7,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_crop",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "crop"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(75, 62%, 81%)",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 7,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "national_park",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse_overlay",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "national_park"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(100, 58%, 76%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 6,
- 0.5
- ]
- ]
- }
- }
- },
- {
- "id": "hospital",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "hospital"
- ],
- "layout": {},
- "paint": {
- "fill-color": {
- "base": 1,
- "stops": [
- [
- 15.5,
- "hsl(340, 37%, 87%)"
- ],
- [
- 16,
- "hsl(340, 63%, 89%)"
- ]
- ]
- }
- }
- },
- {
- "id": "school",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "school"
- ],
- "layout": {},
- "paint": {
- "fill-color": {
- "base": 1,
- "stops": [
- [
- 15.5,
- "hsl(50, 47%, 81%)"
- ],
- [
- 16,
- "hsl(50, 63%, 84%)"
- ]
- ]
- }
- }
- },
- {
- "id": "park",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "park"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(100, 58%, 76%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 6,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "pitch",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "pitch"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(100, 57%, 72%)"
- }
- },
- {
- "id": "pitch-line",
- "type": "line",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "pitch"
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-color": "hsl(75, 57%, 84%)"
- }
- },
- {
- "id": "cemetery",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "cemetery"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(75, 37%, 81%)"
- }
- },
- {
- "id": "industrial",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "industrial"
- ],
- "layout": {},
- "paint": {
- "fill-color": {
- "base": 1,
- "stops": [
- [
- 15.5,
- "hsl(230, 15%, 86%)"
- ],
- [
- 16,
- "hsl(230, 29%, 89%)"
- ]
- ]
- }
- }
- },
- {
- "id": "sand",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "sand"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(60, 46%, 87%)"
- }
- },
- {
- "id": "hillshade_highlight_bright",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 94
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 100%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.12
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_highlight_med",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 90
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 100%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.12
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_faint",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 89
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(56, 59%, 22%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.05
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_med",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 78
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(56, 59%, 22%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.05
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_dark",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 67
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(56, 59%, 22%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.06
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_extreme",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 56
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(56, 59%, 22%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.06
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "waterway-river-canal",
- "type": "line",
- "source": "composite",
- "source-layer": "waterway",
- "minzoom": 8,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "canal",
- "river"
- ],
- "layout": {
- "line-cap": {
- "base": 1,
- "stops": [
- [
- 0,
- "butt"
- ],
- [
- 11,
- "round"
- ]
- ]
- },
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(205, 87%, 76%)",
- "line-width": {
- "base": 1.3,
- "stops": [
- [
- 8.5,
- 0.1
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 8,
- 0
- ],
- [
- 8.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "waterway-small",
- "type": "line",
- "source": "composite",
- "source-layer": "waterway",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "!in",
- "class",
- "canal",
- "river"
- ],
- "layout": {
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-color": "hsl(205, 87%, 76%)",
- "line-width": {
- "base": 1.35,
- "stops": [
- [
- 13.5,
- 0.1
- ],
- [
- 20,
- 3
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 13.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "water-shadow",
- "type": "fill",
- "source": "composite",
- "source-layer": "water",
- "interactive": true,
- "layout": {},
- "paint": {
- "fill-color": "hsl(215, 84%, 69%)",
- "fill-translate": {
- "base": 1.2,
- "stops": [
- [
- 7,
- [
- 0,
- 0
- ]
- ],
- [
- 16,
- [
- -1,
- -1
- ]
- ]
- ]
- },
- "fill-translate-anchor": "viewport",
- "fill-opacity": 1
- }
- },
- {
- "id": "water",
- "ref": "water-shadow",
- "interactive": true,
- "paint": {
- "fill-color": "hsl(196, 80%, 70%)"
- }
- },
- {
- "id": "barrier_line-land-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "barrier_line",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Polygon"
- ],
- [
- "==",
- "class",
- "land"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(35, 12%, 89%)"
- }
- },
- {
- "id": "barrier_line-land-line",
- "type": "line",
- "source": "composite",
- "source-layer": "barrier_line",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "class",
- "land"
- ]
- ],
- "layout": {
- "line-cap": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.99,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 40
- ]
- ]
- },
- "line-color": "hsl(35, 12%, 89%)"
- }
- },
- {
- "id": "aeroway-polygon",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "apron"
- ],
- [
- "==",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": {
- "base": 1,
- "stops": [
- [
- 15,
- "hsl(230, 23%, 82%)"
- ],
- [
- 16,
- "hsl(230, 37%, 84%)"
- ]
- ]
- },
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-runway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "type",
- "runway"
- ]
- ],
- "layout": {},
- "paint": {
- "line-color": {
- "base": 1,
- "stops": [
- [
- 15,
- "hsl(230, 23%, 82%)"
- ],
- [
- 16,
- "hsl(230, 37%, 84%)"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 9,
- 1
- ],
- [
- 18,
- 80
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-taxiway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "type",
- "taxiway"
- ]
- ],
- "layout": {},
- "paint": {
- "line-color": {
- "base": 1,
- "stops": [
- [
- 15,
- "hsl(230, 23%, 82%)"
- ],
- [
- 16,
- "hsl(230, 37%, 84%)"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 0.5
- ],
- [
- 18,
- 20
- ]
- ]
- }
- }
- },
- {
- "id": "building-line",
- "type": "line",
- "source": "composite",
- "source-layer": "building",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "underground",
- "false"
- ],
- "layout": {},
- "paint": {
- "line-color": "hsl(230, 24%, 87%)",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 0.75
- ],
- [
- 20,
- 3
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15.5,
- 0
- ],
- [
- 16,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "building",
- "type": "fill",
- "source": "composite",
- "source-layer": "building",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "underground",
- "false"
- ],
- "layout": {},
- "paint": {
- "fill-color": {
- "base": 1,
- "stops": [
- [
- 15,
- "hsl(35, 11%, 88%)"
- ],
- [
- 16,
- "hsl(35, 8%, 85%)"
- ]
- ]
- },
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 15.5,
- 0
- ],
- [
- 16,
- 1
- ]
- ]
- },
- "fill-outline-color": "hsl(35, 6%, 79%)"
- }
- },
- {
- "id": "tunnel-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 19%, 75%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-street_limited-case",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 19%, 75%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street-case",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 19%, 75%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-secondary-tertiary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(230, 19%, 75%)"
- }
- },
- {
- "id": "tunnel-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "primary"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(230, 19%, 75%)"
- }
- },
- {
- "id": "tunnel-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-color": "hsl(35, 26%, 95%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-steps",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 16,
- 1.6
- ],
- [
- 18,
- 6
- ]
- ]
- },
- "line-color": "hsl(35, 26%, 95%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-trunk_link",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-trunk_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(46, 77%, 78%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-motorway_link",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(26, 100%, 78%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-pedestrian",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-service-link-track",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-service-link-track-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-street_limited",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(35, 14%, 93%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-secondary-tertiary",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-secondary-tertiary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ],
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-primary",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-primary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ],
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-oneway-arrows-blue-minor",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "path",
- "pedestrian",
- "service",
- "track"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 17,
- "oneway-small"
- ],
- [
- 18,
- "oneway-large"
- ]
- ]
- },
- "symbol-spacing": 200,
- "icon-padding": 2
- },
- "paint": {}
- },
- {
- "id": "tunnel-oneway-arrows-blue-major",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "primary",
- "secondary",
- "street",
- "street_limited",
- "tertiary"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-small"
- ],
- [
- 17,
- "oneway-large"
- ]
- ]
- },
- "symbol-spacing": 200,
- "icon-padding": 2
- },
- "paint": {}
- },
- {
- "id": "tunnel-trunk",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(46, 77%, 78%)"
- }
- },
- {
- "id": "tunnel-motorway",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-opacity": 1,
- "line-color": "hsl(26, 100%, 78%)",
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-oneway-arrows-white",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "type",
- "primary_link",
- "secondary_link",
- "tertiary_link"
- ],
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "motorway",
- "motorway_link",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-white-small"
- ],
- [
- 17,
- "oneway-white-large"
- ]
- ]
- },
- "symbol-spacing": 200,
- "icon-padding": 2
- },
- "paint": {}
- },
- {
- "id": "ferry",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "==",
- "type",
- "ferry"
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": {
- "base": 1,
- "stops": [
- [
- 15,
- "hsl(205, 73%, 63%)"
- ],
- [
- 17,
- "hsl(230, 73%, 63%)"
- ]
- ]
- },
- "line-opacity": 1,
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 12,
- [
- 1,
- 0
- ]
- ],
- [
- 13,
- [
- 12,
- 4
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "ferry_auto",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "==",
- "type",
- "ferry_auto"
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": {
- "base": 1,
- "stops": [
- [
- 15,
- "hsl(205, 73%, 63%)"
- ],
- [
- 17,
- "hsl(230, 73%, 63%)"
- ]
- ]
- },
- "line-opacity": 1,
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-path-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "!in",
- "type",
- "crossing",
- "sidewalk",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-color": "hsl(230, 17%, 82%)",
- "line-blur": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 0.75
- ]
- ]
- }
- }
- },
- {
- "id": "road-steps-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 17,
- 4.6
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-color": "hsl(230, 17%, 82%)",
- "line-dasharray": [
- 1,
- 0
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 0.75
- ]
- ]
- }
- }
- },
- {
- "id": "road-sidewalk-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "type",
- "crossing",
- "sidewalk"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-color": "hsl(230, 17%, 82%)",
- "line-blur": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 16,
- 0
- ],
- [
- 16.25,
- 0.75
- ]
- ]
- }
- }
- },
- {
- "id": "turning-features-outline",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "turning_circle",
- "turning_loop"
- ],
- "layout": {
- "icon-image": "turning-circle-outline",
- "icon-size": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.122
- ],
- [
- 18,
- 0.969
- ],
- [
- 20,
- 1
- ]
- ]
- },
- "icon-allow-overlap": true,
- "icon-ignore-placement": true,
- "icon-padding": 0,
- "icon-rotation-alignment": "map"
- },
- "paint": {}
- },
- {
- "id": "road-pedestrian-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 2
- ],
- [
- 18,
- 14.5
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-case",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street-case",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-secondary-tertiary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 9.99,
- 0
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "primary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 9.99,
- 0
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "motorway_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "trunk"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 6.1,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "motorway"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "road-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "road-sidewalks",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-sidewalk-bg",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 16,
- 0
- ],
- [
- 16.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-path",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-path-bg",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-steps",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-steps-bg",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 16,
- 1.6
- ],
- [
- 18,
- 6
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk_link",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-trunk_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(46, 85%, 67%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-motorway_link",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(26, 100%, 68%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-pedestrian",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-pedestrian-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "road-pedestrian-polygon-fill",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Polygon"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "none"
- ],
- [
- "in",
- "class",
- "path",
- "pedestrian"
- ]
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": {
- "base": 1,
- "stops": [
- [
- 16,
- "hsl(230, 16%, 94%)"
- ],
- [
- 16.25,
- "hsl(230, 50%, 98%)"
- ]
- ]
- },
- "fill-outline-color": "hsl(230, 26%, 88%)",
- "fill-opacity": 1
- }
- },
- {
- "id": "road-pedestrian-polygon-pattern",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-pedestrian-polygon-fill",
- "interactive": true,
- "paint": {
- "fill-color": "hsl(0, 0%, 100%)",
- "fill-outline-color": "hsl(35, 10%, 83%)",
- "fill-pattern": "pedestrian-polygon",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 16,
- 0
- ],
- [
- 16.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-service-link-track",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-service-link-track-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)"
- }
- },
- {
- "id": "road-street_limited",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(35, 14%, 93%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-secondary-tertiary",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-secondary-tertiary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 5,
- "hsl(35, 32%, 91%)"
- ],
- [
- 8,
- "hsl(0, 0%, 100%)"
- ]
- ]
- },
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-primary",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-primary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 5,
- "hsl(35, 32%, 91%)"
- ],
- [
- 7,
- "hsl(0, 0%, 100%)"
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "road-oneway-arrows-blue-minor",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "in",
- "class",
- "link",
- "path",
- "pedestrian",
- "service",
- "track"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 17,
- "oneway-small"
- ],
- [
- 18,
- "oneway-large"
- ]
- ]
- },
- "icon-rotation-alignment": "map",
- "icon-padding": 2,
- "symbol-spacing": 200
- },
- "paint": {}
- },
- {
- "id": "road-oneway-arrows-blue-major",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "in",
- "class",
- "primary",
- "secondary",
- "street",
- "street_limited",
- "tertiary"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-small"
- ],
- [
- 17,
- "oneway-large"
- ]
- ]
- },
- "icon-rotation-alignment": "map",
- "icon-padding": 2,
- "symbol-spacing": 200
- },
- "paint": {}
- },
- {
- "id": "road-trunk",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-trunk-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 6,
- "hsl(0, 0%, 100%)"
- ],
- [
- 6.1,
- "hsl(46, 80%, 60%)"
- ],
- [
- 9,
- "hsl(46, 85%, 67%)"
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 8,
- "hsl(26, 87%, 62%)"
- ],
- [
- 9,
- "hsl(26, 100%, 68%)"
- ]
- ]
- }
- }
- },
- {
- "id": "road-rail",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "hsl(50, 17%, 82%)"
- ],
- [
- 16,
- "hsl(230, 10%, 74%)"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-rail-tracks",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-rail",
- "interactive": true,
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "hsl(50, 17%, 82%)"
- ],
- [
- 16,
- "hsl(230, 10%, 74%)"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 4
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-dasharray": [
- 0.1,
- 15
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.75,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-oneway-arrows-white",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "!in",
- "type",
- "primary_link",
- "secondary_link",
- "tertiary_link"
- ],
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "in",
- "class",
- "link",
- "motorway",
- "motorway_link",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-white-small"
- ],
- [
- 17,
- "oneway-white-large"
- ]
- ]
- },
- "icon-padding": 2,
- "symbol-spacing": 200
- },
- "paint": {}
- },
- {
- "id": "turning-features",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "turning_circle",
- "turning_loop"
- ],
- "layout": {
- "icon-image": "turning-circle",
- "icon-size": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.095
- ],
- [
- 18,
- 1
- ]
- ]
- },
- "icon-allow-overlap": true,
- "icon-ignore-placement": true,
- "icon-padding": 0,
- "icon-rotation-alignment": "map"
- },
- "paint": {}
- },
- {
- "id": "bridge-path-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-color": "hsl(230, 17%, 82%)",
- "line-blur": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-steps-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 17,
- 4.6
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-color": "hsl(230, 17%, 82%)",
- "line-dasharray": [
- 1,
- 0
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 0.75
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-pedestrian-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 2
- ],
- [
- 18,
- 14.5
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-secondary-tertiary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "bridge-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "primary"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "bridge-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(230, 24%, 87%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-steps",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-steps-bg",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 16,
- 1.6
- ],
- [
- 18,
- 6
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(46, 85%, 67%)"
- }
- },
- {
- "id": "bridge-motorway_link",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(26, 100%, 68%)"
- }
- },
- {
- "id": "bridge-pedestrian",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-pedestrian-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-service-link-track",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)"
- }
- },
- {
- "id": "bridge-street_limited",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(35, 14%, 93%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-secondary-tertiary",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "type",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-primary",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "primary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-oneway-arrows-blue-minor",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "path",
- "pedestrian",
- "service",
- "track"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 17,
- "oneway-small"
- ],
- [
- 18,
- "oneway-large"
- ]
- ]
- },
- "symbol-spacing": 200,
- "icon-rotation-alignment": "map",
- "icon-padding": 2
- },
- "paint": {}
- },
- {
- "id": "bridge-oneway-arrows-blue-major",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "primary",
- "secondary",
- "street",
- "street_limited",
- "tertiary"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-small"
- ],
- [
- 17,
- "oneway-large"
- ]
- ]
- },
- "symbol-spacing": 200,
- "icon-rotation-alignment": "map",
- "icon-padding": 2
- },
- "paint": {}
- },
- {
- "id": "bridge-trunk",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(46, 85%, 67%)"
- }
- },
- {
- "id": "bridge-motorway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(26, 100%, 68%)"
- }
- },
- {
- "id": "bridge-rail",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "hsl(50, 17%, 82%)"
- ],
- [
- 16,
- "hsl(230, 10%, 74%)"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-rail-tracks",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-rail",
- "interactive": true,
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "hsl(50, 17%, 82%)"
- ],
- [
- 16,
- "hsl(230, 10%, 74%)"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 4
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-dasharray": [
- 0.1,
- 15
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.75,
- 0
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-trunk-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 100%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(46, 85%, 67%)"
- }
- },
- {
- "id": "bridge-motorway_link-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(26, 100%, 68%)"
- }
- },
- {
- "id": "bridge-trunk-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(46, 85%, 67%)"
- }
- },
- {
- "id": "bridge-motorway-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(26, 100%, 68%)"
- }
- },
- {
- "id": "bridge-oneway-arrows-white",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "type",
- "primary_link",
- "secondary_link",
- "tertiary_link"
- ],
- [
- "==",
- "oneway",
- "true"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "motorway",
- "motorway_link",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-white-small"
- ],
- [
- 17,
- "oneway-white-large"
- ]
- ]
- },
- "symbol-spacing": 200,
- "icon-padding": 2
- },
- "paint": {}
- },
- {
- "id": "aerialway",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "aerialway"
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(230, 10%, 74%)",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "admin-3-4-boundaries-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "maritime",
- 0
- ],
- [
- ">=",
- "admin_level",
- 3
- ]
- ],
- "layout": {
- "line-join": "bevel"
- },
- "paint": {
- "line-color": {
- "base": 1,
- "stops": [
- [
- 8,
- "hsl(35, 12%, 89%)"
- ],
- [
- 16,
- "hsl(230, 49%, 90%)"
- ]
- ]
- },
- "line-width": {
- "base": 1,
- "stops": [
- [
- 7,
- 3.75
- ],
- [
- 12,
- 5.5
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 7,
- 0
- ],
- [
- 8,
- 0.75
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 8,
- 3
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 3.5
- ],
- [
- 10,
- 8
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 6,
- "hsl(35, 12%, 89%)"
- ],
- [
- 8,
- "hsl(230, 49%, 90%)"
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 4,
- 0.5
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-3-4-boundaries",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "maritime",
- 0
- ],
- [
- ">=",
- "admin_level",
- 3
- ]
- ],
- "layout": {
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 6,
- [
- 2,
- 0
- ]
- ],
- [
- 7,
- [
- 2,
- 2,
- 6,
- 2
- ]
- ]
- ]
- },
- "line-width": {
- "base": 1,
- "stops": [
- [
- 7,
- 0.75
- ],
- [
- 12,
- 1.5
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 2,
- 0
- ],
- [
- 3,
- 1
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 3,
- "hsl(230, 14%, 77%)"
- ],
- [
- 7,
- "hsl(230, 8%, 62%)"
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "disputed",
- 0
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-color": "hsl(230, 8%, 51%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries-dispute",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "disputed",
- 1
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-dasharray": [
- 1.5,
- 1.5
- ],
- "line-color": "hsl(230, 8%, 51%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "housenum-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "housenum_label",
- "minzoom": 17,
- "interactive": true,
- "layout": {
- "text-field": "{house_num}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 4,
- "text-max-width": 7,
- "text-size": 9.5
- },
- "paint": {
- "text-color": "hsl(35, 2%, 69%)",
- "text-halo-color": "hsl(35, 8%, 85%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0
- }
- },
- {
- "id": "waterway-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "waterway_label",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "canal",
- "river"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-max-angle": 30,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 12
- ],
- [
- 18,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 0.5,
- "text-halo-color": "hsl(196, 80%, 70%)",
- "text-color": "hsl(230, 48%, 44%)",
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-scalerank4-l15",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933456003.5437"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 17,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "==",
- "scalerank",
- 4
- ],
- [
- ">=",
- "localrank",
- 15
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "icon-image": "{maki}-11",
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(26, 25%, 32%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-scalerank4-l1",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933456003.5437"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "<=",
- "localrank",
- 14
- ],
- [
- "==",
- "scalerank",
- 4
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "icon-image": "{maki}-11",
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 1,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(26, 25%, 32%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-parks_scalerank4",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933456003.5437"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "scalerank",
- 4
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "icon-image": "{maki}-11",
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 1,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(100, 100%, 20%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-scalerank3",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933372896.5967"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "==",
- "scalerank",
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "icon-image": "{maki}-11",
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 1,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(26, 25%, 32%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-parks-scalerank3",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933372896.5967"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "scalerank",
- 3
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "icon-image": "{maki}-11",
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(100, 100%, 20%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "road-label-small",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "class",
- "link",
- "motorway",
- "pedestrian",
- "primary",
- "secondary",
- "street",
- "street_limited",
- "tertiary",
- "trunk"
- ],
- [
- "==",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 15,
- 10
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1.25,
- "text-halo-blur": 1
- }
- },
- {
- "id": "road-label-medium",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "class",
- "link",
- "pedestrian",
- "street",
- "street_limited"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 10
- ],
- [
- 20,
- 14
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1
- }
- },
- {
- "id": "road-label-large",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "interactive": true,
- "filter": [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 9,
- 10
- ],
- [
- 20,
- 16
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsla(0, 0%, 100%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "road-shields-black",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933575858.6992"
- },
- "source": "composite",
- "source-layer": "road_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "shield",
- "at-expressway",
- "at-motorway",
- "at-state-b",
- "bg-motorway",
- "bg-national",
- "ch-main",
- "ch-motorway",
- "cz-motorway",
- "cz-road",
- "de-motorway",
- "e-road",
- "fi-main",
- "gr-motorway",
- "gr-national",
- "hr-motorway",
- "hr-state",
- "hu-main",
- "hu-motorway",
- "nz-state",
- "pl-expressway",
- "pl-motorway",
- "pl-national",
- "ro-county",
- "ro-motorway",
- "ro-national",
- "rs-motorway",
- "rs-state-1b",
- "se-main",
- "si-expressway",
- "si-motorway",
- "sk-highway",
- "sk-road",
- "us-interstate",
- "us-interstate-business",
- "us-interstate-duplex",
- "us-interstate-truck",
- "za-metropolitan",
- "za-national",
- "za-provincial",
- "za-regional"
- ],
- [
- "<=",
- "reflen",
- 6
- ]
- ],
- "layout": {
- "text-size": 9,
- "icon-image": "{shield}-{reflen}",
- "icon-rotation-alignment": "viewport",
- "text-max-angle": 38,
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 11,
- 150
- ],
- [
- 14,
- 200
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "symbol-placement": {
- "base": 1,
- "stops": [
- [
- 10,
- "point"
- ],
- [
- 11,
- "line"
- ]
- ]
- },
- "text-padding": 2,
- "text-rotation-alignment": "viewport",
- "text-field": "{ref}",
- "text-letter-spacing": 0.05,
- "icon-padding": 2
- },
- "paint": {
- "text-color": "hsl(0, 0%, 7%)",
- "icon-halo-color": "rgba(0, 0, 0, 1)",
- "icon-halo-width": 1,
- "text-opacity": 1,
- "icon-color": "white",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0
- }
- },
- {
- "id": "road-shields-white",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933575858.6992"
- },
- "source": "composite",
- "source-layer": "road_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "reflen",
- 6
- ],
- [
- "in",
- "shield",
- "at-expressway",
- "at-motorway",
- "at-state-b",
- "bg-motorway",
- "bg-national",
- "ch-main",
- "ch-motorway",
- "cz-motorway",
- "cz-road",
- "de-motorway",
- "e-road",
- "fi-main",
- "gr-motorway",
- "gr-national",
- "hr-motorway",
- "hr-state",
- "hu-main",
- "hu-motorway",
- "nz-state",
- "pl-expressway",
- "pl-motorway",
- "pl-national",
- "ro-county",
- "ro-motorway",
- "ro-national",
- "rs-motorway",
- "rs-state-1b",
- "se-main",
- "si-expressway",
- "si-motorway",
- "sk-highway",
- "sk-road",
- "us-interstate",
- "us-interstate-business",
- "us-interstate-duplex",
- "us-interstate-truck",
- "za-metropolitan",
- "za-national",
- "za-provincial",
- "za-regional"
- ]
- ],
- "layout": {
- "text-size": 9,
- "icon-image": "{shield}-{reflen}",
- "icon-rotation-alignment": "viewport",
- "text-max-angle": 38,
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 11,
- 150
- ],
- [
- 14,
- 200
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "symbol-placement": {
- "base": 1,
- "stops": [
- [
- 10,
- "point"
- ],
- [
- 11,
- "line"
- ]
- ]
- },
- "text-padding": 2,
- "text-rotation-alignment": "viewport",
- "text-field": "{ref}",
- "text-letter-spacing": 0.05,
- "icon-padding": 2
- },
- "paint": {
- "text-color": "hsl(0, 0%, 100%)",
- "icon-halo-color": "rgba(0, 0, 0, 1)",
- "icon-halo-width": 1,
- "text-opacity": 1,
- "icon-color": "white",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0
- }
- },
- {
- "id": "motorway-junction",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933575858.6992"
- },
- "source": "composite",
- "source-layer": "motorway_junction",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- ">",
- "reflen",
- 0
- ],
- "layout": {
- "text-field": "{ref}",
- "text-size": 9,
- "icon-image": "motorway-exit-{reflen}",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ]
- },
- "paint": {
- "text-color": "hsl(0, 0%, 100%)",
- "text-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "poi-scalerank2",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933358918.2366"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "==",
- "scalerank",
- 2
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 14
- ]
- ]
- },
- "icon-image": {
- "stops": [
- [
- 14,
- "{maki}-11"
- ],
- [
- 15,
- "{maki}-15"
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(26, 25%, 32%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-parks-scalerank2",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933358918.2366"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "scalerank",
- 2
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 14
- ]
- ]
- },
- "icon-image": {
- "stops": [
- [
- 14,
- "{maki}-11"
- ],
- [
- 15,
- "{maki}-15"
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(100, 100%, 20%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "rail-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "rail_station_label",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "!=",
- "maki",
- "entrance"
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "icon-image": "{network}",
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-offset": [
- 0,
- 0.85
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- ""
- ],
- [
- 13,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.01,
- "icon-padding": 0,
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(230, 48%, 44%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "icon-halo-width": 4,
- "icon-halo-color": "#fff",
- "text-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "water-label-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933808272.805"
- },
- "source": "composite",
- "source-layer": "water_label",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "<=",
- "area",
- 10000
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 13
- ],
- [
- 20,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(230, 48%, 44%)"
- }
- },
- {
- "id": "water-label",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933808272.805"
- },
- "source": "composite",
- "source-layer": "water_label",
- "minzoom": 5,
- "interactive": true,
- "filter": [
- ">",
- "area",
- 10000
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 13
- ],
- [
- 18,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(230, 48%, 44%)"
- }
- },
- {
- "id": "place-residential",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 16,
- "maxzoom": 18,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "localrank",
- 10
- ],
- [
- "==",
- "type",
- "residential"
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 14
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "visibility": "none",
- "text-offset": [
- 0,
- 0
- ],
- "text-rotation-alignment": "viewport",
- "text-field": "{name_en}",
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(26, 25%, 32%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-parks-scalerank1",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933322393.2852"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 1
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 14
- ]
- ]
- },
- "icon-image": {
- "stops": [
- [
- 13,
- "{maki}-11"
- ],
- [
- 14,
- "{maki}-15"
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(100, 100%, 20%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-scalerank1",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933322393.2852"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "<=",
- "scalerank",
- 1
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 14
- ]
- ]
- },
- "icon-image": {
- "stops": [
- [
- 13,
- "{maki}-11"
- ],
- [
- 14,
- "{maki}-15"
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(26, 25%, 32%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "airport-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "airport_label",
- "minzoom": 9,
- "interactive": true,
- "filter": [
- "<=",
- "scalerank",
- 2
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 12
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "icon-image": {
- "stops": [
- [
- 12,
- "{maki}-11"
- ],
- [
- 13,
- "{maki}-15"
- ]
- ]
- },
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.75
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": {
- "stops": [
- [
- 11,
- "{ref}"
- ],
- [
- 12,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.01,
- "text-max-width": 9
- },
- "paint": {
- "text-color": "hsl(230, 48%, 44%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "place-islet-archipelago-aboriginal",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "in",
- "type",
- "aboriginal_lands",
- "archipelago",
- "islet"
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 16
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-rotation-alignment": "viewport",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(230, 29%, 35%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1
- }
- },
- {
- "id": "place-neighbourhood",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "neighbourhood"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-letter-spacing": 0.1,
- "text-max-width": 7,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11
- ],
- [
- 16,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1,
- "text-color": "hsl(230, 29%, 35%)",
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "place-suburb",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "suburb"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-letter-spacing": 0.15,
- "text-max-width": 7,
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 11
- ],
- [
- 15,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1,
- "text-color": "hsl(230, 29%, 35%)",
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "place-hamlet",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "hamlet"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11.5
- ],
- [
- 15,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1.25,
- "text-color": "hsl(0, 0%, 0%)"
- }
- },
- {
- "id": "place-village",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 8,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "village"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11.5
- ],
- [
- 16,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1.25,
- "text-color": "hsl(0, 0%, 0%)"
- }
- },
- {
- "id": "place-town",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 6,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "town"
- ],
- "layout": {
- "icon-image": "dot-9",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 11,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 12,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- 0,
- -0.15
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 7,
- 11.5
- ],
- [
- 15,
- 20
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "place-island",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "island"
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 16
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-rotation-alignment": "viewport",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(230, 29%, 35%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1
- }
- },
- {
- "id": "place-city-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "scalerank",
- 0,
- 1,
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "type",
- "city"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 12
- ],
- [
- 14,
- 22
- ]
- ]
- },
- "icon-image": "dot-9",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.2
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "place-city-md-s",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "E",
- "S",
- "SE",
- "SW"
- ],
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "icon-image": "dot-10",
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "top"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.1
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 1,
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-blur": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "place-city-md-n",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ],
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ]
- ],
- "layout": {
- "icon-image": "dot-10",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 1
- }
- },
- {
- "id": "place-city-lg-s",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "E",
- "S",
- "SE",
- "SW"
- ]
- ],
- "layout": {
- "icon-image": "dot-11",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.15
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "top"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 1
- }
- },
- {
- "id": "place-city-lg-n",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ]
- ],
- "layout": {
- "icon-image": "dot-11",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-opacity": 1,
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 1
- }
- },
- {
- "id": "marine-label-sm-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- ">=",
- "labelrank",
- 4
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- },
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 4,
- 100
- ],
- [
- 6,
- 400
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.1,
- "text-max-width": 5
- },
- "paint": {
- "text-color": "hsl(205, 83%, 88%)"
- }
- },
- {
- "id": "marine-label-sm-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- ">=",
- "labelrank",
- 4
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.1,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(205, 83%, 88%)"
- }
- },
- {
- "id": "marine-label-md-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "labelrank",
- 2,
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 12
- ],
- [
- 5,
- 20
- ]
- ]
- },
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.15,
- "text-max-width": 5
- },
- "paint": {
- "text-color": "hsl(205, 83%, 88%)"
- }
- },
- {
- "id": "marine-label-md-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "in",
- "labelrank",
- 2,
- 3
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.15,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 14
- ],
- [
- 5,
- 20
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(205, 83%, 88%)"
- }
- },
- {
- "id": "marine-label-lg-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "labelrank",
- 1
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.1,
- "symbol-placement": "line",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(205, 83%, 88%)"
- }
- },
- {
- "id": "marine-label-lg-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "==",
- "labelrank",
- 1
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(205, 83%, 88%)"
- }
- },
- {
- "id": "state-label-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 9,
- "interactive": true,
- "filter": [
- "<",
- "area",
- 20000
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 10
- ],
- [
- 9,
- 14
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 6,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 5
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1
- }
- },
- {
- "id": "state-label-md",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "<",
- "area",
- 80000
- ],
- [
- ">=",
- "area",
- 20000
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 5,
- 10
- ],
- [
- 8,
- 16
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 5,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1
- }
- },
- {
- "id": "state-label-lg",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- ">=",
- "area",
- 80000
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 4,
- 10
- ],
- [
- 7,
- 18
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-padding": 1,
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 4,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": "hsl(0, 0%, 100%)",
- "text-halo-width": 1
- }
- },
- {
- "id": "country-label-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- ">=",
- "scalerank",
- 5
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 14
- ],
- [
- 9,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": {
- "base": 1,
- "stops": [
- [
- 2,
- "rgba(255,255,255,0.75)"
- ],
- [
- 3,
- "hsl(0, 0%, 100%)"
- ]
- ]
- },
- "text-halo-width": 1.25
- }
- },
- {
- "id": "country-label-md",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "in",
- "scalerank",
- 3,
- 4
- ],
- "layout": {
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{code}"
- ],
- [
- 2,
- "{name_en}"
- ]
- ]
- },
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 10
- ],
- [
- 8,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": {
- "base": 1,
- "stops": [
- [
- 2,
- "rgba(255,255,255,0.75)"
- ],
- [
- 3,
- "hsl(0, 0%, 100%)"
- ]
- ]
- },
- "text-halo-width": 1.25
- }
- },
- {
- "id": "country-label-lg",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- "in",
- "scalerank",
- 1,
- 2
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": {
- "base": 1,
- "stops": [
- [
- 0,
- 5
- ],
- [
- 3,
- 6
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 10
- ],
- [
- 6,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 0%)",
- "text-halo-color": {
- "base": 1,
- "stops": [
- [
- 2,
- "rgba(255,255,255,0.75)"
- ],
- [
- 3,
- "hsl(0, 0%, 100%)"
- ]
- ]
- },
- "text-halo-width": 1.25
- }
- }
- ],
- "created": "2016-09-21T01:16:33.105Z",
- "id": "citc7ya7w00002jpa0z16cjah",
- "modified": "2016-09-21T01:17:05.579Z",
- "owner": "justin",
- "draft": false
-} \ No newline at end of file
diff --git a/platform/ios/app/fr.lproj/Localizable.strings b/platform/ios/app/fr.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/fr.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/gl.lproj/Localizable.strings b/platform/ios/app/gl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/gl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/he.lproj/Localizable.strings b/platform/ios/app/he.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/he.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/hu.lproj/Localizable.strings b/platform/ios/app/hu.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/hu.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/insert_access_token.sh b/platform/ios/app/insert_access_token.sh
deleted file mode 100755
index 3a3a776443..0000000000
--- a/platform/ios/app/insert_access_token.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-if [[ "$CI" ]]; then
- echo "CI environment, access token not required"
- exit 0
-else
- echo "Inserting Mapbox access token..."
- token_file=~/.mapbox
- token_file2=~/mapbox
- token="$(cat $token_file 2>/dev/null || cat $token_file2 2>/dev/null)"
- if [ "$token" ]; then
- plutil -replace MGLMapboxAccessToken -string $token "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
- echo "Token insertion successful"
- else
- echo \'error: Missing Mapbox access token\'
- echo "error: Get an access token from <https://www.mapbox.com/studio/account/tokens/>, then create a new file at $token_file that contains the access token."
- exit 1
- fi
-fi
diff --git a/platform/ios/app/ja.lproj/Localizable.strings b/platform/ios/app/ja.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/ja.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/ko.lproj/Localizable.strings b/platform/ios/app/ko.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/ko.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/line_filter_style.json b/platform/ios/app/line_filter_style.json
deleted file mode 100644
index 0685919c15..0000000000
--- a/platform/ios/app/line_filter_style.json
+++ /dev/null
@@ -1,8746 +0,0 @@
-{
- "version": 8,
- "name": "Counties",
- "metadata": {
- "mapbox:autocomposite": true,
- "mapbox:type": "default",
- "mapbox:groups": {
- "1444934828655.3389": {
- "name": "Aeroways",
- "collapsed": true
- },
- "1444933322393.2852": {
- "name": "POI labels (scalerank 1)",
- "collapsed": true
- },
- "1444855786460.0557": {
- "name": "Roads",
- "collapsed": false
- },
- "1444934295202.7542": {
- "name": "Admin boundaries",
- "collapsed": true
- },
- "1444856151690.9143": {
- "name": "State labels",
- "collapsed": true
- },
- "1444933721429.3076": {
- "name": "Road labels",
- "collapsed": true
- },
- "1444933358918.2366": {
- "name": "POI labels (scalerank 2)",
- "collapsed": true
- },
- "1444933808272.805": {
- "name": "Water labels",
- "collapsed": true
- },
- "1444933372896.5967": {
- "name": "POI labels (scalerank 3)",
- "collapsed": true
- },
- "1444855799204.86": {
- "name": "Bridges",
- "collapsed": true
- },
- "1444856087950.3635": {
- "name": "Marine labels",
- "collapsed": true
- },
- "1456969573402.7817": {
- "name": "Hillshading",
- "collapsed": true
- },
- "1444862510685.128": {
- "name": "City labels",
- "collapsed": true
- },
- "1444855769305.6016": {
- "name": "Tunnels",
- "collapsed": true
- },
- "1456970288113.8113": {
- "name": "Landcover",
- "collapsed": true
- },
- "1444856144497.7825": {
- "name": "Country labels",
- "collapsed": true
- }
- }
- },
- "center": [
- -87.85943678051258,
- 38.70590811306201
- ],
- "zoom": 5.691589021766011,
- "bearing": 0,
- "pitch": 0,
- "sources": {
- "composite": {
- "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7,justin.7xm3smvr",
- "type": "vector"
- }
- },
- "sprite": "mapbox://sprites/justin/citen6af800652ip1omttobg8",
- "glyphs": "mapbox://fonts/justin/{fontstack}/{range}.pbf",
- "layers": [
- {
- "id": "background",
- "type": "background",
- "interactive": true,
- "layout": {},
- "paint": {
- "background-color": "hsl(55, 1%, 20%)"
- }
- },
- {
- "id": "counties",
- "type": "line",
- "metadata": {},
- "source": "composite",
- "source-layer": "county-bppyng",
- "interactive": true,
- "filter": [
- "in",
- "$type",
- "LineString",
- "Point",
- "Polygon"
- ],
- "layout": {
- "visibility": "visible",
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(284, 77%, 49%)",
- "line-blur": 0,
- "line-opacity": 0.5,
- "line-width": 1
- }
- },
- {
- "id": "landcover_wood",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "wood"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_scrub",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "scrub"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_grass",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "grass"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_crop",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "crop"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "national_park",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse_overlay",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "national_park"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 6,
- 0.5
- ]
- ]
- }
- }
- },
- {
- "id": "parks",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "park"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 6,
- 0.75
- ]
- ]
- }
- }
- },
- {
- "id": "pitch",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "pitch"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)"
- }
- },
- {
- "id": "industrial",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "industrial"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 20%)"
- }
- },
- {
- "id": "sand",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "sand"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)"
- }
- },
- {
- "id": "hillshade_highlight_bright",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 94
- ],
- "layout": {},
- "paint": {
- "fill-color": "#fff",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.04
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_highlight_med",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 90
- ],
- "layout": {},
- "paint": {
- "fill-color": "#fff",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.04
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_faint",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 89
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.033
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_med",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 78
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.033
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_dark",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 67
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.06
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_extreme",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 56
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.06
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "waterway-river-canal",
- "type": "line",
- "source": "composite",
- "source-layer": "waterway",
- "minzoom": 8,
- "interactive": true,
- "filter": [
- "any",
- [
- "==",
- "class",
- "canal"
- ],
- [
- "==",
- "class",
- "river"
- ]
- ],
- "layout": {
- "line-cap": {
- "base": 1,
- "stops": [
- [
- 0,
- "butt"
- ],
- [
- 11,
- "round"
- ]
- ]
- },
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(185, 2%, 10%)",
- "line-width": {
- "base": 1.3,
- "stops": [
- [
- 8.5,
- 0.1
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 8,
- 0
- ],
- [
- 8.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "water shadow",
- "type": "fill",
- "source": "composite",
- "source-layer": "water",
- "interactive": true,
- "layout": {},
- "paint": {
- "fill-color": "hsl(185, 3%, 5%)",
- "fill-translate": {
- "base": 1.2,
- "stops": [
- [
- 7,
- [
- 0,
- 0
- ]
- ],
- [
- 16,
- [
- -1,
- -1
- ]
- ]
- ]
- },
- "fill-translate-anchor": "viewport",
- "fill-opacity": 1
- }
- },
- {
- "id": "water",
- "ref": "water shadow",
- "interactive": true,
- "paint": {
- "fill-color": "hsl(185, 2%, 10%)"
- }
- },
- {
- "id": "barrier_line-land-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "barrier_line",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Polygon"
- ],
- [
- "==",
- "class",
- "land"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-outline-color": "hsl(55, 1%, 20%)"
- }
- },
- {
- "id": "barrier_line-land-line",
- "type": "line",
- "source": "composite",
- "source-layer": "barrier_line",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "class",
- "land"
- ]
- ],
- "layout": {
- "line-cap": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.99,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 40
- ]
- ]
- },
- "line-color": "hsl(55, 1%, 20%)"
- }
- },
- {
- "id": "aeroway-polygon",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "apron"
- ],
- [
- "==",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 27%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-runway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "type",
- "runway"
- ]
- ],
- "layout": {},
- "paint": {
- "line-color": "hsl(0, 0%, 27%)",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 9,
- 1
- ],
- [
- 18,
- 80
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-taxiway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "type",
- "taxiway"
- ]
- ],
- "layout": {},
- "paint": {
- "line-color": "hsl(0, 0%, 27%)",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 0.5
- ],
- [
- 18,
- 20
- ]
- ]
- }
- }
- },
- {
- "id": "building",
- "type": "fill",
- "source": "composite",
- "source-layer": "building",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "underground",
- "false"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 17%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 15.5,
- 0
- ],
- [
- 16,
- 1
- ]
- ]
- },
- "fill-outline-color": "hsl(55, 1%, 15%)",
- "fill-antialias": true
- }
- },
- {
- "id": "tunnel-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-street_limited-case",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street-case",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-secondary-tertiary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)"
- }
- },
- {
- "id": "tunnel-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "primary"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)"
- }
- },
- {
- "id": "tunnel-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-steps",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-trunk_link",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-trunk_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-motorway_link",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-pedestrian",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-service-link-track",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-service-link-track-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-street_limited",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-secondary-tertiary",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-secondary-tertiary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ],
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-primary",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-primary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ],
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-trunk",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)"
- }
- },
- {
- "id": "tunnel-motorway",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-opacity": 1,
- "line-color": "hsl(185, 2%, 15%)",
- "line-blur": 0
- }
- },
- {
- "id": "road-pedestrian-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 2
- ],
- [
- 18,
- 14.5
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-case",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street-case",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-main-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "primary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "motorway_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 5,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "trunk"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.5
- ],
- [
- 9,
- 1.4
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 6.1,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "motorway"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "road-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "road-sidewalks",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "type",
- "crossing",
- "sidewalk"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 16,
- 0
- ],
- [
- 16.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "!in",
- "type",
- "crossing",
- "sidewalk",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-steps",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk_link",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-trunk_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-motorway_link",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-pedestrian",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-pedestrian-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "road-service-link-track",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "road-street_limited",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-secondary-tertiary",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-main-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-primary",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-primary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-trunk-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.5
- ],
- [
- 9,
- 1.4
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-motorway",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-rail",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 17%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-pedestrian-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 2
- ],
- [
- 18,
- 14.5
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-secondary-tertiary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "bridge-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "primary"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "bridge-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "layer",
- 1
- ],
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-steps",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway_link",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-pedestrian",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-pedestrian-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-service-link-track",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-street_limited",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-secondary-tertiary",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "type",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-primary",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "primary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-rail",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 17%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-trunk-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway_link-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-trunk-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "admin-3-4-boundaries-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "maritime",
- 0
- ],
- [
- ">=",
- "admin_level",
- 3
- ]
- ],
- "layout": {
- "line-join": "bevel"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 10%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 3.5
- ],
- [
- 10,
- 8
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 4,
- 0
- ],
- [
- 6,
- 0.75
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 8,
- 3
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 3.5
- ],
- [
- 10,
- 10
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 10%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 4,
- 0.5
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-3-4-boundaries",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "maritime",
- 0
- ],
- [
- ">=",
- "admin_level",
- 3
- ]
- ],
- "layout": {
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 6,
- [
- 2,
- 0
- ]
- ],
- [
- 7,
- [
- 2,
- 2,
- 6,
- 2
- ]
- ]
- ]
- },
- "line-width": {
- "base": 1,
- "stops": [
- [
- 7,
- 0.75
- ],
- [
- 12,
- 1.5
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 2,
- 0
- ],
- [
- 3,
- 1
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 4,
- "hsl(0, 0%, 27%)"
- ],
- [
- 5,
- "hsl(0, 0%, 35%)"
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "disputed",
- 0
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 43%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries-dispute",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "disputed",
- 1
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-dasharray": [
- 1.5,
- 1.5
- ],
- "line-color": "hsl(0, 0%, 14%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "waterway-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "waterway_label",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "canal",
- "river"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-max-angle": 30,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 12
- ],
- [
- 18,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 0,
- "text-halo-blur": 0,
- "text-color": "hsl(0, 0%, 32%)"
- }
- },
- {
- "id": "poi-scalerank3",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933372896.5967"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "==",
- "scalerank",
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 1,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 60%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-parks-scalerank3",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933372896.5967"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "scalerank",
- 3
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-halo-blur": 0,
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 47%)"
- ],
- [
- 9,
- "hsl(0, 0%, 73%)"
- ]
- ]
- }
- }
- },
- {
- "id": "road-label-small",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "class",
- "",
- "ferry",
- "link",
- "motorway",
- "path",
- "pedestrian",
- "primary",
- "secondary",
- "street",
- "street_limited",
- "tertiary",
- "track",
- "trunk"
- ],
- [
- "==",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 15,
- 10
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 500,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 78%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1.25,
- "text-halo-blur": 0
- }
- },
- {
- "id": "road-label-medium",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "class",
- "",
- "link",
- "pedestrian",
- "street",
- "street_limited"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 10
- ],
- [
- 20,
- 14
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 500,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 78%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "road-label-large",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 9,
- 10
- ],
- [
- 20,
- 16
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 400,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 78%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-scalerank2",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933358918.2366"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "==",
- "scalerank",
- 2
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 60%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-parks-scalerank2",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933358918.2366"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "scalerank",
- 2
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 47%)"
- ],
- [
- 9,
- "hsl(0, 0%, 73%)"
- ]
- ]
- },
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "water-label",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933808272.805"
- },
- "source": "composite",
- "source-layer": "water_label",
- "minzoom": 5,
- "interactive": true,
- "filter": [
- ">",
- "area",
- 10000
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 13
- ],
- [
- 18,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-parks-scalerank1",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933322393.2852"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 1
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 47%)"
- ],
- [
- 9,
- "hsl(0, 0%, 73%)"
- ]
- ]
- },
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-scalerank1",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933322393.2852"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "<=",
- "scalerank",
- 1
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 60%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "airport-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "airport_label",
- "minzoom": 10,
- "interactive": true,
- "filter": [
- "<=",
- "scalerank",
- 2
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 12
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "icon-image": {
- "stops": [
- [
- 12,
- "{maki}-11"
- ],
- [
- 13,
- "{maki}-15"
- ]
- ]
- },
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.75
- ],
- "text-anchor": "top",
- "text-field": {
- "stops": [
- [
- 11,
- "{ref}"
- ],
- [
- 14,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.01,
- "text-max-width": 9
- },
- "paint": {
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-islets-archipelago-aboriginal",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "in",
- "type",
- "aboriginal_lands",
- "archipelago",
- "islet"
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 16
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-neighbourhood",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 12,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "neighbourhood"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-letter-spacing": 0.1,
- "text-max-width": 7,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11
- ],
- [
- 16,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-color": "hsl(0, 0%, 70%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-suburb",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 11,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "suburb"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-letter-spacing": 0.15,
- "text-max-width": 7,
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 11
- ],
- [
- 15,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-color": "hsl(0, 0%, 70%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-hamlet",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "hamlet"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11.5
- ],
- [
- 15,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-village",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 11,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "village"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11.5
- ],
- [
- 16,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "text-color": {
- "base": 1,
- "stops": [
- [
- 10,
- "hsl(0, 0%, 75%)"
- ],
- [
- 11,
- "hsl(0, 0%, 85%)"
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-town",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 7,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "town"
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 7,
- 11.5
- ],
- [
- 15,
- 20
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 11,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 12,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-max-width": 7
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 10,
- "hsl(0, 0%, 75%)"
- ],
- [
- 11,
- "hsl(0, 0%, 85%)"
- ]
- ]
- },
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-islands",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "island"
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 16
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "scalerank",
- 0,
- 1,
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "type",
- "city"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 12
- ],
- [
- 14,
- 22
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(0, 0%, 90%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-md-s",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "E",
- "S",
- "SE",
- "SW"
- ],
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- },
- "text-anchor": "top",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.1
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "icon-image": "dot-10"
- },
- "paint": {
- "text-halo-width": 1,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 90%)",
- "text-halo-blur": 0,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "place-city-md-n",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ],
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ]
- ],
- "layout": {
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": "bottom",
- "text-field": "{name_en}",
- "text-max-width": 7,
- "icon-image": "dot-10"
- },
- "paint": {
- "text-color": "hsl(0, 0%, 90%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-lg-s",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "E",
- "S",
- "SE",
- "SW"
- ]
- ],
- "layout": {
- "icon-image": "dot-11",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.15
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "top"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 95%)"
- ],
- [
- 9,
- "hsl(0, 0%, 90%)"
- ]
- ]
- },
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-lg-n",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ]
- ],
- "layout": {
- "icon-image": "dot-11",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 95%)"
- ],
- [
- 9,
- "hsl(0, 0%, 90%)"
- ]
- ]
- },
- "text-opacity": 1,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "marine-label-sm-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- ">=",
- "labelrank",
- 4
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- },
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 4,
- 100
- ],
- [
- 6,
- 400
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.1,
- "text-max-width": 5
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-sm-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- ">=",
- "labelrank",
- 4
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.1,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-md-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "labelrank",
- 2,
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 12
- ],
- [
- 5,
- 20
- ]
- ]
- },
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.15,
- "text-max-width": 5
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-md-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "in",
- "labelrank",
- 2,
- 3
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.15,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 14
- ],
- [
- 5,
- 20
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-lg-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "labelrank",
- 1
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.1,
- "symbol-placement": "line",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-lg-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "==",
- "labelrank",
- 1
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "state-label-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 9,
- "interactive": true,
- "filter": [
- "<",
- "area",
- 20000
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 10
- ],
- [
- 9,
- 14
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 6,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 5
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 50%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "state-label-md",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "<",
- "area",
- 80000
- ],
- [
- ">=",
- "area",
- 20000
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 5,
- 10
- ],
- [
- 8,
- 16
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 5,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 50%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "state-label-lg",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- ">=",
- "area",
- 80000
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 4,
- 10
- ],
- [
- 7,
- 18
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-padding": 1,
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 4,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 50%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "country-label-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- ">=",
- "scalerank",
- 5
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 14
- ],
- [
- 9,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 1.25,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 45%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "country-label-md",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "in",
- "scalerank",
- 3,
- 4
- ],
- "layout": {
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{code}"
- ],
- [
- 2,
- "{name_en}"
- ]
- ]
- },
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 10
- ],
- [
- 8,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 1.25,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 45%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "country-label-lg",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- "in",
- "scalerank",
- 1,
- 2
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": {
- "base": 1,
- "stops": [
- [
- 0,
- 5
- ],
- [
- 3,
- 6
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 10
- ],
- [
- 6,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 1.25,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 45%)",
- "text-halo-blur": 0
- }
- }
- ],
- "created": "2016-09-22T17:58:12.692Z",
- "id": "citen6af800652ip1omttobg8",
- "modified": "2016-09-22T19:19:49.611Z",
- "owner": "justin",
- "draft": false
-} \ No newline at end of file
diff --git a/platform/ios/app/lt.lproj/Localizable.strings b/platform/ios/app/lt.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/lt.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/main.m b/platform/ios/app/main.m
deleted file mode 100644
index 954584f141..0000000000
--- a/platform/ios/app/main.m
+++ /dev/null
@@ -1,10 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MBXAppDelegate.h"
-
-int main(int argc, char * argv[])
-{
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([MBXAppDelegate class]));
- }
-}
diff --git a/platform/ios/app/missing_icon.json b/platform/ios/app/missing_icon.json
deleted file mode 100644
index 5da4125990..0000000000
--- a/platform/ios/app/missing_icon.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "version": 8,
- "name": "Mapbox Streets",
- "sprite": "mapbox://sprites/mapbox/streets-v8",
- "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",
- "sources": {
- "point": {
- "type": "geojson",
- "data": {
- "type": "Feature",
- "properties": {},
- "geometry": {
- "type": "Point",
- "coordinates": [0, 0]
- }
- }
- }
- },
- "layers": [{
- "id": "bg",
- "type": "background",
- "paint": {
- "background-color": "#f00"
- }
- }, {
- "id": "point",
- "type": "circle",
- "source": "point",
- "paint": {
- "circle-radius": 100
- }
- }, {
- "id": "icon",
- "type": "symbol",
- "source": "point",
- "layout": {
- "icon-image": "missing-icon"
- }
- }]
-}
diff --git a/platform/ios/app/nl.lproj/Localizable.strings b/platform/ios/app/nl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/nl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/numeric_filter_style.json b/platform/ios/app/numeric_filter_style.json
deleted file mode 100644
index 71a57e9115..0000000000
--- a/platform/ios/app/numeric_filter_style.json
+++ /dev/null
@@ -1,8734 +0,0 @@
-{
- "version": 8,
- "name": "Hospital Referral Regions",
- "metadata": {
- "mapbox:autocomposite": true,
- "mapbox:type": "default",
- "mapbox:groups": {
- "1444934828655.3389": {
- "name": "Aeroways",
- "collapsed": true
- },
- "1444933322393.2852": {
- "name": "POI labels (scalerank 1)",
- "collapsed": true
- },
- "1444855786460.0557": {
- "name": "Roads",
- "collapsed": true
- },
- "1444934295202.7542": {
- "name": "Admin boundaries",
- "collapsed": true
- },
- "1444856151690.9143": {
- "name": "State labels",
- "collapsed": true
- },
- "1444933721429.3076": {
- "name": "Road labels",
- "collapsed": true
- },
- "1444933358918.2366": {
- "name": "POI labels (scalerank 2)",
- "collapsed": true
- },
- "1444933808272.805": {
- "name": "Water labels",
- "collapsed": true
- },
- "1444933372896.5967": {
- "name": "POI labels (scalerank 3)",
- "collapsed": true
- },
- "1444855799204.86": {
- "name": "Bridges",
- "collapsed": true
- },
- "1444856087950.3635": {
- "name": "Marine labels",
- "collapsed": true
- },
- "1456969573402.7817": {
- "name": "Hillshading",
- "collapsed": true
- },
- "1444862510685.128": {
- "name": "City labels",
- "collapsed": true
- },
- "1444855769305.6016": {
- "name": "Tunnels",
- "collapsed": true
- },
- "1456970288113.8113": {
- "name": "Landcover",
- "collapsed": true
- },
- "1444856144497.7825": {
- "name": "Country labels",
- "collapsed": true
- }
- }
- },
- "center": [
- -95.84116499999999,
- 36.96350799999996
- ],
- "zoom": 4,
- "bearing": 0,
- "pitch": 0,
- "sources": {
- "composite": {
- "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7,justin.do53bu8c",
- "type": "vector"
- }
- },
- "sprite": "mapbox://sprites/justin/citerrmcg00662hogpcv4o3w8",
- "glyphs": "mapbox://fonts/justin/{fontstack}/{range}.pbf",
- "layers": [
- {
- "id": "background",
- "type": "background",
- "interactive": true,
- "layout": {},
- "paint": {
- "background-color": "hsl(55, 1%, 20%)"
- }
- },
- {
- "id": "regions",
- "type": "fill",
- "source": "composite",
- "source-layer": "hrr-9jhrxz",
- "interactive": true,
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-opacity": 0
- }
- },
- {
- "id": "landcover_wood",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "wood"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_scrub",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "scrub"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_grass",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "grass"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_crop",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456970288113.8113"
- },
- "source": "composite",
- "source-layer": "landcover",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "==",
- "class",
- "crop"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-opacity": 0.1,
- "fill-antialias": false
- }
- },
- {
- "id": "national_park",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse_overlay",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "national_park"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 6,
- 0.5
- ]
- ]
- }
- }
- },
- {
- "id": "parks",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "park"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 6,
- 0.75
- ]
- ]
- }
- }
- },
- {
- "id": "pitch",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "pitch"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)"
- }
- },
- {
- "id": "industrial",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "industrial"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 20%)"
- }
- },
- {
- "id": "sand",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "interactive": true,
- "filter": [
- "==",
- "class",
- "sand"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(132, 2%, 20%)"
- }
- },
- {
- "id": "hillshade_highlight_bright",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 94
- ],
- "layout": {},
- "paint": {
- "fill-color": "#fff",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.04
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_highlight_med",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 90
- ],
- "layout": {},
- "paint": {
- "fill-color": "#fff",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.04
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_faint",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 89
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.033
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_med",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 78
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.033
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_dark",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 67
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.06
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_extreme",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1456969573402.7817"
- },
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "level",
- 56
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 35%)",
- "fill-opacity": {
- "stops": [
- [
- 14,
- 0.06
- ],
- [
- 16,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "waterway-river-canal",
- "type": "line",
- "source": "composite",
- "source-layer": "waterway",
- "minzoom": 8,
- "interactive": true,
- "filter": [
- "any",
- [
- "==",
- "class",
- "canal"
- ],
- [
- "==",
- "class",
- "river"
- ]
- ],
- "layout": {
- "line-cap": {
- "base": 1,
- "stops": [
- [
- 0,
- "butt"
- ],
- [
- 11,
- "round"
- ]
- ]
- },
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(185, 2%, 10%)",
- "line-width": {
- "base": 1.3,
- "stops": [
- [
- 8.5,
- 0.1
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 8,
- 0
- ],
- [
- 8.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "water shadow",
- "type": "fill",
- "source": "composite",
- "source-layer": "water",
- "interactive": true,
- "layout": {},
- "paint": {
- "fill-color": "hsl(185, 3%, 5%)",
- "fill-translate": {
- "base": 1.2,
- "stops": [
- [
- 7,
- [
- 0,
- 0
- ]
- ],
- [
- 16,
- [
- -1,
- -1
- ]
- ]
- ]
- },
- "fill-translate-anchor": "viewport",
- "fill-opacity": 1
- }
- },
- {
- "id": "water",
- "ref": "water shadow",
- "interactive": true,
- "paint": {
- "fill-color": "hsl(185, 2%, 10%)"
- }
- },
- {
- "id": "barrier_line-land-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "barrier_line",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Polygon"
- ],
- [
- "==",
- "class",
- "land"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 20%)",
- "fill-outline-color": "hsl(55, 1%, 20%)"
- }
- },
- {
- "id": "barrier_line-land-line",
- "type": "line",
- "source": "composite",
- "source-layer": "barrier_line",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "class",
- "land"
- ]
- ],
- "layout": {
- "line-cap": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.99,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 40
- ]
- ]
- },
- "line-color": "hsl(55, 1%, 20%)"
- }
- },
- {
- "id": "aeroway-polygon",
- "type": "fill",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "apron"
- ],
- [
- "==",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(0, 0%, 27%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-runway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "type",
- "runway"
- ]
- ],
- "layout": {},
- "paint": {
- "line-color": "hsl(0, 0%, 27%)",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 9,
- 1
- ],
- [
- 18,
- 80
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-taxiway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934828655.3389"
- },
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "type",
- "taxiway"
- ]
- ],
- "layout": {},
- "paint": {
- "line-color": "hsl(0, 0%, 27%)",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 0.5
- ],
- [
- 18,
- 20
- ]
- ]
- }
- }
- },
- {
- "id": "building",
- "type": "fill",
- "source": "composite",
- "source-layer": "building",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "underground",
- "false"
- ],
- "layout": {},
- "paint": {
- "fill-color": "hsl(55, 1%, 17%)",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 15.5,
- 0
- ],
- [
- 16,
- 1
- ]
- ]
- },
- "fill-outline-color": "hsl(55, 1%, 15%)",
- "fill-antialias": true
- }
- },
- {
- "id": "tunnel-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-street_limited-case",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street-case",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-secondary-tertiary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)"
- }
- },
- {
- "id": "tunnel-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "primary"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)"
- }
- },
- {
- "id": "tunnel-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 29%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-steps",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-trunk_link",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-trunk_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-motorway_link",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-pedestrian",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-service-link-track",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-service-link-track-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-street_limited",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-secondary-tertiary",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-secondary-tertiary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ],
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-primary",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-primary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ],
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-trunk",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "tunnel"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(185, 2%, 15%)"
- }
- },
- {
- "id": "tunnel-motorway",
- "metadata": {
- "mapbox:group": "1444855769305.6016"
- },
- "ref": "tunnel-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-opacity": 1,
- "line-color": "hsl(185, 2%, 15%)",
- "line-blur": 0
- }
- },
- {
- "id": "road-pedestrian-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 2
- ],
- [
- 18,
- 14.5
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-case",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street-case",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.9,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-main-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "primary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "motorway_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 7,
- 0.4
- ],
- [
- 9,
- 0.5
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 5,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "trunk"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.5
- ],
- [
- 9,
- 1.4
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 6.1,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "class",
- "motorway"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "road-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "road-sidewalks",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "type",
- "crossing",
- "sidewalk"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 16,
- 0
- ],
- [
- 16.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "!in",
- "type",
- "crossing",
- "sidewalk",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-steps",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk_link",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-trunk_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-motorway_link",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-pedestrian",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-pedestrian-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "road-service-link-track",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "road-street_limited",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-secondary-tertiary",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-main-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-primary",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-primary-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-trunk-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.5
- ],
- [
- 9,
- 1.4
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-motorway",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "ref": "road-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1
- }
- },
- {
- "id": "road-rail",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855786460.0557"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "structure",
- "bridge",
- "tunnel"
- ],
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 17%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-pedestrian-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "class",
- "pedestrian"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 2
- ],
- [
- 18,
- 14.5
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-low",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-service-link-track-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street_limited"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "street"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-secondary-tertiary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "bridge-primary-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "primary"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "bridge-trunk_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "layer",
- 1
- ],
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-trunk-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-construction",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "construction"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-path",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "steps"
- ],
- [
- "==",
- "class",
- "path"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 1,
- 0.5
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-steps",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "steps"
- ]
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.75,
- 1
- ]
- ],
- [
- 16,
- [
- 1,
- 0.75
- ]
- ],
- [
- 17,
- [
- 0.3,
- 0.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 14,
- 0
- ],
- [
- 14.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway_link",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-pedestrian",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-pedestrian-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": 1,
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 1,
- 0
- ]
- ],
- [
- 15,
- [
- 1.5,
- 0.4
- ]
- ],
- [
- 16,
- [
- 1,
- 0.2
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-service-link-track",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "type",
- "trunk_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "service",
- "track"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-street_limited",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-street_limited-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "ref": "bridge-street-low",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-secondary-tertiary",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "type",
- "secondary",
- "tertiary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-primary",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "primary"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "layer",
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-rail",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 17%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-trunk-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway-2-case",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 7,
- 0.5
- ],
- [
- 10,
- 1
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 17%)",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk_link-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "==",
- "type",
- "trunk_link"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway_link-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway_link"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-trunk-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "trunk"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "bridge-motorway-2",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444855799204.86"
- },
- "source": "composite",
- "source-layer": "road",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "class",
- "motorway"
- ],
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- ">=",
- "layer",
- 2
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 27%)"
- }
- },
- {
- "id": "admin-3-4-boundaries-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "maritime",
- 0
- ],
- [
- ">=",
- "admin_level",
- 3
- ]
- ],
- "layout": {
- "line-join": "bevel"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 10%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 3.5
- ],
- [
- 10,
- 8
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 4,
- 0
- ],
- [
- 6,
- 0.75
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 8,
- 3
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries-bg",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 3.5
- ],
- [
- 10,
- 10
- ]
- ]
- },
- "line-color": "hsl(0, 0%, 10%)",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 4,
- 0.5
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-3-4-boundaries",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "maritime",
- 0
- ],
- [
- ">=",
- "admin_level",
- 3
- ]
- ],
- "layout": {
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 6,
- [
- 2,
- 0
- ]
- ],
- [
- 7,
- [
- 2,
- 2,
- 6,
- 2
- ]
- ]
- ]
- },
- "line-width": {
- "base": 1,
- "stops": [
- [
- 7,
- 0.75
- ],
- [
- 12,
- 1.5
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 2,
- 0
- ],
- [
- 3,
- 1
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 4,
- "hsl(0, 0%, 27%)"
- ],
- [
- 5,
- "hsl(0, 0%, 35%)"
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "disputed",
- 0
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-color": "hsl(0, 0%, 43%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries-dispute",
- "type": "line",
- "metadata": {
- "mapbox:group": "1444934295202.7542"
- },
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "admin_level",
- 2
- ],
- [
- "==",
- "disputed",
- 1
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "line-join": "round"
- },
- "paint": {
- "line-dasharray": [
- 1.5,
- 1.5
- ],
- "line-color": "hsl(0, 0%, 14%)",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "waterway-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "waterway_label",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "canal",
- "river"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-max-angle": 30,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 12
- ],
- [
- 18,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 0,
- "text-halo-blur": 0,
- "text-color": "hsl(0, 0%, 32%)"
- }
- },
- {
- "id": "poi-scalerank3",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933372896.5967"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "==",
- "scalerank",
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 1,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 60%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-parks-scalerank3",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933372896.5967"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "scalerank",
- 3
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-halo-blur": 0,
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 47%)"
- ],
- [
- 9,
- "hsl(0, 0%, 73%)"
- ]
- ]
- }
- }
- },
- {
- "id": "road-label-small",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "class",
- "",
- "ferry",
- "link",
- "motorway",
- "path",
- "pedestrian",
- "primary",
- "secondary",
- "street",
- "street_limited",
- "tertiary",
- "track",
- "trunk"
- ],
- [
- "==",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 15,
- 10
- ],
- [
- 20,
- 13
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 500,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 78%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1.25,
- "text-halo-blur": 0
- }
- },
- {
- "id": "road-label-medium",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 13,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "class",
- "",
- "link",
- "pedestrian",
- "street",
- "street_limited"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 10
- ],
- [
- 20,
- 14
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 500,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 78%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "road-label-large",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933721429.3076"
- },
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 12,
- "interactive": true,
- "filter": [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 9,
- 10
- ],
- [
- 20,
- 16
- ]
- ]
- },
- "text-max-angle": 30,
- "symbol-spacing": 400,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01
- },
- "paint": {
- "text-color": "hsl(0, 0%, 78%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-scalerank2",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933358918.2366"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "==",
- "scalerank",
- 2
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.65
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 60%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-parks-scalerank2",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933358918.2366"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "scalerank",
- 2
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 47%)"
- ],
- [
- 9,
- "hsl(0, 0%, 73%)"
- ]
- ]
- },
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "water-label",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933808272.805"
- },
- "source": "composite",
- "source-layer": "water_label",
- "minzoom": 5,
- "interactive": true,
- "filter": [
- ">",
- "area",
- 10000
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 13
- ],
- [
- 18,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-parks-scalerank1",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933322393.2852"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 1
- ],
- [
- "in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 47%)"
- ],
- [
- 9,
- "hsl(0, 0%, 73%)"
- ]
- ]
- },
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-scalerank1",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444933322393.2852"
- },
- "source": "composite",
- "source-layer": "poi_label",
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "campsite",
- "cemetery",
- "dog-park",
- "garden",
- "golf",
- "park",
- "picnic-site",
- "playground",
- "zoo"
- ],
- [
- "<=",
- "scalerank",
- 1
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 60%)",
- "text-halo-color": "#212121",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "airport-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "airport_label",
- "minzoom": 10,
- "interactive": true,
- "filter": [
- "<=",
- "scalerank",
- 2
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 12
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "icon-image": {
- "stops": [
- [
- 12,
- "{maki}-11"
- ],
- [
- 13,
- "{maki}-15"
- ]
- ]
- },
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0.75
- ],
- "text-anchor": "top",
- "text-field": {
- "stops": [
- [
- 11,
- "{ref}"
- ],
- [
- 14,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.01,
- "text-max-width": 9
- },
- "paint": {
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 0.5,
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-islets-archipelago-aboriginal",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "in",
- "type",
- "aboriginal_lands",
- "archipelago",
- "islet"
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 16
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 8
- },
- "paint": {
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-neighbourhood",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 12,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "neighbourhood"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-letter-spacing": 0.1,
- "text-max-width": 7,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11
- ],
- [
- 16,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-color": "hsl(0, 0%, 70%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-suburb",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 11,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "suburb"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-letter-spacing": 0.15,
- "text-max-width": 7,
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 11
- ],
- [
- 15,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-color": "hsl(0, 0%, 70%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-hamlet",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "hamlet"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11.5
- ],
- [
- 15,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-village",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 11,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "village"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11.5
- ],
- [
- 16,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "text-color": {
- "base": 1,
- "stops": [
- [
- 10,
- "hsl(0, 0%, 75%)"
- ],
- [
- 11,
- "hsl(0, 0%, 85%)"
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-town",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 7,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "town"
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 7,
- 11.5
- ],
- [
- 15,
- 20
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 11,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 12,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-max-width": 7
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 10,
- "hsl(0, 0%, 75%)"
- ],
- [
- 11,
- "hsl(0, 0%, 85%)"
- ]
- ]
- },
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-islands",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "==",
- "type",
- "island"
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 16
- ]
- ]
- },
- "text-max-angle": 38,
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 2,
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(0, 0%, 85%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "scalerank",
- 0,
- 1,
- 2,
- 3,
- 4,
- 5
- ],
- [
- "==",
- "type",
- "city"
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 12
- ],
- [
- 14,
- 22
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": [
- 0,
- 0
- ],
- "text-field": "{name_en}",
- "text-max-width": 7
- },
- "paint": {
- "text-color": "hsl(0, 0%, 90%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-md-s",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "E",
- "S",
- "SE",
- "SW"
- ],
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- },
- "text-anchor": "top",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.1
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "icon-image": "dot-10"
- },
- "paint": {
- "text-halo-width": 1,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 90%)",
- "text-halo-blur": 0,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "place-city-md-n",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ],
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ]
- ],
- "layout": {
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": "bottom",
- "text-field": "{name_en}",
- "text-max-width": 7,
- "icon-image": "dot-10"
- },
- "paint": {
- "text-color": "hsl(0, 0%, 90%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-lg-s",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "E",
- "S",
- "SE",
- "SW"
- ]
- ],
- "layout": {
- "icon-image": "dot-11",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.15
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "top"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 95%)"
- ],
- [
- 9,
- "hsl(0, 0%, 90%)"
- ]
- ]
- },
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-city-lg-n",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444862510685.128"
- },
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "==",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ]
- ],
- "layout": {
- "icon-image": "dot-11",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": {
- "base": 1,
- "stops": [
- [
- 7,
- "hsl(0, 0%, 95%)"
- ],
- [
- 9,
- "hsl(0, 0%, 90%)"
- ]
- ]
- },
- "text-opacity": 1,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 0
- }
- },
- {
- "id": "marine-label-sm-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- ">=",
- "labelrank",
- 4
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- },
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 4,
- 100
- ],
- [
- 6,
- 400
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.1,
- "text-max-width": 5
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-sm-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- ">=",
- "labelrank",
- 4
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.1,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-md-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "labelrank",
- 2,
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 12
- ],
- [
- 5,
- 20
- ]
- ]
- },
- "symbol-spacing": 250,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.15,
- "text-max-width": 5
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-md-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "in",
- "labelrank",
- 2,
- 3
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.15,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 14
- ],
- [
- 5,
- 20
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-lg-ln",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "==",
- "labelrank",
- 1
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.1,
- "symbol-placement": "line",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "marine-label-lg-pt",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856087950.3635"
- },
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "==",
- "labelrank",
- 1
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "hsl(0, 0%, 32%)",
- "text-halo-blur": 0,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)"
- }
- },
- {
- "id": "state-label-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 9,
- "interactive": true,
- "filter": [
- "<",
- "area",
- 20000
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 10
- ],
- [
- 9,
- 14
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 6,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 5
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 50%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "state-label-md",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "<",
- "area",
- 80000
- ],
- [
- ">=",
- "area",
- 20000
- ]
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 5,
- 10
- ],
- [
- 8,
- 16
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 5,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 50%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "state-label-lg",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856151690.9143"
- },
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- ">=",
- "area",
- 80000
- ],
- "layout": {
- "text-size": {
- "base": 1,
- "stops": [
- [
- 4,
- 10
- ],
- [
- 7,
- 18
- ]
- ]
- },
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-padding": 1,
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 4,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "hsl(0, 0%, 50%)",
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "country-label-sm",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- ">=",
- "scalerank",
- 5
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 14
- ],
- [
- 9,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 1.25,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 45%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "country-label-md",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "in",
- "scalerank",
- 3,
- 4
- ],
- "layout": {
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{code}"
- ],
- [
- 2,
- "{name_en}"
- ]
- ]
- },
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 10
- ],
- [
- 8,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 1.25,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 45%)",
- "text-halo-blur": 0
- }
- },
- {
- "id": "country-label-lg",
- "type": "symbol",
- "metadata": {
- "mapbox:group": "1444856144497.7825"
- },
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- "in",
- "scalerank",
- 1,
- 2
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-max-width": {
- "base": 1,
- "stops": [
- [
- 0,
- 5
- ],
- [
- 3,
- 6
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 10
- ],
- [
- 6,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 1.25,
- "text-halo-color": "hsla(0, 0%, 10%, 0.75)",
- "text-color": "hsl(0, 0%, 45%)",
- "text-halo-blur": 0
- }
- }
- ],
- "created": "2016-09-22T20:06:46.804Z",
- "id": "citerrmcg00662hogpcv4o3w8",
- "modified": "2016-09-22T20:28:22.514Z",
- "owner": "justin",
- "draft": false
-} \ No newline at end of file
diff --git a/platform/ios/app/pl.lproj/Localizable.strings b/platform/ios/app/pl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/pl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/points.geojson b/platform/ios/app/points.geojson
deleted file mode 100644
index a34f53bd36..0000000000
--- a/platform/ios/app/points.geojson
+++ /dev/null
@@ -1,136346 +0,0 @@
-{
- "crs": {
- "properties": {
- "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
- },
- "type": "name"
- },
- "features": [
- {
- "geometry": {
- "coordinates": [
- -77.00896639534831,
- 38.87031006108791,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04299'>Report Problem</a>",
- "NAME": "H04299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91636206355402,
- 38.89569665945388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04451'>Report Problem</a>",
- "NAME": "H04451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0238724795834,
- 38.908392080284656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04488'>Report Problem</a>",
- "NAME": "H04488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97787257022829,
- 38.8489449722363,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04834'>Report Problem</a>",
- "NAME": "H04834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03147970117229,
- 38.96902788924794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04859'>Report Problem</a>",
- "NAME": "H04859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9913552472916,
- 38.83709694933415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05056'>Report Problem</a>",
- "NAME": "H05056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00040502778565,
- 38.85974851759818,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05098'>Report Problem</a>",
- "NAME": "H05098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99323795575543,
- 38.859058565652674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05136'>Report Problem</a>",
- "NAME": "H05136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.959878452791,
- 38.88617396045632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05165'>Report Problem</a>",
- "NAME": "H05165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98698481952468,
- 38.860417884264336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05227'>Report Problem</a>",
- "NAME": "H05227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98993851902051,
- 38.839618544962086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05262'>Report Problem</a>",
- "NAME": "H05262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98987381620425,
- 38.84045690178814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05263'>Report Problem</a>",
- "NAME": "H05263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91231659856827,
- 38.89190091586272,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05286'>Report Problem</a>",
- "NAME": "H05286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99348740940816,
- 38.83986590773414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05391'>Report Problem</a>",
- "NAME": "H05391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98601664025121,
- 38.91047765444307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05422'>Report Problem</a>",
- "NAME": "H05422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98957955060457,
- 38.837540182413264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05485'>Report Problem</a>",
- "NAME": "H05485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98470810619855,
- 38.84570928130159,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05572'>Report Problem</a>",
- "NAME": "H05572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98317121239893,
- 38.845981386046816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05573'>Report Problem</a>",
- "NAME": "H05573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98780462640617,
- 38.834545599644464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05654'>Report Problem</a>",
- "NAME": "H05654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9885525170853,
- 38.83350723429082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05655'>Report Problem</a>",
- "NAME": "H05655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93173574657547,
- 38.908409952681225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05703'>Report Problem</a>",
- "NAME": "H05703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00455649194319,
- 38.845714815307616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05706'>Report Problem</a>",
- "NAME": "H05706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99855738244389,
- 38.83314573676457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05711'>Report Problem</a>",
- "NAME": "H05711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99759077343545,
- 38.83484620257337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05714'>Report Problem</a>",
- "NAME": "H05714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99878902851339,
- 38.83402379395176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05715'>Report Problem</a>",
- "NAME": "H05715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99584213768712,
- 38.84433254766388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05876'>Report Problem</a>",
- "NAME": "H05876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99837327570914,
- 38.83016139292818,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05932'>Report Problem</a>",
- "NAME": "H05932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94244722039106,
- 38.8984667850143,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06014'>Report Problem</a>",
- "NAME": "H06014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93128596530984,
- 38.88813824915444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06062'>Report Problem</a>",
- "NAME": "H06062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.993404398372,
- 38.83796673223114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06138'>Report Problem</a>",
- "NAME": "H06138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97881935219762,
- 38.84695302166241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06198'>Report Problem</a>",
- "NAME": "H06198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98093780382641,
- 38.84810364743267,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06204'>Report Problem</a>",
- "NAME": "H06204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99151276057596,
- 38.84277892390687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06281'>Report Problem</a>",
- "NAME": "H06281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94245572382569,
- 38.89910077971911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06284'>Report Problem</a>",
- "NAME": "H06284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97686929496238,
- 38.847532020368746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06351'>Report Problem</a>",
- "NAME": "H06351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9908307093506,
- 38.83445746759559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06371'>Report Problem</a>",
- "NAME": "H06371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93099707003753,
- 38.88749531288,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06421'>Report Problem</a>",
- "NAME": "H06421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99497416142488,
- 38.83408459821604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06449'>Report Problem</a>",
- "NAME": "H06449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99613574191525,
- 38.83427919813744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06450'>Report Problem</a>",
- "NAME": "H06450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03172585575031,
- 38.91692065774532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 02/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06618'>Report Problem</a>",
- "NAME": "H06618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00485047487068,
- 38.89142723809215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06681'>Report Problem</a>",
- "NAME": "H06681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99666296819146,
- 38.843205383344355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06847'>Report Problem</a>",
- "NAME": "H06847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.992343207122,
- 38.86050844281507,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06936'>Report Problem</a>",
- "NAME": "H06936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99854678638224,
- 38.84050507675981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07080'>Report Problem</a>",
- "NAME": "H07080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9733590055815,
- 38.850989827283605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07263'>Report Problem</a>",
- "NAME": "H07263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01012243607381,
- 38.8674809483319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07374'>Report Problem</a>",
- "NAME": "H07374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05434791651238,
- 38.89321416302191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07410'>Report Problem</a>",
- "NAME": "H07410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94283195424802,
- 38.89090011532114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07469'>Report Problem</a>",
- "NAME": "H07469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98402442882518,
- 38.841073903098554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07489'>Report Problem</a>",
- "NAME": "H07489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98553461650069,
- 38.834608525707,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07553'>Report Problem</a>",
- "NAME": "H07553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98635144562992,
- 38.83527938483727,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07663'>Report Problem</a>",
- "NAME": "H07663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94277587834381,
- 38.899779302608884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07664'>Report Problem</a>",
- "NAME": "H07664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9761772397151,
- 38.85176761201083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07676'>Report Problem</a>",
- "NAME": "H07676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98828114282179,
- 38.858208327743675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07726'>Report Problem</a>",
- "NAME": "H07726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.931872005955,
- 38.881380159518855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07735'>Report Problem</a>",
- "NAME": "H07735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98583667653341,
- 38.91526521286277,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 02/26/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07797'>Report Problem</a>",
- "NAME": "H07797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98678399344202,
- 38.91493268211026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07799'>Report Problem</a>",
- "NAME": "H07799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99000306666689,
- 38.85427337296903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07843'>Report Problem</a>",
- "NAME": "H07843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0006533530727,
- 38.86585272764679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07851'>Report Problem</a>",
- "NAME": "H07851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97602904220025,
- 38.85269103611326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07897'>Report Problem</a>",
- "NAME": "H07897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98793210310468,
- 38.87652507359999,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07904'>Report Problem</a>",
- "NAME": "H07904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99111619748747,
- 38.85435082736918,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07914'>Report Problem</a>",
- "NAME": "H07914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99004411081333,
- 38.858518228004314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07919'>Report Problem</a>",
- "NAME": "H07919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92398128690964,
- 38.904010206187216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08001'>Report Problem</a>",
- "NAME": "H08001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837064326993,
- 38.83974025659751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08151'>Report Problem</a>",
- "NAME": "H08151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01504314794114,
- 38.89115951512574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08225'>Report Problem</a>",
- "NAME": "H08225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02875131595142,
- 38.898418860484426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00030'>Report Problem</a>",
- "NAME": "H00030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95764882330856,
- 38.883691300595814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00031'>Report Problem</a>",
- "NAME": "H00031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0529977220696,
- 38.96280384942628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00032'>Report Problem</a>",
- "NAME": "H00032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0279853511952,
- 38.92300810700433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00033'>Report Problem</a>",
- "NAME": "H00033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94119295857982,
- 38.87978174909364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00034'>Report Problem</a>",
- "NAME": "H00034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94388454003413,
- 38.87775490556381,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00035'>Report Problem</a>",
- "NAME": "H00035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95085670222016,
- 38.88763142914867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00036'>Report Problem</a>",
- "NAME": "H00036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01632906577423,
- 38.815379894850096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00037'>Report Problem</a>",
- "NAME": "H00037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0161692070949,
- 38.81496240082986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00038'>Report Problem</a>",
- "NAME": "H00038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01736558362855,
- 38.81439578430056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00039'>Report Problem</a>",
- "NAME": "H00039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97584637824413,
- 38.850562575855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00041'>Report Problem</a>",
- "NAME": "H00041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01470069113194,
- 38.902140123803925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00043'>Report Problem</a>",
- "NAME": "H00043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00912452852958,
- 38.82135233969486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00044'>Report Problem</a>",
- "NAME": "H00044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95592616553711,
- 38.884011091508654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00045'>Report Problem</a>",
- "NAME": "H00045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97148377126307,
- 38.84925439555673,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00046'>Report Problem</a>",
- "NAME": "H00046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01036125901071,
- 38.82445226880478,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00047'>Report Problem</a>",
- "NAME": "H00047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01051174457935,
- 38.825275620679086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00048'>Report Problem</a>",
- "NAME": "H00048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01418080489695,
- 38.828572971819355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00049'>Report Problem</a>",
- "NAME": "H00049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97146849955459,
- 38.84719842287334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00050'>Report Problem</a>",
- "NAME": "H00050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96991534493175,
- 38.847508707008586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00051'>Report Problem</a>",
- "NAME": "H00051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01164835924266,
- 38.939619564354835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00052'>Report Problem</a>",
- "NAME": "H00052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97074915707135,
- 38.84688159815845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00053'>Report Problem</a>",
- "NAME": "H00053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96827883483726,
- 38.84705917601572,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00054'>Report Problem</a>",
- "NAME": "H00054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01048335544911,
- 38.93900746204618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00055'>Report Problem</a>",
- "NAME": "H00055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01043348675512,
- 38.9397611453294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00056'>Report Problem</a>",
- "NAME": "H00056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09837205432707,
- 38.94626249795688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00057'>Report Problem</a>",
- "NAME": "H00057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1002431089394,
- 38.94608328309577,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00058'>Report Problem</a>",
- "NAME": "H00058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10073059458767,
- 38.946548997829375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00060'>Report Problem</a>",
- "NAME": "H00060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01446624081542,
- 38.90114438742313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00061'>Report Problem</a>",
- "NAME": "H00061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01457754925728,
- 38.89472288892249,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00062'>Report Problem</a>",
- "NAME": "H00062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01266954068682,
- 38.939815956010804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00063'>Report Problem</a>",
- "NAME": "H00063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95160820241006,
- 38.86900066345887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00064'>Report Problem</a>",
- "NAME": "H00064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9540042960017,
- 38.88668825445605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00066'>Report Problem</a>",
- "NAME": "H00066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94806876057358,
- 38.8675158903519,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00067'>Report Problem</a>",
- "NAME": "H00067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97907649493274,
- 38.86876087754535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00068'>Report Problem</a>",
- "NAME": "H00068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97979279295288,
- 38.8380891347343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08319'>Report Problem</a>",
- "NAME": "H08319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98591509719353,
- 38.85459888533094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08368'>Report Problem</a>",
- "NAME": "H08368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96468572679832,
- 38.92540502852441,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08422'>Report Problem</a>",
- "NAME": "H08422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9934888941163,
- 38.83204805424982,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08435'>Report Problem</a>",
- "NAME": "H08435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9923916315782,
- 38.83220582513475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08436'>Report Problem</a>",
- "NAME": "H08436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03181078795048,
- 38.89578957105822,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08515'>Report Problem</a>",
- "NAME": "H08515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97706625283728,
- 38.84138399430156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08517'>Report Problem</a>",
- "NAME": "H08517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0323454934693,
- 38.896124103023254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08605'>Report Problem</a>",
- "NAME": "H08605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91100970788654,
- 38.89390220984717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08619'>Report Problem</a>",
- "NAME": "H08619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04064814698516,
- 38.90268562195885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08887'>Report Problem</a>",
- "NAME": "H08887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99703717417856,
- 38.86376791978137,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08962'>Report Problem</a>",
- "NAME": "H08962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98479626988147,
- 38.8497942055782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09118'>Report Problem</a>",
- "NAME": "H09118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02615757568168,
- 38.89395356410638,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09350'>Report Problem</a>",
- "NAME": "H09350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00734329985171,
- 38.83646993289141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00003'>Report Problem</a>",
- "NAME": "H00003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98670067697417,
- 38.86519768209315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00004'>Report Problem</a>",
- "NAME": "H00004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0203117912091,
- 38.92266262008507,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00005'>Report Problem</a>",
- "NAME": "H00005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98622199688307,
- 38.863276861458345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00007'>Report Problem</a>",
- "NAME": "H00007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06871050072776,
- 38.944957189195556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 11/10/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00008'>Report Problem</a>",
- "NAME": "H00008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98475995153744,
- 38.864828271134506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00010'>Report Problem</a>",
- "NAME": "H00010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0004914276414,
- 38.83780381048957,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00011'>Report Problem</a>",
- "NAME": "H00011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08564775375521,
- 38.90964557354399,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00012'>Report Problem</a>",
- "NAME": "H00012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06476139670181,
- 38.94241042259082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00013'>Report Problem</a>",
- "NAME": "H00013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00056245478972,
- 38.83420877857179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00014'>Report Problem</a>",
- "NAME": "H00014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98659922647472,
- 38.85547111685086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00015'>Report Problem</a>",
- "NAME": "H00015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94285288710866,
- 38.87042235053403,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00016'>Report Problem</a>",
- "NAME": "H00016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01418500520768,
- 38.96804162964368,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00017'>Report Problem</a>",
- "NAME": "H00017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99726767139077,
- 38.832052708118574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00018'>Report Problem</a>",
- "NAME": "H00018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04892152546748,
- 38.917154075179845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00023'>Report Problem</a>",
- "NAME": "H00023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99842514975484,
- 38.82798879487114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00024'>Report Problem</a>",
- "NAME": "H00024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92931049765984,
- 38.886476330156206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00025'>Report Problem</a>",
- "NAME": "H00025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92706829183449,
- 38.8861878004065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00026'>Report Problem</a>",
- "NAME": "H00026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00448639241161,
- 38.82109143641948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00027'>Report Problem</a>",
- "NAME": "H00027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03080027784384,
- 38.898386908064644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00028'>Report Problem</a>",
- "NAME": "H00028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03096217970821,
- 38.89823578603241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00029'>Report Problem</a>",
- "NAME": "H00029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9882085093919,
- 38.85522304522973,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00002'>Report Problem</a>",
- "NAME": "H00002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99337048103996,
- 38.832965045867496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00020'>Report Problem</a>",
- "NAME": "H00020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98960814925373,
- 38.83596304770729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00021'>Report Problem</a>",
- "NAME": "H00021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99628444071986,
- 38.83016409270196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00022'>Report Problem</a>",
- "NAME": "H00022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97907972723497,
- 38.84794629413317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00059'>Report Problem</a>",
- "NAME": "H00059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98310255748365,
- 38.8535688576217,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00099'>Report Problem</a>",
- "NAME": "H00099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98702802537683,
- 38.840136216678005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00108'>Report Problem</a>",
- "NAME": "H00108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98590954839855,
- 38.84401352998382,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00162'>Report Problem</a>",
- "NAME": "H00162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00243586107831,
- 38.860670144391996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00242'>Report Problem</a>",
- "NAME": "H00242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9883830443067,
- 38.85180131847511,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00295'>Report Problem</a>",
- "NAME": "H00295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00186057274746,
- 38.841555320984845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00377'>Report Problem</a>",
- "NAME": "H00377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93114705048231,
- 38.88879526557277,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00407'>Report Problem</a>",
- "NAME": "H00407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98775245098426,
- 38.85402117476584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00439'>Report Problem</a>",
- "NAME": "H00439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01224787233296,
- 38.86738702124701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00557'>Report Problem</a>",
- "NAME": "H00557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03435214518555,
- 38.90958196669992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/01/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00916'>Report Problem</a>",
- "NAME": "H00916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00745622900936,
- 38.90778876724929,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 02/27/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00926'>Report Problem</a>",
- "NAME": "H00926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99605934440424,
- 38.84661700609712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01000'>Report Problem</a>",
- "NAME": "H01000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01432579829839,
- 38.90474183677433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01040'>Report Problem</a>",
- "NAME": "H01040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03288981034959,
- 38.9025928093699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01174'>Report Problem</a>",
- "NAME": "H01174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99167910301576,
- 38.896665588622305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01520'>Report Problem</a>",
- "NAME": "H01520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0004169171207,
- 38.841816201702336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 10/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01590'>Report Problem</a>",
- "NAME": "H01590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97841081726658,
- 38.86170400692483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01954'>Report Problem</a>",
- "NAME": "H01954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9974960635124,
- 38.86079489154801,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02363'>Report Problem</a>",
- "NAME": "H02363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99259102867128,
- 38.92844863358593,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02514'>Report Problem</a>",
- "NAME": "H02514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99858811144134,
- 38.846513115673616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02907'>Report Problem</a>",
- "NAME": "H02907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91372890917275,
- 38.89570302319379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02976'>Report Problem</a>",
- "NAME": "H02976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02349137955831,
- 38.931629593522736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03110'>Report Problem</a>",
- "NAME": "H03110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91488830659483,
- 38.892943258230794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03216'>Report Problem</a>",
- "NAME": "H03216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03207439428094,
- 38.894753239540144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03569'>Report Problem</a>",
- "NAME": "H03569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03210933995463,
- 38.89420376454046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 12/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03571'>Report Problem</a>",
- "NAME": "H03571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08984295641454,
- 38.92389463648992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03846'>Report Problem</a>",
- "NAME": "H03846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99973408710572,
- 38.8592151743981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03972'>Report Problem</a>",
- "NAME": "H03972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02611904840202,
- 38.89309439050424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center><b>Not In Service</b></p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04031'>Report Problem</a>",
- "NAME": "H04031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01362136786202,
- 38.91814722262231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00541'>Report Problem</a>",
- "NAME": "H00541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01349750327192,
- 38.917126106792715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00542'>Report Problem</a>",
- "NAME": "H00542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01069416546065,
- 38.917051321550225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00543'>Report Problem</a>",
- "NAME": "H00543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98456614591932,
- 38.891509061074494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00544'>Report Problem</a>",
- "NAME": "H00544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00596500742333,
- 38.90362535603583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00545'>Report Problem</a>",
- "NAME": "H00545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97431451221271,
- 38.93217484609292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00546'>Report Problem</a>",
- "NAME": "H00546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05530269530544,
- 38.926836501875435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00547'>Report Problem</a>",
- "NAME": "H00547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01222712033929,
- 38.91326101385692,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00548'>Report Problem</a>",
- "NAME": "H00548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01066007478472,
- 38.91254226596518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00550'>Report Problem</a>",
- "NAME": "H00550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01410302035261,
- 38.9148683670127,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00551'>Report Problem</a>",
- "NAME": "H00551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97905819445877,
- 38.889579267396854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00552'>Report Problem</a>",
- "NAME": "H00552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01060315063076,
- 38.918052524624756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00553'>Report Problem</a>",
- "NAME": "H00553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02081744766905,
- 38.89282415955387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00554'>Report Problem</a>",
- "NAME": "H00554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0580317373795,
- 38.904185188942485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00555'>Report Problem</a>",
- "NAME": "H00555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05876849720363,
- 38.90413805829549,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00556'>Report Problem</a>",
- "NAME": "H00556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064318580094,
- 38.90117898157355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00558'>Report Problem</a>",
- "NAME": "H00558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03864316498213,
- 38.91042496027107,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00559'>Report Problem</a>",
- "NAME": "H00559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00357821847021,
- 38.897471673295854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00560'>Report Problem</a>",
- "NAME": "H00560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00358232493264,
- 38.89821155696173,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00561'>Report Problem</a>",
- "NAME": "H00561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01705764608303,
- 38.86377615224299,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00562'>Report Problem</a>",
- "NAME": "H00562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0716960615629,
- 38.96484371625319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00563'>Report Problem</a>",
- "NAME": "H00563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02283656023243,
- 38.914151121175266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00564'>Report Problem</a>",
- "NAME": "H00564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01765757602736,
- 38.88802508136319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00565'>Report Problem</a>",
- "NAME": "H00565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04728176774067,
- 38.91762893071494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00566'>Report Problem</a>",
- "NAME": "H00566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03699845762682,
- 38.935420954181026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00567'>Report Problem</a>",
- "NAME": "H00567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01062421523633,
- 38.92027888571206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00568'>Report Problem</a>",
- "NAME": "H00568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98753047577941,
- 38.91386381710404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00256'>Report Problem</a>",
- "NAME": "H00256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00380763913427,
- 38.87318300584154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00257'>Report Problem</a>",
- "NAME": "H00257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98032630731235,
- 38.91728943401489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00258'>Report Problem</a>",
- "NAME": "H00258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97884164849171,
- 38.917360439522476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00259'>Report Problem</a>",
- "NAME": "H00259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01143896297877,
- 38.93683360770177,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00262'>Report Problem</a>",
- "NAME": "H00262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98487039704727,
- 38.917215395627416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00263'>Report Problem</a>",
- "NAME": "H00263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98530576893822,
- 38.917790389827125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00264'>Report Problem</a>",
- "NAME": "H00264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98572468372815,
- 38.916337262896796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00265'>Report Problem</a>",
- "NAME": "H00265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9862242551418,
- 38.91664589425007,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00266'>Report Problem</a>",
- "NAME": "H00266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9868049342536,
- 38.91642178893458,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00267'>Report Problem</a>",
- "NAME": "H00267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98694665721162,
- 38.916751473748825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00268'>Report Problem</a>",
- "NAME": "H00268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98649088696031,
- 38.916933399241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00269'>Report Problem</a>",
- "NAME": "H00269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9864570392697,
- 38.91744240202542,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00270'>Report Problem</a>",
- "NAME": "H00270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94719326544984,
- 38.87220963464331,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00272'>Report Problem</a>",
- "NAME": "H00272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99634567566413,
- 38.94269296839883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00273'>Report Problem</a>",
- "NAME": "H00273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99727526617477,
- 38.94268893102567,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00274'>Report Problem</a>",
- "NAME": "H00274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95962196848646,
- 38.873663784124524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00275'>Report Problem</a>",
- "NAME": "H00275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01576688218383,
- 38.87062427474521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00276'>Report Problem</a>",
- "NAME": "H00276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01600386090753,
- 38.870003293131596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00277'>Report Problem</a>",
- "NAME": "H00277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03672557398609,
- 38.89188592903099,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00278'>Report Problem</a>",
- "NAME": "H00278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94371693141385,
- 38.867505883405656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00279'>Report Problem</a>",
- "NAME": "H00279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01587309197622,
- 38.863621897025915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00280'>Report Problem</a>",
- "NAME": "H00280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01601303214005,
- 38.866915912225586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00281'>Report Problem</a>",
- "NAME": "H00281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95679786057359,
- 38.871216829973505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00283'>Report Problem</a>",
- "NAME": "H00283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92283554447167,
- 38.883606961818316,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00284'>Report Problem</a>",
- "NAME": "H00284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97953430553923,
- 38.84876394454315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00285'>Report Problem</a>",
- "NAME": "H00285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99220698796537,
- 38.90754303362449,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00286'>Report Problem</a>",
- "NAME": "H00286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99431295277785,
- 38.90823575276111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00287'>Report Problem</a>",
- "NAME": "H00287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0218231958979,
- 38.89826036264599,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00288'>Report Problem</a>",
- "NAME": "H00288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9957448593338,
- 38.90712098582479,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00289'>Report Problem</a>",
- "NAME": "H00289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92957016309505,
- 38.885231086982714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00290'>Report Problem</a>",
- "NAME": "H00290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01475614091855,
- 38.92943572517179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00291'>Report Problem</a>",
- "NAME": "H00291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99861660534545,
- 38.90624099360779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00293'>Report Problem</a>",
- "NAME": "H00293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97991711111005,
- 38.85057043674555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00294'>Report Problem</a>",
- "NAME": "H00294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07589836785253,
- 38.93573911403619,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00296'>Report Problem</a>",
- "NAME": "H00296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08869950161862,
- 38.93814995551608,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00297'>Report Problem</a>",
- "NAME": "H00297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98716679418177,
- 38.85734559990636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00298'>Report Problem</a>",
- "NAME": "H00298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99272928621342,
- 38.95636171296229,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00299'>Report Problem</a>",
- "NAME": "H00299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02818482633154,
- 38.88369634398283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00300'>Report Problem</a>",
- "NAME": "H00300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96897278522113,
- 38.8531391199942,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00301'>Report Problem</a>",
- "NAME": "H00301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96750467981876,
- 38.85346269981682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00303'>Report Problem</a>",
- "NAME": "H00303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00813961377256,
- 38.85060081548807,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00304'>Report Problem</a>",
- "NAME": "H00304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10755770729163,
- 38.937131878087186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00305'>Report Problem</a>",
- "NAME": "H00305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10704444237716,
- 38.936322340626795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00306'>Report Problem</a>",
- "NAME": "H00306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00918229614138,
- 38.941318270327784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00307'>Report Problem</a>",
- "NAME": "H00307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0091695963797,
- 38.89674687962059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/01/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00308'>Report Problem</a>",
- "NAME": "H00308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10705187431056,
- 38.93604077025528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00309'>Report Problem</a>",
- "NAME": "H00309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9992170519996,
- 38.845839551419765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00310'>Report Problem</a>",
- "NAME": "H00310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00297270660255,
- 38.910666916886385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00311'>Report Problem</a>",
- "NAME": "H00311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0021802943481,
- 38.91118632825825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00312'>Report Problem</a>",
- "NAME": "H00312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01025315333591,
- 38.935422180428716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00313'>Report Problem</a>",
- "NAME": "H00313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05537847533314,
- 38.974384806254754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00314'>Report Problem</a>",
- "NAME": "H00314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97548607624007,
- 38.86427141378945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00316'>Report Problem</a>",
- "NAME": "H00316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0102462601637,
- 38.934487686969774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00317'>Report Problem</a>",
- "NAME": "H00317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99933858727306,
- 38.92361853570536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00319'>Report Problem</a>",
- "NAME": "H00319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00476454428953,
- 38.910784911867616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00321'>Report Problem</a>",
- "NAME": "H00321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01347708245554,
- 38.872523830158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00322'>Report Problem</a>",
- "NAME": "H00322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06869665102082,
- 38.92534159147757,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00323'>Report Problem</a>",
- "NAME": "H00323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04250828420079,
- 38.909232246583436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00324'>Report Problem</a>",
- "NAME": "H00324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01889359503039,
- 38.86400139527415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00325'>Report Problem</a>",
- "NAME": "H00325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02369294362221,
- 38.88295690634461,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00326'>Report Problem</a>",
- "NAME": "H00326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09036995997808,
- 38.93650697620551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00328'>Report Problem</a>",
- "NAME": "H00328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95618281048186,
- 38.920639360080045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00329'>Report Problem</a>",
- "NAME": "H00329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95666317316294,
- 38.92979609799884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00330'>Report Problem</a>",
- "NAME": "H00330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01537305124363,
- 38.8973986676926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00331'>Report Problem</a>",
- "NAME": "H00331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03533097937942,
- 38.87670357453863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00332'>Report Problem</a>",
- "NAME": "H00332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03786925162169,
- 38.897017243828905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00333'>Report Problem</a>",
- "NAME": "H00333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03733396338757,
- 38.903825654245956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00334'>Report Problem</a>",
- "NAME": "H00334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03296804929205,
- 38.87723707604876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00335'>Report Problem</a>",
- "NAME": "H00335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03446942063209,
- 38.87831786608508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00338'>Report Problem</a>",
- "NAME": "H00338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03782073426443,
- 38.8781924770099,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00339'>Report Problem</a>",
- "NAME": "H00339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0155628569985,
- 38.92646573306782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00340'>Report Problem</a>",
- "NAME": "H00340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00892532376703,
- 38.90917472421178,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00341'>Report Problem</a>",
- "NAME": "H00341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00920006603344,
- 38.941902519530075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00342'>Report Problem</a>",
- "NAME": "H00342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.029820202144,
- 38.89616771783067,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00343'>Report Problem</a>",
- "NAME": "H00343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9806906561109,
- 38.86216415983844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00344'>Report Problem</a>",
- "NAME": "H00344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96786732214434,
- 38.85145323507563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00345'>Report Problem</a>",
- "NAME": "H00345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96911550152376,
- 38.85260936294394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00346'>Report Problem</a>",
- "NAME": "H00346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04562391113357,
- 38.943920923827434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00069'>Report Problem</a>",
- "NAME": "H00069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02884428137328,
- 38.899911612945864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00070'>Report Problem</a>",
- "NAME": "H00070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08919221658242,
- 38.92148126406963,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00071'>Report Problem</a>",
- "NAME": "H00071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10044024780534,
- 38.949247985252605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00072'>Report Problem</a>",
- "NAME": "H00072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01434253792667,
- 38.93896985697751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00073'>Report Problem</a>",
- "NAME": "H00073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01072271592771,
- 38.91912094646436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00074'>Report Problem</a>",
- "NAME": "H00074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05140781738709,
- 38.89400154628643,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00075'>Report Problem</a>",
- "NAME": "H00075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99480532988413,
- 38.90716527790467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00076'>Report Problem</a>",
- "NAME": "H00076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96168329394388,
- 38.867990570706105,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00077'>Report Problem</a>",
- "NAME": "H00077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08196384915904,
- 38.95393408182062,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00078'>Report Problem</a>",
- "NAME": "H00078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01399817662542,
- 38.900671766939126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00079'>Report Problem</a>",
- "NAME": "H00079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99350470928859,
- 38.90571236448279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00080'>Report Problem</a>",
- "NAME": "H00080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03627823127259,
- 38.93326317810749,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00081'>Report Problem</a>",
- "NAME": "H00081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96990073641807,
- 38.853823634337516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00082'>Report Problem</a>",
- "NAME": "H00082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96922712112944,
- 38.85373850021674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00083'>Report Problem</a>",
- "NAME": "H00083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96801989576917,
- 38.85369475513178,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00084'>Report Problem</a>",
- "NAME": "H00084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96792129365996,
- 38.852814919623896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00085'>Report Problem</a>",
- "NAME": "H00085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01122783997911,
- 38.83318230245883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00086'>Report Problem</a>",
- "NAME": "H00086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01116943985605,
- 38.82960423673855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00087'>Report Problem</a>",
- "NAME": "H00087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01267011779255,
- 38.82629812897775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00088'>Report Problem</a>",
- "NAME": "H00088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00137512739475,
- 38.88765957778442,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00089'>Report Problem</a>",
- "NAME": "H00089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01275345631849,
- 38.81711423940579,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00090'>Report Problem</a>",
- "NAME": "H00090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03217511870507,
- 38.89835366598179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00094'>Report Problem</a>",
- "NAME": "H00094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95786118894493,
- 38.85655241831205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00100'>Report Problem</a>",
- "NAME": "H00100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01409014267682,
- 38.892233206687834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00101'>Report Problem</a>",
- "NAME": "H00101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00410454472694,
- 38.85944279942364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00102'>Report Problem</a>",
- "NAME": "H00102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96852551838799,
- 38.85144440594919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00103'>Report Problem</a>",
- "NAME": "H00103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03181484685275,
- 38.90512353532609,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00104'>Report Problem</a>",
- "NAME": "H00104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03086053488764,
- 38.91922655336539,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00106'>Report Problem</a>",
- "NAME": "H00106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97588963989415,
- 38.851132755659265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00107'>Report Problem</a>",
- "NAME": "H00107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0767485924733,
- 38.937601295254325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00109'>Report Problem</a>",
- "NAME": "H00109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9770972901543,
- 38.849803858246176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00110'>Report Problem</a>",
- "NAME": "H00110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01448334419943,
- 38.892263462756794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00111'>Report Problem</a>",
- "NAME": "H00111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07438465119466,
- 38.93626089311794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00112'>Report Problem</a>",
- "NAME": "H00112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96856560928313,
- 38.85196747343772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00113'>Report Problem</a>",
- "NAME": "H00113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07814558270415,
- 38.93855273593855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00114'>Report Problem</a>",
- "NAME": "H00114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01024814055796,
- 38.936255772818505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00115'>Report Problem</a>",
- "NAME": "H00115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04671075337184,
- 38.90471109966362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00116'>Report Problem</a>",
- "NAME": "H00116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98018379838011,
- 38.84270567203858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00117'>Report Problem</a>",
- "NAME": "H00117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94751942978968,
- 38.88420063031798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00118'>Report Problem</a>",
- "NAME": "H00118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99357708817912,
- 38.84477729096918,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00119'>Report Problem</a>",
- "NAME": "H00119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96186241344085,
- 38.87386676687686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00120'>Report Problem</a>",
- "NAME": "H00120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94004624971504,
- 38.888246679549276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00121'>Report Problem</a>",
- "NAME": "H00121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95425937955709,
- 38.87464137127418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00122'>Report Problem</a>",
- "NAME": "H00122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95537249147377,
- 38.87455030363314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00123'>Report Problem</a>",
- "NAME": "H00123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00298434436891,
- 38.82506546490317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00124'>Report Problem</a>",
- "NAME": "H00124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97938931186481,
- 38.86238359863203,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00125'>Report Problem</a>",
- "NAME": "H00125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98201825306879,
- 38.85228714716915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00126'>Report Problem</a>",
- "NAME": "H00126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93777143950871,
- 38.87524685211913,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00127'>Report Problem</a>",
- "NAME": "H00127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837569652838,
- 38.880297887520015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00128'>Report Problem</a>",
- "NAME": "H00128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97771001006961,
- 38.86754646236409,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00129'>Report Problem</a>",
- "NAME": "H00129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96692471794726,
- 38.84980654513702,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00130'>Report Problem</a>",
- "NAME": "H00130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98090277857703,
- 38.865174987341696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00131'>Report Problem</a>",
- "NAME": "H00131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97084763145918,
- 38.87268148076737,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00132'>Report Problem</a>",
- "NAME": "H00132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98375701162509,
- 38.86891795431268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00133'>Report Problem</a>",
- "NAME": "H00133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98037972997913,
- 38.84557619192893,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00134'>Report Problem</a>",
- "NAME": "H00134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93800802719893,
- 38.883210911238,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00135'>Report Problem</a>",
- "NAME": "H00135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98524563899609,
- 38.860024901296775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00136'>Report Problem</a>",
- "NAME": "H00136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9506005301701,
- 38.87180333326891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00137'>Report Problem</a>",
- "NAME": "H00137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9532239833161,
- 38.88368123450846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00138'>Report Problem</a>",
- "NAME": "H00138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96197631902415,
- 38.869233484548666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00139'>Report Problem</a>",
- "NAME": "H00139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07716348694093,
- 38.934740517019485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00142'>Report Problem</a>",
- "NAME": "H00142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07839208956898,
- 38.93675254156028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00143'>Report Problem</a>",
- "NAME": "H00143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07824937420085,
- 38.93973405954898,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00144'>Report Problem</a>",
- "NAME": "H00144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01418898467888,
- 38.892283668625964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00145'>Report Problem</a>",
- "NAME": "H00145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.011409409811,
- 38.934438330832734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00146'>Report Problem</a>",
- "NAME": "H00146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07791650819983,
- 38.925749713392534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00147'>Report Problem</a>",
- "NAME": "H00147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98876879161352,
- 38.876270399626904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00149'>Report Problem</a>",
- "NAME": "H00149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05244606758697,
- 38.96160427976706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00150'>Report Problem</a>",
- "NAME": "H00150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98002742095711,
- 38.88283768216455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00151'>Report Problem</a>",
- "NAME": "H00151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00011864938733,
- 38.876478916455284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00152'>Report Problem</a>",
- "NAME": "H00152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01229212334901,
- 38.83161182222366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00153'>Report Problem</a>",
- "NAME": "H00153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10036145753229,
- 38.94706963388548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00154'>Report Problem</a>",
- "NAME": "H00154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97871037060538,
- 38.8647029186449,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00155'>Report Problem</a>",
- "NAME": "H00155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98684375657275,
- 38.90124365223176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00156'>Report Problem</a>",
- "NAME": "H00156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03907844803614,
- 38.989393503894014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00157'>Report Problem</a>",
- "NAME": "H00157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05459386424639,
- 38.97493890217225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00158'>Report Problem</a>",
- "NAME": "H00158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97431139178099,
- 38.88747110735175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00159'>Report Problem</a>",
- "NAME": "H00159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92888796611612,
- 38.8830643548754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00160'>Report Problem</a>",
- "NAME": "H00160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95230945556914,
- 38.86365794542221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00161'>Report Problem</a>",
- "NAME": "H00161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01145551537157,
- 38.93482911542911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00163'>Report Problem</a>",
- "NAME": "H00163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97587730476666,
- 38.88494169875132,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00164'>Report Problem</a>",
- "NAME": "H00164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97601809412953,
- 38.88575813039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00165'>Report Problem</a>",
- "NAME": "H00165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97508266360155,
- 38.8858589996089,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00166'>Report Problem</a>",
- "NAME": "H00166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00499639843575,
- 38.90895532585457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00167'>Report Problem</a>",
- "NAME": "H00167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95350539572817,
- 38.863316423222805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00168'>Report Problem</a>",
- "NAME": "H00168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04782306063719,
- 38.89741051957247,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00169'>Report Problem</a>",
- "NAME": "H00169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01518868806883,
- 38.863994702229185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00170'>Report Problem</a>",
- "NAME": "H00170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01087636205634,
- 38.94190102433504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00172'>Report Problem</a>",
- "NAME": "H00172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9297421383169,
- 38.88445997368586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00173'>Report Problem</a>",
- "NAME": "H00173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00399840817738,
- 38.91066981399904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00174'>Report Problem</a>",
- "NAME": "H00174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9879116750212,
- 38.91663473050051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00176'>Report Problem</a>",
- "NAME": "H00176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98578460926737,
- 38.92229680993157,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00177'>Report Problem</a>",
- "NAME": "H00177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01079902681498,
- 38.94072699013935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00178'>Report Problem</a>",
- "NAME": "H00178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03328945585672,
- 38.91562460835372,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00180'>Report Problem</a>",
- "NAME": "H00180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96105167707513,
- 38.89247180719127,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00181'>Report Problem</a>",
- "NAME": "H00181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97401398306715,
- 38.88256312153113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00182'>Report Problem</a>",
- "NAME": "H00182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97355180925192,
- 38.88239338085669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00183'>Report Problem</a>",
- "NAME": "H00183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97388070108195,
- 38.88181441375457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00184'>Report Problem</a>",
- "NAME": "H00184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93790051446518,
- 38.89028596502925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 11/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00185'>Report Problem</a>",
- "NAME": "H00185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97532470681075,
- 38.88226215634162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00186'>Report Problem</a>",
- "NAME": "H00186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93498955252282,
- 38.896603375266864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00187'>Report Problem</a>",
- "NAME": "H00187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9406267442465,
- 38.89182535536861,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00188'>Report Problem</a>",
- "NAME": "H00188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94150203726983,
- 38.891825571780615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00189'>Report Problem</a>",
- "NAME": "H00189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94256043501382,
- 38.89138156080858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00190'>Report Problem</a>",
- "NAME": "H00190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93768796897564,
- 38.891124315390975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00191'>Report Problem</a>",
- "NAME": "H00191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92984053568262,
- 38.90131258081229,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00192'>Report Problem</a>",
- "NAME": "H00192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96014255603326,
- 38.88999564820024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00193'>Report Problem</a>",
- "NAME": "H00193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93762449042534,
- 38.90069668953318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00194'>Report Problem</a>",
- "NAME": "H00194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92740120700508,
- 38.89922650165815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00195'>Report Problem</a>",
- "NAME": "H00195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93616273371121,
- 38.90442165709111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00196'>Report Problem</a>",
- "NAME": "H00196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92808163404881,
- 38.89469275059905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00197'>Report Problem</a>",
- "NAME": "H00197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92998761313903,
- 38.889932793951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00198'>Report Problem</a>",
- "NAME": "H00198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06869847175086,
- 38.92534016709285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00199'>Report Problem</a>",
- "NAME": "H00199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02980271376337,
- 38.89842786659362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00200'>Report Problem</a>",
- "NAME": "H00200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02933363140882,
- 38.89843036352863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00201'>Report Problem</a>",
- "NAME": "H00201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97055289101735,
- 38.86390449620404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00202'>Report Problem</a>",
- "NAME": "H00202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98373254958011,
- 38.85612086378365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00203'>Report Problem</a>",
- "NAME": "H00203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03690126059846,
- 38.897222574965035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00204'>Report Problem</a>",
- "NAME": "H00204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03611144749854,
- 38.89717469009673,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00205'>Report Problem</a>",
- "NAME": "H00205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03589500139472,
- 38.897676108255936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00206'>Report Problem</a>",
- "NAME": "H00206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02606614777152,
- 38.90630553957762,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00207'>Report Problem</a>",
- "NAME": "H00207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98507420812717,
- 38.85412452308332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00209'>Report Problem</a>",
- "NAME": "H00209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0173067810556,
- 38.94217394797017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00211'>Report Problem</a>",
- "NAME": "H00211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03839435134978,
- 38.917538114824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00212'>Report Problem</a>",
- "NAME": "H00212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05821410178804,
- 38.95227231287798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00214'>Report Problem</a>",
- "NAME": "H00214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93528487102279,
- 38.89934459522741,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00216'>Report Problem</a>",
- "NAME": "H00216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00597057035456,
- 38.96636700239988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00217'>Report Problem</a>",
- "NAME": "H00217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06890241705057,
- 38.94419414644325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 11/10/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00218'>Report Problem</a>",
- "NAME": "H00218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0055542916195,
- 38.8495445208484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00219'>Report Problem</a>",
- "NAME": "H00219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0129859458632,
- 38.92879006643523,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00221'>Report Problem</a>",
- "NAME": "H00221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0373985480442,
- 38.91622795073391,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00222'>Report Problem</a>",
- "NAME": "H00222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06776439944746,
- 38.94213282339662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00223'>Report Problem</a>",
- "NAME": "H00223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07600587709034,
- 38.93826107090418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00225'>Report Problem</a>",
- "NAME": "H00225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07464539247651,
- 38.93693514232407,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00226'>Report Problem</a>",
- "NAME": "H00226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02823805697693,
- 38.89824261997391,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00227'>Report Problem</a>",
- "NAME": "H00227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05934433393793,
- 38.912457984493045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00228'>Report Problem</a>",
- "NAME": "H00228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0758885368004,
- 38.95772215084292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00229'>Report Problem</a>",
- "NAME": "H00229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01143304842086,
- 38.94080497767452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00230'>Report Problem</a>",
- "NAME": "H00230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00793189101918,
- 38.829123548710456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00231'>Report Problem</a>",
- "NAME": "H00231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08084565509309,
- 38.938359914690835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00232'>Report Problem</a>",
- "NAME": "H00232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94083540044919,
- 38.89508179812879,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00233'>Report Problem</a>",
- "NAME": "H00233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94102513008227,
- 38.893729026171556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00234'>Report Problem</a>",
- "NAME": "H00234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94123945077173,
- 38.89248856432943,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00235'>Report Problem</a>",
- "NAME": "H00235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94309501188107,
- 38.893190064075576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00236'>Report Problem</a>",
- "NAME": "H00236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95303850482532,
- 38.8915753650969,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00237'>Report Problem</a>",
- "NAME": "H00237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00882879162891,
- 38.91061905710018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00238'>Report Problem</a>",
- "NAME": "H00238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00181283627983,
- 38.83464268527077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00239'>Report Problem</a>",
- "NAME": "H00239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96964749770346,
- 38.86249699656329,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00240'>Report Problem</a>",
- "NAME": "H00240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09295776572175,
- 38.9161181284181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00241'>Report Problem</a>",
- "NAME": "H00241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01446994649278,
- 38.900657881629506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00244'>Report Problem</a>",
- "NAME": "H00244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01063328287496,
- 38.90243995748425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00246'>Report Problem</a>",
- "NAME": "H00246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00079662454145,
- 38.83268450077431,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00247'>Report Problem</a>",
- "NAME": "H00247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9464390539857,
- 38.89090581570778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00248'>Report Problem</a>",
- "NAME": "H00248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94478835184364,
- 38.903767559143944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00249'>Report Problem</a>",
- "NAME": "H00249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02012199961224,
- 38.89621957115775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00250'>Report Problem</a>",
- "NAME": "H00250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00720972052048,
- 38.83390272006717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00251'>Report Problem</a>",
- "NAME": "H00251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00010156022566,
- 38.84515275035851,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00252'>Report Problem</a>",
- "NAME": "H00252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99944051392958,
- 38.92569877302764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00253'>Report Problem</a>",
- "NAME": "H00253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01208031394737,
- 38.90787046469469,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00255'>Report Problem</a>",
- "NAME": "H00255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00866705467641,
- 38.883805019399325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00527'>Report Problem</a>",
- "NAME": "H00527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08187605088469,
- 38.95338970142369,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00528'>Report Problem</a>",
- "NAME": "H00528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05275825743661,
- 38.917043008718245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00529'>Report Problem</a>",
- "NAME": "H00529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0351353106222,
- 38.91816395795987,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00530'>Report Problem</a>",
- "NAME": "H00530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03887333368164,
- 38.922267472073464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00531'>Report Problem</a>",
- "NAME": "H00531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00959026346318,
- 38.9213528484761,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00532'>Report Problem</a>",
- "NAME": "H00532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06903003675079,
- 38.9107348449838,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00533'>Report Problem</a>",
- "NAME": "H00533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06291833562312,
- 38.90264884291127,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00534'>Report Problem</a>",
- "NAME": "H00534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0238248431285,
- 38.918309314133154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00535'>Report Problem</a>",
- "NAME": "H00535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00928441127117,
- 38.89727314814548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00536'>Report Problem</a>",
- "NAME": "H00536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04172793539733,
- 38.925516563401246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00537'>Report Problem</a>",
- "NAME": "H00537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01211642021528,
- 38.86474831802853,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00538'>Report Problem</a>",
- "NAME": "H00538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01210907436096,
- 38.87449229747678,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00539'>Report Problem</a>",
- "NAME": "H00539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98525877404899,
- 38.866717984758424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00540'>Report Problem</a>",
- "NAME": "H00540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95217414060144,
- 38.85961233496263,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00429'>Report Problem</a>",
- "NAME": "H00429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92687672045909,
- 38.8885028797306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00430'>Report Problem</a>",
- "NAME": "H00430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95130901968231,
- 38.8602779340048,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00433'>Report Problem</a>",
- "NAME": "H00433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99170733798083,
- 38.83177770542,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00434'>Report Problem</a>",
- "NAME": "H00434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92716397720932,
- 38.88491508350542,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00435'>Report Problem</a>",
- "NAME": "H00435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92955533814974,
- 38.88730015048535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00436'>Report Problem</a>",
- "NAME": "H00436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99006439803618,
- 38.830060708127355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00437'>Report Problem</a>",
- "NAME": "H00437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9672844518499,
- 38.854389912092174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00438'>Report Problem</a>",
- "NAME": "H00438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98626578239839,
- 38.86482887235028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00440'>Report Problem</a>",
- "NAME": "H00440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97210596775659,
- 38.871568556724625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00441'>Report Problem</a>",
- "NAME": "H00441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98714488667319,
- 38.85104297586446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00442'>Report Problem</a>",
- "NAME": "H00442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09222814167765,
- 38.9140042243332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00443'>Report Problem</a>",
- "NAME": "H00443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04014351051762,
- 38.920703287681384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00444'>Report Problem</a>",
- "NAME": "H00444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04691221619966,
- 38.92842015730996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00445'>Report Problem</a>",
- "NAME": "H00445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98862110852838,
- 38.865636657788876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00446'>Report Problem</a>",
- "NAME": "H00446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00991295946864,
- 38.88456260644426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00447'>Report Problem</a>",
- "NAME": "H00447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98097328380578,
- 38.92901800516747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00448'>Report Problem</a>",
- "NAME": "H00448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03949788537298,
- 38.89820151146847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00449'>Report Problem</a>",
- "NAME": "H00449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08309822228358,
- 38.95583880029729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00451'>Report Problem</a>",
- "NAME": "H00451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00016916398467,
- 38.93615738291501,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00452'>Report Problem</a>",
- "NAME": "H00452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99731516469797,
- 38.90443831907664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00453'>Report Problem</a>",
- "NAME": "H00453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0473504826842,
- 38.91886420614517,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00454'>Report Problem</a>",
- "NAME": "H00454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03295566411798,
- 38.89653415540334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00455'>Report Problem</a>",
- "NAME": "H00455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03389096640534,
- 38.89747251427745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00456'>Report Problem</a>",
- "NAME": "H00456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03387295099684,
- 38.89793909864431,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00457'>Report Problem</a>",
- "NAME": "H00457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.031864567533,
- 38.89757868061877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00458'>Report Problem</a>",
- "NAME": "H00458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02386963411597,
- 38.89785670310835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00459'>Report Problem</a>",
- "NAME": "H00459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02607378039431,
- 38.89719134270353,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00460'>Report Problem</a>",
- "NAME": "H00460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0260855407902,
- 38.896692682102554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00461'>Report Problem</a>",
- "NAME": "H00461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02176073511433,
- 38.896211268952726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00462'>Report Problem</a>",
- "NAME": "H00462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02086210386048,
- 38.89621576591644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00463'>Report Problem</a>",
- "NAME": "H00463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07727501880086,
- 38.96584663625259,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00464'>Report Problem</a>",
- "NAME": "H00464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02545588300819,
- 38.89409276329198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00465'>Report Problem</a>",
- "NAME": "H00465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01201875853117,
- 38.942084168068654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00466'>Report Problem</a>",
- "NAME": "H00466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01121533486227,
- 38.941207345033476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00467'>Report Problem</a>",
- "NAME": "H00467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99015250140971,
- 38.90288808388267,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00468'>Report Problem</a>",
- "NAME": "H00468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00578517133305,
- 38.90264670657341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00469'>Report Problem</a>",
- "NAME": "H00469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01124529457459,
- 38.94305895974434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00470'>Report Problem</a>",
- "NAME": "H00470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04058153724093,
- 38.89742157434607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00471'>Report Problem</a>",
- "NAME": "H00471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0407174157212,
- 38.89825063876422,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00472'>Report Problem</a>",
- "NAME": "H00472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06092418606342,
- 38.934669197263865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00474'>Report Problem</a>",
- "NAME": "H00474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06857756478493,
- 38.93261656788015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00475'>Report Problem</a>",
- "NAME": "H00475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02817853997549,
- 38.895736840863236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00476'>Report Problem</a>",
- "NAME": "H00476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0258225598813,
- 38.89621380182162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00477'>Report Problem</a>",
- "NAME": "H00477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03659642809735,
- 38.922561392155025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00478'>Report Problem</a>",
- "NAME": "H00478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07670766441386,
- 38.96716455620272,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00479'>Report Problem</a>",
- "NAME": "H00479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0241586426541,
- 38.89743017880579,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00480'>Report Problem</a>",
- "NAME": "H00480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03919622241256,
- 38.92887361359118,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00481'>Report Problem</a>",
- "NAME": "H00481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03901413927103,
- 38.92461154334142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00482'>Report Problem</a>",
- "NAME": "H00482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02207583073152,
- 38.89621359704856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00483'>Report Problem</a>",
- "NAME": "H00483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06081355906596,
- 38.933539424399484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00484'>Report Problem</a>",
- "NAME": "H00484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05861137787707,
- 38.93352747841943,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00485'>Report Problem</a>",
- "NAME": "H00485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02530127041605,
- 38.944088112135255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00486'>Report Problem</a>",
- "NAME": "H00486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99609624521014,
- 38.88489097510951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00487'>Report Problem</a>",
- "NAME": "H00487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03357254807193,
- 38.9254748068058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00489'>Report Problem</a>",
- "NAME": "H00489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04146675127683,
- 38.93061303739658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00490'>Report Problem</a>",
- "NAME": "H00490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03479306358672,
- 38.93382801788214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00491'>Report Problem</a>",
- "NAME": "H00491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02280657678641,
- 38.89387341630787,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00492'>Report Problem</a>",
- "NAME": "H00492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97224782585256,
- 38.92463332653775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00493'>Report Problem</a>",
- "NAME": "H00493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00849093256782,
- 38.88913373237844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00494'>Report Problem</a>",
- "NAME": "H00494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00849101342658,
- 38.889135191729466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00495'>Report Problem</a>",
- "NAME": "H00495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03531538315417,
- 38.94830092313481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00496'>Report Problem</a>",
- "NAME": "H00496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98723919459903,
- 38.90715805736616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00497'>Report Problem</a>",
- "NAME": "H00497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0284065576634,
- 38.93578323967515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00498'>Report Problem</a>",
- "NAME": "H00498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03322413239843,
- 38.88710630441911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00499'>Report Problem</a>",
- "NAME": "H00499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99958513570448,
- 38.9167148535573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00500'>Report Problem</a>",
- "NAME": "H00500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01058191558528,
- 38.873091729747365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00501'>Report Problem</a>",
- "NAME": "H00501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99017389550977,
- 38.879476928858466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00502'>Report Problem</a>",
- "NAME": "H00502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06493506387731,
- 38.934591539194955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00503'>Report Problem</a>",
- "NAME": "H00503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01061684626094,
- 38.914776931836116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00504'>Report Problem</a>",
- "NAME": "H00504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02335471479023,
- 38.940975658402245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00505'>Report Problem</a>",
- "NAME": "H00505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02317612065625,
- 38.93973212634408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00506'>Report Problem</a>",
- "NAME": "H00506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98093954908359,
- 38.88971702131883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00507'>Report Problem</a>",
- "NAME": "H00507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01751320993249,
- 38.94000700008668,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00508'>Report Problem</a>",
- "NAME": "H00508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05489077157895,
- 38.91551923072498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00509'>Report Problem</a>",
- "NAME": "H00509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98690928232688,
- 38.879830899565206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00510'>Report Problem</a>",
- "NAME": "H00510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98803484510809,
- 38.86125526613529,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00511'>Report Problem</a>",
- "NAME": "H00511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01930052394003,
- 38.931424493893914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00512'>Report Problem</a>",
- "NAME": "H00512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01071714309293,
- 38.8852602076266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00513'>Report Problem</a>",
- "NAME": "H00513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98237317635046,
- 38.881212298090894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00514'>Report Problem</a>",
- "NAME": "H00514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98094933322828,
- 38.881349650627,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00515'>Report Problem</a>",
- "NAME": "H00515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99143154390538,
- 38.886706959824046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00516'>Report Problem</a>",
- "NAME": "H00516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98372533177708,
- 38.89550844659728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00517'>Report Problem</a>",
- "NAME": "H00517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98624058132604,
- 38.89483897087784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00518'>Report Problem</a>",
- "NAME": "H00518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07101762896404,
- 38.93621500016529,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00519'>Report Problem</a>",
- "NAME": "H00519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07829633267208,
- 38.96583511092745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00520'>Report Problem</a>",
- "NAME": "H00520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0578063566818,
- 38.92876439380731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00521'>Report Problem</a>",
- "NAME": "H00521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0207455996933,
- 38.89314136605035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00522'>Report Problem</a>",
- "NAME": "H00522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02003091776506,
- 38.89346029698376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, UNKNOWN<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00523'>Report Problem</a>",
- "NAME": "H00523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0268386306364,
- 38.89972459094567,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00524'>Report Problem</a>",
- "NAME": "H00524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02825325281327,
- 38.89990688385605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00525'>Report Problem</a>",
- "NAME": "H00525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03253507965007,
- 38.93766094301866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00526'>Report Problem</a>",
- "NAME": "H00526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98359301309151,
- 38.88295557169683,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00570'>Report Problem</a>",
- "NAME": "H00570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03689006232764,
- 38.906954908845705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00571'>Report Problem</a>",
- "NAME": "H00571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01112939055602,
- 38.91181116849666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00572'>Report Problem</a>",
- "NAME": "H00572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07277946390602,
- 38.96666344297844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00573'>Report Problem</a>",
- "NAME": "H00573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07490356453572,
- 38.964033467224915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00574'>Report Problem</a>",
- "NAME": "H00574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07437660945044,
- 38.96743807511667,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00575'>Report Problem</a>",
- "NAME": "H00575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99514272375718,
- 38.88754138504495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00576'>Report Problem</a>",
- "NAME": "H00576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98371942418198,
- 38.879166859296646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00577'>Report Problem</a>",
- "NAME": "H00577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02582003684756,
- 38.95418408733482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00578'>Report Problem</a>",
- "NAME": "H00578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98534863294992,
- 38.88987979030678,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00579'>Report Problem</a>",
- "NAME": "H00579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99368737806073,
- 38.880292782272456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00581'>Report Problem</a>",
- "NAME": "H00581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02193222762705,
- 38.9208724995467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00582'>Report Problem</a>",
- "NAME": "H00582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0084327047177,
- 38.913252620228725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00584'>Report Problem</a>",
- "NAME": "H00584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00810064099802,
- 38.91435520999397,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00585'>Report Problem</a>",
- "NAME": "H00585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03516499770826,
- 38.92187097438736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00586'>Report Problem</a>",
- "NAME": "H00586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00722343538322,
- 38.91687207863701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00587'>Report Problem</a>",
- "NAME": "H00587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07248948360254,
- 38.93733245905578,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00588'>Report Problem</a>",
- "NAME": "H00588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02332961738753,
- 38.938762172867094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00589'>Report Problem</a>",
- "NAME": "H00589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04062544590344,
- 38.89908033187001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00590'>Report Problem</a>",
- "NAME": "H00590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03263089798043,
- 38.939633318451996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00591'>Report Problem</a>",
- "NAME": "H00591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97412329737345,
- 38.931228832661596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00592'>Report Problem</a>",
- "NAME": "H00592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03254573050256,
- 38.932440854950336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00593'>Report Problem</a>",
- "NAME": "H00593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06374874040749,
- 38.9084903267896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00594'>Report Problem</a>",
- "NAME": "H00594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05907340453584,
- 38.908541267108774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00595'>Report Problem</a>",
- "NAME": "H00595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00471936337394,
- 38.91190453325423,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00596'>Report Problem</a>",
- "NAME": "H00596"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02300846873308,
- 38.900999982666754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00597'>Report Problem</a>",
- "NAME": "H00597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03959710316732,
- 38.8944165321469,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00598'>Report Problem</a>",
- "NAME": "H00598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03960246125648,
- 38.89339524251815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00599'>Report Problem</a>",
- "NAME": "H00599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01829160326582,
- 38.900982277219185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00600'>Report Problem</a>",
- "NAME": "H00600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99074778614116,
- 38.90420289262141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00601'>Report Problem</a>",
- "NAME": "H00601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0702573109951,
- 38.90438443464286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00602'>Report Problem</a>",
- "NAME": "H00602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07531740639138,
- 38.93333074137175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00603'>Report Problem</a>",
- "NAME": "H00603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04175557754553,
- 38.89845483419036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00604'>Report Problem</a>",
- "NAME": "H00604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01549171011582,
- 38.9206655106053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00605'>Report Problem</a>",
- "NAME": "H00605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0489028204688,
- 38.89813239916177,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00606'>Report Problem</a>",
- "NAME": "H00606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01546681279963,
- 38.94006880640176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00607'>Report Problem</a>",
- "NAME": "H00607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01629597759893,
- 38.94004647929922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00608'>Report Problem</a>",
- "NAME": "H00608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07689390504922,
- 38.92622565158503,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00609'>Report Problem</a>",
- "NAME": "H00609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07477146559653,
- 38.926238289187225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00610'>Report Problem</a>",
- "NAME": "H00610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07454940357962,
- 38.92739184697904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00611'>Report Problem</a>",
- "NAME": "H00611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03255194075274,
- 38.92060408911481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00612'>Report Problem</a>",
- "NAME": "H00612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02460004799546,
- 38.93876801101417,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00613'>Report Problem</a>",
- "NAME": "H00613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9914631784084,
- 38.89368032658183,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00614'>Report Problem</a>",
- "NAME": "H00614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01625880008766,
- 38.8996281351377,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00615'>Report Problem</a>",
- "NAME": "H00615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02203469935738,
- 38.88553661951162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00616'>Report Problem</a>",
- "NAME": "H00616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99965038348607,
- 38.9013821122493,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00617'>Report Problem</a>",
- "NAME": "H00617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97641196847428,
- 38.93020882882853,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00618'>Report Problem</a>",
- "NAME": "H00618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97913171479412,
- 38.88861893360989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00619'>Report Problem</a>",
- "NAME": "H00619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99581682191103,
- 38.857838585699376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00620'>Report Problem</a>",
- "NAME": "H00620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99537035242629,
- 38.85879395718681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00621'>Report Problem</a>",
- "NAME": "H00621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97893632675547,
- 38.88418446924292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00622'>Report Problem</a>",
- "NAME": "H00622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9917479239196,
- 38.86407133943828,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00623'>Report Problem</a>",
- "NAME": "H00623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98804834503095,
- 38.92671355351125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00624'>Report Problem</a>",
- "NAME": "H00624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0742129963924,
- 38.963027784738486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00625'>Report Problem</a>",
- "NAME": "H00625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270276919138,
- 38.884955393486855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00626'>Report Problem</a>",
- "NAME": "H00626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9901511706112,
- 38.88672565035966,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00628'>Report Problem</a>",
- "NAME": "H00628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98217278014079,
- 38.867129824301315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00629'>Report Problem</a>",
- "NAME": "H00629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99257693968177,
- 38.877116249773486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 11/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00630'>Report Problem</a>",
- "NAME": "H00630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99369801143564,
- 38.88203683386349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/13/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00631'>Report Problem</a>",
- "NAME": "H00631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99966281188446,
- 38.886586858611366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00632'>Report Problem</a>",
- "NAME": "H00632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99956742604682,
- 38.88600130456793,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00633'>Report Problem</a>",
- "NAME": "H00633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99479350035581,
- 38.87921400998166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00634'>Report Problem</a>",
- "NAME": "H00634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99736034874054,
- 38.88132362686992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00635'>Report Problem</a>",
- "NAME": "H00635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01072881291074,
- 38.92231983796973,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00636'>Report Problem</a>",
- "NAME": "H00636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00188848819498,
- 38.877471257018776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00637'>Report Problem</a>",
- "NAME": "H00637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0075131256187,
- 38.885119557566796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00638'>Report Problem</a>",
- "NAME": "H00638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00594694070963,
- 38.87913586286285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00639'>Report Problem</a>",
- "NAME": "H00639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00744812762868,
- 38.90473386568645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00640'>Report Problem</a>",
- "NAME": "H00640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04704042398917,
- 38.91373197778027,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00641'>Report Problem</a>",
- "NAME": "H00641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0269677359348,
- 38.94723847639023,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 02/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00642'>Report Problem</a>",
- "NAME": "H00642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99032265856465,
- 38.88423614437471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00643'>Report Problem</a>",
- "NAME": "H00643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03175208334801,
- 38.93322537228224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00644'>Report Problem</a>",
- "NAME": "H00644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98358992951349,
- 38.885237998472206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00645'>Report Problem</a>",
- "NAME": "H00645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03259401271161,
- 38.933911284974236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00646'>Report Problem</a>",
- "NAME": "H00646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02975734138879,
- 38.90511948323334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00647'>Report Problem</a>",
- "NAME": "H00647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00210297107746,
- 38.88879206410491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00648'>Report Problem</a>",
- "NAME": "H00648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02695601930422,
- 38.94724846026628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00649'>Report Problem</a>",
- "NAME": "H00649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98235601331686,
- 38.88415702883303,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00650'>Report Problem</a>",
- "NAME": "H00650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99287735931316,
- 38.906567148130286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00347'>Report Problem</a>",
- "NAME": "H00347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99220802648185,
- 38.90700737938312,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00348'>Report Problem</a>",
- "NAME": "H00348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00932069359708,
- 38.927217222583195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00349'>Report Problem</a>",
- "NAME": "H00349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99243417218278,
- 38.90670031770109,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00350'>Report Problem</a>",
- "NAME": "H00350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01130272309352,
- 38.92825757988901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00351'>Report Problem</a>",
- "NAME": "H00351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01845705247615,
- 38.8765884684711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00352'>Report Problem</a>",
- "NAME": "H00352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99151815785021,
- 38.90632797580559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00353'>Report Problem</a>",
- "NAME": "H00353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04767391193084,
- 38.92883585294763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00354'>Report Problem</a>",
- "NAME": "H00354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99130658219315,
- 38.906636550222906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00355'>Report Problem</a>",
- "NAME": "H00355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99110082719848,
- 38.90694361128114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00356'>Report Problem</a>",
- "NAME": "H00356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98973248345513,
- 38.908454991405186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00357'>Report Problem</a>",
- "NAME": "H00357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9896338844959,
- 38.909235690844014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00358'>Report Problem</a>",
- "NAME": "H00358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0130787064562,
- 38.92810877550604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00359'>Report Problem</a>",
- "NAME": "H00359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270329545742,
- 38.90956295273197,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00360'>Report Problem</a>",
- "NAME": "H00360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99317734354747,
- 38.90880953252853,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00361'>Report Problem</a>",
- "NAME": "H00361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99201826830638,
- 38.90728973320711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00362'>Report Problem</a>",
- "NAME": "H00362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01305669927427,
- 38.92752707518816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00363'>Report Problem</a>",
- "NAME": "H00363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01166529362663,
- 38.92884343582412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00364'>Report Problem</a>",
- "NAME": "H00364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99719344538849,
- 38.92077274793784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00365'>Report Problem</a>",
- "NAME": "H00365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09652327436493,
- 38.91717414947395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00366'>Report Problem</a>",
- "NAME": "H00366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96727508938005,
- 38.85272271013205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00367'>Report Problem</a>",
- "NAME": "H00367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.965226811923,
- 38.92542641437083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00368'>Report Problem</a>",
- "NAME": "H00368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01450243368396,
- 38.92821858998992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00369'>Report Problem</a>",
- "NAME": "H00369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0835746938527,
- 38.956779626398635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00370'>Report Problem</a>",
- "NAME": "H00370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01398314030503,
- 38.92888344863874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00371'>Report Problem</a>",
- "NAME": "H00371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0208161333214,
- 38.88128750672352,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00372'>Report Problem</a>",
- "NAME": "H00372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01080895255856,
- 38.90728983015717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00373'>Report Problem</a>",
- "NAME": "H00373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96536542177824,
- 38.918748045339555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00374'>Report Problem</a>",
- "NAME": "H00374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0103814941828,
- 38.93021411718099,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00378'>Report Problem</a>",
- "NAME": "H00378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99615314705265,
- 38.95630614162345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00379'>Report Problem</a>",
- "NAME": "H00379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96244490115862,
- 38.87277754265664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00380'>Report Problem</a>",
- "NAME": "H00380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01676474746395,
- 38.92876837089944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00381'>Report Problem</a>",
- "NAME": "H00381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01130702201235,
- 38.94191306358582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00382'>Report Problem</a>",
- "NAME": "H00382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05607500744702,
- 38.973957646256444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00383'>Report Problem</a>",
- "NAME": "H00383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01243921658218,
- 38.876346839562224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00384'>Report Problem</a>",
- "NAME": "H00384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01220696659455,
- 38.94183242095408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00385'>Report Problem</a>",
- "NAME": "H00385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01228434161513,
- 38.94189081358332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00386'>Report Problem</a>",
- "NAME": "H00386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01921141820215,
- 38.97739866543538,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00387'>Report Problem</a>",
- "NAME": "H00387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01111740753674,
- 38.894925110940825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00388'>Report Problem</a>",
- "NAME": "H00388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01048697759512,
- 38.9418325879154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00390'>Report Problem</a>",
- "NAME": "H00390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98212112473459,
- 38.89669873957552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00391'>Report Problem</a>",
- "NAME": "H00391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96934599296084,
- 38.851965518930356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00392'>Report Problem</a>",
- "NAME": "H00392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03447981496605,
- 38.8759785719446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00393'>Report Problem</a>",
- "NAME": "H00393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01114720644023,
- 38.942438694526075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00394'>Report Problem</a>",
- "NAME": "H00394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08953570644644,
- 38.93584287756872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00396'>Report Problem</a>",
- "NAME": "H00396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01084556711778,
- 38.94283343902372,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00397'>Report Problem</a>",
- "NAME": "H00397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10159511332704,
- 38.9468704670706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00398'>Report Problem</a>",
- "NAME": "H00398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03147854420091,
- 38.877481353284985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00399'>Report Problem</a>",
- "NAME": "H00399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06629844889184,
- 38.942441981768084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 04/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00400'>Report Problem</a>",
- "NAME": "H00400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06781608380881,
- 38.94377777007308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00401'>Report Problem</a>",
- "NAME": "H00401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.016392499733,
- 38.92961197089285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00402'>Report Problem</a>",
- "NAME": "H00402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92790652307717,
- 38.883604445635456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00403'>Report Problem</a>",
- "NAME": "H00403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02053614988436,
- 38.915516914349716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00404'>Report Problem</a>",
- "NAME": "H00404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97002822541879,
- 38.9300446670204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00405'>Report Problem</a>",
- "NAME": "H00405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01137549088142,
- 38.929678741932676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00406'>Report Problem</a>",
- "NAME": "H00406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01002664703468,
- 38.94204296283392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00410'>Report Problem</a>",
- "NAME": "H00410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03625981526396,
- 38.977766274729134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00411'>Report Problem</a>",
- "NAME": "H00411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00924672621241,
- 38.942801353788425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00413'>Report Problem</a>",
- "NAME": "H00413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95871870489547,
- 38.92377463928698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00414'>Report Problem</a>",
- "NAME": "H00414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00994039988291,
- 38.942704637938846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00415'>Report Problem</a>",
- "NAME": "H00415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10776974802998,
- 38.933626704075415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00417'>Report Problem</a>",
- "NAME": "H00417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00939868261503,
- 38.92988479352073,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00418'>Report Problem</a>",
- "NAME": "H00418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1141503737422,
- 38.935383194175174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00419'>Report Problem</a>",
- "NAME": "H00419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93136381320559,
- 38.88685685273269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00420'>Report Problem</a>",
- "NAME": "H00420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11283075780725,
- 38.93548727828825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00421'>Report Problem</a>",
- "NAME": "H00421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98273611208353,
- 38.8546444285413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00422'>Report Problem</a>",
- "NAME": "H00422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02287368070186,
- 38.90783555532735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00424'>Report Problem</a>",
- "NAME": "H00424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10133848008398,
- 38.94624790197279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00425'>Report Problem</a>",
- "NAME": "H00425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94180239725716,
- 38.868618078148785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00427'>Report Problem</a>",
- "NAME": "H00427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01307372771403,
- 38.942405911958566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00428'>Report Problem</a>",
- "NAME": "H00428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97111302680491,
- 38.870795934741,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00816'>Report Problem</a>",
- "NAME": "H00816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02761138063899,
- 38.951921980805395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00817'>Report Problem</a>",
- "NAME": "H00817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02988723304331,
- 38.950863480632385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00818'>Report Problem</a>",
- "NAME": "H00818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03486283339551,
- 38.954119385323146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00819'>Report Problem</a>",
- "NAME": "H00819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03333417147122,
- 38.95067959959026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00820'>Report Problem</a>",
- "NAME": "H00820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02833000238368,
- 38.94514844910206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00821'>Report Problem</a>",
- "NAME": "H00821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99736081420201,
- 38.89896419458266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00822'>Report Problem</a>",
- "NAME": "H00822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03080718503574,
- 38.93642993191747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00823'>Report Problem</a>",
- "NAME": "H00823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04137017307245,
- 38.92981850270133,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00824'>Report Problem</a>",
- "NAME": "H00824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03794247041503,
- 38.92546511903166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00825'>Report Problem</a>",
- "NAME": "H00825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06651433472665,
- 38.96979780068285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00826'>Report Problem</a>",
- "NAME": "H00826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07451311114325,
- 38.969463086641134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00827'>Report Problem</a>",
- "NAME": "H00827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07570320304505,
- 38.968546382062804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00828'>Report Problem</a>",
- "NAME": "H00828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03081572054886,
- 38.935496588797925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00829'>Report Problem</a>",
- "NAME": "H00829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0281024642312,
- 38.94608351869913,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00830'>Report Problem</a>",
- "NAME": "H00830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0268001813721,
- 38.94620425622486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00831'>Report Problem</a>",
- "NAME": "H00831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02988084988567,
- 38.94617651155082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00832'>Report Problem</a>",
- "NAME": "H00832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99162629589053,
- 38.888996390132725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00833'>Report Problem</a>",
- "NAME": "H00833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05127620162818,
- 38.89952148885242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00834'>Report Problem</a>",
- "NAME": "H00834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01483064544254,
- 38.918686422040935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00835'>Report Problem</a>",
- "NAME": "H00835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99204494183824,
- 38.90475405601698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00836'>Report Problem</a>",
- "NAME": "H00836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0760366156829,
- 38.94852421256546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00837'>Report Problem</a>",
- "NAME": "H00837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07747882052871,
- 38.951499060052555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, Metropolitan<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00838'>Report Problem</a>",
- "NAME": "H00838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07806369706799,
- 38.94746234961837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00839'>Report Problem</a>",
- "NAME": "H00839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01527261442573,
- 38.91405865894837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00840'>Report Problem</a>",
- "NAME": "H00840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99627591930884,
- 38.89550662022172,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00841'>Report Problem</a>",
- "NAME": "H00841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99829557757407,
- 38.8955072526926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00842'>Report Problem</a>",
- "NAME": "H00842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02269116104476,
- 38.92422673833953,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00843'>Report Problem</a>",
- "NAME": "H00843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00331141114258,
- 38.90846845772506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00844'>Report Problem</a>",
- "NAME": "H00844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07204917019278,
- 38.961056122840226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00845'>Report Problem</a>",
- "NAME": "H00845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0250784294348,
- 38.93096700005812,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00846'>Report Problem</a>",
- "NAME": "H00846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08024236257697,
- 38.956020266925755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00847'>Report Problem</a>",
- "NAME": "H00847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08196504045424,
- 38.9560536366489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00848'>Report Problem</a>",
- "NAME": "H00848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08196270809631,
- 38.95692493584346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00849'>Report Problem</a>",
- "NAME": "H00849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0722209293094,
- 38.90774716292588,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00850'>Report Problem</a>",
- "NAME": "H00850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07345875370999,
- 38.90771332157698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00851'>Report Problem</a>",
- "NAME": "H00851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07466530957848,
- 38.96104214920701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00852'>Report Problem</a>",
- "NAME": "H00852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97606451668062,
- 38.92837233305071,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 12/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00853'>Report Problem</a>",
- "NAME": "H00853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02088739795322,
- 38.97587174488227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00854'>Report Problem</a>",
- "NAME": "H00854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07724169280054,
- 38.96404571970071,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00855'>Report Problem</a>",
- "NAME": "H00855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07981623966808,
- 38.96406173692394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00856'>Report Problem</a>",
- "NAME": "H00856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0215177285729,
- 38.942055402241564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00857'>Report Problem</a>",
- "NAME": "H00857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01615607764515,
- 38.940929617522166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00858'>Report Problem</a>",
- "NAME": "H00858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97790173749411,
- 38.86435560214066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00859'>Report Problem</a>",
- "NAME": "H00859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07285048879902,
- 38.96313265987557,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00860'>Report Problem</a>",
- "NAME": "H00860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03244726875441,
- 38.90597957804404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00861'>Report Problem</a>",
- "NAME": "H00861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9871504502469,
- 38.93718986540383,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00862'>Report Problem</a>",
- "NAME": "H00862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97398010673248,
- 38.928588924825554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00863'>Report Problem</a>",
- "NAME": "H00863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06848872802077,
- 38.933546898735806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00864'>Report Problem</a>",
- "NAME": "H00864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09044072646705,
- 38.95474165690618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00865'>Report Problem</a>",
- "NAME": "H00865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03960509660374,
- 38.892286887716025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00866'>Report Problem</a>",
- "NAME": "H00866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01249142909948,
- 38.89837604929189,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00867'>Report Problem</a>",
- "NAME": "H00867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09791294282094,
- 38.918241832211585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00868'>Report Problem</a>",
- "NAME": "H00868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10337071813137,
- 38.92697821766792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00869'>Report Problem</a>",
- "NAME": "H00869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10118135519639,
- 38.92494747805228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00870'>Report Problem</a>",
- "NAME": "H00870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09098982220766,
- 38.91268943687518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00871'>Report Problem</a>",
- "NAME": "H00871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09835740942346,
- 38.92016374695341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00872'>Report Problem</a>",
- "NAME": "H00872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01293407256973,
- 38.972032667715844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00873'>Report Problem</a>",
- "NAME": "H00873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97221559434684,
- 38.930224923257626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00874'>Report Problem</a>",
- "NAME": "H00874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0415155843193,
- 38.91552200075751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00875'>Report Problem</a>",
- "NAME": "H00875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00537927481935,
- 38.84230248961242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00876'>Report Problem</a>",
- "NAME": "H00876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9857026302258,
- 38.86500605429688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00877'>Report Problem</a>",
- "NAME": "H00877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01878313883964,
- 38.89989243113835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00878'>Report Problem</a>",
- "NAME": "H00878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98591056676086,
- 38.86430174772459,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00879'>Report Problem</a>",
- "NAME": "H00879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05348645524667,
- 38.926676855060656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00880'>Report Problem</a>",
- "NAME": "H00880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04895527572103,
- 38.89410570064894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00881'>Report Problem</a>",
- "NAME": "H00881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0367537249266,
- 38.92699648023964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/11/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00882'>Report Problem</a>",
- "NAME": "H00882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00334433402065,
- 38.90367806922617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00883'>Report Problem</a>",
- "NAME": "H00883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02983369456861,
- 38.92104346605919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00884'>Report Problem</a>",
- "NAME": "H00884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00066942168479,
- 38.925458682803686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00885'>Report Problem</a>",
- "NAME": "H00885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99073939629218,
- 38.86537192560533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00886'>Report Problem</a>",
- "NAME": "H00886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02535362079801,
- 38.91266687498987,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00887'>Report Problem</a>",
- "NAME": "H00887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02094017220237,
- 38.92839147424518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00888'>Report Problem</a>",
- "NAME": "H00888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04543976020092,
- 38.934127799329964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00889'>Report Problem</a>",
- "NAME": "H00889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98931922178006,
- 38.89210645105821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00890'>Report Problem</a>",
- "NAME": "H00890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9894000134754,
- 38.890713142485076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/02/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00891'>Report Problem</a>",
- "NAME": "H00891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9925404993397,
- 38.932346975736394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00892'>Report Problem</a>",
- "NAME": "H00892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03471249738996,
- 38.91034342550599,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00893'>Report Problem</a>",
- "NAME": "H00893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97961865888138,
- 38.931180626705576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00894'>Report Problem</a>",
- "NAME": "H00894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06327596685209,
- 38.9727529398324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00895'>Report Problem</a>",
- "NAME": "H00895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06503298529833,
- 38.97269086407926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00896'>Report Problem</a>",
- "NAME": "H00896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03085709850097,
- 38.92247777577873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00897'>Report Problem</a>",
- "NAME": "H00897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0309378499679,
- 38.92371343482643,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00898'>Report Problem</a>",
- "NAME": "H00898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0467341294854,
- 38.93338634696887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00899'>Report Problem</a>",
- "NAME": "H00899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03302555312348,
- 38.92454083613538,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00900'>Report Problem</a>",
- "NAME": "H00900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03096021289848,
- 38.92480783156651,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00901'>Report Problem</a>",
- "NAME": "H00901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03140634873986,
- 38.92761182105497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00902'>Report Problem</a>",
- "NAME": "H00902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03108952924309,
- 38.9257996940437,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00903'>Report Problem</a>",
- "NAME": "H00903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03368886955771,
- 38.92868649864836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00904'>Report Problem</a>",
- "NAME": "H00904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03472141704026,
- 38.92861862510296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00905'>Report Problem</a>",
- "NAME": "H00905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03579146033631,
- 38.92787064840089,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00907'>Report Problem</a>",
- "NAME": "H00907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02718058233971,
- 38.90233640398072,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00908'>Report Problem</a>",
- "NAME": "H00908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03371620425382,
- 38.93064172643669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00909'>Report Problem</a>",
- "NAME": "H00909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03832187973492,
- 38.9086342163582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00910'>Report Problem</a>",
- "NAME": "H00910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03712905045026,
- 38.93075869189606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00911'>Report Problem</a>",
- "NAME": "H00911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9993832558833,
- 38.90569120262682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00912'>Report Problem</a>",
- "NAME": "H00912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03585400896552,
- 38.93137047483482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00913'>Report Problem</a>",
- "NAME": "H00913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02685787749867,
- 38.907304413054646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00914'>Report Problem</a>",
- "NAME": "H00914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9936127848748,
- 38.88277623759321,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 12/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00915'>Report Problem</a>",
- "NAME": "H00915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02950121154154,
- 38.930650604515805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00917'>Report Problem</a>",
- "NAME": "H00917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02872577477143,
- 38.92960634730041,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00918'>Report Problem</a>",
- "NAME": "H00918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03181953803592,
- 38.912745115962515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00920'>Report Problem</a>",
- "NAME": "H00920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05044718973109,
- 38.91679821894255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00651'>Report Problem</a>",
- "NAME": "H00651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04860836375371,
- 38.90862195785906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00652'>Report Problem</a>",
- "NAME": "H00652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0135072439775,
- 38.90968280533327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00653'>Report Problem</a>",
- "NAME": "H00653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01222147706642,
- 38.914174225516575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00654'>Report Problem</a>",
- "NAME": "H00654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97412852985852,
- 38.92484975046252,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00655'>Report Problem</a>",
- "NAME": "H00655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01207167253078,
- 38.9190761966528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00656'>Report Problem</a>",
- "NAME": "H00656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98102851307308,
- 38.930194823690044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00657'>Report Problem</a>",
- "NAME": "H00657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99602272247685,
- 38.932446066303335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00658'>Report Problem</a>",
- "NAME": "H00658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02983651692159,
- 38.94903956113759,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00659'>Report Problem</a>",
- "NAME": "H00659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03226669234711,
- 38.94903643837466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00660'>Report Problem</a>",
- "NAME": "H00660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00796022039897,
- 38.886857118497275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00661'>Report Problem</a>",
- "NAME": "H00661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01631439358715,
- 38.90569814568789,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00662'>Report Problem</a>",
- "NAME": "H00662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00819987815059,
- 38.88742572881885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00663'>Report Problem</a>",
- "NAME": "H00663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00074031013949,
- 38.88873903936953,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00664'>Report Problem</a>",
- "NAME": "H00664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99838219156732,
- 38.88955703607746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/08/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00665'>Report Problem</a>",
- "NAME": "H00665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00209774900779,
- 38.891907186920946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00666'>Report Problem</a>",
- "NAME": "H00666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0551446200081,
- 38.91013571869892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00668'>Report Problem</a>",
- "NAME": "H00668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03985262477734,
- 38.91562239209743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00669'>Report Problem</a>",
- "NAME": "H00669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02815352060524,
- 38.904604756184035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00670'>Report Problem</a>",
- "NAME": "H00670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01760905858622,
- 38.90851294008092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00671'>Report Problem</a>",
- "NAME": "H00671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03258517237938,
- 38.9291798364562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00672'>Report Problem</a>",
- "NAME": "H00672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03170847976189,
- 38.89931333714904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00673'>Report Problem</a>",
- "NAME": "H00673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05975309290822,
- 38.93563597824736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00674'>Report Problem</a>",
- "NAME": "H00674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06704842761827,
- 38.90382319902977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00675'>Report Problem</a>",
- "NAME": "H00675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06920830486993,
- 38.90428668953538,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 11/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00676'>Report Problem</a>",
- "NAME": "H00676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06793574061754,
- 38.904014609429645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00677'>Report Problem</a>",
- "NAME": "H00677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99631602832157,
- 38.89362483664449,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00678'>Report Problem</a>",
- "NAME": "H00678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03073451170366,
- 38.93461727391309,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00679'>Report Problem</a>",
- "NAME": "H00679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99136033344102,
- 38.89472356908853,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00680'>Report Problem</a>",
- "NAME": "H00680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9870171388433,
- 38.89088179993263,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00681'>Report Problem</a>",
- "NAME": "H00681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01143675331436,
- 38.89897030373331,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00682'>Report Problem</a>",
- "NAME": "H00682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0181366136296,
- 38.96499577415655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00683'>Report Problem</a>",
- "NAME": "H00683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01974129301549,
- 38.96500663943978,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00684'>Report Problem</a>",
- "NAME": "H00684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04837279682933,
- 38.916314429773294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00685'>Report Problem</a>",
- "NAME": "H00685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04748490780639,
- 38.91658632312581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00686'>Report Problem</a>",
- "NAME": "H00686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04760345898923,
- 38.91553591222147,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00687'>Report Problem</a>",
- "NAME": "H00687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05073286386714,
- 38.91171878072168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00688'>Report Problem</a>",
- "NAME": "H00688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01080088623986,
- 38.92125108392233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00689'>Report Problem</a>",
- "NAME": "H00689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04981244796014,
- 38.911928368420995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00690'>Report Problem</a>",
- "NAME": "H00690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04684229124072,
- 38.91488207059559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00691'>Report Problem</a>",
- "NAME": "H00691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0473066258105,
- 38.91331349608546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00692'>Report Problem</a>",
- "NAME": "H00692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04894287727178,
- 38.911637721456394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00693'>Report Problem</a>",
- "NAME": "H00693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05015678467589,
- 38.91338920257348,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00694'>Report Problem</a>",
- "NAME": "H00694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00572262543777,
- 38.88608182622064,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/14/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00695'>Report Problem</a>",
- "NAME": "H00695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04951825089607,
- 38.91117242341423,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00696'>Report Problem</a>",
- "NAME": "H00696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97479702297635,
- 38.8707998778302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00697'>Report Problem</a>",
- "NAME": "H00697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05193596666396,
- 38.91331208864754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00698'>Report Problem</a>",
- "NAME": "H00698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97488724676622,
- 38.869602536020736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00699'>Report Problem</a>",
- "NAME": "H00699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04909121826807,
- 38.910374149198795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00700'>Report Problem</a>",
- "NAME": "H00700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00577134864527,
- 38.90264829272741,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00701'>Report Problem</a>",
- "NAME": "H00701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05139202933057,
- 38.912585392246704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00702'>Report Problem</a>",
- "NAME": "H00702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04867783837187,
- 38.907942276232404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00703'>Report Problem</a>",
- "NAME": "H00703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99041966812867,
- 38.93738334397939,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00704'>Report Problem</a>",
- "NAME": "H00704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01367986739568,
- 38.92086346947468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00705'>Report Problem</a>",
- "NAME": "H00705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00479222837689,
- 38.87853414635814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00706'>Report Problem</a>",
- "NAME": "H00706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01883617478768,
- 38.918209331479886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00707'>Report Problem</a>",
- "NAME": "H00707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196492911333,
- 38.913411490758584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00708'>Report Problem</a>",
- "NAME": "H00708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04193796753975,
- 38.9246632023148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00709'>Report Problem</a>",
- "NAME": "H00709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08115360049952,
- 38.951087320965186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00710'>Report Problem</a>",
- "NAME": "H00710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08196250964956,
- 38.9510835677228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00711'>Report Problem</a>",
- "NAME": "H00711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05255107323511,
- 38.927720721550344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00712'>Report Problem</a>",
- "NAME": "H00712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05118960854304,
- 38.927033198667196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00713'>Report Problem</a>",
- "NAME": "H00713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0552689971173,
- 38.92824985932468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/01/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00714'>Report Problem</a>",
- "NAME": "H00714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97299023244767,
- 38.92719157399502,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00715'>Report Problem</a>",
- "NAME": "H00715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9761603492975,
- 38.92759325971914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00716'>Report Problem</a>",
- "NAME": "H00716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02717051131606,
- 38.92683502368891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00717'>Report Problem</a>",
- "NAME": "H00717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01595140325975,
- 38.913654562403,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00718'>Report Problem</a>",
- "NAME": "H00718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01126835334301,
- 38.89846856342125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00719'>Report Problem</a>",
- "NAME": "H00719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02615824515915,
- 38.918163150410834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00720'>Report Problem</a>",
- "NAME": "H00720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02434593750515,
- 38.94415403044285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, JCF&M - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00721'>Report Problem</a>",
- "NAME": "H00721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03675991251376,
- 38.91817183593261,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00722'>Report Problem</a>",
- "NAME": "H00722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9882139934856,
- 38.94418448274824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00723'>Report Problem</a>",
- "NAME": "H00723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98556931625309,
- 38.894687315099404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00724'>Report Problem</a>",
- "NAME": "H00724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99488466513287,
- 38.90119214066332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00725'>Report Problem</a>",
- "NAME": "H00725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08024468030992,
- 38.95457417699644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00726'>Report Problem</a>",
- "NAME": "H00726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08259050574149,
- 38.95484507058237,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00727'>Report Problem</a>",
- "NAME": "H00727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08009923423131,
- 38.95068416204505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00728'>Report Problem</a>",
- "NAME": "H00728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01470350055722,
- 38.92018815319445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00729'>Report Problem</a>",
- "NAME": "H00729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9948801555543,
- 38.896240442858776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00730'>Report Problem</a>",
- "NAME": "H00730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01811746861144,
- 38.941111585701336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00731'>Report Problem</a>",
- "NAME": "H00731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98692805158687,
- 38.8887277884754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00732'>Report Problem</a>",
- "NAME": "H00732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99511043669797,
- 38.89547870536883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00733'>Report Problem</a>",
- "NAME": "H00733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02719732379923,
- 38.92247923433971,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00734'>Report Problem</a>",
- "NAME": "H00734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98564170147857,
- 38.88062981281078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00735'>Report Problem</a>",
- "NAME": "H00735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00577557360182,
- 38.88748069884412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00736'>Report Problem</a>",
- "NAME": "H00736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98410952649787,
- 38.87844934053881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00737'>Report Problem</a>",
- "NAME": "H00737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04411354958891,
- 38.932551034407645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00738'>Report Problem</a>",
- "NAME": "H00738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99010264068095,
- 38.9008056451461,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00739'>Report Problem</a>",
- "NAME": "H00739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04810963114737,
- 38.91852316502843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00740'>Report Problem</a>",
- "NAME": "H00740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03498069774,
- 38.95085758142868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00741'>Report Problem</a>",
- "NAME": "H00741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04921929493923,
- 38.9181809448933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00742'>Report Problem</a>",
- "NAME": "H00742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98918848999021,
- 38.87844813749413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00743'>Report Problem</a>",
- "NAME": "H00743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98461034794515,
- 38.89895210340257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00744'>Report Problem</a>",
- "NAME": "H00744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9936504823689,
- 38.903781585645035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00745'>Report Problem</a>",
- "NAME": "H00745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382318129341,
- 38.891429454604264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00746'>Report Problem</a>",
- "NAME": "H00746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08318931485202,
- 38.950960729134344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00747'>Report Problem</a>",
- "NAME": "H00747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00697621720708,
- 38.92682257867399,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00748'>Report Problem</a>",
- "NAME": "H00748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0087335607862,
- 38.926582884437835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00749'>Report Problem</a>",
- "NAME": "H00749"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03095049295443,
- 38.90259915863328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00750'>Report Problem</a>",
- "NAME": "H00750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03184143618208,
- 38.89294095457767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00751'>Report Problem</a>",
- "NAME": "H00751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0770773417392,
- 38.963174675990146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00752'>Report Problem</a>",
- "NAME": "H00752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08047884350839,
- 38.94633493774677,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00753'>Report Problem</a>",
- "NAME": "H00753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07755865841051,
- 38.95079337087014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 02/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00754'>Report Problem</a>",
- "NAME": "H00754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03259168889524,
- 38.93463087780487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00755'>Report Problem</a>",
- "NAME": "H00755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0328165523565,
- 38.93693769626933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00756'>Report Problem</a>",
- "NAME": "H00756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08406173938262,
- 38.957753647254634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00757'>Report Problem</a>",
- "NAME": "H00757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0805124581247,
- 38.95216677544486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00758'>Report Problem</a>",
- "NAME": "H00758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00995468624028,
- 38.875584877343336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00759'>Report Problem</a>",
- "NAME": "H00759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08130287042992,
- 38.952240114305575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00760'>Report Problem</a>",
- "NAME": "H00760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07215872338939,
- 38.96404119280406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00761'>Report Problem</a>",
- "NAME": "H00761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07425508711292,
- 38.964953497211376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00762'>Report Problem</a>",
- "NAME": "H00762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07463274323176,
- 38.96586265763995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00763'>Report Problem</a>",
- "NAME": "H00763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07530113369386,
- 38.96677149470722,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00764'>Report Problem</a>",
- "NAME": "H00764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97402556881548,
- 38.92241594081955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00765'>Report Problem</a>",
- "NAME": "H00765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97518271241512,
- 38.92339139709763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00766'>Report Problem</a>",
- "NAME": "H00766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97517039898017,
- 38.923383602285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00767'>Report Problem</a>",
- "NAME": "H00767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0271003305908,
- 38.94830526914321,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00768'>Report Problem</a>",
- "NAME": "H00768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03175978484622,
- 38.920997322289296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 04/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00769'>Report Problem</a>",
- "NAME": "H00769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03071910738328,
- 38.921136310668786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00770'>Report Problem</a>",
- "NAME": "H00770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02231848450276,
- 38.979296218615936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00771'>Report Problem</a>",
- "NAME": "H00771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02239895193948,
- 38.98139980282216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00772'>Report Problem</a>",
- "NAME": "H00772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02618293472,
- 38.94514650847371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00773'>Report Problem</a>",
- "NAME": "H00773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0336193813073,
- 38.933572408455916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00774'>Report Problem</a>",
- "NAME": "H00774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03291057567897,
- 38.94622611721635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00775'>Report Problem</a>",
- "NAME": "H00775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03280701251039,
- 38.945182167466186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00776'>Report Problem</a>",
- "NAME": "H00776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03286919244309,
- 38.944064095799305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00777'>Report Problem</a>",
- "NAME": "H00777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03684059066543,
- 38.90959015385614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00778'>Report Problem</a>",
- "NAME": "H00778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01633314884639,
- 38.96499761641715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00779'>Report Problem</a>",
- "NAME": "H00779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02698246571457,
- 38.95521961333535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00780'>Report Problem</a>",
- "NAME": "H00780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0160530607214,
- 38.963830240186354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00781'>Report Problem</a>",
- "NAME": "H00781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08790215799044,
- 38.93544022120361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01030'>Report Problem</a>",
- "NAME": "H01030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0885802377269,
- 38.933611392635385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01031'>Report Problem</a>",
- "NAME": "H01031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98242552832846,
- 38.92733087662477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01032'>Report Problem</a>",
- "NAME": "H01032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99628131815844,
- 38.8861419660861,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01033'>Report Problem</a>",
- "NAME": "H01033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08879400215685,
- 38.93138872750128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01034'>Report Problem</a>",
- "NAME": "H01034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09418149019496,
- 38.95214948243766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01035'>Report Problem</a>",
- "NAME": "H01035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02607688010123,
- 38.92065062892319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01036'>Report Problem</a>",
- "NAME": "H01036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00429660863546,
- 38.917596681837956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01037'>Report Problem</a>",
- "NAME": "H01037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07366503454432,
- 38.920848889010955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00782'>Report Problem</a>",
- "NAME": "H00782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02311197200497,
- 38.9312850383782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00783'>Report Problem</a>",
- "NAME": "H00783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03456967680417,
- 38.946192163588314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00784'>Report Problem</a>",
- "NAME": "H00784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01752308654319,
- 38.91782115967092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00785'>Report Problem</a>",
- "NAME": "H00785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05072003616347,
- 38.917741480339046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00786'>Report Problem</a>",
- "NAME": "H00786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02499203325878,
- 38.94175694207643,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00787'>Report Problem</a>",
- "NAME": "H00787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9700043205496,
- 38.92921471628457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00788'>Report Problem</a>",
- "NAME": "H00788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97023087536384,
- 38.92780060437805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00789'>Report Problem</a>",
- "NAME": "H00789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07724499887098,
- 38.962103078433984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00790'>Report Problem</a>",
- "NAME": "H00790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0034438296227,
- 38.89106698015863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00791'>Report Problem</a>",
- "NAME": "H00791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0276437318776,
- 38.975757046540714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00792'>Report Problem</a>",
- "NAME": "H00792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01119545368773,
- 38.94439719035928,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00793'>Report Problem</a>",
- "NAME": "H00793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0352027278312,
- 38.89958149725826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00794'>Report Problem</a>",
- "NAME": "H00794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01725604780864,
- 38.90046549918429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00795'>Report Problem</a>",
- "NAME": "H00795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03380368015252,
- 38.89935024246808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00796'>Report Problem</a>",
- "NAME": "H00796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06159044574477,
- 38.94112939177615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00797'>Report Problem</a>",
- "NAME": "H00797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03332190066826,
- 38.95826442886073,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00798'>Report Problem</a>",
- "NAME": "H00798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04594972261398,
- 38.91853859177208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00799'>Report Problem</a>",
- "NAME": "H00799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97662668099572,
- 38.91183928644571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00801'>Report Problem</a>",
- "NAME": "H00801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05815709016022,
- 38.91247061659439,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00802'>Report Problem</a>",
- "NAME": "H00802"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03831620453482,
- 38.90970241868409,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00803'>Report Problem</a>",
- "NAME": "H00803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00715477418528,
- 38.92612127057033,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00804'>Report Problem</a>",
- "NAME": "H00804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97338310345022,
- 38.87345832211571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00805'>Report Problem</a>",
- "NAME": "H00805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00797054412702,
- 38.925308793784666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00806'>Report Problem</a>",
- "NAME": "H00806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00782794323808,
- 38.89722115045011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00807'>Report Problem</a>",
- "NAME": "H00807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00708180128606,
- 38.89585581834181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00808'>Report Problem</a>",
- "NAME": "H00808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97312365293529,
- 38.870860951015686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00809'>Report Problem</a>",
- "NAME": "H00809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9925802833101,
- 38.88186748259304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00810'>Report Problem</a>",
- "NAME": "H00810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97493868638968,
- 38.87245824729695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00811'>Report Problem</a>",
- "NAME": "H00811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97489907988236,
- 38.87275139921586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00813'>Report Problem</a>",
- "NAME": "H00813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0073439925139,
- 38.8774693027581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00814'>Report Problem</a>",
- "NAME": "H00814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00368889906899,
- 38.87834510025877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00815'>Report Problem</a>",
- "NAME": "H00815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99274255731177,
- 38.90137404107174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00991'>Report Problem</a>",
- "NAME": "H00991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98923774692922,
- 38.88165528208443,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00992'>Report Problem</a>",
- "NAME": "H00992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02175250644969,
- 38.907294863283546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00993'>Report Problem</a>",
- "NAME": "H00993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99623855782751,
- 38.88284436498623,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00994'>Report Problem</a>",
- "NAME": "H00994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02478261045431,
- 38.93978227925184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00995'>Report Problem</a>",
- "NAME": "H00995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9882218181247,
- 38.90199075414977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00996'>Report Problem</a>",
- "NAME": "H00996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98738160293496,
- 38.90169605715971,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00997'>Report Problem</a>",
- "NAME": "H00997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00304288131125,
- 38.84210657711564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00998'>Report Problem</a>",
- "NAME": "H00998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99674922073514,
- 38.84577667489998,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00999'>Report Problem</a>",
- "NAME": "H00999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99591095222571,
- 38.848576624800614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01001'>Report Problem</a>",
- "NAME": "H01001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98461363601996,
- 38.894183292076356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01002'>Report Problem</a>",
- "NAME": "H01002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03669948111862,
- 38.93274326742947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01003'>Report Problem</a>",
- "NAME": "H01003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03414805098019,
- 38.93177263008724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01004'>Report Problem</a>",
- "NAME": "H01004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03548963652308,
- 38.93227019155713,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01005'>Report Problem</a>",
- "NAME": "H01005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0328762150876,
- 38.93127699738826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01006'>Report Problem</a>",
- "NAME": "H01006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98462473029034,
- 38.89234132522096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01007'>Report Problem</a>",
- "NAME": "H01007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03829684485254,
- 38.933363643320035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01008'>Report Problem</a>",
- "NAME": "H01008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04365062934166,
- 38.90794355991402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01009'>Report Problem</a>",
- "NAME": "H01009"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05521926492962,
- 38.92599731754884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01010'>Report Problem</a>",
- "NAME": "H01010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00185804315322,
- 38.89484108166827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01011'>Report Problem</a>",
- "NAME": "H01011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01160212742568,
- 38.97129560044692,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01012'>Report Problem</a>",
- "NAME": "H01012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04823235215979,
- 38.91452545961899,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01013'>Report Problem</a>",
- "NAME": "H01013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04248321942809,
- 38.93062324809139,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01014'>Report Problem</a>",
- "NAME": "H01014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01980161884329,
- 38.97373306460092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01015'>Report Problem</a>",
- "NAME": "H01015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0772484593844,
- 38.95837626009613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01016'>Report Problem</a>",
- "NAME": "H01016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00071482574262,
- 38.902585617839584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01017'>Report Problem</a>",
- "NAME": "H01017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99485375203326,
- 38.8451790317024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01018'>Report Problem</a>",
- "NAME": "H01018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99610046779165,
- 38.84516798160559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01019'>Report Problem</a>",
- "NAME": "H01019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06089373324902,
- 38.911261230915514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01020'>Report Problem</a>",
- "NAME": "H01020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02802666834747,
- 38.905750729941865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01021'>Report Problem</a>",
- "NAME": "H01021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10590181734473,
- 38.9288197380787,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01022'>Report Problem</a>",
- "NAME": "H01022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03895275313891,
- 38.91867848363708,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01023'>Report Problem</a>",
- "NAME": "H01023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06348330088213,
- 38.93468953631698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01024'>Report Problem</a>",
- "NAME": "H01024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02324743229828,
- 38.936668805394945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01025'>Report Problem</a>",
- "NAME": "H01025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97889371339274,
- 38.896156474037824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01026'>Report Problem</a>",
- "NAME": "H01026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02153046379266,
- 38.937053815598304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01027'>Report Problem</a>",
- "NAME": "H01027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02065347666459,
- 38.91918660817023,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01028'>Report Problem</a>",
- "NAME": "H01028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02034003683659,
- 38.937231960694426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01029'>Report Problem</a>",
- "NAME": "H01029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95057939527733,
- 38.8930201942944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01038'>Report Problem</a>",
- "NAME": "H01038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9434106876319,
- 38.901189339008056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01039'>Report Problem</a>",
- "NAME": "H01039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0019669411962,
- 38.88728210024327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01041'>Report Problem</a>",
- "NAME": "H01041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04701775736768,
- 38.90595205703593,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01042'>Report Problem</a>",
- "NAME": "H01042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00187411174693,
- 38.88516672685189,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01043'>Report Problem</a>",
- "NAME": "H01043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97967713995875,
- 38.93297493820744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01044'>Report Problem</a>",
- "NAME": "H01044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00499894837685,
- 38.91704310102508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01045'>Report Problem</a>",
- "NAME": "H01045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00445025736542,
- 38.837914692815225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01046'>Report Problem</a>",
- "NAME": "H01046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0213581074638,
- 38.97370528856168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01047'>Report Problem</a>",
- "NAME": "H01047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04646473758444,
- 38.91265866645512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01048'>Report Problem</a>",
- "NAME": "H01048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02327438509997,
- 38.935989997727084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01049'>Report Problem</a>",
- "NAME": "H01049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02979822981926,
- 38.90571464549881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01050'>Report Problem</a>",
- "NAME": "H01050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05029444906312,
- 38.89962662882252,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01051'>Report Problem</a>",
- "NAME": "H01051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98109765783735,
- 38.93118043385557,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01052'>Report Problem</a>",
- "NAME": "H01052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00210404395237,
- 38.88335143456431,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01053'>Report Problem</a>",
- "NAME": "H01053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01423371113836,
- 38.93926456758919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01054'>Report Problem</a>",
- "NAME": "H01054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01352986367627,
- 38.94000352934251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01055'>Report Problem</a>",
- "NAME": "H01055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04648883654312,
- 38.911173920252565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01056'>Report Problem</a>",
- "NAME": "H01056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01446585388359,
- 38.9096964463205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01057'>Report Problem</a>",
- "NAME": "H01057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04889803446264,
- 38.91266018681594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01058'>Report Problem</a>",
- "NAME": "H01058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01745977582902,
- 38.90649621892462,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01059'>Report Problem</a>",
- "NAME": "H01059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064459995251,
- 38.88289331228595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01060'>Report Problem</a>",
- "NAME": "H01060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03681213963031,
- 38.905711583088326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01061'>Report Problem</a>",
- "NAME": "H01061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03997397268957,
- 38.93294179939662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01062'>Report Problem</a>",
- "NAME": "H01062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01524617188079,
- 38.90951290120818,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01063'>Report Problem</a>",
- "NAME": "H01063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07039277179258,
- 38.90676376517887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01064'>Report Problem</a>",
- "NAME": "H01064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07289165639922,
- 38.92832674869288,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01065'>Report Problem</a>",
- "NAME": "H01065"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98623506690751,
- 38.88643767998779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01066'>Report Problem</a>",
- "NAME": "H01066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07074745583294,
- 38.92676534878509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01067'>Report Problem</a>",
- "NAME": "H01067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98245049266036,
- 38.88029939056729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01068'>Report Problem</a>",
- "NAME": "H01068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06851893637447,
- 38.92514746743295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01069'>Report Problem</a>",
- "NAME": "H01069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03434577597278,
- 38.94515193510014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01070'>Report Problem</a>",
- "NAME": "H01070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0642517009663,
- 38.90523347886796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01071'>Report Problem</a>",
- "NAME": "H01071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06945885833555,
- 38.92602000784756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01072'>Report Problem</a>",
- "NAME": "H01072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99712003778735,
- 38.90558313162535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01073'>Report Problem</a>",
- "NAME": "H01073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08044711284144,
- 38.9539029757847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01074'>Report Problem</a>",
- "NAME": "H01074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06739588664657,
- 38.92455806652047,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01075'>Report Problem</a>",
- "NAME": "H01075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07059506763527,
- 38.97046281998418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01076'>Report Problem</a>",
- "NAME": "H01076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02722480428261,
- 38.91562280061169,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01077'>Report Problem</a>",
- "NAME": "H01077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00705099832936,
- 38.91800122026909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/01/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01078'>Report Problem</a>",
- "NAME": "H01078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05632355420633,
- 38.91622064944444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01079'>Report Problem</a>",
- "NAME": "H01079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00601439986795,
- 38.91815632957647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01080'>Report Problem</a>",
- "NAME": "H01080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01003853951129,
- 38.95646008550201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01081'>Report Problem</a>",
- "NAME": "H01081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06318282606173,
- 38.918515626831244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01082'>Report Problem</a>",
- "NAME": "H01082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98559855134397,
- 38.90438597958521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01083'>Report Problem</a>",
- "NAME": "H01083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05072469617849,
- 38.914857775736934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01084'>Report Problem</a>",
- "NAME": "H01084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99930690189358,
- 38.90653568082517,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01085'>Report Problem</a>",
- "NAME": "H01085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04403760881928,
- 38.93149802805645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01086'>Report Problem</a>",
- "NAME": "H01086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99998261203325,
- 38.843219295039894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01087'>Report Problem</a>",
- "NAME": "H01087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10376195473017,
- 38.92579351099977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01088'>Report Problem</a>",
- "NAME": "H01088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10245132485421,
- 38.92445367938406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01089'>Report Problem</a>",
- "NAME": "H01089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04675304939533,
- 38.92064142032478,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01090'>Report Problem</a>",
- "NAME": "H01090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03126739178111,
- 38.95846256549808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01091'>Report Problem</a>",
- "NAME": "H01091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99271121092832,
- 38.88423067860804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01092'>Report Problem</a>",
- "NAME": "H01092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99968826612712,
- 38.88549325027117,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01093'>Report Problem</a>",
- "NAME": "H01093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01714746631139,
- 38.911077792000114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01094'>Report Problem</a>",
- "NAME": "H01094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02099283069813,
- 38.908490824132535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01095'>Report Problem</a>",
- "NAME": "H01095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0162303436936,
- 38.91272933173848,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01096'>Report Problem</a>",
- "NAME": "H01096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98099700989233,
- 38.882096615884365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01097'>Report Problem</a>",
- "NAME": "H01097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270877032149,
- 38.88352625884904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01098'>Report Problem</a>",
- "NAME": "H01098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01206770019631,
- 38.9180210696043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01099'>Report Problem</a>",
- "NAME": "H01099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96487669838466,
- 38.87104558704628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01100'>Report Problem</a>",
- "NAME": "H01100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04163387392822,
- 38.89364972525527,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01101'>Report Problem</a>",
- "NAME": "H01101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04165868958425,
- 38.89267844292344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01102'>Report Problem</a>",
- "NAME": "H01102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04083570445405,
- 38.892230756222006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01103'>Report Problem</a>",
- "NAME": "H01103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05336016120515,
- 38.903449730904676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01104'>Report Problem</a>",
- "NAME": "H01104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03466550910261,
- 38.95192067850163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01105'>Report Problem</a>",
- "NAME": "H01105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02095068622666,
- 38.97744299354791,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01106'>Report Problem</a>",
- "NAME": "H01106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02605284269748,
- 38.91422736149244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01107'>Report Problem</a>",
- "NAME": "H01107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99159379851616,
- 38.892751284903305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01108'>Report Problem</a>",
- "NAME": "H01108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07774476196049,
- 38.952706226427104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01109'>Report Problem</a>",
- "NAME": "H01109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00945227234384,
- 38.96021602015782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01110'>Report Problem</a>",
- "NAME": "H01110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9996852059546,
- 38.9181614204952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01111'>Report Problem</a>",
- "NAME": "H01111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07105760964761,
- 38.91457700196526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01112'>Report Problem</a>",
- "NAME": "H01112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04015338137422,
- 38.92574120589587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01113'>Report Problem</a>",
- "NAME": "H01113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03660477102156,
- 38.91668587040987,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01114'>Report Problem</a>",
- "NAME": "H01114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98428969052102,
- 38.92897056480209,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01115'>Report Problem</a>",
- "NAME": "H01115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98621858165949,
- 38.92888001340834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01116'>Report Problem</a>",
- "NAME": "H01116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98849020783051,
- 38.92874746768866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01117'>Report Problem</a>",
- "NAME": "H01117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03610388193282,
- 38.95830277983555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01118'>Report Problem</a>",
- "NAME": "H01118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99623378515828,
- 38.90273608891848,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01260'>Report Problem</a>",
- "NAME": "H01260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03784493973886,
- 38.91548759226401,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01261'>Report Problem</a>",
- "NAME": "H01261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0339911604111,
- 38.8964932309644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01262'>Report Problem</a>",
- "NAME": "H01262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03461169584533,
- 38.896333663756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01263'>Report Problem</a>",
- "NAME": "H01263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0346881138083,
- 38.94967780984984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01264'>Report Problem</a>",
- "NAME": "H01264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03505196427452,
- 38.897636817538846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01265'>Report Problem</a>",
- "NAME": "H01265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03506423683316,
- 38.89720538532162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01266'>Report Problem</a>",
- "NAME": "H01266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06126172689633,
- 38.902658587561895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01267'>Report Problem</a>",
- "NAME": "H01267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0385204501002,
- 38.92796907942228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01268'>Report Problem</a>",
- "NAME": "H01268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01744683670653,
- 38.884753350369856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01269'>Report Problem</a>",
- "NAME": "H01269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10245099692925,
- 38.92574250041143,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01270'>Report Problem</a>",
- "NAME": "H01270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05057597228914,
- 38.915732621584645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01271'>Report Problem</a>",
- "NAME": "H01271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99257393611859,
- 38.89346414757438,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01272'>Report Problem</a>",
- "NAME": "H01272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00134054455694,
- 38.88988766496422,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01273'>Report Problem</a>",
- "NAME": "H01273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0287532997781,
- 38.93977761350051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01274'>Report Problem</a>",
- "NAME": "H01274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02821991187203,
- 38.93892302761489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01275'>Report Problem</a>",
- "NAME": "H01275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03893123182971,
- 38.92722597362507,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01276'>Report Problem</a>",
- "NAME": "H01276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02211030576565,
- 38.9346959742425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01277'>Report Problem</a>",
- "NAME": "H01277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03505864228194,
- 38.896705476847394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01278'>Report Problem</a>",
- "NAME": "H01278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99479131113755,
- 38.8774704444705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01279'>Report Problem</a>",
- "NAME": "H01279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02814783313852,
- 38.907370870262305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01280'>Report Problem</a>",
- "NAME": "H01280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02301353427221,
- 38.899942202257186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01281'>Report Problem</a>",
- "NAME": "H01281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01878796832919,
- 38.90728654943058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01282'>Report Problem</a>",
- "NAME": "H01282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06648399581624,
- 38.96486080367615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01283'>Report Problem</a>",
- "NAME": "H01283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02980330962586,
- 38.918065384007974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01284'>Report Problem</a>",
- "NAME": "H01284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02718157551762,
- 38.918163889752904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01285'>Report Problem</a>",
- "NAME": "H01285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99728667693809,
- 38.88685488993583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01286'>Report Problem</a>",
- "NAME": "H01286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03133349487597,
- 38.97944122809842,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01287'>Report Problem</a>",
- "NAME": "H01287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05487479411555,
- 38.90368554364328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01288'>Report Problem</a>",
- "NAME": "H01288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07073322685143,
- 38.93352231152344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01289'>Report Problem</a>",
- "NAME": "H01289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01235997090174,
- 38.965012778328564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01290'>Report Problem</a>",
- "NAME": "H01290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01376165638007,
- 38.96500091104376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01291'>Report Problem</a>",
- "NAME": "H01291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0697614609087,
- 38.92475083468198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01292'>Report Problem</a>",
- "NAME": "H01292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02949243392233,
- 38.90845306252808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01293'>Report Problem</a>",
- "NAME": "H01293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0734675858721,
- 38.96393850343997,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01294'>Report Problem</a>",
- "NAME": "H01294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02981463399068,
- 38.90728262542809,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01295'>Report Problem</a>",
- "NAME": "H01295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9944952806497,
- 38.903156701048964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01296'>Report Problem</a>",
- "NAME": "H01296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02980137740762,
- 38.91562145122284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01297'>Report Problem</a>",
- "NAME": "H01297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05653768641652,
- 38.92847400087578,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/20/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01298'>Report Problem</a>",
- "NAME": "H01298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03276206492265,
- 38.90558663606525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01299'>Report Problem</a>",
- "NAME": "H01299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05638572645356,
- 38.927229503618705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01300'>Report Problem</a>",
- "NAME": "H01300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01511849538126,
- 38.880429568481176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01301'>Report Problem</a>",
- "NAME": "H01301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06853997896148,
- 38.93736966779079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01302'>Report Problem</a>",
- "NAME": "H01302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0318214772029,
- 38.91125090216896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01303'>Report Problem</a>",
- "NAME": "H01303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03097123782356,
- 38.91036370991568,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01304'>Report Problem</a>",
- "NAME": "H01304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382600202773,
- 38.89213396346672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01305'>Report Problem</a>",
- "NAME": "H01305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0464904946613,
- 38.91078139010919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01306'>Report Problem</a>",
- "NAME": "H01306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00334796081455,
- 38.91487531381453,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01307'>Report Problem</a>",
- "NAME": "H01307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04253965894844,
- 38.929747142439545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01119'>Report Problem</a>",
- "NAME": "H01119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00367817964616,
- 38.91632508697752,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01120'>Report Problem</a>",
- "NAME": "H01120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00367735162028,
- 38.917038519807605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01121'>Report Problem</a>",
- "NAME": "H01121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00501181248865,
- 38.916323785229494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01122'>Report Problem</a>",
- "NAME": "H01122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02856741514455,
- 38.92678457732254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00921'>Report Problem</a>",
- "NAME": "H00921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02874768998996,
- 38.92761027121273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00922'>Report Problem</a>",
- "NAME": "H00922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02733406566726,
- 38.928670195114464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00923'>Report Problem</a>",
- "NAME": "H00923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04798171390973,
- 38.91913754961618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00924'>Report Problem</a>",
- "NAME": "H00924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03108027692984,
- 38.92669160083335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00925'>Report Problem</a>",
- "NAME": "H00925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02688437259697,
- 38.92572037387635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00927'>Report Problem</a>",
- "NAME": "H00927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02696301926464,
- 38.922903931903974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00928'>Report Problem</a>",
- "NAME": "H00928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03276934981878,
- 38.904454095137545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00929'>Report Problem</a>",
- "NAME": "H00929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08228957627604,
- 38.908698381034554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00930'>Report Problem</a>",
- "NAME": "H00930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02689912670301,
- 38.92374441392029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00931'>Report Problem</a>",
- "NAME": "H00931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9963462050196,
- 38.90378059302521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00932'>Report Problem</a>",
- "NAME": "H00932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02817758611357,
- 38.9238200437837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00933'>Report Problem</a>",
- "NAME": "H00933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09869712061487,
- 38.919018204308266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00934'>Report Problem</a>",
- "NAME": "H00934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02814555163172,
- 38.92247991064203,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00935'>Report Problem</a>",
- "NAME": "H00935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02841847883096,
- 38.925816336823786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00936'>Report Problem</a>",
- "NAME": "H00936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04179985906374,
- 38.91878235683632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00937'>Report Problem</a>",
- "NAME": "H00937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07449084634996,
- 38.95974323350111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00938'>Report Problem</a>",
- "NAME": "H00938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10977213906301,
- 38.92839117253699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00939'>Report Problem</a>",
- "NAME": "H00939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01066175761832,
- 38.91338684248242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00940'>Report Problem</a>",
- "NAME": "H00940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07703382475488,
- 38.96034055394016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00941'>Report Problem</a>",
- "NAME": "H00941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07625719896264,
- 38.95905172873574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00942'>Report Problem</a>",
- "NAME": "H00942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0309389859885,
- 38.932578100448914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00943'>Report Problem</a>",
- "NAME": "H00943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03079384352402,
- 38.933820753227806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00944'>Report Problem</a>",
- "NAME": "H00944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02980907676186,
- 38.93340777064042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00945'>Report Problem</a>",
- "NAME": "H00945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99578145804072,
- 38.85265546831029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00946'>Report Problem</a>",
- "NAME": "H00946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03904529624903,
- 38.91413853245932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00947'>Report Problem</a>",
- "NAME": "H00947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05868767581333,
- 38.94106986303479,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00948'>Report Problem</a>",
- "NAME": "H00948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02751582997492,
- 38.932902165429724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00949'>Report Problem</a>",
- "NAME": "H00949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02814993274278,
- 38.91800776234343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00950'>Report Problem</a>",
- "NAME": "H00950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02715471529463,
- 38.90976409105831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00951'>Report Problem</a>",
- "NAME": "H00951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02529089784515,
- 38.93292866601758,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00952'>Report Problem</a>",
- "NAME": "H00952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382703525835,
- 38.88592108476634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00953'>Report Problem</a>",
- "NAME": "H00953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97022530785893,
- 38.925694873340795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00954'>Report Problem</a>",
- "NAME": "H00954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9963353109303,
- 38.88873345308379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00955'>Report Problem</a>",
- "NAME": "H00955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02438891265945,
- 38.92653697560749,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00957'>Report Problem</a>",
- "NAME": "H00957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487386791456,
- 38.88203364837203,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00958'>Report Problem</a>",
- "NAME": "H00958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00752284897247,
- 38.875457968847684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00959'>Report Problem</a>",
- "NAME": "H00959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02447817621386,
- 38.92603925652625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00960'>Report Problem</a>",
- "NAME": "H00960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00209251840256,
- 38.89003085103512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00961'>Report Problem</a>",
- "NAME": "H00961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01070964913265,
- 38.87557049620656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00962'>Report Problem</a>",
- "NAME": "H00962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02688802490417,
- 38.92482427969066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00963'>Report Problem</a>",
- "NAME": "H00963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04340755980301,
- 38.93065027568632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00964'>Report Problem</a>",
- "NAME": "H00964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0019632067488,
- 38.89105285326527,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00965'>Report Problem</a>",
- "NAME": "H00965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02835293489912,
- 38.92481638449598,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00966'>Report Problem</a>",
- "NAME": "H00966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98565968938456,
- 38.88540307026997,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00967'>Report Problem</a>",
- "NAME": "H00967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02591134002633,
- 38.935109232923914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00968'>Report Problem</a>",
- "NAME": "H00968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02249891059371,
- 38.92328069475677,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00969'>Report Problem</a>",
- "NAME": "H00969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851457689392,
- 38.8910540314067,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00970'>Report Problem</a>",
- "NAME": "H00970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06630055242039,
- 38.933441556188804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00971'>Report Problem</a>",
- "NAME": "H00971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03460134517405,
- 38.92528373759628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00972'>Report Problem</a>",
- "NAME": "H00972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07974772374365,
- 38.952739306941815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00973'>Report Problem</a>",
- "NAME": "H00973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01899127513543,
- 38.909746803630455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00974'>Report Problem</a>",
- "NAME": "H00974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04729237131455,
- 38.92012539555548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00975'>Report Problem</a>",
- "NAME": "H00975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02816048892544,
- 38.92059080755352,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00976'>Report Problem</a>",
- "NAME": "H00976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02300566269213,
- 38.918751273729306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00977'>Report Problem</a>",
- "NAME": "H00977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02146631685001,
- 38.97247180737497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00978'>Report Problem</a>",
- "NAME": "H00978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0691127857704,
- 38.91262541283799,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00979'>Report Problem</a>",
- "NAME": "H00979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02824315678856,
- 38.91913087121627,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00980'>Report Problem</a>",
- "NAME": "H00980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98677527969163,
- 38.86429693927759,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00981'>Report Problem</a>",
- "NAME": "H00981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00065269304154,
- 38.88439791063407,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00982'>Report Problem</a>",
- "NAME": "H00982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03171952703623,
- 38.91562833310763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00983'>Report Problem</a>",
- "NAME": "H00983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08048426947165,
- 38.94483666694808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00984'>Report Problem</a>",
- "NAME": "H00984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02772843472025,
- 38.95519414358661,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00985'>Report Problem</a>",
- "NAME": "H00985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09252511484338,
- 38.95222693399096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, Metropolitan<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00986'>Report Problem</a>",
- "NAME": "H00986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9916173110249,
- 38.884238640698534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00987'>Report Problem</a>",
- "NAME": "H00987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09251860499913,
- 38.9498157025937,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00988'>Report Problem</a>",
- "NAME": "H00988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09251818262467,
- 38.95116131447385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00989'>Report Problem</a>",
- "NAME": "H00989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99229101073968,
- 38.929444545981134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H00990'>Report Problem</a>",
- "NAME": "H00990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99958535821078,
- 38.884393921007955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01346'>Report Problem</a>",
- "NAME": "H01346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03324060932577,
- 38.98043663254894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01347'>Report Problem</a>",
- "NAME": "H01347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99861133887138,
- 38.88657672542416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01348'>Report Problem</a>",
- "NAME": "H01348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99943350723875,
- 38.89603904557128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01349'>Report Problem</a>",
- "NAME": "H01349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03972411624017,
- 38.90970408347191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01350'>Report Problem</a>",
- "NAME": "H01350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99958718845025,
- 38.888782956821174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01351'>Report Problem</a>",
- "NAME": "H01351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00049205147249,
- 38.894896496864035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01352'>Report Problem</a>",
- "NAME": "H01352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05803198103061,
- 38.90855168918467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01353'>Report Problem</a>",
- "NAME": "H01353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01902032785169,
- 38.91916356284706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01354'>Report Problem</a>",
- "NAME": "H01354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02098415370156,
- 38.912465161891056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01355'>Report Problem</a>",
- "NAME": "H01355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06832022220472,
- 38.91165236552843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01356'>Report Problem</a>",
- "NAME": "H01356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99369075732835,
- 38.93148955188863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01357'>Report Problem</a>",
- "NAME": "H01357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99375773210112,
- 38.9322686568161,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01358'>Report Problem</a>",
- "NAME": "H01358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03372254853788,
- 38.9014539428181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01359'>Report Problem</a>",
- "NAME": "H01359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00334336053685,
- 38.902586121696324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01360'>Report Problem</a>",
- "NAME": "H01360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00338152084385,
- 38.901382928635776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01361'>Report Problem</a>",
- "NAME": "H01361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98868669290609,
- 38.93172728218154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01362'>Report Problem</a>",
- "NAME": "H01362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01206340962221,
- 38.92224165071239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01363'>Report Problem</a>",
- "NAME": "H01363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0710942990464,
- 38.91548998357376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01364'>Report Problem</a>",
- "NAME": "H01364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9846922033922,
- 38.933894576575184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01365'>Report Problem</a>",
- "NAME": "H01365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01656208341545,
- 38.91011013735514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01366'>Report Problem</a>",
- "NAME": "H01366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99016655986281,
- 38.92660222800276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01367'>Report Problem</a>",
- "NAME": "H01367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01209847417567,
- 38.872872525187184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01368'>Report Problem</a>",
- "NAME": "H01368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97639915775338,
- 38.92563658509472,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01369'>Report Problem</a>",
- "NAME": "H01369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9743351566571,
- 38.925639185851914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01370'>Report Problem</a>",
- "NAME": "H01370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01237230989125,
- 38.8886653915865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01371'>Report Problem</a>",
- "NAME": "H01371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01236788365296,
- 38.88866472543537,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01372'>Report Problem</a>",
- "NAME": "H01372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97451975942855,
- 38.86365931031904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01373'>Report Problem</a>",
- "NAME": "H01373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02180942036213,
- 38.94309440910964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01374'>Report Problem</a>",
- "NAME": "H01374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98753200501619,
- 38.89423311397515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01375'>Report Problem</a>",
- "NAME": "H01375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05218711874285,
- 38.90379169542129,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01376'>Report Problem</a>",
- "NAME": "H01376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0422025297031,
- 38.92063365753914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01377'>Report Problem</a>",
- "NAME": "H01377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01075657899649,
- 38.81725804479435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01378'>Report Problem</a>",
- "NAME": "H01378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04580450193221,
- 38.931523932470704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01379'>Report Problem</a>",
- "NAME": "H01379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05032113866157,
- 38.89493919609121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01380'>Report Problem</a>",
- "NAME": "H01380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05175787121735,
- 38.89464615671381,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01381'>Report Problem</a>",
- "NAME": "H01381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0297996572156,
- 38.97585854426577,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01382'>Report Problem</a>",
- "NAME": "H01382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10872595112201,
- 38.92708115180884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01383'>Report Problem</a>",
- "NAME": "H01383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9881627126412,
- 38.87759875373104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01384'>Report Problem</a>",
- "NAME": "H01384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10021213247848,
- 38.923678229601464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01385'>Report Problem</a>",
- "NAME": "H01385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0326625962599,
- 38.92797885373859,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01386'>Report Problem</a>",
- "NAME": "H01386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98667823527371,
- 38.862458652900116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01387'>Report Problem</a>",
- "NAME": "H01387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98841498850794,
- 38.92776683344535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01388'>Report Problem</a>",
- "NAME": "H01388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06751739223722,
- 38.96393841520778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01389'>Report Problem</a>",
- "NAME": "H01389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98543660046072,
- 38.8987607726603,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01390'>Report Problem</a>",
- "NAME": "H01390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01766936490385,
- 38.93786092176164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01391'>Report Problem</a>",
- "NAME": "H01391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837354402993,
- 38.899661982894166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01392'>Report Problem</a>",
- "NAME": "H01392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98913303378683,
- 38.88835697740303,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01393'>Report Problem</a>",
- "NAME": "H01393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02745507755345,
- 38.92776620063168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01394'>Report Problem</a>",
- "NAME": "H01394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99443397184977,
- 38.898861261364594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01395'>Report Problem</a>",
- "NAME": "H01395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9901654964023,
- 38.900029102983225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01396'>Report Problem</a>",
- "NAME": "H01396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01854680747583,
- 38.97476716305724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01397'>Report Problem</a>",
- "NAME": "H01397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01962004333944,
- 38.976781011630656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01398'>Report Problem</a>",
- "NAME": "H01398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03177395654339,
- 38.916337256100114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01399'>Report Problem</a>",
- "NAME": "H01399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0678677568178,
- 38.91561253275963,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01400'>Report Problem</a>",
- "NAME": "H01400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06800519709321,
- 38.91474776968932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01401'>Report Problem</a>",
- "NAME": "H01401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03361769494192,
- 38.95932557120131,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01402'>Report Problem</a>",
- "NAME": "H01402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02977407831762,
- 38.91635310596354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01403'>Report Problem</a>",
- "NAME": "H01403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01700160878998,
- 38.976991349302246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01404'>Report Problem</a>",
- "NAME": "H01404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04160161471164,
- 38.8944693271625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01405'>Report Problem</a>",
- "NAME": "H01405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01391879717032,
- 38.974665435911255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01406'>Report Problem</a>",
- "NAME": "H01406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01368355595714,
- 38.97284008956856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01407'>Report Problem</a>",
- "NAME": "H01407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02020450656448,
- 38.93127801018239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01408'>Report Problem</a>",
- "NAME": "H01408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01175073838544,
- 38.97005024179373,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01409'>Report Problem</a>",
- "NAME": "H01409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99257141262353,
- 38.88614869848065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01410'>Report Problem</a>",
- "NAME": "H01410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98537502061258,
- 38.88665823573472,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01411'>Report Problem</a>",
- "NAME": "H01411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04149447307101,
- 38.896122202421914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01412'>Report Problem</a>",
- "NAME": "H01412"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9865526989882,
- 38.88546701889877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01413'>Report Problem</a>",
- "NAME": "H01413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99708234145746,
- 38.92747465510347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01414'>Report Problem</a>",
- "NAME": "H01414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99141696145851,
- 38.88030415020904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/26/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01415'>Report Problem</a>",
- "NAME": "H01415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0457781695096,
- 38.90126963768948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01416'>Report Problem</a>",
- "NAME": "H01416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98967469590805,
- 38.8630668262699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01417'>Report Problem</a>",
- "NAME": "H01417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99504747482258,
- 38.890813160068454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01418'>Report Problem</a>",
- "NAME": "H01418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0477808291248,
- 38.899622882481616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01419'>Report Problem</a>",
- "NAME": "H01419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0281554579527,
- 38.90869507724731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01420'>Report Problem</a>",
- "NAME": "H01420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04543979651389,
- 38.92229459652637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01421'>Report Problem</a>",
- "NAME": "H01421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04657078787338,
- 38.92243387037017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/29/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01422'>Report Problem</a>",
- "NAME": "H01422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99036555788003,
- 38.892765405265465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01423'>Report Problem</a>",
- "NAME": "H01423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.982151279978,
- 38.890805730653256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/11/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01424'>Report Problem</a>",
- "NAME": "H01424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0403422861527,
- 38.93051964544143,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01425'>Report Problem</a>",
- "NAME": "H01425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04009472547922,
- 38.911072152937386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01426'>Report Problem</a>",
- "NAME": "H01426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99030917706406,
- 38.889132206660484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01427'>Report Problem</a>",
- "NAME": "H01427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.027212265686,
- 38.95616568010513,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01428'>Report Problem</a>",
- "NAME": "H01428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04014765030604,
- 38.93149791561874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01429'>Report Problem</a>",
- "NAME": "H01429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02594020312957,
- 38.92789592407714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01430'>Report Problem</a>",
- "NAME": "H01430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0685070340173,
- 38.91656352092913,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01431'>Report Problem</a>",
- "NAME": "H01431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01603118828567,
- 38.911065924355206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01432'>Report Problem</a>",
- "NAME": "H01432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01714105631734,
- 38.93895454434028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01433'>Report Problem</a>",
- "NAME": "H01433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01222852584014,
- 38.911976280582394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01434'>Report Problem</a>",
- "NAME": "H01434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07193166667204,
- 38.95905565895274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01435'>Report Problem</a>",
- "NAME": "H01435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02287358707981,
- 38.90193504952017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01436'>Report Problem</a>",
- "NAME": "H01436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03623161021987,
- 38.91117416399947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01437'>Report Problem</a>",
- "NAME": "H01437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04285327470741,
- 38.932412550168074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01438'>Report Problem</a>",
- "NAME": "H01438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06508381575985,
- 38.912530904838825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01439'>Report Problem</a>",
- "NAME": "H01439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98785773286018,
- 38.86001891428376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01440'>Report Problem</a>",
- "NAME": "H01440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06952060676896,
- 38.90592663689438,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01441'>Report Problem</a>",
- "NAME": "H01441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07032642117252,
- 38.9063900216502,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01442'>Report Problem</a>",
- "NAME": "H01442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03810283796157,
- 38.93113988933674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01443'>Report Problem</a>",
- "NAME": "H01443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02250461193911,
- 38.89972571342753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01444'>Report Problem</a>",
- "NAME": "H01444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98766571357488,
- 38.906478567488165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01445'>Report Problem</a>",
- "NAME": "H01445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98565706299972,
- 38.925759736308656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01446'>Report Problem</a>",
- "NAME": "H01446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06975740648444,
- 38.90676611908557,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01447'>Report Problem</a>",
- "NAME": "H01447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9874357466905,
- 38.885298471310634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01123'>Report Problem</a>",
- "NAME": "H01123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03473479504007,
- 38.920474182194575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01124'>Report Problem</a>",
- "NAME": "H01124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04567648666824,
- 38.90711725152424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01125'>Report Problem</a>",
- "NAME": "H01125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07868683580811,
- 38.95837812952171,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01126'>Report Problem</a>",
- "NAME": "H01126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03675846776675,
- 38.91266183485176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01127'>Report Problem</a>",
- "NAME": "H01127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07587085633425,
- 38.95149599785176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01128'>Report Problem</a>",
- "NAME": "H01128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03259602579837,
- 38.947119484482364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01129'>Report Problem</a>",
- "NAME": "H01129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07476646354421,
- 38.95145080318647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01130'>Report Problem</a>",
- "NAME": "H01130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99965037822234,
- 38.902456070358866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01131'>Report Problem</a>",
- "NAME": "H01131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07879088009778,
- 38.95706111429798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01132'>Report Problem</a>",
- "NAME": "H01132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0772445172896,
- 38.957059632852044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01133'>Report Problem</a>",
- "NAME": "H01133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04039977163417,
- 38.9176016410672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01135'>Report Problem</a>",
- "NAME": "H01135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0465816679434,
- 38.909501934854696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01137'>Report Problem</a>",
- "NAME": "H01137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08018948214726,
- 38.962096934343755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01138'>Report Problem</a>",
- "NAME": "H01138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0403901572071,
- 38.9266663234115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01139'>Report Problem</a>",
- "NAME": "H01139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0198398537631,
- 38.972249861467375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01140'>Report Problem</a>",
- "NAME": "H01140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02165721981245,
- 38.94102544074561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01141'>Report Problem</a>",
- "NAME": "H01141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06222469940626,
- 38.93001324432045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01142'>Report Problem</a>",
- "NAME": "H01142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97495691352685,
- 38.9301968243122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01143'>Report Problem</a>",
- "NAME": "H01143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0122352301828,
- 38.894868237489746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01144'>Report Problem</a>",
- "NAME": "H01144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00638766883195,
- 38.916939887977165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01145'>Report Problem</a>",
- "NAME": "H01145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04183924980079,
- 38.917033141238356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01146'>Report Problem</a>",
- "NAME": "H01146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99369724074582,
- 38.87471310962728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01147'>Report Problem</a>",
- "NAME": "H01147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0335235866018,
- 38.95720290975613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01148'>Report Problem</a>",
- "NAME": "H01148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06649099215244,
- 38.96317058138602,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01149'>Report Problem</a>",
- "NAME": "H01149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03255845293785,
- 38.941763277017365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01150'>Report Problem</a>",
- "NAME": "H01150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01676337231363,
- 38.97516410969956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01151'>Report Problem</a>",
- "NAME": "H01151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06789833588407,
- 38.964845523718665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01152'>Report Problem</a>",
- "NAME": "H01152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98272481650363,
- 38.931021761135625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01153'>Report Problem</a>",
- "NAME": "H01153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02983768153747,
- 38.93969515006549,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01154'>Report Problem</a>",
- "NAME": "H01154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07105401617015,
- 38.93257813652327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01155'>Report Problem</a>",
- "NAME": "H01155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07265460464963,
- 38.960340303320436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01156'>Report Problem</a>",
- "NAME": "H01156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07152155648814,
- 38.96034250626626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01157'>Report Problem</a>",
- "NAME": "H01157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98226869040252,
- 38.92814320456875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01158'>Report Problem</a>",
- "NAME": "H01158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97086276404467,
- 38.93183369374606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01159'>Report Problem</a>",
- "NAME": "H01159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00637904618965,
- 38.916323196105964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01160'>Report Problem</a>",
- "NAME": "H01160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98584076213282,
- 38.88132798724272,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01161'>Report Problem</a>",
- "NAME": "H01161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98535587196963,
- 38.89543760439186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01162'>Report Problem</a>",
- "NAME": "H01162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02312111282507,
- 38.907297077756155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01163'>Report Problem</a>",
- "NAME": "H01163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98558064267291,
- 38.87908510053281,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01164'>Report Problem</a>",
- "NAME": "H01164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07230236585579,
- 38.959718168041576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01165'>Report Problem</a>",
- "NAME": "H01165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05461672845477,
- 38.905334994871545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01166'>Report Problem</a>",
- "NAME": "H01166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0634239168755,
- 38.930336952928,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01167'>Report Problem</a>",
- "NAME": "H01167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98621570565703,
- 38.93170632479768,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01168'>Report Problem</a>",
- "NAME": "H01168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01410263400096,
- 38.90131034779346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01169'>Report Problem</a>",
- "NAME": "H01169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93391721844836,
- 38.910376899938775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01170'>Report Problem</a>",
- "NAME": "H01170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01909284938064,
- 38.90258566337233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01171'>Report Problem</a>",
- "NAME": "H01171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00055198441164,
- 38.84303053977152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01172'>Report Problem</a>",
- "NAME": "H01172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00897242916314,
- 38.86935816038689,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01173'>Report Problem</a>",
- "NAME": "H01173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02480931418043,
- 38.9408791952257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01175'>Report Problem</a>",
- "NAME": "H01175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03557587351888,
- 38.92637909951481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01176'>Report Problem</a>",
- "NAME": "H01176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98240755930101,
- 38.94248111496923,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01177'>Report Problem</a>",
- "NAME": "H01177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02124245809424,
- 38.9357085600342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01178'>Report Problem</a>",
- "NAME": "H01178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02315500183269,
- 38.908624027409545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01179'>Report Problem</a>",
- "NAME": "H01179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03319232066133,
- 38.91327003726308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01180'>Report Problem</a>",
- "NAME": "H01180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03493483747779,
- 38.900358800888,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01181'>Report Problem</a>",
- "NAME": "H01181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02614239499393,
- 38.96618006798379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01182'>Report Problem</a>",
- "NAME": "H01182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03793220575525,
- 38.90038004469125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01183'>Report Problem</a>",
- "NAME": "H01183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07445316348512,
- 38.930970190502315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01184'>Report Problem</a>",
- "NAME": "H01184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00909971517954,
- 38.95774390271903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01185'>Report Problem</a>",
- "NAME": "H01185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05489072470027,
- 38.90432689490299,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01186'>Report Problem</a>",
- "NAME": "H01186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02784014951384,
- 38.93073856373892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01187'>Report Problem</a>",
- "NAME": "H01187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02788007461147,
- 38.92975825203883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01188'>Report Problem</a>",
- "NAME": "H01188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06117406151326,
- 38.907724570368615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01189'>Report Problem</a>",
- "NAME": "H01189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99837130275425,
- 38.891918040481904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01190'>Report Problem</a>",
- "NAME": "H01190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05927040113191,
- 38.907753135151125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01191'>Report Problem</a>",
- "NAME": "H01191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00444872914262,
- 38.84185591699355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01192'>Report Problem</a>",
- "NAME": "H01192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9737266148885,
- 38.89829202979229,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01193'>Report Problem</a>",
- "NAME": "H01193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02685264669319,
- 38.908630658975376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01194'>Report Problem</a>",
- "NAME": "H01194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01777337435135,
- 38.91941778497078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01195'>Report Problem</a>",
- "NAME": "H01195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99381590740627,
- 38.90034454669514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01196'>Report Problem</a>",
- "NAME": "H01196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02508851743735,
- 38.919222331969785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01197'>Report Problem</a>",
- "NAME": "H01197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02078822973674,
- 38.92016996021241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01198'>Report Problem</a>",
- "NAME": "H01198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02686166102042,
- 38.90140080684872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01199'>Report Problem</a>",
- "NAME": "H01199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99172116576136,
- 38.88972662482251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01200'>Report Problem</a>",
- "NAME": "H01200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07077388651813,
- 38.92366107484999,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01201'>Report Problem</a>",
- "NAME": "H01201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01209387625892,
- 38.901432248879416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01202'>Report Problem</a>",
- "NAME": "H01202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00714956660148,
- 38.90259231066718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01203'>Report Problem</a>",
- "NAME": "H01203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00188687256431,
- 38.91486989650086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01204'>Report Problem</a>",
- "NAME": "H01204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0643494441716,
- 38.908747852407146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01205'>Report Problem</a>",
- "NAME": "H01205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05714097454265,
- 38.907572110254456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01206'>Report Problem</a>",
- "NAME": "H01206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064527452604,
- 38.914154089657,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01207'>Report Problem</a>",
- "NAME": "H01207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98845944682753,
- 38.9383852947033,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01208'>Report Problem</a>",
- "NAME": "H01208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02156351393934,
- 38.91414938120975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "null<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01209'>Report Problem</a>",
- "NAME": "H01209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00065274414288,
- 38.881164746906826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01210'>Report Problem</a>",
- "NAME": "H01210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03661030143252,
- 38.914251321398666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01211'>Report Problem</a>",
- "NAME": "H01211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0034386848095,
- 38.890029819232915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01213'>Report Problem</a>",
- "NAME": "H01213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98530275963574,
- 38.9017303251402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01214'>Report Problem</a>",
- "NAME": "H01214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02612713971628,
- 38.90571409180324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01215'>Report Problem</a>",
- "NAME": "H01215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98095121523569,
- 38.93210621172763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01216'>Report Problem</a>",
- "NAME": "H01216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0340216318606,
- 38.920503903273044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01217'>Report Problem</a>",
- "NAME": "H01217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09434450959813,
- 38.949827305338744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01218'>Report Problem</a>",
- "NAME": "H01218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02328979617391,
- 38.94305691931498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01219'>Report Problem</a>",
- "NAME": "H01219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08192767614064,
- 38.958065388702295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01220'>Report Problem</a>",
- "NAME": "H01220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00425559178476,
- 38.877579610775015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01221'>Report Problem</a>",
- "NAME": "H01221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99859496410137,
- 38.88872951141116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01222'>Report Problem</a>",
- "NAME": "H01222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04412538918903,
- 38.93336255208931,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01223'>Report Problem</a>",
- "NAME": "H01223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04509550026437,
- 38.89962279685093,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01224'>Report Problem</a>",
- "NAME": "H01224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00494192480275,
- 38.911008716725306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01225'>Report Problem</a>",
- "NAME": "H01225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04757451242816,
- 38.92828599002464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01226'>Report Problem</a>",
- "NAME": "H01226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04873063157197,
- 38.92961008685809,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01227'>Report Problem</a>",
- "NAME": "H01227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04528224830476,
- 38.93318976273631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01228'>Report Problem</a>",
- "NAME": "H01228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04548743333663,
- 38.91777328080344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01229'>Report Problem</a>",
- "NAME": "H01229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03945081564946,
- 38.92602743220156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01230'>Report Problem</a>",
- "NAME": "H01230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98765131463672,
- 38.90647231417365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01231'>Report Problem</a>",
- "NAME": "H01231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03450378388636,
- 38.92154557464372,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01233'>Report Problem</a>",
- "NAME": "H01233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03332386123981,
- 38.92161640720116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01234'>Report Problem</a>",
- "NAME": "H01234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03252860777019,
- 38.957326964329766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01235'>Report Problem</a>",
- "NAME": "H01235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01052210812912,
- 38.897954057398934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01236'>Report Problem</a>",
- "NAME": "H01236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0241095690236,
- 38.88030765237457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01237'>Report Problem</a>",
- "NAME": "H01237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00596570977216,
- 38.90457944856012,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01238'>Report Problem</a>",
- "NAME": "H01238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0228721051199,
- 38.88041442548278,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 11/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01239'>Report Problem</a>",
- "NAME": "H01239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02295620712553,
- 38.88329230054347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01240'>Report Problem</a>",
- "NAME": "H01240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01884216381268,
- 38.900768025034445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01241'>Report Problem</a>",
- "NAME": "H01241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02205276216445,
- 38.88035901030967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01242'>Report Problem</a>",
- "NAME": "H01242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02342470883548,
- 38.879366189702964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01243'>Report Problem</a>",
- "NAME": "H01243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02285954294592,
- 38.878508108208116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01244'>Report Problem</a>",
- "NAME": "H01244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01436844599127,
- 38.91694288159885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01245'>Report Problem</a>",
- "NAME": "H01245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06421035163879,
- 38.91369220270595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01246'>Report Problem</a>",
- "NAME": "H01246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00049953651703,
- 38.89214420592811,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01247'>Report Problem</a>",
- "NAME": "H01247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03075271432112,
- 38.980322539438426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01248'>Report Problem</a>",
- "NAME": "H01248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0297649329638,
- 38.97950786625973,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01249'>Report Problem</a>",
- "NAME": "H01249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97912292411009,
- 38.86938286232804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01250'>Report Problem</a>",
- "NAME": "H01250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97524297336714,
- 38.92141320039317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01251'>Report Problem</a>",
- "NAME": "H01251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04149196848284,
- 38.91117984628575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01252'>Report Problem</a>",
- "NAME": "H01252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98158591364003,
- 38.8996206356333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01253'>Report Problem</a>",
- "NAME": "H01253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99161932714492,
- 38.885914172920906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01254'>Report Problem</a>",
- "NAME": "H01254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03681986525778,
- 38.91042635981995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01255'>Report Problem</a>",
- "NAME": "H01255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03622395785315,
- 38.91190762544506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01256'>Report Problem</a>",
- "NAME": "H01256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01372016991348,
- 38.90713612142087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01257'>Report Problem</a>",
- "NAME": "H01257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0415012735067,
- 38.909575349081145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01258'>Report Problem</a>",
- "NAME": "H01258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01878975284264,
- 38.9057013231001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01259'>Report Problem</a>",
- "NAME": "H01259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99278668745065,
- 38.89727609599099,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01308'>Report Problem</a>",
- "NAME": "H01308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01168605099308,
- 38.89716571504747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01309'>Report Problem</a>",
- "NAME": "H01309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382396376973,
- 38.901431513499695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01310'>Report Problem</a>",
- "NAME": "H01310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99610176250134,
- 38.89719134983101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01311'>Report Problem</a>",
- "NAME": "H01311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98689393974941,
- 38.8986078751824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01312'>Report Problem</a>",
- "NAME": "H01312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01101709229322,
- 38.90967841836587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01313'>Report Problem</a>",
- "NAME": "H01313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04670628539925,
- 38.90711369146798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01314'>Report Problem</a>",
- "NAME": "H01314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02591361058987,
- 38.90232301719525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01315'>Report Problem</a>",
- "NAME": "H01315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9850216760369,
- 38.868276877879424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01316'>Report Problem</a>",
- "NAME": "H01316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02576997642896,
- 38.9036002443928,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01317'>Report Problem</a>",
- "NAME": "H01317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02612844088057,
- 38.904230389114375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01318'>Report Problem</a>",
- "NAME": "H01318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99609186327798,
- 38.92953965544233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01319'>Report Problem</a>",
- "NAME": "H01319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99606522675055,
- 38.930500732997814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01320'>Report Problem</a>",
- "NAME": "H01320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02511049571578,
- 38.90245347140325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01321'>Report Problem</a>",
- "NAME": "H01321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01606063786096,
- 38.908514649565234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01322'>Report Problem</a>",
- "NAME": "H01322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0268485835777,
- 38.9057083700895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01323'>Report Problem</a>",
- "NAME": "H01323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00335618698145,
- 38.921349104023456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01324'>Report Problem</a>",
- "NAME": "H01324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0210386702432,
- 38.90969574494479,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01325'>Report Problem</a>",
- "NAME": "H01325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06330793988118,
- 38.90765662770343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01326'>Report Problem</a>",
- "NAME": "H01326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99516617438064,
- 38.88132275492173,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01327'>Report Problem</a>",
- "NAME": "H01327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98376480920346,
- 38.86478025729087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01328'>Report Problem</a>",
- "NAME": "H01328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00569804183291,
- 38.87758217975662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01329'>Report Problem</a>",
- "NAME": "H01329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01013313215834,
- 38.83154843890562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01330'>Report Problem</a>",
- "NAME": "H01330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01210408995168,
- 38.87085599362729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01331'>Report Problem</a>",
- "NAME": "H01331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01210158760601,
- 38.87193295754201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01332'>Report Problem</a>",
- "NAME": "H01332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00379167621217,
- 38.87422273786634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01333'>Report Problem</a>",
- "NAME": "H01333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99478659119877,
- 38.89727545466726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01334'>Report Problem</a>",
- "NAME": "H01334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07144880328613,
- 38.9631444878158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01335'>Report Problem</a>",
- "NAME": "H01335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07032797254784,
- 38.91550556330122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01336'>Report Problem</a>",
- "NAME": "H01336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03105081083292,
- 38.90735687453357,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01337'>Report Problem</a>",
- "NAME": "H01337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99170695159191,
- 38.879331346061655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01338'>Report Problem</a>",
- "NAME": "H01338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0241186677307,
- 38.90729411953351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01340'>Report Problem</a>",
- "NAME": "H01340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01462896278859,
- 38.919240144312646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01341'>Report Problem</a>",
- "NAME": "H01341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03861932187694,
- 38.914919246299405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01342'>Report Problem</a>",
- "NAME": "H01342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00582141317908,
- 38.88267767938914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01343'>Report Problem</a>",
- "NAME": "H01343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98090178865581,
- 38.86607543205955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01344'>Report Problem</a>",
- "NAME": "H01344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04492837694538,
- 38.91422924939429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01345'>Report Problem</a>",
- "NAME": "H01345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0274274232013,
- 38.952954480004486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01518'>Report Problem</a>",
- "NAME": "H01518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02789213881012,
- 38.95608858931455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01519'>Report Problem</a>",
- "NAME": "H01519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99368965796253,
- 38.902339962934875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01521'>Report Problem</a>",
- "NAME": "H01521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06780453741156,
- 38.912753953630855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01522'>Report Problem</a>",
- "NAME": "H01522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04567623773461,
- 38.92140182451452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01523'>Report Problem</a>",
- "NAME": "H01523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0020985503904,
- 38.89367958370827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01524'>Report Problem</a>",
- "NAME": "H01524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04352071452138,
- 38.90648749904412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01525'>Report Problem</a>",
- "NAME": "H01525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07100721219906,
- 38.91268027278722,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01526'>Report Problem</a>",
- "NAME": "H01526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06654512384404,
- 38.913794014809426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01527'>Report Problem</a>",
- "NAME": "H01527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0955303256683,
- 38.95047605547877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01528'>Report Problem</a>",
- "NAME": "H01528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06510588263896,
- 38.96499800906057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01530'>Report Problem</a>",
- "NAME": "H01530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02241726103647,
- 38.95536863764007,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01531'>Report Problem</a>",
- "NAME": "H01531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02409937696957,
- 38.95529958796547,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01532'>Report Problem</a>",
- "NAME": "H01532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00058364348007,
- 38.87462519412972,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01533'>Report Problem</a>",
- "NAME": "H01533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09681477779233,
- 38.950921485142054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01534'>Report Problem</a>",
- "NAME": "H01534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0021005442548,
- 38.903847121925295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01535'>Report Problem</a>",
- "NAME": "H01535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99623492443291,
- 38.88399116829376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01536'>Report Problem</a>",
- "NAME": "H01536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00049911119648,
- 38.903845788489654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01537'>Report Problem</a>",
- "NAME": "H01537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01236060524063,
- 38.89728325880814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01538'>Report Problem</a>",
- "NAME": "H01538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01071561323114,
- 38.87215737514364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01539'>Report Problem</a>",
- "NAME": "H01539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09873186521835,
- 38.94875397605435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton, DC<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01540'>Report Problem</a>",
- "NAME": "H01540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04141639967317,
- 38.9332376163356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01541'>Report Problem</a>",
- "NAME": "H01541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09671370542131,
- 38.94801224556935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01542'>Report Problem</a>",
- "NAME": "H01542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03536159660199,
- 38.92555740791575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01543'>Report Problem</a>",
- "NAME": "H01543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02598165209017,
- 38.95739610139378,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01544'>Report Problem</a>",
- "NAME": "H01544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99009071713085,
- 38.93825695907212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01545'>Report Problem</a>",
- "NAME": "H01545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00290255506258,
- 38.87743150920006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01546'>Report Problem</a>",
- "NAME": "H01546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00067179956181,
- 38.91712571332078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01547'>Report Problem</a>",
- "NAME": "H01547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99031025293468,
- 38.9401095599963,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01548'>Report Problem</a>",
- "NAME": "H01548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0333796739256,
- 38.97645537229134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01549'>Report Problem</a>",
- "NAME": "H01549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01233725589168,
- 38.907182434403545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01550'>Report Problem</a>",
- "NAME": "H01550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01884370145609,
- 38.903141212983364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01551'>Report Problem</a>",
- "NAME": "H01551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98896120106119,
- 38.88916657111018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01552'>Report Problem</a>",
- "NAME": "H01552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99957221375871,
- 38.8833366519562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01553'>Report Problem</a>",
- "NAME": "H01553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0690804055293,
- 38.90682454411589,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01554'>Report Problem</a>",
- "NAME": "H01554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9814253514975,
- 38.934058657717664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01555'>Report Problem</a>",
- "NAME": "H01555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9953382742684,
- 38.94367918676709,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01556'>Report Problem</a>",
- "NAME": "H01556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99359393078423,
- 38.88404347308606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01557'>Report Problem</a>",
- "NAME": "H01557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99143299235081,
- 38.8849150668084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01558'>Report Problem</a>",
- "NAME": "H01558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06915341289559,
- 38.91371385746126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01559'>Report Problem</a>",
- "NAME": "H01559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02720670463127,
- 38.9126397755058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01560'>Report Problem</a>",
- "NAME": "H01560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02056219793224,
- 38.9325948449953,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01561'>Report Problem</a>",
- "NAME": "H01561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08312317562422,
- 38.90975480338903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01562'>Report Problem</a>",
- "NAME": "H01562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08371159178213,
- 38.91055534233563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01563'>Report Problem</a>",
- "NAME": "H01563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9938219439826,
- 38.897464925569054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01564'>Report Problem</a>",
- "NAME": "H01564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97110493763128,
- 38.92763022431628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01565'>Report Problem</a>",
- "NAME": "H01565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851730893323,
- 38.8843887054874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01566'>Report Problem</a>",
- "NAME": "H01566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04148024770123,
- 38.92885314210014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01567'>Report Problem</a>",
- "NAME": "H01567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99852600382933,
- 38.88026352217019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01568'>Report Problem</a>",
- "NAME": "H01568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99363750230991,
- 38.88463700181735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01569'>Report Problem</a>",
- "NAME": "H01569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99043377188606,
- 38.88530823215247,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01570'>Report Problem</a>",
- "NAME": "H01570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00931126655631,
- 38.909692547707586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01571'>Report Problem</a>",
- "NAME": "H01571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06898121262883,
- 38.90876119043231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01572'>Report Problem</a>",
- "NAME": "H01572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00188501310767,
- 38.884216891798005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01573'>Report Problem</a>",
- "NAME": "H01573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9868844925189,
- 38.89738552951181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01574'>Report Problem</a>",
- "NAME": "H01574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99016175015956,
- 38.88247254138519,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01575'>Report Problem</a>",
- "NAME": "H01575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07123390078415,
- 38.91365396335679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01576'>Report Problem</a>",
- "NAME": "H01576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0602461882709,
- 38.94210084378007,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01577'>Report Problem</a>",
- "NAME": "H01577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99625064538374,
- 38.87828802115672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01578'>Report Problem</a>",
- "NAME": "H01578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99624980266789,
- 38.87743778192459,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01579'>Report Problem</a>",
- "NAME": "H01579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99623547593237,
- 38.88140254554251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01580'>Report Problem</a>",
- "NAME": "H01580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99968797875567,
- 38.88268049053276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01581'>Report Problem</a>",
- "NAME": "H01581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00926405122772,
- 38.917052930055696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM FOUNDRY - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01582'>Report Problem</a>",
- "NAME": "H01582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97984169617975,
- 38.88289318695628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01583'>Report Problem</a>",
- "NAME": "H01583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98235973956673,
- 38.88540169063197,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01584'>Report Problem</a>",
- "NAME": "H01584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837626389289,
- 38.89372389492191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01585'>Report Problem</a>",
- "NAME": "H01585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9839675264306,
- 38.897446170234154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01586'>Report Problem</a>",
- "NAME": "H01586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99842278956955,
- 38.88009714486881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01587'>Report Problem</a>",
- "NAME": "H01587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03948068361906,
- 38.91969359906079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01588'>Report Problem</a>",
- "NAME": "H01588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99943936139965,
- 38.84199978425332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01589'>Report Problem</a>",
- "NAME": "H01589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9935939271112,
- 38.8793346087374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 04/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01591'>Report Problem</a>",
- "NAME": "H01591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99962958298268,
- 38.87758511978389,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01593'>Report Problem</a>",
- "NAME": "H01593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00286170999833,
- 38.96042850262832,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01594'>Report Problem</a>",
- "NAME": "H01594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0678138123935,
- 38.913644098299166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01595'>Report Problem</a>",
- "NAME": "H01595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0518080392284,
- 38.909584313657874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01596'>Report Problem</a>",
- "NAME": "H01596"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05718846155007,
- 38.90945253428917,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01597'>Report Problem</a>",
- "NAME": "H01597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05299033329835,
- 38.9095371472348,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01598'>Report Problem</a>",
- "NAME": "H01598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0122494174769,
- 38.91492462588635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01599'>Report Problem</a>",
- "NAME": "H01599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98961525573564,
- 38.865421908806205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01600'>Report Problem</a>",
- "NAME": "H01600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05571815897147,
- 38.90929308533062,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01601'>Report Problem</a>",
- "NAME": "H01601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99011971597042,
- 38.86383704827926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01602'>Report Problem</a>",
- "NAME": "H01602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05470388491976,
- 38.90929950111312,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01603'>Report Problem</a>",
- "NAME": "H01603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98884673718555,
- 38.8637690191821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01604'>Report Problem</a>",
- "NAME": "H01604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99044467093604,
- 38.924499493826936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01605'>Report Problem</a>",
- "NAME": "H01605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97947198591969,
- 38.93023592681651,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01606'>Report Problem</a>",
- "NAME": "H01606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02092132873568,
- 38.93401612939577,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01607'>Report Problem</a>",
- "NAME": "H01607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03731907659451,
- 38.93469192756191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01608'>Report Problem</a>",
- "NAME": "H01608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04378624701876,
- 38.916896366047325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01609'>Report Problem</a>",
- "NAME": "H01609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06280619517617,
- 38.90674540672929,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01610'>Report Problem</a>",
- "NAME": "H01610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0821058647827,
- 38.96092171128651,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01611'>Report Problem</a>",
- "NAME": "H01611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04161027006936,
- 38.92602856602167,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01613'>Report Problem</a>",
- "NAME": "H01613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99963606126447,
- 38.91570978512348,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01614'>Report Problem</a>",
- "NAME": "H01614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01860301895802,
- 38.915703998866434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01615'>Report Problem</a>",
- "NAME": "H01615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99942711977184,
- 38.89188235926396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01616'>Report Problem</a>",
- "NAME": "H01616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01839824472057,
- 38.94194151157028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01617'>Report Problem</a>",
- "NAME": "H01617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0652346086041,
- 38.96406529508177,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01618'>Report Problem</a>",
- "NAME": "H01618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97602629784772,
- 38.92456238445846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01619'>Report Problem</a>",
- "NAME": "H01619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02815428136125,
- 38.908693627187326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01620'>Report Problem</a>",
- "NAME": "H01620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0020932818363,
- 38.91565783390171,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01621'>Report Problem</a>",
- "NAME": "H01621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01609708374991,
- 38.91597748558224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01622'>Report Problem</a>",
- "NAME": "H01622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06628873779425,
- 38.965914897735864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01623'>Report Problem</a>",
- "NAME": "H01623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99754224124091,
- 38.87757968947337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01624'>Report Problem</a>",
- "NAME": "H01624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05815809586969,
- 38.90536133769514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01625'>Report Problem</a>",
- "NAME": "H01625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98559181125505,
- 38.8834748174605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01626'>Report Problem</a>",
- "NAME": "H01626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01343665674496,
- 38.91921949627376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01628'>Report Problem</a>",
- "NAME": "H01628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0228856126337,
- 38.97592565451223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01629'>Report Problem</a>",
- "NAME": "H01629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02406031726679,
- 38.933576812023766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01630'>Report Problem</a>",
- "NAME": "H01630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02349781538757,
- 38.93212029267016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01631'>Report Problem</a>",
- "NAME": "H01631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00344978674075,
- 38.90007968759085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01632'>Report Problem</a>",
- "NAME": "H01632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02277224553906,
- 38.9734544217227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01633'>Report Problem</a>",
- "NAME": "H01633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03227323060923,
- 38.97858822714868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01634'>Report Problem</a>",
- "NAME": "H01634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00350796264058,
- 38.90040712165783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01635'>Report Problem</a>",
- "NAME": "H01635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98818090200267,
- 38.88161270536892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01636'>Report Problem</a>",
- "NAME": "H01636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04464049479556,
- 38.91516828052712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01637'>Report Problem</a>",
- "NAME": "H01637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99257925214359,
- 38.90231029622669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01638'>Report Problem</a>",
- "NAME": "H01638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03866248906964,
- 38.91561490064216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01639'>Report Problem</a>",
- "NAME": "H01639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0147127635705,
- 38.97347072110241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01640'>Report Problem</a>",
- "NAME": "H01640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99030703075263,
- 38.90145175964172,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01641'>Report Problem</a>",
- "NAME": "H01641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98372060626748,
- 38.87984535346194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01642'>Report Problem</a>",
- "NAME": "H01642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9890179385195,
- 38.866823635069444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01643'>Report Problem</a>",
- "NAME": "H01643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00209494120463,
- 38.90266791057591,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01644'>Report Problem</a>",
- "NAME": "H01644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00050923388295,
- 38.90551495478924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01645'>Report Problem</a>",
- "NAME": "H01645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99358700004944,
- 38.86190175083163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01646'>Report Problem</a>",
- "NAME": "H01646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03669851533915,
- 38.91329864410307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01647'>Report Problem</a>",
- "NAME": "H01647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03141139200164,
- 38.93764673802807,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01648'>Report Problem</a>",
- "NAME": "H01648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04181785151341,
- 38.91255484420992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01649'>Report Problem</a>",
- "NAME": "H01649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.040616215472,
- 38.90720560938269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01650'>Report Problem</a>",
- "NAME": "H01650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0092781651967,
- 38.91412868891223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01651'>Report Problem</a>",
- "NAME": "H01651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9964824502806,
- 38.90662949691347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01652'>Report Problem</a>",
- "NAME": "H01652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03238185715058,
- 38.92960817506793,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01653'>Report Problem</a>",
- "NAME": "H01653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9838104851095,
- 38.89606749956819,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01654'>Report Problem</a>",
- "NAME": "H01654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98582869823747,
- 38.908877299695675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01655'>Report Problem</a>",
- "NAME": "H01655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98850646594799,
- 38.86730598621084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01656'>Report Problem</a>",
- "NAME": "H01656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99165354597353,
- 38.87558253505564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01657'>Report Problem</a>",
- "NAME": "H01657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00047229707197,
- 38.930250187145035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01658'>Report Problem</a>",
- "NAME": "H01658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04086712878322,
- 38.92034553244864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01659'>Report Problem</a>",
- "NAME": "H01659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0590875411829,
- 38.93639204093927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01660'>Report Problem</a>",
- "NAME": "H01660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01080171742977,
- 38.874587995820605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01661'>Report Problem</a>",
- "NAME": "H01661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98930821390543,
- 38.893488712372125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01662'>Report Problem</a>",
- "NAME": "H01662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01272994122674,
- 38.97376000089939,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01663'>Report Problem</a>",
- "NAME": "H01663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99515073499892,
- 38.88380247473194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 02/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01664'>Report Problem</a>",
- "NAME": "H01664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98839456341526,
- 38.90119883785697,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01665'>Report Problem</a>",
- "NAME": "H01665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0504940339849,
- 38.91115494400008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01666'>Report Problem</a>",
- "NAME": "H01666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99224758580772,
- 38.86285853465458,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01667'>Report Problem</a>",
- "NAME": "H01667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05590409721444,
- 38.908614911314615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01668'>Report Problem</a>",
- "NAME": "H01668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98085018080076,
- 38.86714016373777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01669'>Report Problem</a>",
- "NAME": "H01669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98544401354457,
- 38.89107440268359,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 04/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01670'>Report Problem</a>",
- "NAME": "H01670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06392701985482,
- 38.96852383870974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01671'>Report Problem</a>",
- "NAME": "H01671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02314908783872,
- 38.91562444483965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01672'>Report Problem</a>",
- "NAME": "H01672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9904199285925,
- 38.89896275958963,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01673'>Report Problem</a>",
- "NAME": "H01673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93532007028486,
- 38.90367575230827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01674'>Report Problem</a>",
- "NAME": "H01674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851865020891,
- 38.8814059749635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01675'>Report Problem</a>",
- "NAME": "H01675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01463410352588,
- 38.91922930665154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01676'>Report Problem</a>",
- "NAME": "H01676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03104693028325,
- 38.959230479260086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01677'>Report Problem</a>",
- "NAME": "H01677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02880711752908,
- 38.90260248137471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01678'>Report Problem</a>",
- "NAME": "H01678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02768141129852,
- 38.93978066482626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01679'>Report Problem</a>",
- "NAME": "H01679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99032460467033,
- 38.88356892955696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01680'>Report Problem</a>",
- "NAME": "H01680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03311777717754,
- 38.91913055527483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01681'>Report Problem</a>",
- "NAME": "H01681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98879754423108,
- 38.9362495686159,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01682'>Report Problem</a>",
- "NAME": "H01682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04463791145075,
- 38.918538893049295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01683'>Report Problem</a>",
- "NAME": "H01683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02338545407048,
- 38.94424293111497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01684'>Report Problem</a>",
- "NAME": "H01684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04027301163535,
- 38.91821549441331,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01685'>Report Problem</a>",
- "NAME": "H01685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05158199029682,
- 38.916938370608754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01686'>Report Problem</a>",
- "NAME": "H01686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0242392252846,
- 38.95742266262686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01687'>Report Problem</a>",
- "NAME": "H01687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02758828649648,
- 38.954133228144876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01688'>Report Problem</a>",
- "NAME": "H01688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00217981715464,
- 38.89896795153512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01689'>Report Problem</a>",
- "NAME": "H01689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98356323265779,
- 38.89080491992413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 04/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01690'>Report Problem</a>",
- "NAME": "H01690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98591239779688,
- 38.891626430115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01691'>Report Problem</a>",
- "NAME": "H01691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97641848751596,
- 38.932187955212115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01692'>Report Problem</a>",
- "NAME": "H01692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98555804638181,
- 38.88880316235764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01741'>Report Problem</a>",
- "NAME": "H01741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06145874622113,
- 38.90919606953275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01448'>Report Problem</a>",
- "NAME": "H01448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0252835385952,
- 38.90186447681956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01449'>Report Problem</a>",
- "NAME": "H01449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9409504710135,
- 38.902987216402806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01450'>Report Problem</a>",
- "NAME": "H01450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05588370239457,
- 38.907792143714126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01451'>Report Problem</a>",
- "NAME": "H01451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196807735378,
- 38.844064648949136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01452'>Report Problem</a>",
- "NAME": "H01452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06300048113162,
- 38.95801187242621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01453'>Report Problem</a>",
- "NAME": "H01453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93541109231491,
- 38.90916086104742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01454'>Report Problem</a>",
- "NAME": "H01454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9330719310103,
- 38.91097668076586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01455'>Report Problem</a>",
- "NAME": "H01455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0465688244757,
- 38.908461052730786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01456'>Report Problem</a>",
- "NAME": "H01456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03215344820053,
- 38.91922815957348,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01457'>Report Problem</a>",
- "NAME": "H01457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93760682389885,
- 38.90378677173962,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01458'>Report Problem</a>",
- "NAME": "H01458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.990191068769,
- 38.87770765500455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01459'>Report Problem</a>",
- "NAME": "H01459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93861266755245,
- 38.91045656364813,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01460'>Report Problem</a>",
- "NAME": "H01460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98559254732817,
- 38.882683439895004,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01461'>Report Problem</a>",
- "NAME": "H01461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99030880157443,
- 38.90233385795482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01462'>Report Problem</a>",
- "NAME": "H01462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0098343368453,
- 38.87247878238873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01463'>Report Problem</a>",
- "NAME": "H01463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01744729481824,
- 38.91594407805688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01464'>Report Problem</a>",
- "NAME": "H01464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01775579797457,
- 38.90259492762752,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01465'>Report Problem</a>",
- "NAME": "H01465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06156712025975,
- 38.94980910219059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01466'>Report Problem</a>",
- "NAME": "H01466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0618047284287,
- 38.947928408616704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01467'>Report Problem</a>",
- "NAME": "H01467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487732893802,
- 38.89001247044877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01468'>Report Problem</a>",
- "NAME": "H01468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99730583940168,
- 38.88363997902216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01469'>Report Problem</a>",
- "NAME": "H01469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06630842048075,
- 38.93260052726264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01470'>Report Problem</a>",
- "NAME": "H01470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02025374635168,
- 38.93653103105635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01471'>Report Problem</a>",
- "NAME": "H01471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03209738207916,
- 38.910310085602454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01472'>Report Problem</a>",
- "NAME": "H01472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99142988978875,
- 38.8877155828476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01473'>Report Problem</a>",
- "NAME": "H01473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03305131392158,
- 38.90853778835916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01474'>Report Problem</a>",
- "NAME": "H01474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9973608676341,
- 38.889729861158415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01475'>Report Problem</a>",
- "NAME": "H01475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05323701371535,
- 38.90711424031508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01477'>Report Problem</a>",
- "NAME": "H01477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9819868861212,
- 38.88637716933428,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01478'>Report Problem</a>",
- "NAME": "H01478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03436773063687,
- 38.90730305792679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01479'>Report Problem</a>",
- "NAME": "H01479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03216384956264,
- 38.90728829916347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01480'>Report Problem</a>",
- "NAME": "H01480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0173588432685,
- 38.91680087367197,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01481'>Report Problem</a>",
- "NAME": "H01481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00367207498614,
- 38.885997707352466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01483'>Report Problem</a>",
- "NAME": "H01483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00211182581772,
- 38.886149960591936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01484'>Report Problem</a>",
- "NAME": "H01484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01733688731552,
- 38.911910639121416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01485'>Report Problem</a>",
- "NAME": "H01485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99391849974833,
- 38.89896348055616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01486'>Report Problem</a>",
- "NAME": "H01486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0188553812113,
- 38.91356942449031,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01487'>Report Problem</a>",
- "NAME": "H01487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99831198273517,
- 38.88277408488938,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01488'>Report Problem</a>",
- "NAME": "H01488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0007499462206,
- 38.88545250336951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01489'>Report Problem</a>",
- "NAME": "H01489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99601579046934,
- 38.88972773308024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01490'>Report Problem</a>",
- "NAME": "H01490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99944503019721,
- 38.887738750187445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01491'>Report Problem</a>",
- "NAME": "H01491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07104221290884,
- 38.97120115281191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01492'>Report Problem</a>",
- "NAME": "H01492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851547849545,
- 38.88539358152677,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01493'>Report Problem</a>",
- "NAME": "H01493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06603503188138,
- 38.90672324051473,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01494'>Report Problem</a>",
- "NAME": "H01494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05245682870127,
- 38.90346932779068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01495'>Report Problem</a>",
- "NAME": "H01495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03545194335523,
- 38.92472739919133,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01496'>Report Problem</a>",
- "NAME": "H01496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99632769954046,
- 38.884332129561514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01497'>Report Problem</a>",
- "NAME": "H01497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06257831798364,
- 38.91180381409284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01498'>Report Problem</a>",
- "NAME": "H01498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99514376059052,
- 38.88873445459372,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01499'>Report Problem</a>",
- "NAME": "H01499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9950419148437,
- 38.88805257022504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01500'>Report Problem</a>",
- "NAME": "H01500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04565143323003,
- 38.920735443366056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01501'>Report Problem</a>",
- "NAME": "H01501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00343926714955,
- 38.89469758757336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01502'>Report Problem</a>",
- "NAME": "H01502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99391865698045,
- 38.888735045837784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01503'>Report Problem</a>",
- "NAME": "H01503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05335318705667,
- 38.90451426023783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01504'>Report Problem</a>",
- "NAME": "H01504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99393597916979,
- 38.88753745502592,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01505'>Report Problem</a>",
- "NAME": "H01505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270997605161,
- 38.888646109020634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01506'>Report Problem</a>",
- "NAME": "H01506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06870236760626,
- 38.93803800620132,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01507'>Report Problem</a>",
- "NAME": "H01507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270820337266,
- 38.88772058821946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01508'>Report Problem</a>",
- "NAME": "H01508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00073257337448,
- 38.89297914550857,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01509'>Report Problem</a>",
- "NAME": "H01509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0355609222617,
- 38.90245711772961,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01510'>Report Problem</a>",
- "NAME": "H01510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98289219661815,
- 38.93299818097305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01511'>Report Problem</a>",
- "NAME": "H01511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9685425609785,
- 38.897471573424184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01512'>Report Problem</a>",
- "NAME": "H01512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9996748344389,
- 38.88132912433841,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01513'>Report Problem</a>",
- "NAME": "H01513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02719927989881,
- 38.904206272588084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01514'>Report Problem</a>",
- "NAME": "H01514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0189908436443,
- 38.908689170103735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01515'>Report Problem</a>",
- "NAME": "H01515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06407254292458,
- 38.912052391189455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01516'>Report Problem</a>",
- "NAME": "H01516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02505430258562,
- 38.94504972759686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01517'>Report Problem</a>",
- "NAME": "H01517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06039152533941,
- 38.9093334808122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01850'>Report Problem</a>",
- "NAME": "H01850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97785622069829,
- 38.93021024643721,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01851'>Report Problem</a>",
- "NAME": "H01851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0332139179715,
- 38.91817451912744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01852'>Report Problem</a>",
- "NAME": "H01852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05717167514447,
- 38.90613091251988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01853'>Report Problem</a>",
- "NAME": "H01853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98089132422619,
- 38.924568046609465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01854'>Report Problem</a>",
- "NAME": "H01854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0622164792347,
- 38.907678698923924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01855'>Report Problem</a>",
- "NAME": "H01855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0602993754585,
- 38.90769162211388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01856'>Report Problem</a>",
- "NAME": "H01856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01232262481422,
- 38.91265285997377,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01857'>Report Problem</a>",
- "NAME": "H01857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02535176137408,
- 38.9530433016341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01858'>Report Problem</a>",
- "NAME": "H01858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0058108588899,
- 38.88993176824665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01859'>Report Problem</a>",
- "NAME": "H01859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99145585127567,
- 38.9003830708077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01860'>Report Problem</a>",
- "NAME": "H01860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98088103413968,
- 38.92350539658201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01861'>Report Problem</a>",
- "NAME": "H01861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0269717159178,
- 38.97150832641371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01862'>Report Problem</a>",
- "NAME": "H01862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02580375634906,
- 38.97151591365617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01863'>Report Problem</a>",
- "NAME": "H01863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98940855269164,
- 38.9397200983521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01864'>Report Problem</a>",
- "NAME": "H01864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06477350896394,
- 38.90984603268693,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01865'>Report Problem</a>",
- "NAME": "H01865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06124231051363,
- 38.91292842955008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01866'>Report Problem</a>",
- "NAME": "H01866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04159549952469,
- 38.91341931866978,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01867'>Report Problem</a>",
- "NAME": "H01867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98379593497012,
- 38.88871910825257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01868'>Report Problem</a>",
- "NAME": "H01868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00513059425955,
- 38.88189960337566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01869'>Report Problem</a>",
- "NAME": "H01869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00358762274463,
- 38.88206614496601,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01870'>Report Problem</a>",
- "NAME": "H01870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0318245077414,
- 38.89664690243558,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01871'>Report Problem</a>",
- "NAME": "H01871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05824451324324,
- 38.90945039111792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01872'>Report Problem</a>",
- "NAME": "H01872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99145166591357,
- 38.9023121469502,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01873'>Report Problem</a>",
- "NAME": "H01873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0028388564693,
- 38.87360474365964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01874'>Report Problem</a>",
- "NAME": "H01874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98605448122952,
- 38.92681269430606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01875'>Report Problem</a>",
- "NAME": "H01875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270873681986,
- 38.88994461223659,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01876'>Report Problem</a>",
- "NAME": "H01876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04145694480034,
- 38.92332740407147,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01877'>Report Problem</a>",
- "NAME": "H01877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03113418085866,
- 38.97487143513596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01878'>Report Problem</a>",
- "NAME": "H01878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487569648804,
- 38.88032330683026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01879'>Report Problem</a>",
- "NAME": "H01879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.029472874992,
- 38.89725265625571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01881'>Report Problem</a>",
- "NAME": "H01881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97004062530067,
- 38.9331694445616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01882'>Report Problem</a>",
- "NAME": "H01882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0297324801001,
- 38.89667228068078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01883'>Report Problem</a>",
- "NAME": "H01883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05002459084795,
- 38.90171992692369,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01884'>Report Problem</a>",
- "NAME": "H01884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03504160592487,
- 38.89825747880135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01885'>Report Problem</a>",
- "NAME": "H01885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06879026425989,
- 38.94794144234897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01886'>Report Problem</a>",
- "NAME": "H01886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.072346848523,
- 38.94799181370046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01887'>Report Problem</a>",
- "NAME": "H01887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03892445470994,
- 38.92981087502163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01888'>Report Problem</a>",
- "NAME": "H01888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06613676820224,
- 38.90769519284809,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01889'>Report Problem</a>",
- "NAME": "H01889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00617798867312,
- 38.95672016053897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01890'>Report Problem</a>",
- "NAME": "H01890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04484937503277,
- 38.89844994893373,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01891'>Report Problem</a>",
- "NAME": "H01891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06396843394204,
- 38.965952295138834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01892'>Report Problem</a>",
- "NAME": "H01892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99148225497008,
- 38.924293157451906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01893'>Report Problem</a>",
- "NAME": "H01893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99982505781792,
- 38.92191004630571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01894'>Report Problem</a>",
- "NAME": "H01894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99868239497337,
- 38.92225162557698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01895'>Report Problem</a>",
- "NAME": "H01895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99777707152788,
- 38.92179213337697,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01896'>Report Problem</a>",
- "NAME": "H01896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9992888319281,
- 38.92193248400389,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01897'>Report Problem</a>",
- "NAME": "H01897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99879730365795,
- 38.92190006803476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01898'>Report Problem</a>",
- "NAME": "H01898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99911010773754,
- 38.921433827069045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01899'>Report Problem</a>",
- "NAME": "H01899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99873029528702,
- 38.92175795202872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01900'>Report Problem</a>",
- "NAME": "H01900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99960481882547,
- 38.92089776246244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01901'>Report Problem</a>",
- "NAME": "H01901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03435818337549,
- 38.947272183671885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01902'>Report Problem</a>",
- "NAME": "H01902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837569630015,
- 38.89720733984544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01903'>Report Problem</a>",
- "NAME": "H01903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04861245289136,
- 38.90969894882585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01904'>Report Problem</a>",
- "NAME": "H01904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02679224709911,
- 38.97368104572896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01905'>Report Problem</a>",
- "NAME": "H01905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04064247054069,
- 38.8944022641965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01906'>Report Problem</a>",
- "NAME": "H01906"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01020448988793,
- 38.90462482756334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01907'>Report Problem</a>",
- "NAME": "H01907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04338169655762,
- 38.89327761107908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01908'>Report Problem</a>",
- "NAME": "H01908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0742103828715,
- 38.96211350255284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01909'>Report Problem</a>",
- "NAME": "H01909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0260827944744,
- 38.943631436496986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01910'>Report Problem</a>",
- "NAME": "H01910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99132732892684,
- 38.90137541294538,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01911'>Report Problem</a>",
- "NAME": "H01911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02458611557088,
- 38.97238652469149,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01912'>Report Problem</a>",
- "NAME": "H01912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01797587275935,
- 38.86720615679607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01913'>Report Problem</a>",
- "NAME": "H01913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03134659772964,
- 38.93873443502276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01914'>Report Problem</a>",
- "NAME": "H01914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94761786452838,
- 38.89678359993288,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01916'>Report Problem</a>",
- "NAME": "H01916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02974706121714,
- 38.9063171279233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01917'>Report Problem</a>",
- "NAME": "H01917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9868983556459,
- 38.9025585089257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01918'>Report Problem</a>",
- "NAME": "H01918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04354314655554,
- 38.89843568741387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01919'>Report Problem</a>",
- "NAME": "H01919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99264416900115,
- 38.934512551328595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01920'>Report Problem</a>",
- "NAME": "H01920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06627516633826,
- 38.96853111631547,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01921'>Report Problem</a>",
- "NAME": "H01921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04659164435708,
- 38.898457707894785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01922'>Report Problem</a>",
- "NAME": "H01922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93400654713926,
- 38.89749714758739,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01923'>Report Problem</a>",
- "NAME": "H01923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97689820662369,
- 38.87277938652282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01924'>Report Problem</a>",
- "NAME": "H01924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93400044348896,
- 38.896306868765635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01925'>Report Problem</a>",
- "NAME": "H01925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97776244312972,
- 38.873377775189276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01926'>Report Problem</a>",
- "NAME": "H01926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02712039889688,
- 38.935437194072975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01927'>Report Problem</a>",
- "NAME": "H01927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02806366613426,
- 38.976607809693945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01928'>Report Problem</a>",
- "NAME": "H01928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01798537138136,
- 38.86621513105002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01929'>Report Problem</a>",
- "NAME": "H01929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01797769847835,
- 38.86800404935802,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01930'>Report Problem</a>",
- "NAME": "H01930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01798120182136,
- 38.8689658405201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01931'>Report Problem</a>",
- "NAME": "H01931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01705934825965,
- 38.8714278229092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01933'>Report Problem</a>",
- "NAME": "H01933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01610090793427,
- 38.87152401559676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01934'>Report Problem</a>",
- "NAME": "H01934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06250962803557,
- 38.970866729736045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01936'>Report Problem</a>",
- "NAME": "H01936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01550779831753,
- 38.941036318439814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 05/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01937'>Report Problem</a>",
- "NAME": "H01937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03872020073588,
- 38.920203184302636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01938'>Report Problem</a>",
- "NAME": "H01938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09692567097349,
- 38.92029652794114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01939'>Report Problem</a>",
- "NAME": "H01939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04167670249105,
- 38.89200103397282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01940'>Report Problem</a>",
- "NAME": "H01940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04481085480157,
- 38.89280739314633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01941'>Report Problem</a>",
- "NAME": "H01941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02379837562194,
- 38.91415217239058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01942'>Report Problem</a>",
- "NAME": "H01942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03804254767822,
- 38.89840065586897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01943'>Report Problem</a>",
- "NAME": "H01943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196548993681,
- 38.8981980287612,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01944'>Report Problem</a>",
- "NAME": "H01944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02988570926301,
- 38.937625680312635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01945'>Report Problem</a>",
- "NAME": "H01945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04484579513982,
- 38.89200357173687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01946'>Report Problem</a>",
- "NAME": "H01946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06171684803618,
- 38.96983451822597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01947'>Report Problem</a>",
- "NAME": "H01947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03446375381101,
- 38.94816742238717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01948'>Report Problem</a>",
- "NAME": "H01948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02415678949772,
- 38.90223849892884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01949'>Report Problem</a>",
- "NAME": "H01949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07724705645342,
- 38.959051241103374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01950'>Report Problem</a>",
- "NAME": "H01950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03558397993368,
- 38.9593324391487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01951'>Report Problem</a>",
- "NAME": "H01951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99633103943574,
- 38.890881716115125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01952'>Report Problem</a>",
- "NAME": "H01952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06820555267512,
- 38.95237791076059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, Metropolitan<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01953'>Report Problem</a>",
- "NAME": "H01953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02989213617779,
- 38.93765873010822,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01955'>Report Problem</a>",
- "NAME": "H01955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01146173191339,
- 38.95663922808497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01956'>Report Problem</a>",
- "NAME": "H01956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92976861602617,
- 38.90857786446685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01742'>Report Problem</a>",
- "NAME": "H01742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97960349688758,
- 38.865849677893586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01743'>Report Problem</a>",
- "NAME": "H01743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98214038896349,
- 38.86634844781735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01744'>Report Problem</a>",
- "NAME": "H01744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0382865914365,
- 38.91413987353095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01745'>Report Problem</a>",
- "NAME": "H01745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00919102208019,
- 38.881592853048325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01746'>Report Problem</a>",
- "NAME": "H01746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98990188132304,
- 38.86484672875232,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01747'>Report Problem</a>",
- "NAME": "H01747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0593790325117,
- 38.91132735701251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01748'>Report Problem</a>",
- "NAME": "H01748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97629651682679,
- 38.93126630874895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01693'>Report Problem</a>",
- "NAME": "H01693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99126011897111,
- 38.923481410417075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01694'>Report Problem</a>",
- "NAME": "H01694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97945729296129,
- 38.92899429989975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01695'>Report Problem</a>",
- "NAME": "H01695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99931490267937,
- 38.89098449420409,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01696'>Report Problem</a>",
- "NAME": "H01696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05905675494256,
- 38.90688313596674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01697'>Report Problem</a>",
- "NAME": "H01697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9853380767704,
- 38.89738515648231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01698'>Report Problem</a>",
- "NAME": "H01698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0591719773263,
- 38.90921613151359,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01699'>Report Problem</a>",
- "NAME": "H01699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02815495071376,
- 38.91033090245102,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01700'>Report Problem</a>",
- "NAME": "H01700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.068710738805,
- 38.93898066549607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01701'>Report Problem</a>",
- "NAME": "H01701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93143174836734,
- 38.90995544470618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01702'>Report Problem</a>",
- "NAME": "H01702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01933902264206,
- 38.93674221436258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01703'>Report Problem</a>",
- "NAME": "H01703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04504845363036,
- 38.91117769143819,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01704'>Report Problem</a>",
- "NAME": "H01704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93234362551028,
- 38.909254271228384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01705'>Report Problem</a>",
- "NAME": "H01705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01482342007958,
- 38.906504150169596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01706'>Report Problem</a>",
- "NAME": "H01706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97567735794388,
- 38.91360690695947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01707'>Report Problem</a>",
- "NAME": "H01707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98128214317224,
- 38.90486482825957,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01708'>Report Problem</a>",
- "NAME": "H01708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02614179807715,
- 38.96499315949469,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01709'>Report Problem</a>",
- "NAME": "H01709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01329290025585,
- 38.916334541161135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01710'>Report Problem</a>",
- "NAME": "H01710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00882098852348,
- 38.91632729822233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01711'>Report Problem</a>",
- "NAME": "H01711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03193287205347,
- 38.92279570573727,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01712'>Report Problem</a>",
- "NAME": "H01712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02081041072563,
- 38.91414449111245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01713'>Report Problem</a>",
- "NAME": "H01713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0220454239246,
- 38.92240978462876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01714'>Report Problem</a>",
- "NAME": "H01714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01898916065501,
- 38.9112455127532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01715'>Report Problem</a>",
- "NAME": "H01715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02984784911241,
- 38.92381123336725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01716'>Report Problem</a>",
- "NAME": "H01716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01623699284768,
- 38.89817688230593,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01717'>Report Problem</a>",
- "NAME": "H01717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99360088025216,
- 38.890988428750404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01718'>Report Problem</a>",
- "NAME": "H01718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98749322896427,
- 38.86299081617016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01719'>Report Problem</a>",
- "NAME": "H01719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99381692741477,
- 38.89003968748024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01720'>Report Problem</a>",
- "NAME": "H01720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02315645056777,
- 38.9207572090482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01721'>Report Problem</a>",
- "NAME": "H01721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04157670360637,
- 38.897237390722054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01722'>Report Problem</a>",
- "NAME": "H01722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98752701892724,
- 38.88622558765701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01723'>Report Problem</a>",
- "NAME": "H01723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98867660373392,
- 38.86199177735186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01724'>Report Problem</a>",
- "NAME": "H01724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02197854895691,
- 38.918923683630304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01725'>Report Problem</a>",
- "NAME": "H01725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03178121451911,
- 38.90969863167442,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01726'>Report Problem</a>",
- "NAME": "H01726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99033929943232,
- 38.86254535888564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01727'>Report Problem</a>",
- "NAME": "H01727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02187457445666,
- 38.94423363878941,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01728'>Report Problem</a>",
- "NAME": "H01728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03523981175577,
- 38.93458136547237,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01729'>Report Problem</a>",
- "NAME": "H01729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02956965114083,
- 38.9286806049776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01730'>Report Problem</a>",
- "NAME": "H01730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02849317835151,
- 38.92868458380273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01731'>Report Problem</a>",
- "NAME": "H01731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064273768592,
- 38.90006509817616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01732'>Report Problem</a>",
- "NAME": "H01732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98737467269434,
- 38.866336492279935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01733'>Report Problem</a>",
- "NAME": "H01733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0310766098877,
- 38.92867694396942,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01734'>Report Problem</a>",
- "NAME": "H01734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98759348209485,
- 38.86551920954452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01735'>Report Problem</a>",
- "NAME": "H01735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98546542020551,
- 38.866002292385495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01736'>Report Problem</a>",
- "NAME": "H01736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02987316343312,
- 38.924805799357166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/21/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01737'>Report Problem</a>",
- "NAME": "H01737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0298257070451,
- 38.97873317065002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01738'>Report Problem</a>",
- "NAME": "H01738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02985042211048,
- 38.925798008254326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01739'>Report Problem</a>",
- "NAME": "H01739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98327833153981,
- 38.866343508550926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01740'>Report Problem</a>",
- "NAME": "H01740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99102237985707,
- 38.86445555784137,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01750'>Report Problem</a>",
- "NAME": "H01750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97235675444279,
- 38.92744092013259,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01751'>Report Problem</a>",
- "NAME": "H01751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99030866818313,
- 38.88031989124227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 04/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01752'>Report Problem</a>",
- "NAME": "H01752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01435948004561,
- 38.94119315533904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01753'>Report Problem</a>",
- "NAME": "H01753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00334741892169,
- 38.914139269820616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01754'>Report Problem</a>",
- "NAME": "H01754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05581931667132,
- 38.9335525280332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01755'>Report Problem</a>",
- "NAME": "H01755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05460063702039,
- 38.900760433534494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01756'>Report Problem</a>",
- "NAME": "H01756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99271094748451,
- 38.88139402798187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01757'>Report Problem</a>",
- "NAME": "H01757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01243189517508,
- 38.94340228048384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01758'>Report Problem</a>",
- "NAME": "H01758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02208569774297,
- 38.93225498997437,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01759'>Report Problem</a>",
- "NAME": "H01759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99042888376694,
- 38.8860902583415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01760'>Report Problem</a>",
- "NAME": "H01760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02415949102253,
- 38.90286254313056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01761'>Report Problem</a>",
- "NAME": "H01761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98579318734639,
- 38.884158623541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01762'>Report Problem</a>",
- "NAME": "H01762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02415720017746,
- 38.9342250384963,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01763'>Report Problem</a>",
- "NAME": "H01763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98449555039457,
- 38.88066005157696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01764'>Report Problem</a>",
- "NAME": "H01764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03590754984333,
- 38.95301969099706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01765'>Report Problem</a>",
- "NAME": "H01765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08079387968955,
- 38.95954337955969,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01766'>Report Problem</a>",
- "NAME": "H01766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.988235093205,
- 38.8842013695676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01767'>Report Problem</a>",
- "NAME": "H01767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02327670558091,
- 38.93066181097579,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01768'>Report Problem</a>",
- "NAME": "H01768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01478458201592,
- 38.971768299917585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01769'>Report Problem</a>",
- "NAME": "H01769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02372150034742,
- 38.92402762104677,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01770'>Report Problem</a>",
- "NAME": "H01770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01810874646442,
- 38.963901213169635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01771'>Report Problem</a>",
- "NAME": "H01771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02940662632399,
- 38.92046683432597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01772'>Report Problem</a>",
- "NAME": "H01772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0251099712243,
- 38.931977959509766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01773'>Report Problem</a>",
- "NAME": "H01773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.001971040758,
- 38.88213993509908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01774'>Report Problem</a>",
- "NAME": "H01774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837083938878,
- 38.89624021944037,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01775'>Report Problem</a>",
- "NAME": "H01775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02309552131985,
- 38.91264953366015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01776'>Report Problem</a>",
- "NAME": "H01776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04146652309007,
- 38.91786544568448,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01777'>Report Problem</a>",
- "NAME": "H01777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05748839146487,
- 38.905041332156635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01778'>Report Problem</a>",
- "NAME": "H01778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05696950857094,
- 38.905045405866815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01779'>Report Problem</a>",
- "NAME": "H01779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03419582418493,
- 38.92352850494571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01780'>Report Problem</a>",
- "NAME": "H01780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03329955797464,
- 38.91691137369946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01781'>Report Problem</a>",
- "NAME": "H01781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04484088422257,
- 38.9231799585808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01782'>Report Problem</a>",
- "NAME": "H01782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06625495525927,
- 38.966824452628245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01783'>Report Problem</a>",
- "NAME": "H01783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02839211462425,
- 38.933633619282936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01784'>Report Problem</a>",
- "NAME": "H01784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03639679107833,
- 38.92098413310898,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01785'>Report Problem</a>",
- "NAME": "H01785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04012784887098,
- 38.91633496516215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01786'>Report Problem</a>",
- "NAME": "H01786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04187520368419,
- 38.90650767554856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01787'>Report Problem</a>",
- "NAME": "H01787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07505225108544,
- 38.923931285599444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01788'>Report Problem</a>",
- "NAME": "H01788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07045504315604,
- 38.90873804235577,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01789'>Report Problem</a>",
- "NAME": "H01789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02818228393636,
- 38.903200653366774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01790'>Report Problem</a>",
- "NAME": "H01790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00641922111252,
- 38.95771883045707,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01791'>Report Problem</a>",
- "NAME": "H01791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04511345157735,
- 38.910307982999875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01792'>Report Problem</a>",
- "NAME": "H01792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03019786070082,
- 38.97512259590143,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01793'>Report Problem</a>",
- "NAME": "H01793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99776044340963,
- 38.84429362970075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01794'>Report Problem</a>",
- "NAME": "H01794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06399174013431,
- 38.966823578102954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01795'>Report Problem</a>",
- "NAME": "H01795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02410257265424,
- 38.95622049318288,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01796'>Report Problem</a>",
- "NAME": "H01796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06115852518168,
- 38.93590083404151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01797'>Report Problem</a>",
- "NAME": "H01797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94444218399751,
- 38.89911008306193,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01972'>Report Problem</a>",
- "NAME": "H01972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01086682128313,
- 38.89489738875106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01973'>Report Problem</a>",
- "NAME": "H01973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03929272849666,
- 38.897855191099325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01974'>Report Problem</a>",
- "NAME": "H01974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03806984520564,
- 38.89710340669015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01975'>Report Problem</a>",
- "NAME": "H01975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03953962276367,
- 38.89555083118579,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01976'>Report Problem</a>",
- "NAME": "H01976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04032859305796,
- 38.89537942953278,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01977'>Report Problem</a>",
- "NAME": "H01977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01624339659615,
- 38.89744278998546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01978'>Report Problem</a>",
- "NAME": "H01978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01737935850149,
- 38.89726565722163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01979'>Report Problem</a>",
- "NAME": "H01979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01033217717854,
- 38.95527463542399,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01980'>Report Problem</a>",
- "NAME": "H01980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0241099502249,
- 38.968685535140374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01981'>Report Problem</a>",
- "NAME": "H01981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07406856195156,
- 38.93330919886083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01982'>Report Problem</a>",
- "NAME": "H01982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0171408395714,
- 38.941123497818865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01983'>Report Problem</a>",
- "NAME": "H01983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01395599170118,
- 38.943318772806364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01984'>Report Problem</a>",
- "NAME": "H01984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03800659703973,
- 38.921929710850165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01985'>Report Problem</a>",
- "NAME": "H01985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98208976511503,
- 38.881793602285335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01986'>Report Problem</a>",
- "NAME": "H01986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01894711050141,
- 38.93997732834983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01987'>Report Problem</a>",
- "NAME": "H01987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04002101013288,
- 38.916920957774074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01798'>Report Problem</a>",
- "NAME": "H01798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06720276007067,
- 38.95064992078573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01799'>Report Problem</a>",
- "NAME": "H01799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04103208040618,
- 38.912558464883155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01800'>Report Problem</a>",
- "NAME": "H01800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03181558436431,
- 38.91396265687283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/21/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01801'>Report Problem</a>",
- "NAME": "H01801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.065320343352,
- 38.90601839653121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01803'>Report Problem</a>",
- "NAME": "H01803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07149826210423,
- 38.91879901133891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01804'>Report Problem</a>",
- "NAME": "H01804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07217549581509,
- 38.91982867047362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01805'>Report Problem</a>",
- "NAME": "H01805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00478879383267,
- 38.886087480461576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01806'>Report Problem</a>",
- "NAME": "H01806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0708132847522,
- 38.931864743574515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01807'>Report Problem</a>",
- "NAME": "H01807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03131578962383,
- 38.90572644589639,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01808'>Report Problem</a>",
- "NAME": "H01808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03097885825605,
- 38.931996612778406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01809'>Report Problem</a>",
- "NAME": "H01809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03309565150168,
- 38.91414229688326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01810'>Report Problem</a>",
- "NAME": "H01810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03127004213245,
- 38.92971084826277,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01811'>Report Problem</a>",
- "NAME": "H01811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00670710879972,
- 38.91189781493135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01812'>Report Problem</a>",
- "NAME": "H01812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07905049903106,
- 38.96492906715615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01813'>Report Problem</a>",
- "NAME": "H01813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01196553285081,
- 38.92027865697532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01814'>Report Problem</a>",
- "NAME": "H01814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02279259670462,
- 38.92736326116371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01815'>Report Problem</a>",
- "NAME": "H01815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99967679539412,
- 38.919125176433404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01816'>Report Problem</a>",
- "NAME": "H01816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99958477011847,
- 38.878501066031305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01817'>Report Problem</a>",
- "NAME": "H01817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06124336428864,
- 38.905065052907304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01818'>Report Problem</a>",
- "NAME": "H01818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02316957659161,
- 38.93464453885302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01819'>Report Problem</a>",
- "NAME": "H01819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270839765217,
- 38.89213538543092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01820'>Report Problem</a>",
- "NAME": "H01820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0339084088944,
- 38.92269694049385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01821'>Report Problem</a>",
- "NAME": "H01821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0261409505151,
- 38.91923833428273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01822'>Report Problem</a>",
- "NAME": "H01822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06923906129792,
- 38.954298181932046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01823'>Report Problem</a>",
- "NAME": "H01823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99858876829653,
- 38.90244276602723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01824'>Report Problem</a>",
- "NAME": "H01824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98350380920732,
- 38.88972234819578,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01825'>Report Problem</a>",
- "NAME": "H01825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05820771527544,
- 38.907775172336834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01826'>Report Problem</a>",
- "NAME": "H01826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02793926322623,
- 38.957340681573775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01827'>Report Problem</a>",
- "NAME": "H01827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0258570564964,
- 38.95525867525521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01828'>Report Problem</a>",
- "NAME": "H01828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99018014684331,
- 38.89049600077135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01829'>Report Problem</a>",
- "NAME": "H01829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.065264301912,
- 38.95336004996607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01830'>Report Problem</a>",
- "NAME": "H01830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0670459301452,
- 38.953343781818,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01831'>Report Problem</a>",
- "NAME": "H01831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06861667535924,
- 38.95335077074285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01832'>Report Problem</a>",
- "NAME": "H01832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02378484169348,
- 38.90970057814971,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01833'>Report Problem</a>",
- "NAME": "H01833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99915785875653,
- 38.8434462057367,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01834'>Report Problem</a>",
- "NAME": "H01834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01743864110124,
- 38.89988754984979,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01835'>Report Problem</a>",
- "NAME": "H01835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06033812666197,
- 38.93823540071663,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01836'>Report Problem</a>",
- "NAME": "H01836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98844561612165,
- 38.89896154504042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01837'>Report Problem</a>",
- "NAME": "H01837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03151968812,
- 38.935978678414585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01838'>Report Problem</a>",
- "NAME": "H01838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03258178715464,
- 38.936183163829355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01839'>Report Problem</a>",
- "NAME": "H01839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02574074476824,
- 38.97370788321005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01840'>Report Problem</a>",
- "NAME": "H01840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01222780408037,
- 38.90648857794735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01841'>Report Problem</a>",
- "NAME": "H01841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01498364604944,
- 38.90729186466856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01842'>Report Problem</a>",
- "NAME": "H01842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04160393396809,
- 38.91028632308658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01843'>Report Problem</a>",
- "NAME": "H01843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851452205687,
- 38.90033090913208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01844'>Report Problem</a>",
- "NAME": "H01844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03829260606062,
- 38.91340171943609,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01845'>Report Problem</a>",
- "NAME": "H01845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99852832272505,
- 38.90361785996193,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01846'>Report Problem</a>",
- "NAME": "H01846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99827666184842,
- 38.9050159706863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01847'>Report Problem</a>",
- "NAME": "H01847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99125600076194,
- 38.92198715484397,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01848'>Report Problem</a>",
- "NAME": "H01848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99031378513881,
- 38.92166728509103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01849'>Report Problem</a>",
- "NAME": "H01849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03631031632304,
- 38.91636513053023,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02201'>Report Problem</a>",
- "NAME": "H02201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03631506896545,
- 38.91478377912791,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02202'>Report Problem</a>",
- "NAME": "H02202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05024781612903,
- 38.896187435987926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02203'>Report Problem</a>",
- "NAME": "H02203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05029103184319,
- 38.89837693634458,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02204'>Report Problem</a>",
- "NAME": "H02204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05274064035815,
- 38.916344339398904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02205'>Report Problem</a>",
- "NAME": "H02205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04896351569671,
- 38.89741147045287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02206'>Report Problem</a>",
- "NAME": "H02206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01710996095403,
- 38.94304666379311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02207'>Report Problem</a>",
- "NAME": "H02207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05090695816087,
- 38.902900694397125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02208'>Report Problem</a>",
- "NAME": "H02208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.031307803453,
- 38.9551947712948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02209'>Report Problem</a>",
- "NAME": "H02209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02961568808855,
- 38.95502686569453,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02210'>Report Problem</a>",
- "NAME": "H02210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02711253603198,
- 38.91930960298251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02211'>Report Problem</a>",
- "NAME": "H02211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03640918755977,
- 38.92035176283157,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02021'>Report Problem</a>",
- "NAME": "H02021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00762120200532,
- 38.92136660505803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02022'>Report Problem</a>",
- "NAME": "H02022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93278514187459,
- 38.90071614801195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02023'>Report Problem</a>",
- "NAME": "H02023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0639088091822,
- 38.967724168792934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02024'>Report Problem</a>",
- "NAME": "H02024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9865231920158,
- 38.892793761859885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02025'>Report Problem</a>",
- "NAME": "H02025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97029850248663,
- 38.924562528435814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02026'>Report Problem</a>",
- "NAME": "H02026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0363957525363,
- 38.924100850732934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02028'>Report Problem</a>",
- "NAME": "H02028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03890313068506,
- 38.923216596967656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02029'>Report Problem</a>",
- "NAME": "H02029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02371843552692,
- 38.94615620532793,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02030'>Report Problem</a>",
- "NAME": "H02030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0251190942851,
- 38.94625229235325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02031'>Report Problem</a>",
- "NAME": "H02031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95976169469112,
- 38.88267940593603,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02032'>Report Problem</a>",
- "NAME": "H02032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0403209075553,
- 38.92316371498957,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02033'>Report Problem</a>",
- "NAME": "H02033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02791881707249,
- 38.961194797764165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02034'>Report Problem</a>",
- "NAME": "H02034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97799390592007,
- 38.932179992831124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02035'>Report Problem</a>",
- "NAME": "H02035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97814440691053,
- 38.931196133866045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02036'>Report Problem</a>",
- "NAME": "H02036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07477676683689,
- 38.94714093883515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02037'>Report Problem</a>",
- "NAME": "H02037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03472560380943,
- 38.91561818182411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02038'>Report Problem</a>",
- "NAME": "H02038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06648448520178,
- 38.9381858087151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02039'>Report Problem</a>",
- "NAME": "H02039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01375746415471,
- 38.9661773705575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02040'>Report Problem</a>",
- "NAME": "H02040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01860847798358,
- 38.94409470203794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02041'>Report Problem</a>",
- "NAME": "H02041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01604122221272,
- 38.96618846599088,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02042'>Report Problem</a>",
- "NAME": "H02042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02740139650898,
- 38.95070423788856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02043'>Report Problem</a>",
- "NAME": "H02043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0073339718771,
- 38.91632205907361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02044'>Report Problem</a>",
- "NAME": "H02044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0717352739266,
- 38.94623056694789,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02045'>Report Problem</a>",
- "NAME": "H02045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03249570494033,
- 38.94088218462271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02046'>Report Problem</a>",
- "NAME": "H02046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02799132687733,
- 38.90385847120674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02047'>Report Problem</a>",
- "NAME": "H02047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02440035145413,
- 38.97371624193505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02048'>Report Problem</a>",
- "NAME": "H02048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0272025847413,
- 38.949028186655774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02049'>Report Problem</a>",
- "NAME": "H02049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02805792591415,
- 38.958395385388215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02050'>Report Problem</a>",
- "NAME": "H02050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04283632585633,
- 38.91971254175975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02051'>Report Problem</a>",
- "NAME": "H02051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02165365747527,
- 38.97824966013551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02052'>Report Problem</a>",
- "NAME": "H02052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03652476029528,
- 38.943888141926635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02053'>Report Problem</a>",
- "NAME": "H02053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07449684718694,
- 38.94964388803114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02054'>Report Problem</a>",
- "NAME": "H02054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99959130326096,
- 38.84050973345047,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02055'>Report Problem</a>",
- "NAME": "H02055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99168475000235,
- 38.89727239238158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02056'>Report Problem</a>",
- "NAME": "H02056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98358277442742,
- 38.89213999947586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02057'>Report Problem</a>",
- "NAME": "H02057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06581360425771,
- 38.903391094750354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02058'>Report Problem</a>",
- "NAME": "H02058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03767408103673,
- 38.92684424392952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02059'>Report Problem</a>",
- "NAME": "H02059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00071474302833,
- 38.89087894292024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02060'>Report Problem</a>",
- "NAME": "H02060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0893077075887,
- 38.91397769329134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02061'>Report Problem</a>",
- "NAME": "H02061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04303475872973,
- 38.933338780457895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02062'>Report Problem</a>",
- "NAME": "H02062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02841464778555,
- 38.95072893090878,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02063'>Report Problem</a>",
- "NAME": "H02063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00702920739757,
- 38.88971816676756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02068'>Report Problem</a>",
- "NAME": "H02068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11068097615896,
- 38.92982224140037,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81A<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02070'>Report Problem</a>",
- "NAME": "H02070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93546440677869,
- 38.89761458434923,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02071'>Report Problem</a>",
- "NAME": "H02071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01279298893496,
- 38.970053987944816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02072'>Report Problem</a>",
- "NAME": "H02072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01886411973993,
- 38.97594601026155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02073'>Report Problem</a>",
- "NAME": "H02073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01510427761703,
- 38.91121076684343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02074'>Report Problem</a>",
- "NAME": "H02074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0258433151407,
- 38.89743849331662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02075'>Report Problem</a>",
- "NAME": "H02075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96363594637835,
- 38.92982781557876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02076'>Report Problem</a>",
- "NAME": "H02076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03124248541948,
- 38.9758425654708,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02077'>Report Problem</a>",
- "NAME": "H02077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03313102750121,
- 38.97584890997978,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02078'>Report Problem</a>",
- "NAME": "H02078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0306355303094,
- 38.89744309121334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02079'>Report Problem</a>",
- "NAME": "H02079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01443393948755,
- 38.915792554597964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02080'>Report Problem</a>",
- "NAME": "H02080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98624009700451,
- 38.90332648549664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02081'>Report Problem</a>",
- "NAME": "H02081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04355951281299,
- 38.9004501398706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02082'>Report Problem</a>",
- "NAME": "H02082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02380855600049,
- 38.912663830912344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02083'>Report Problem</a>",
- "NAME": "H02083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02871534096461,
- 38.90066186080205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02084'>Report Problem</a>",
- "NAME": "H02084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03075254648903,
- 38.918162103708404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02085'>Report Problem</a>",
- "NAME": "H02085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03181528597833,
- 38.907917402405666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02086'>Report Problem</a>",
- "NAME": "H02086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03361447407345,
- 38.900705208311415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02087'>Report Problem</a>",
- "NAME": "H02087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0561510368247,
- 38.92123790355169,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02088'>Report Problem</a>",
- "NAME": "H02088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03393058018769,
- 38.898790354085925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02089'>Report Problem</a>",
- "NAME": "H02089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03211219285566,
- 38.89880036289175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02090'>Report Problem</a>",
- "NAME": "H02090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0122386304132,
- 38.89661328362694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02091'>Report Problem</a>",
- "NAME": "H02091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01325012836391,
- 38.90147950741581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02092'>Report Problem</a>",
- "NAME": "H02092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04117485780813,
- 38.9252185482281,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02093'>Report Problem</a>",
- "NAME": "H02093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04646969315603,
- 38.91191167494785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02094'>Report Problem</a>",
- "NAME": "H02094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02413662584776,
- 38.95106142388892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02095'>Report Problem</a>",
- "NAME": "H02095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05700782847092,
- 38.90857645285621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02096'>Report Problem</a>",
- "NAME": "H02096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05590996045036,
- 38.90691662780565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02097'>Report Problem</a>",
- "NAME": "H02097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0272324580154,
- 38.91117676112862,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02098'>Report Problem</a>",
- "NAME": "H02098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05818038207765,
- 38.90616766409246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02099'>Report Problem</a>",
- "NAME": "H02099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0610946029378,
- 38.90402570196853,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02100'>Report Problem</a>",
- "NAME": "H02100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04763197885745,
- 38.9072899624411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darily<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02101'>Report Problem</a>",
- "NAME": "H02101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04865085994038,
- 38.90638797807777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02102'>Report Problem</a>",
- "NAME": "H02102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99031178879729,
- 38.87855697638659,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02103'>Report Problem</a>",
- "NAME": "H02103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06533689590646,
- 38.933402777603625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02104'>Report Problem</a>",
- "NAME": "H02104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01396964136951,
- 38.91302011575282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02105'>Report Problem</a>",
- "NAME": "H02105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837618739869,
- 38.894900856166906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02106'>Report Problem</a>",
- "NAME": "H02106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99271483725506,
- 38.89488319058328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02107'>Report Problem</a>",
- "NAME": "H02107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02436776089716,
- 38.93746773926977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02108'>Report Problem</a>",
- "NAME": "H02108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99151756995002,
- 38.93958044371077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02109'>Report Problem</a>",
- "NAME": "H02109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00668310530443,
- 38.9126596604995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02110'>Report Problem</a>",
- "NAME": "H02110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01509588956083,
- 38.913199232576574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02111'>Report Problem</a>",
- "NAME": "H02111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07302537132628,
- 38.92356707506844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02112'>Report Problem</a>",
- "NAME": "H02112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0575723541407,
- 38.92769173627025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02113'>Report Problem</a>",
- "NAME": "H02113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02582720764399,
- 38.95639859664712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02114'>Report Problem</a>",
- "NAME": "H02114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03058637385794,
- 38.91257550297117,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02115'>Report Problem</a>",
- "NAME": "H02115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0378605303757,
- 38.93377852776354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02116'>Report Problem</a>",
- "NAME": "H02116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03076176729697,
- 38.91181686469185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02117'>Report Problem</a>",
- "NAME": "H02117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0274564324348,
- 38.96617803724361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02118'>Report Problem</a>",
- "NAME": "H02118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03073133751631,
- 38.91553218098514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02119'>Report Problem</a>",
- "NAME": "H02119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02687525325523,
- 38.97239092150284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02120'>Report Problem</a>",
- "NAME": "H02120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0320867969527,
- 38.91492174522641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02121'>Report Problem</a>",
- "NAME": "H02121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03323907281033,
- 38.914796720750026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02122'>Report Problem</a>",
- "NAME": "H02122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02670878225192,
- 38.97480224732966,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02123'>Report Problem</a>",
- "NAME": "H02123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08903221648488,
- 38.91006626473149,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02124'>Report Problem</a>",
- "NAME": "H02124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03640515244933,
- 38.91764286075749,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02125'>Report Problem</a>",
- "NAME": "H02125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00218748943851,
- 38.921348672319816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02126'>Report Problem</a>",
- "NAME": "H02126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98544126487761,
- 38.89624057570366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02127'>Report Problem</a>",
- "NAME": "H02127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03400089118982,
- 38.93422699451916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02128'>Report Problem</a>",
- "NAME": "H02128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02960748865249,
- 38.953951911276405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02129'>Report Problem</a>",
- "NAME": "H02129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03657486154742,
- 38.94969582787546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02130'>Report Problem</a>",
- "NAME": "H02130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04364077262919,
- 38.92669473808517,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02131'>Report Problem</a>",
- "NAME": "H02131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02955678141574,
- 38.98043313542413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02132'>Report Problem</a>",
- "NAME": "H02132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04288033549176,
- 38.92887020300115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02133'>Report Problem</a>",
- "NAME": "H02133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04400623305133,
- 38.92975164408644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02134'>Report Problem</a>",
- "NAME": "H02134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03865173289707,
- 38.943000808381264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02135'>Report Problem</a>",
- "NAME": "H02135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01703578605907,
- 38.870428821330094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02136'>Report Problem</a>",
- "NAME": "H02136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00604478727104,
- 38.906490529810775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02137'>Report Problem</a>",
- "NAME": "H02137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0182049262469,
- 38.87078014386674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02138'>Report Problem</a>",
- "NAME": "H02138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01878861433661,
- 38.906500084559404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02139'>Report Problem</a>",
- "NAME": "H02139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01878598317823,
- 38.91191873882881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02140'>Report Problem</a>",
- "NAME": "H02140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0387175452137,
- 38.944941549684245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02141'>Report Problem</a>",
- "NAME": "H02141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04162614917688,
- 38.8967882521077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02142'>Report Problem</a>",
- "NAME": "H02142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03635510774349,
- 38.94836095988495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02143'>Report Problem</a>",
- "NAME": "H02143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99213385238693,
- 38.93622897754184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02144'>Report Problem</a>",
- "NAME": "H02144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04245885027528,
- 38.897426555352695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02145'>Report Problem</a>",
- "NAME": "H02145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07012749042492,
- 38.93806974288582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/27/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02146'>Report Problem</a>",
- "NAME": "H02146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03771620511618,
- 38.958473355730874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02147'>Report Problem</a>",
- "NAME": "H02147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05628748429913,
- 38.92606582966359,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02148'>Report Problem</a>",
- "NAME": "H02148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0389526346283,
- 38.94406995606748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02149'>Report Problem</a>",
- "NAME": "H02149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03420260089324,
- 38.93669585850738,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02150'>Report Problem</a>",
- "NAME": "H02150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08847030359233,
- 38.954752361988504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02151'>Report Problem</a>",
- "NAME": "H02151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08508726950372,
- 38.95475162102491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02152'>Report Problem</a>",
- "NAME": "H02152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04324745320626,
- 38.9118196576921,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02153'>Report Problem</a>",
- "NAME": "H02153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06890400781782,
- 38.905977755219396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02154'>Report Problem</a>",
- "NAME": "H02154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06998948725547,
- 38.90595148124361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02155'>Report Problem</a>",
- "NAME": "H02155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07139584191576,
- 38.905910290901204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02156'>Report Problem</a>",
- "NAME": "H02156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07149471587194,
- 38.90770461271906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02157'>Report Problem</a>",
- "NAME": "H02157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07197006315903,
- 38.90577348908487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02158'>Report Problem</a>",
- "NAME": "H02158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07039851059882,
- 38.9077772370552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02159'>Report Problem</a>",
- "NAME": "H02159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98815055134135,
- 38.8784488745766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02160'>Report Problem</a>",
- "NAME": "H02160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02989682974575,
- 38.9451108456685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02161'>Report Problem</a>",
- "NAME": "H02161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06540582748619,
- 38.90776099591915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02162'>Report Problem</a>",
- "NAME": "H02162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06530586633363,
- 38.90671493028031,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02163'>Report Problem</a>",
- "NAME": "H02163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06330966725282,
- 38.90918708185487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02164'>Report Problem</a>",
- "NAME": "H02164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06799228625695,
- 38.90878857894755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02165'>Report Problem</a>",
- "NAME": "H02165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09994051170968,
- 38.91960020280701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02166'>Report Problem</a>",
- "NAME": "H02166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98716697453132,
- 38.89895685334767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02167'>Report Problem</a>",
- "NAME": "H02167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06798400027944,
- 38.91066751737259,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02168'>Report Problem</a>",
- "NAME": "H02168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02797789889527,
- 38.97943563807483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02169'>Report Problem</a>",
- "NAME": "H02169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02613887142148,
- 38.96380903479555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02170'>Report Problem</a>",
- "NAME": "H02170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01900918370542,
- 38.896259979889884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02171'>Report Problem</a>",
- "NAME": "H02171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01536407089658,
- 38.90569403159171,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02172'>Report Problem</a>",
- "NAME": "H02172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08498011136442,
- 38.94973727008438,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02173'>Report Problem</a>",
- "NAME": "H02173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0383050233257,
- 38.91969029693658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02174'>Report Problem</a>",
- "NAME": "H02174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07211013543095,
- 38.92366007779364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02175'>Report Problem</a>",
- "NAME": "H02175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07228108336108,
- 38.949722452911836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02176'>Report Problem</a>",
- "NAME": "H02176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07206835855597,
- 38.92477052330977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02177'>Report Problem</a>",
- "NAME": "H02177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0686010738783,
- 38.96592174351495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/20/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02179'>Report Problem</a>",
- "NAME": "H02179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04887104317531,
- 38.90190913123874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02212'>Report Problem</a>",
- "NAME": "H02212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03476597403088,
- 38.93530075715645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02213'>Report Problem</a>",
- "NAME": "H02213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01025778048266,
- 38.911065015407424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02214'>Report Problem</a>",
- "NAME": "H02214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07129942389474,
- 38.971976200252676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02215'>Report Problem</a>",
- "NAME": "H02215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99837980466911,
- 38.897210708559165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02216'>Report Problem</a>",
- "NAME": "H02216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04726285980533,
- 38.90794181221872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02217'>Report Problem</a>",
- "NAME": "H02217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0472969765816,
- 38.91265530573976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02218'>Report Problem</a>",
- "NAME": "H02218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98942147352926,
- 38.9036356051964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01957'>Report Problem</a>",
- "NAME": "H01957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0631571534827,
- 38.94318530156407,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01958'>Report Problem</a>",
- "NAME": "H01958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98902356187968,
- 38.904507297697904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01959'>Report Problem</a>",
- "NAME": "H01959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02757047573542,
- 38.9649962454915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01960'>Report Problem</a>",
- "NAME": "H01960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9945771025899,
- 38.92283463384243,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01961'>Report Problem</a>",
- "NAME": "H01961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0385309248215,
- 38.918007593046426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01962'>Report Problem</a>",
- "NAME": "H01962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0411883523277,
- 38.91192440297233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01963'>Report Problem</a>",
- "NAME": "H01963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00043045788391,
- 38.919257958827444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01964'>Report Problem</a>",
- "NAME": "H01964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98862964483567,
- 38.93074143457421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01965'>Report Problem</a>",
- "NAME": "H01965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.040636396296,
- 38.90029235783908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01966'>Report Problem</a>",
- "NAME": "H01966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02157512765002,
- 38.974838015796365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01967'>Report Problem</a>",
- "NAME": "H01967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02803919716007,
- 38.91128538206297,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01968'>Report Problem</a>",
- "NAME": "H01968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02253152430067,
- 38.957483449624014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01969'>Report Problem</a>",
- "NAME": "H01969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06653554269433,
- 38.93633869104572,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01970'>Report Problem</a>",
- "NAME": "H01970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06869395979669,
- 38.93639869889583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01971'>Report Problem</a>",
- "NAME": "H01971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01152851233472,
- 38.910429664761125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01988'>Report Problem</a>",
- "NAME": "H01988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94089019499285,
- 38.911214375772396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01989'>Report Problem</a>",
- "NAME": "H01989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04138129021726,
- 38.942992865530066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01990'>Report Problem</a>",
- "NAME": "H01990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08025761988256,
- 38.908573497441154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01991'>Report Problem</a>",
- "NAME": "H01991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9942430741517,
- 38.86293060932371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01992'>Report Problem</a>",
- "NAME": "H01992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05135984983349,
- 38.898448961626094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01993'>Report Problem</a>",
- "NAME": "H01993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02982220409694,
- 38.97802934999025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01994'>Report Problem</a>",
- "NAME": "H01994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03181370793966,
- 38.94966703374758,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01995'>Report Problem</a>",
- "NAME": "H01995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07475851651334,
- 38.946326304443325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01996'>Report Problem</a>",
- "NAME": "H01996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07711304159017,
- 38.94716766205143,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01997'>Report Problem</a>",
- "NAME": "H01997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.967520986969,
- 38.930954620042776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01998'>Report Problem</a>",
- "NAME": "H01998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02248486873098,
- 38.92684122591908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H01999'>Report Problem</a>",
- "NAME": "H01999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.036271452233,
- 38.919143671935224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02000'>Report Problem</a>",
- "NAME": "H02000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96646320438947,
- 38.92463621475183,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02001'>Report Problem</a>",
- "NAME": "H02001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01616873388167,
- 38.93900814710454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02002'>Report Problem</a>",
- "NAME": "H02002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03660342018057,
- 38.91569397232699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02003'>Report Problem</a>",
- "NAME": "H02003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02515982000193,
- 38.96996254732763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02004'>Report Problem</a>",
- "NAME": "H02004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0375566625569,
- 38.920811806185306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02005'>Report Problem</a>",
- "NAME": "H02005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02256408737978,
- 38.96996118526378,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02006'>Report Problem</a>",
- "NAME": "H02006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03875551766804,
- 38.921490318110834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02007'>Report Problem</a>",
- "NAME": "H02007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11180658507733,
- 38.93407922806082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02008'>Report Problem</a>",
- "NAME": "H02008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98280708620482,
- 38.93201242573101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02009'>Report Problem</a>",
- "NAME": "H02009"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03543304230105,
- 38.947240234753686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02010'>Report Problem</a>",
- "NAME": "H02010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07891400537676,
- 38.959601874909225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02012'>Report Problem</a>",
- "NAME": "H02012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02950880433558,
- 38.95295467583174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02013'>Report Problem</a>",
- "NAME": "H02013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0690084666058,
- 38.966841137811286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02014'>Report Problem</a>",
- "NAME": "H02014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03283045891598,
- 38.93855793352463,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02015'>Report Problem</a>",
- "NAME": "H02015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99032363698532,
- 38.89750333405455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02016'>Report Problem</a>",
- "NAME": "H02016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0295067617474,
- 38.957328846992304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02017'>Report Problem</a>",
- "NAME": "H02017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02961941889164,
- 38.95634217050676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02018'>Report Problem</a>",
- "NAME": "H02018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02016868063262,
- 38.94427192448788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02019'>Report Problem</a>",
- "NAME": "H02019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0318281675755,
- 38.90306707799152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02020'>Report Problem</a>",
- "NAME": "H02020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07208174668037,
- 38.92742798694648,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02180'>Report Problem</a>",
- "NAME": "H02180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0145632670662,
- 38.910421903042455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02181'>Report Problem</a>",
- "NAME": "H02181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00344645438211,
- 38.92034688929146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02182'>Report Problem</a>",
- "NAME": "H02182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0021272623016,
- 38.9202774215236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02183'>Report Problem</a>",
- "NAME": "H02183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07094136439243,
- 38.924772230811264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02184'>Report Problem</a>",
- "NAME": "H02184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07094319360175,
- 38.92610084869127,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02185'>Report Problem</a>",
- "NAME": "H02185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06627664070031,
- 38.91269273578324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02186'>Report Problem</a>",
- "NAME": "H02186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06570383789055,
- 38.91172554545512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02187'>Report Problem</a>",
- "NAME": "H02187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10873919584331,
- 38.92874085915821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02188'>Report Problem</a>",
- "NAME": "H02188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9962337831072,
- 38.89622438738672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02189'>Report Problem</a>",
- "NAME": "H02189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96893566778297,
- 38.92662307882042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02190'>Report Problem</a>",
- "NAME": "H02190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06629309703835,
- 38.9276310651576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02191'>Report Problem</a>",
- "NAME": "H02191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04997279803068,
- 38.90534685658149,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02192'>Report Problem</a>",
- "NAME": "H02192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196887277293,
- 38.900473423214414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02193'>Report Problem</a>",
- "NAME": "H02193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0235377836542,
- 38.94715885445253,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02194'>Report Problem</a>",
- "NAME": "H02194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01430750265538,
- 38.9444052015688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02195'>Report Problem</a>",
- "NAME": "H02195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0692826441224,
- 38.91447182354517,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02196'>Report Problem</a>",
- "NAME": "H02196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07494620895606,
- 38.95707490232092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02197'>Report Problem</a>",
- "NAME": "H02197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06945067919192,
- 38.915561777553435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02198'>Report Problem</a>",
- "NAME": "H02198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02797705271975,
- 38.98042565079019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02199'>Report Problem</a>",
- "NAME": "H02199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02601972222021,
- 38.9584925694157,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02200'>Report Problem</a>",
- "NAME": "H02200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06624618189082,
- 38.93471894654501,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02357'>Report Problem</a>",
- "NAME": "H02357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06787968304695,
- 38.96857024659039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02358'>Report Problem</a>",
- "NAME": "H02358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96798934459109,
- 38.93222581232258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02359'>Report Problem</a>",
- "NAME": "H02359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07286764970894,
- 38.96868836065294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02360'>Report Problem</a>",
- "NAME": "H02360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02896394982665,
- 38.915627319032964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02361'>Report Problem</a>",
- "NAME": "H02361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08116003122717,
- 38.96212589286107,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 02/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02362'>Report Problem</a>",
- "NAME": "H02362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06580430208457,
- 38.92961147680641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02364'>Report Problem</a>",
- "NAME": "H02364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06511632318453,
- 38.92910428879062,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02365'>Report Problem</a>",
- "NAME": "H02365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93264391094284,
- 38.89984674186864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02366'>Report Problem</a>",
- "NAME": "H02366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96237761379567,
- 38.93415531387043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02367'>Report Problem</a>",
- "NAME": "H02367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96512484852082,
- 38.93416388599946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02368'>Report Problem</a>",
- "NAME": "H02368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03878279699964,
- 38.950510275064076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02369'>Report Problem</a>",
- "NAME": "H02369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03762467602706,
- 38.95152121964144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/26/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02370'>Report Problem</a>",
- "NAME": "H02370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05525993258135,
- 38.91691035781633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02371'>Report Problem</a>",
- "NAME": "H02371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02235032865342,
- 38.9585893024244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02372'>Report Problem</a>",
- "NAME": "H02372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08372579015492,
- 38.954532748106296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02373'>Report Problem</a>",
- "NAME": "H02373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02324613211594,
- 38.96869367333492,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02374'>Report Problem</a>",
- "NAME": "H02374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99044739086317,
- 38.89472569604125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Dariling<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02375'>Report Problem</a>",
- "NAME": "H02375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95968505551676,
- 38.875735602629504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02376'>Report Problem</a>",
- "NAME": "H02376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02716475075219,
- 38.90656711695723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02377'>Report Problem</a>",
- "NAME": "H02377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06020846411761,
- 38.9238749078651,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02378'>Report Problem</a>",
- "NAME": "H02378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99228035134483,
- 38.92659551340002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02379'>Report Problem</a>",
- "NAME": "H02379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05526351497318,
- 38.94376505555505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02380'>Report Problem</a>",
- "NAME": "H02380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05845632205478,
- 38.942097365523594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02381'>Report Problem</a>",
- "NAME": "H02381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0618067352162,
- 38.92480334481349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02382'>Report Problem</a>",
- "NAME": "H02382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05639066405435,
- 38.94201891814282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02383'>Report Problem</a>",
- "NAME": "H02383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06274865251294,
- 38.92546017090525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02384'>Report Problem</a>",
- "NAME": "H02384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05524760081336,
- 38.94377088243079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02385'>Report Problem</a>",
- "NAME": "H02385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02557271942077,
- 38.94907192939675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02386'>Report Problem</a>",
- "NAME": "H02386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07593972509883,
- 38.944680522088724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02387'>Report Problem</a>",
- "NAME": "H02387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05613018236808,
- 38.931691920728454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02388'>Report Problem</a>",
- "NAME": "H02388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0514492669259,
- 38.92548648280563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02389'>Report Problem</a>",
- "NAME": "H02389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05214180884387,
- 38.92667391344616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02390'>Report Problem</a>",
- "NAME": "H02390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05833191858744,
- 38.92270059788185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02391'>Report Problem</a>",
- "NAME": "H02391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05798642473613,
- 38.92315542887408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02392'>Report Problem</a>",
- "NAME": "H02392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98069784544856,
- 38.92547621536049,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02393'>Report Problem</a>",
- "NAME": "H02393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99081645338033,
- 38.92863924959949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02394'>Report Problem</a>",
- "NAME": "H02394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03345040785578,
- 38.93419903844846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02395'>Report Problem</a>",
- "NAME": "H02395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00071776984767,
- 38.92134527643473,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02396'>Report Problem</a>",
- "NAME": "H02396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9899552805556,
- 38.93252538980631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02397'>Report Problem</a>",
- "NAME": "H02397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05517070320607,
- 38.930112833667756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02398'>Report Problem</a>",
- "NAME": "H02398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05406379803276,
- 38.92818587849188,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02399'>Report Problem</a>",
- "NAME": "H02399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03683464682743,
- 38.927662259256216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02400'>Report Problem</a>",
- "NAME": "H02400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03788948094103,
- 38.92462147121205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02401'>Report Problem</a>",
- "NAME": "H02401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06090752725551,
- 38.937175828684694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02402'>Report Problem</a>",
- "NAME": "H02402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06480849052048,
- 38.93541460796952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02403'>Report Problem</a>",
- "NAME": "H02403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06114502837157,
- 38.91965176037061,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02404'>Report Problem</a>",
- "NAME": "H02404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01737612934939,
- 38.9459119164944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02405'>Report Problem</a>",
- "NAME": "H02405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02086631242742,
- 38.94528553123113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02406'>Report Problem</a>",
- "NAME": "H02406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02106790249516,
- 38.9159947567893,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02407'>Report Problem</a>",
- "NAME": "H02407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07408843066628,
- 38.91450287268788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02408'>Report Problem</a>",
- "NAME": "H02408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02105765418624,
- 38.94740164121435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02409'>Report Problem</a>",
- "NAME": "H02409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97024663019756,
- 38.93415475330891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02410'>Report Problem</a>",
- "NAME": "H02410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01903270144265,
- 38.900197341701514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02411'>Report Problem</a>",
- "NAME": "H02411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06776526294668,
- 38.954727559802464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/20/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02412'>Report Problem</a>",
- "NAME": "H02412"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07440743585417,
- 38.95838066997117,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02421'>Report Problem</a>",
- "NAME": "H02421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07403691578973,
- 38.91347333331429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02422'>Report Problem</a>",
- "NAME": "H02422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04887270704579,
- 38.91603208976537,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02423'>Report Problem</a>",
- "NAME": "H02423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04660436917379,
- 38.91685887340063,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02424'>Report Problem</a>",
- "NAME": "H02424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07440050690725,
- 38.959059861300844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/02/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02425'>Report Problem</a>",
- "NAME": "H02425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0418288310343,
- 38.91189108781008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02426'>Report Problem</a>",
- "NAME": "H02426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07440789403914,
- 38.960344731782484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02427'>Report Problem</a>",
- "NAME": "H02427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07697852448487,
- 38.95971133638402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02428'>Report Problem</a>",
- "NAME": "H02428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01452770270629,
- 38.91265562440944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02429'>Report Problem</a>",
- "NAME": "H02429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00046835359005,
- 38.92335358393619,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02430'>Report Problem</a>",
- "NAME": "H02430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08016263512539,
- 38.96314549567846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02431'>Report Problem</a>",
- "NAME": "H02431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96387072005342,
- 38.92241534145313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02432'>Report Problem</a>",
- "NAME": "H02432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03870952103543,
- 38.94622449397238,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02433'>Report Problem</a>",
- "NAME": "H02433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02529445304734,
- 38.93602534998112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02434'>Report Problem</a>",
- "NAME": "H02434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01610001900536,
- 38.967339171096654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02435'>Report Problem</a>",
- "NAME": "H02435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01605837851449,
- 38.968688692625655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02436'>Report Problem</a>",
- "NAME": "H02436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00335620439954,
- 38.92294433372741,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02437'>Report Problem</a>",
- "NAME": "H02437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0196032378562,
- 38.947449638029866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02438'>Report Problem</a>",
- "NAME": "H02438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03128825325167,
- 38.95628426309762,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02439'>Report Problem</a>",
- "NAME": "H02439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01500843801678,
- 38.9196932330382,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 09/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02440'>Report Problem</a>",
- "NAME": "H02440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05070923922946,
- 38.91413585438477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02441'>Report Problem</a>",
- "NAME": "H02441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04028689659664,
- 38.90470499652097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02442'>Report Problem</a>",
- "NAME": "H02442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07018142390883,
- 38.91648482138983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02443'>Report Problem</a>",
- "NAME": "H02443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99171211351711,
- 38.937189422078106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02444'>Report Problem</a>",
- "NAME": "H02444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06217911326354,
- 38.965845809911194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02445'>Report Problem</a>",
- "NAME": "H02445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08384763625851,
- 38.96083239246911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02446'>Report Problem</a>",
- "NAME": "H02446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03568650686427,
- 38.934172865590604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02447'>Report Problem</a>",
- "NAME": "H02447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99443233256763,
- 38.92193237155208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02448'>Report Problem</a>",
- "NAME": "H02448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0210696245563,
- 38.94828630604302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02449'>Report Problem</a>",
- "NAME": "H02449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06397683775366,
- 38.96501788287509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02450'>Report Problem</a>",
- "NAME": "H02450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0707783822129,
- 38.93721832759821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02451'>Report Problem</a>",
- "NAME": "H02451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97222328355343,
- 38.9350000923356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02452'>Report Problem</a>",
- "NAME": "H02452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07284995431041,
- 38.91824666844355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02453'>Report Problem</a>",
- "NAME": "H02453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0741262932378,
- 38.915408997293135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02454'>Report Problem</a>",
- "NAME": "H02454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04119815131878,
- 38.940865037156996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - MEDALLION<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02455'>Report Problem</a>",
- "NAME": "H02455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02437582316252,
- 38.964388844260206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02456'>Report Problem</a>",
- "NAME": "H02456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06629700670452,
- 38.92908244645568,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02457'>Report Problem</a>",
- "NAME": "H02457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99228131837913,
- 38.927463500539794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02458'>Report Problem</a>",
- "NAME": "H02458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03791652876262,
- 38.96870165558358,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02459'>Report Problem</a>",
- "NAME": "H02459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03664144386782,
- 38.968808071060444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02460'>Report Problem</a>",
- "NAME": "H02460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02423965294152,
- 38.9250595707303,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02461'>Report Problem</a>",
- "NAME": "H02461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02261173782628,
- 38.935495995555456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02462'>Report Problem</a>",
- "NAME": "H02462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9843739735885,
- 38.92996681409685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02463'>Report Problem</a>",
- "NAME": "H02463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02638157920737,
- 38.97738657505648,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02464'>Report Problem</a>",
- "NAME": "H02464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03694884375898,
- 38.92612746760467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02465'>Report Problem</a>",
- "NAME": "H02465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02388281636263,
- 38.949868140968334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02466'>Report Problem</a>",
- "NAME": "H02466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98494300643884,
- 38.90498684403374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02467'>Report Problem</a>",
- "NAME": "H02467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04895649402714,
- 38.91340109817856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02219'>Report Problem</a>",
- "NAME": "H02219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05032851993882,
- 38.91244446928459,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02220'>Report Problem</a>",
- "NAME": "H02220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06330655798459,
- 38.92780607709113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02221'>Report Problem</a>",
- "NAME": "H02221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0635092693931,
- 38.92659036696649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02222'>Report Problem</a>",
- "NAME": "H02222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04014221930245,
- 38.928857302742976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02223'>Report Problem</a>",
- "NAME": "H02223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04414980494309,
- 38.92607822493934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02224'>Report Problem</a>",
- "NAME": "H02224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06317246562452,
- 38.92910585111905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02225'>Report Problem</a>",
- "NAME": "H02225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01065584985925,
- 38.914130364055296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02226'>Report Problem</a>",
- "NAME": "H02226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0694028255111,
- 38.96767236555518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02227'>Report Problem</a>",
- "NAME": "H02227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06418130826363,
- 38.914129762646525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02228'>Report Problem</a>",
- "NAME": "H02228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0657510637312,
- 38.91476324797256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02229'>Report Problem</a>",
- "NAME": "H02229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03785235162083,
- 38.94500788177779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02230'>Report Problem</a>",
- "NAME": "H02230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9760509669522,
- 38.9331757762038,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02231'>Report Problem</a>",
- "NAME": "H02231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0362845838172,
- 38.93747386292969,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02232'>Report Problem</a>",
- "NAME": "H02232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03423322680514,
- 38.93737431847327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02233'>Report Problem</a>",
- "NAME": "H02233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99598866810791,
- 38.8989607863988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02234'>Report Problem</a>",
- "NAME": "H02234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06007690283022,
- 38.97110904727206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02235'>Report Problem</a>",
- "NAME": "H02235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02410937544778,
- 38.954229728164975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02236'>Report Problem</a>",
- "NAME": "H02236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99956787931444,
- 38.8948964971011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02237'>Report Problem</a>",
- "NAME": "H02237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99828669360583,
- 38.92655172315786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02238'>Report Problem</a>",
- "NAME": "H02238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05834402244399,
- 38.97414129513569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02239'>Report Problem</a>",
- "NAME": "H02239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06099566046568,
- 38.97187921742923,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02240'>Report Problem</a>",
- "NAME": "H02240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02934472035942,
- 38.936933106376976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02241'>Report Problem</a>",
- "NAME": "H02241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99729640967367,
- 38.896767702243615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02242'>Report Problem</a>",
- "NAME": "H02242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99381980947587,
- 38.89469213275735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02243'>Report Problem</a>",
- "NAME": "H02243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06502655078577,
- 38.97133029950638,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02244'>Report Problem</a>",
- "NAME": "H02244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05061488150095,
- 38.92608851267201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02245'>Report Problem</a>",
- "NAME": "H02245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03122529735126,
- 38.94607300633347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02246'>Report Problem</a>",
- "NAME": "H02246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0314603455025,
- 38.94515329675618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02247'>Report Problem</a>",
- "NAME": "H02247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01538670093865,
- 38.94309870097209,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02248'>Report Problem</a>",
- "NAME": "H02248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03436989678288,
- 38.94297480560888,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02249'>Report Problem</a>",
- "NAME": "H02249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02013907402738,
- 38.943145020096026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02250'>Report Problem</a>",
- "NAME": "H02250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03758425684003,
- 38.94619154854148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02251'>Report Problem</a>",
- "NAME": "H02251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9994416480855,
- 38.89720594402789,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02252'>Report Problem</a>",
- "NAME": "H02252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03776603140655,
- 38.92014033018421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02253'>Report Problem</a>",
- "NAME": "H02253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04182126609734,
- 38.91415039073886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02254'>Report Problem</a>",
- "NAME": "H02254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02332500499988,
- 38.97240085388782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02255'>Report Problem</a>",
- "NAME": "H02255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08493324637763,
- 38.948474559508874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02256'>Report Problem</a>",
- "NAME": "H02256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06022581086036,
- 38.922321287608035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 01/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02257'>Report Problem</a>",
- "NAME": "H02257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10692036614934,
- 38.92817447276545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02258'>Report Problem</a>",
- "NAME": "H02258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06633129672237,
- 38.931366538258196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02259'>Report Problem</a>",
- "NAME": "H02259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06633059309861,
- 38.93039940652756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02260'>Report Problem</a>",
- "NAME": "H02260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01884826427401,
- 38.90147361260865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02261'>Report Problem</a>",
- "NAME": "H02261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0258357780549,
- 38.90167766683046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02262'>Report Problem</a>",
- "NAME": "H02262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98094018829131,
- 38.88024831951317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02263'>Report Problem</a>",
- "NAME": "H02263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9720699562511,
- 38.93207567230303,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02264'>Report Problem</a>",
- "NAME": "H02264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96621951204449,
- 38.93265792905006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02265'>Report Problem</a>",
- "NAME": "H02265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02986846324326,
- 38.940869084765204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02266'>Report Problem</a>",
- "NAME": "H02266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99015621764943,
- 38.94170542879607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02267'>Report Problem</a>",
- "NAME": "H02267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01510655783609,
- 38.9120689099893,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02268'>Report Problem</a>",
- "NAME": "H02268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99828332149815,
- 38.89895939230843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02269'>Report Problem</a>",
- "NAME": "H02269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07314550691709,
- 38.9570768534689,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02270'>Report Problem</a>",
- "NAME": "H02270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03547263104721,
- 38.935945746295154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02271'>Report Problem</a>",
- "NAME": "H02271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02765378008552,
- 38.98297411648219,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02272'>Report Problem</a>",
- "NAME": "H02272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.025554511874,
- 38.94822538053987,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02273'>Report Problem</a>",
- "NAME": "H02273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03057836393977,
- 38.90502680952106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02274'>Report Problem</a>",
- "NAME": "H02274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02565999860138,
- 38.95088985218283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02275'>Report Problem</a>",
- "NAME": "H02275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0294930842031,
- 38.90782293758968,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02276'>Report Problem</a>",
- "NAME": "H02276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03156043923946,
- 38.95414331253165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02277'>Report Problem</a>",
- "NAME": "H02277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02794418175219,
- 38.963824003386094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02278'>Report Problem</a>",
- "NAME": "H02278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06742687452288,
- 38.927632524480764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02279'>Report Problem</a>",
- "NAME": "H02279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97424452074037,
- 38.936089127149835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02280'>Report Problem</a>",
- "NAME": "H02280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02816223051872,
- 38.90975818631079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02281'>Report Problem</a>",
- "NAME": "H02281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06470375789152,
- 38.92745334801983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02282'>Report Problem</a>",
- "NAME": "H02282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05167636864402,
- 38.91633042860268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02283'>Report Problem</a>",
- "NAME": "H02283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09958301496812,
- 38.947841588884124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02284'>Report Problem</a>",
- "NAME": "H02284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07454623149088,
- 38.94561523595463,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02285'>Report Problem</a>",
- "NAME": "H02285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02429440018354,
- 38.965994374180255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02286'>Report Problem</a>",
- "NAME": "H02286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00800824107726,
- 38.8832903723711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02287'>Report Problem</a>",
- "NAME": "H02287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02020227033456,
- 38.93885363989355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02288'>Report Problem</a>",
- "NAME": "H02288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02135296883517,
- 38.971345114051275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02289'>Report Problem</a>",
- "NAME": "H02289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02235773506352,
- 38.971202866376885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02290'>Report Problem</a>",
- "NAME": "H02290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06472127670968,
- 38.93021139551453,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02291'>Report Problem</a>",
- "NAME": "H02291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0237139993211,
- 38.94821730059552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02292'>Report Problem</a>",
- "NAME": "H02292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00047803721469,
- 38.92459222775901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02293'>Report Problem</a>",
- "NAME": "H02293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01556874615575,
- 38.942082677175044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02294'>Report Problem</a>",
- "NAME": "H02294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97228141047655,
- 38.93317017762421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02295'>Report Problem</a>",
- "NAME": "H02295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02307885555554,
- 38.91117447543661,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02296'>Report Problem</a>",
- "NAME": "H02296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03672352022497,
- 38.93180919767034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02297'>Report Problem</a>",
- "NAME": "H02297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96639061943615,
- 38.92231479476334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02298'>Report Problem</a>",
- "NAME": "H02298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06984662657405,
- 38.96867886274308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02299'>Report Problem</a>",
- "NAME": "H02299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03639217625027,
- 38.92332992881701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02300'>Report Problem</a>",
- "NAME": "H02300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05623907199511,
- 38.94104019533707,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02301'>Report Problem</a>",
- "NAME": "H02301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10756082886142,
- 38.929552418819014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02302'>Report Problem</a>",
- "NAME": "H02302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05661376747125,
- 38.916823337844626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02303'>Report Problem</a>",
- "NAME": "H02303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10929937797565,
- 38.929453750262994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02304'>Report Problem</a>",
- "NAME": "H02304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10813979189241,
- 38.93155736050178,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02305'>Report Problem</a>",
- "NAME": "H02305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08495580620318,
- 38.95096802566599,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02306'>Report Problem</a>",
- "NAME": "H02306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08158371393276,
- 38.90771320054227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02307'>Report Problem</a>",
- "NAME": "H02307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03652520878843,
- 38.94071087339788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02413'>Report Problem</a>",
- "NAME": "H02413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04116500907743,
- 38.94191904581673,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - MEDALLION<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02414'>Report Problem</a>",
- "NAME": "H02414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03865462892603,
- 38.948320702843226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02415'>Report Problem</a>",
- "NAME": "H02415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05882737349081,
- 38.93563111491473,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02416'>Report Problem</a>",
- "NAME": "H02416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02467758786067,
- 38.908524876182675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02417'>Report Problem</a>",
- "NAME": "H02417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07007617893264,
- 38.95905705599412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02418'>Report Problem</a>",
- "NAME": "H02418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05254115011057,
- 38.914738675618416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02419'>Report Problem</a>",
- "NAME": "H02419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07265025843519,
- 38.95837427113736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02420'>Report Problem</a>",
- "NAME": "H02420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05732157760308,
- 38.950518491681315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02638'>Report Problem</a>",
- "NAME": "H02638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01843436347409,
- 38.94320120678365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02639'>Report Problem</a>",
- "NAME": "H02639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01379072420467,
- 38.94235063579019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02640'>Report Problem</a>",
- "NAME": "H02640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0202476609033,
- 38.92480939485326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02641'>Report Problem</a>",
- "NAME": "H02641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0126518743266,
- 38.94432730867445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02642'>Report Problem</a>",
- "NAME": "H02642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07467168795272,
- 38.955555653699165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02643'>Report Problem</a>",
- "NAME": "H02643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0004700148885,
- 38.91821011899874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02644'>Report Problem</a>",
- "NAME": "H02644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02623425495086,
- 38.93432873572846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02645'>Report Problem</a>",
- "NAME": "H02645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02590411626575,
- 38.96440099210452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02646'>Report Problem</a>",
- "NAME": "H02646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01481201080135,
- 38.96265679101783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02647'>Report Problem</a>",
- "NAME": "H02647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98823858597284,
- 38.89084077004873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02648'>Report Problem</a>",
- "NAME": "H02648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08219097651164,
- 38.946350006466254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02649'>Report Problem</a>",
- "NAME": "H02649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08417049107285,
- 38.91174525813888,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02650'>Report Problem</a>",
- "NAME": "H02650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04360486231961,
- 38.92158702518876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02651'>Report Problem</a>",
- "NAME": "H02651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06422458346891,
- 38.95857512363125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02652'>Report Problem</a>",
- "NAME": "H02652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99390912333604,
- 38.88132483111803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02653'>Report Problem</a>",
- "NAME": "H02653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08748491167783,
- 38.90934062209095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02654'>Report Problem</a>",
- "NAME": "H02654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08346140696953,
- 38.90780850688067,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02655'>Report Problem</a>",
- "NAME": "H02655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02494432152615,
- 38.8974392292383,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02656'>Report Problem</a>",
- "NAME": "H02656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0547514876217,
- 38.94528244492111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02657'>Report Problem</a>",
- "NAME": "H02657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.007302717981,
- 38.87922114947467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02658'>Report Problem</a>",
- "NAME": "H02658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00397984441919,
- 38.90570008176016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02659'>Report Problem</a>",
- "NAME": "H02659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04447500880534,
- 38.92136548885368,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02660'>Report Problem</a>",
- "NAME": "H02660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02253206450379,
- 38.96006821634684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02661'>Report Problem</a>",
- "NAME": "H02661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01062932859072,
- 38.971683110127216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02308'>Report Problem</a>",
- "NAME": "H02308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94401534744019,
- 38.898300829267846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02309'>Report Problem</a>",
- "NAME": "H02309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99750516074612,
- 38.924556529167454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02310'>Report Problem</a>",
- "NAME": "H02310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98371769316162,
- 38.89488442698911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02311'>Report Problem</a>",
- "NAME": "H02311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0200052271911,
- 38.97120577875481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02312'>Report Problem</a>",
- "NAME": "H02312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03357376185724,
- 38.90088891845056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02313'>Report Problem</a>",
- "NAME": "H02313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0019698162964,
- 38.923369801265956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02314'>Report Problem</a>",
- "NAME": "H02314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196983806445,
- 38.92248794071405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02315'>Report Problem</a>",
- "NAME": "H02315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08217914356655,
- 38.94306008018525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02316'>Report Problem</a>",
- "NAME": "H02316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98063486816388,
- 38.92712991542751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02317'>Report Problem</a>",
- "NAME": "H02317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02459980455362,
- 38.97827773271868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02318'>Report Problem</a>",
- "NAME": "H02318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02555529091498,
- 38.972409098743746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02319'>Report Problem</a>",
- "NAME": "H02319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09251870746847,
- 38.9534322731507,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02320'>Report Problem</a>",
- "NAME": "H02320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97740173531604,
- 38.8886205214979,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02321'>Report Problem</a>",
- "NAME": "H02321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04438494321283,
- 38.91795087159957,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02322'>Report Problem</a>",
- "NAME": "H02322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03243162777484,
- 38.9847965751539,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02323'>Report Problem</a>",
- "NAME": "H02323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93512672537646,
- 38.90710618769946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02324'>Report Problem</a>",
- "NAME": "H02324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10781993691059,
- 38.927391706227155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02325'>Report Problem</a>",
- "NAME": "H02325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99391201805774,
- 38.92263674232255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02326'>Report Problem</a>",
- "NAME": "H02326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99254426826764,
- 38.94119475442937,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02327'>Report Problem</a>",
- "NAME": "H02327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01289192339381,
- 38.9086596441178,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02328'>Report Problem</a>",
- "NAME": "H02328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0171289132211,
- 38.9441509236998,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02329'>Report Problem</a>",
- "NAME": "H02329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07132006855714,
- 38.96858615234745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02330'>Report Problem</a>",
- "NAME": "H02330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99731398980849,
- 38.8450141155974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02331'>Report Problem</a>",
- "NAME": "H02331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04220339865742,
- 38.943867294271804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02332'>Report Problem</a>",
- "NAME": "H02332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04845967087124,
- 38.915246437773575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02333'>Report Problem</a>",
- "NAME": "H02333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07390424568763,
- 38.907095806549556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02334'>Report Problem</a>",
- "NAME": "H02334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0736850536795,
- 38.90658617145866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02335'>Report Problem</a>",
- "NAME": "H02335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02738498096726,
- 38.937523301100654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02336'>Report Problem</a>",
- "NAME": "H02336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02210405876517,
- 38.97444338354282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02337'>Report Problem</a>",
- "NAME": "H02337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01540317949495,
- 38.94419583591626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02338'>Report Problem</a>",
- "NAME": "H02338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98102919648814,
- 38.93313137847946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02339'>Report Problem</a>",
- "NAME": "H02339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03325253716923,
- 38.97874261500374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02340'>Report Problem</a>",
- "NAME": "H02340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02270380188011,
- 38.948318853281684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02341'>Report Problem</a>",
- "NAME": "H02341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05852972304771,
- 38.94960475114349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02342'>Report Problem</a>",
- "NAME": "H02342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02265472074242,
- 38.94720796189297,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02343'>Report Problem</a>",
- "NAME": "H02343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06004257485797,
- 38.94974622462952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02344'>Report Problem</a>",
- "NAME": "H02344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02229117767558,
- 38.95435528586214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02345'>Report Problem</a>",
- "NAME": "H02345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02437869634737,
- 38.963815603690286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02346'>Report Problem</a>",
- "NAME": "H02346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0863398599611,
- 38.93140770002392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02347'>Report Problem</a>",
- "NAME": "H02347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07446003484272,
- 38.941327354464335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, UNKNOWN<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02348'>Report Problem</a>",
- "NAME": "H02348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96154788233297,
- 38.88008251981319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02349'>Report Problem</a>",
- "NAME": "H02349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96154002356586,
- 38.87888276159043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02350'>Report Problem</a>",
- "NAME": "H02350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93908433394238,
- 38.8934714628045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02351'>Report Problem</a>",
- "NAME": "H02351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07696174519677,
- 38.94465288288187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02352'>Report Problem</a>",
- "NAME": "H02352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98452707218469,
- 38.901437705643566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02353'>Report Problem</a>",
- "NAME": "H02353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98307120359952,
- 38.90081204453013,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02354'>Report Problem</a>",
- "NAME": "H02354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93102057926296,
- 38.89633370372234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02355'>Report Problem</a>",
- "NAME": "H02355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07686396891907,
- 38.94557105371419,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02356'>Report Problem</a>",
- "NAME": "H02356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01993727557146,
- 38.95435635055435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02537'>Report Problem</a>",
- "NAME": "H02537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02209995807004,
- 38.953183598728174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02538'>Report Problem</a>",
- "NAME": "H02538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06995344197567,
- 38.96318493822173,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02539'>Report Problem</a>",
- "NAME": "H02539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05797381075922,
- 38.947811245690204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02540'>Report Problem</a>",
- "NAME": "H02540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04449249888805,
- 38.925093566962765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02541'>Report Problem</a>",
- "NAME": "H02541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0437313994238,
- 38.92561112986625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02542'>Report Problem</a>",
- "NAME": "H02542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00197057048362,
- 38.90475721992508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02543'>Report Problem</a>",
- "NAME": "H02543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02375637682073,
- 38.95183478987163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02544'>Report Problem</a>",
- "NAME": "H02544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99837148869801,
- 38.925685088396534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02545'>Report Problem</a>",
- "NAME": "H02545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08481166732525,
- 38.931418250656556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02546'>Report Problem</a>",
- "NAME": "H02546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08629146874243,
- 38.92899860671544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02547'>Report Problem</a>",
- "NAME": "H02547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02112517659566,
- 38.94632188757306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02548'>Report Problem</a>",
- "NAME": "H02548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02736025955492,
- 38.936883015159765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02549'>Report Problem</a>",
- "NAME": "H02549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98936423250684,
- 38.90719653759504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02550'>Report Problem</a>",
- "NAME": "H02550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02207064350374,
- 38.94975706476989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02551'>Report Problem</a>",
- "NAME": "H02551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01812887101255,
- 38.97134578442292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02552'>Report Problem</a>",
- "NAME": "H02552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00739160628679,
- 38.87830452196592,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02553'>Report Problem</a>",
- "NAME": "H02553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07163552106215,
- 38.93798426750831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/27/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02554'>Report Problem</a>",
- "NAME": "H02554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06756916848134,
- 38.93547454431843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02555'>Report Problem</a>",
- "NAME": "H02555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01651326188556,
- 38.972391069128726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02556'>Report Problem</a>",
- "NAME": "H02556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0585651147206,
- 38.94678061981897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02557'>Report Problem</a>",
- "NAME": "H02557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0684987768037,
- 38.97208718020293,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02558'>Report Problem</a>",
- "NAME": "H02558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97931488199157,
- 38.88543187362759,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02559'>Report Problem</a>",
- "NAME": "H02559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99225677604774,
- 38.842720862144745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02560'>Report Problem</a>",
- "NAME": "H02560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01994621168303,
- 38.96600593455622,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02561'>Report Problem</a>",
- "NAME": "H02561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02298645342249,
- 38.95102629822155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02562'>Report Problem</a>",
- "NAME": "H02562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00066602198648,
- 38.91583061255836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02563'>Report Problem</a>",
- "NAME": "H02563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02178695993496,
- 38.94844942256115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02564'>Report Problem</a>",
- "NAME": "H02564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99012191567768,
- 38.940768527745675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02565'>Report Problem</a>",
- "NAME": "H02565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06699514622558,
- 38.905166258010226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02566'>Report Problem</a>",
- "NAME": "H02566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06787837762634,
- 38.90495225024058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02567'>Report Problem</a>",
- "NAME": "H02567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06206805278661,
- 38.90527136838642,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02568'>Report Problem</a>",
- "NAME": "H02568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06339878951073,
- 38.90505979534415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02569'>Report Problem</a>",
- "NAME": "H02569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04119047446572,
- 38.944128490494286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02570'>Report Problem</a>",
- "NAME": "H02570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06536083795007,
- 38.931337510721534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02571'>Report Problem</a>",
- "NAME": "H02571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08735842976952,
- 38.92953195304519,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02572'>Report Problem</a>",
- "NAME": "H02572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97886664211478,
- 38.88691051908534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02573'>Report Problem</a>",
- "NAME": "H02573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02234745800985,
- 38.96205548185861,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02574'>Report Problem</a>",
- "NAME": "H02574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05264608758037,
- 38.931277610454146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02575'>Report Problem</a>",
- "NAME": "H02575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0499058828883,
- 38.93111799632543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02576'>Report Problem</a>",
- "NAME": "H02576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98576094399658,
- 38.90093807891935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02577'>Report Problem</a>",
- "NAME": "H02577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07034337570465,
- 38.96586660483941,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02578'>Report Problem</a>",
- "NAME": "H02578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03356365134552,
- 38.98233090562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02579'>Report Problem</a>",
- "NAME": "H02579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03356402105845,
- 38.9814006899206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02580'>Report Problem</a>",
- "NAME": "H02580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03462407441155,
- 38.982331452288975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02581'>Report Problem</a>",
- "NAME": "H02581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07589391357558,
- 38.94120904523332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02582'>Report Problem</a>",
- "NAME": "H02582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07909860910051,
- 38.94706214563604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02583'>Report Problem</a>",
- "NAME": "H02583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07723277946742,
- 38.94306461496949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02584'>Report Problem</a>",
- "NAME": "H02584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07656531354291,
- 38.94229559292867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02585'>Report Problem</a>",
- "NAME": "H02585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07567379257732,
- 38.94045803139844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02586'>Report Problem</a>",
- "NAME": "H02586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07413278665766,
- 38.93770752485326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02587'>Report Problem</a>",
- "NAME": "H02587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07331951862218,
- 38.93623038838182,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02588'>Report Problem</a>",
- "NAME": "H02588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0245030808214,
- 38.97139829362167,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02589'>Report Problem</a>",
- "NAME": "H02589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01990199905,
- 38.94986527411361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02590'>Report Problem</a>",
- "NAME": "H02590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01789066704265,
- 38.97350309510924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02591'>Report Problem</a>",
- "NAME": "H02591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0007294738845,
- 38.922415780367054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02592'>Report Problem</a>",
- "NAME": "H02592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0272675620226,
- 38.938548247373376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02593'>Report Problem</a>",
- "NAME": "H02593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00916266815548,
- 38.95876382199242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02594'>Report Problem</a>",
- "NAME": "H02594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9357146481344,
- 38.89978131465113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02595'>Report Problem</a>",
- "NAME": "H02595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03664550685504,
- 38.967845349898745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02596'>Report Problem</a>",
- "NAME": "H02596"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07328740185461,
- 38.92905439999068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02597'>Report Problem</a>",
- "NAME": "H02597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97604628676176,
- 38.934164130205055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02598'>Report Problem</a>",
- "NAME": "H02598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95972973043133,
- 38.88297298724842,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02599'>Report Problem</a>",
- "NAME": "H02599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95997294891637,
- 38.88359457741618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02600'>Report Problem</a>",
- "NAME": "H02600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02201973572386,
- 38.951891125277406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02601'>Report Problem</a>",
- "NAME": "H02601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97984624043404,
- 38.934947902801184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02602'>Report Problem</a>",
- "NAME": "H02602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0625062994089,
- 38.93843053414935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02603'>Report Problem</a>",
- "NAME": "H02603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96592309936018,
- 38.9351485936903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02604'>Report Problem</a>",
- "NAME": "H02604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98429827931386,
- 38.90578355671845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02605'>Report Problem</a>",
- "NAME": "H02605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96284765886905,
- 38.93293790192038,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02606'>Report Problem</a>",
- "NAME": "H02606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09418305797594,
- 38.95109207168437,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02607'>Report Problem</a>",
- "NAME": "H02607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99234638111264,
- 38.92385113399154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02608'>Report Problem</a>",
- "NAME": "H02608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96024224750482,
- 38.86058591036806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02609'>Report Problem</a>",
- "NAME": "H02609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97424814716976,
- 38.9382155544687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02610'>Report Problem</a>",
- "NAME": "H02610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9752600565698,
- 38.93821872774666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02611'>Report Problem</a>",
- "NAME": "H02611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97208111033463,
- 38.93607823484159,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 02/20/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02612'>Report Problem</a>",
- "NAME": "H02612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04881156595594,
- 38.89358395097665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02613'>Report Problem</a>",
- "NAME": "H02613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07703142445881,
- 38.95630483572565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02614'>Report Problem</a>",
- "NAME": "H02614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01982393727567,
- 38.96999904805907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02615'>Report Problem</a>",
- "NAME": "H02615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97429970712867,
- 38.93728397289016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02616'>Report Problem</a>",
- "NAME": "H02616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08615064137359,
- 38.95454302150347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02617'>Report Problem</a>",
- "NAME": "H02617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98822548703528,
- 38.941713664002535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02618'>Report Problem</a>",
- "NAME": "H02618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99114896058126,
- 38.93529353037824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02619'>Report Problem</a>",
- "NAME": "H02619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99104248181496,
- 38.936285939543026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02620'>Report Problem</a>",
- "NAME": "H02620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08826919835818,
- 38.907729970032534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02621'>Report Problem</a>",
- "NAME": "H02621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.080677145523,
- 38.949630408745456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02622'>Report Problem</a>",
- "NAME": "H02622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98465105467753,
- 38.90264300390329,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02623'>Report Problem</a>",
- "NAME": "H02623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02712628166776,
- 38.94395715481392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02624'>Report Problem</a>",
- "NAME": "H02624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02333724266687,
- 38.96558114465148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02625'>Report Problem</a>",
- "NAME": "H02625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08870407217199,
- 38.93039269272922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02626'>Report Problem</a>",
- "NAME": "H02626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07343974357367,
- 38.95162130597298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02627'>Report Problem</a>",
- "NAME": "H02627"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9761044289552,
- 38.89954085591208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02628'>Report Problem</a>",
- "NAME": "H02628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0781152624224,
- 38.95890564928163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02629'>Report Problem</a>",
- "NAME": "H02629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03573578521663,
- 38.906870048628264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02630'>Report Problem</a>",
- "NAME": "H02630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07553694946108,
- 38.91524895262129,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02631'>Report Problem</a>",
- "NAME": "H02631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06302838633292,
- 38.91333295411593,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02632'>Report Problem</a>",
- "NAME": "H02632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05397875475903,
- 38.91777949496411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02633'>Report Problem</a>",
- "NAME": "H02633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.981249544108,
- 38.93488892478633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02634'>Report Problem</a>",
- "NAME": "H02634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0243342749057,
- 38.95915744459947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02635'>Report Problem</a>",
- "NAME": "H02635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02398777772999,
- 38.958520578233106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02636'>Report Problem</a>",
- "NAME": "H02636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0287741749278,
- 38.96183474398523,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02637'>Report Problem</a>",
- "NAME": "H02637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02237690928489,
- 38.96674090982503,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02662'>Report Problem</a>",
- "NAME": "H02662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02304635422067,
- 38.978263032441106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02663'>Report Problem</a>",
- "NAME": "H02663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03630327820098,
- 38.93441061193483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02664'>Report Problem</a>",
- "NAME": "H02664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0273384955068,
- 38.967236452604865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02665'>Report Problem</a>",
- "NAME": "H02665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02581937400355,
- 38.96732372744953,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02666'>Report Problem</a>",
- "NAME": "H02666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97793423332969,
- 38.93403952970115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02667'>Report Problem</a>",
- "NAME": "H02667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97977231362411,
- 38.93602750772483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02668'>Report Problem</a>",
- "NAME": "H02668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98468499851424,
- 38.937099260193314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02669'>Report Problem</a>",
- "NAME": "H02669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00797525587318,
- 38.95867309675644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02670'>Report Problem</a>",
- "NAME": "H02670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02960082318928,
- 38.98312918478488,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02671'>Report Problem</a>",
- "NAME": "H02671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02960259495912,
- 38.98147660893936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02672'>Report Problem</a>",
- "NAME": "H02672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99131299040658,
- 38.94120618200432,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02673'>Report Problem</a>",
- "NAME": "H02673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99287880185298,
- 38.92456820278567,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02674'>Report Problem</a>",
- "NAME": "H02674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08248717048006,
- 38.91174893592211,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02675'>Report Problem</a>",
- "NAME": "H02675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05379829564731,
- 38.95061637448283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02676'>Report Problem</a>",
- "NAME": "H02676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05708032507926,
- 38.94972104399757,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02677'>Report Problem</a>",
- "NAME": "H02677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97411396213127,
- 38.93956547173503,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02678'>Report Problem</a>",
- "NAME": "H02678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05337147216997,
- 38.90160242723158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02679'>Report Problem</a>",
- "NAME": "H02679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07455248321001,
- 38.94389393758971,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02680'>Report Problem</a>",
- "NAME": "H02680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07574402514736,
- 38.92745986634318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02681'>Report Problem</a>",
- "NAME": "H02681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98664967428418,
- 38.90137634132128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02682'>Report Problem</a>",
- "NAME": "H02682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96547678509202,
- 38.92666725791586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02683'>Report Problem</a>",
- "NAME": "H02683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06913209618116,
- 38.96104876759208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02684'>Report Problem</a>",
- "NAME": "H02684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0415338475478,
- 38.9197369200528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02685'>Report Problem</a>",
- "NAME": "H02685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98835980872528,
- 38.942789699430485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02686'>Report Problem</a>",
- "NAME": "H02686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01354477416085,
- 38.96275094578935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02687'>Report Problem</a>",
- "NAME": "H02687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02587272128599,
- 38.960082658725554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02688'>Report Problem</a>",
- "NAME": "H02688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06967068092413,
- 38.96198036107136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02689'>Report Problem</a>",
- "NAME": "H02689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02288262501449,
- 38.90024466559525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02690'>Report Problem</a>",
- "NAME": "H02690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06598766397853,
- 38.9586972127499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02691'>Report Problem</a>",
- "NAME": "H02691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06571669484644,
- 38.959878960853544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02692'>Report Problem</a>",
- "NAME": "H02692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03608807839835,
- 38.970773372655756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02693'>Report Problem</a>",
- "NAME": "H02693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00703976734135,
- 38.835064416182405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02694'>Report Problem</a>",
- "NAME": "H02694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00624204787314,
- 38.83476679510385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02695'>Report Problem</a>",
- "NAME": "H02695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9850618348579,
- 38.900697522529086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02696'>Report Problem</a>",
- "NAME": "H02696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08652146281827,
- 38.93701534412659,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02697'>Report Problem</a>",
- "NAME": "H02697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0210259953851,
- 38.953136052981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02698'>Report Problem</a>",
- "NAME": "H02698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07304574402293,
- 38.9194310966336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02699'>Report Problem</a>",
- "NAME": "H02699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96245836531008,
- 38.93097153451782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02700'>Report Problem</a>",
- "NAME": "H02700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96520489309603,
- 38.92012397459474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02701'>Report Problem</a>",
- "NAME": "H02701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02797906534607,
- 38.98123057075456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02702'>Report Problem</a>",
- "NAME": "H02702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9660450441877,
- 38.92122865140622,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02703'>Report Problem</a>",
- "NAME": "H02703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01754489592821,
- 38.94741380583731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02704'>Report Problem</a>",
- "NAME": "H02704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07454823026318,
- 38.944702632269674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02705'>Report Problem</a>",
- "NAME": "H02705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03606783135201,
- 38.96998530213775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02706'>Report Problem</a>",
- "NAME": "H02706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01796820270324,
- 38.96278505851114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02707'>Report Problem</a>",
- "NAME": "H02707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02717417225318,
- 38.89846227093731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02708'>Report Problem</a>",
- "NAME": "H02708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02690274488064,
- 38.89906856041094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02709'>Report Problem</a>",
- "NAME": "H02709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02126259584207,
- 38.9672276079961,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02710'>Report Problem</a>",
- "NAME": "H02710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02681234424902,
- 38.8974490669438,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02711'>Report Problem</a>",
- "NAME": "H02711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0121051916335,
- 38.87449751374221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02712'>Report Problem</a>",
- "NAME": "H02712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01979880651939,
- 38.95937432761223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02713'>Report Problem</a>",
- "NAME": "H02713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96149342565168,
- 38.93176697841911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02714'>Report Problem</a>",
- "NAME": "H02714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01998635169623,
- 38.960232305185635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02715'>Report Problem</a>",
- "NAME": "H02715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07549380151357,
- 38.91446445342166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02716'>Report Problem</a>",
- "NAME": "H02716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96026513547736,
- 38.85954099530886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02717'>Report Problem</a>",
- "NAME": "H02717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04246905200324,
- 38.922676225441805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02718'>Report Problem</a>",
- "NAME": "H02718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05754488275126,
- 38.959587734298275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02719'>Report Problem</a>",
- "NAME": "H02719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96158842123879,
- 38.85954069045356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02720'>Report Problem</a>",
- "NAME": "H02720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02125660353127,
- 38.9686858544096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02721'>Report Problem</a>",
- "NAME": "H02721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09095103126786,
- 38.930336438438886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02722'>Report Problem</a>",
- "NAME": "H02722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97603374596963,
- 38.90013634801519,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, ALorton<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02723'>Report Problem</a>",
- "NAME": "H02723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10634529491905,
- 38.926696218793246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02724'>Report Problem</a>",
- "NAME": "H02724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06292700337468,
- 38.96457792209319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02725'>Report Problem</a>",
- "NAME": "H02725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01733118435389,
- 38.94841755808591,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02726'>Report Problem</a>",
- "NAME": "H02726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06149210630153,
- 38.964874687582615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02727'>Report Problem</a>",
- "NAME": "H02727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0757762150883,
- 38.92630087141769,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02728'>Report Problem</a>",
- "NAME": "H02728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99381977499158,
- 38.88684027247317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02729'>Report Problem</a>",
- "NAME": "H02729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96073549382282,
- 38.879231947439266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02730'>Report Problem</a>",
- "NAME": "H02730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02962030494675,
- 38.94412082455208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02468'>Report Problem</a>",
- "NAME": "H02468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01787494925566,
- 38.97239819261687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02469'>Report Problem</a>",
- "NAME": "H02469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05243315647581,
- 38.917893523510216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02470'>Report Problem</a>",
- "NAME": "H02470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05231553649288,
- 38.918769852511254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02471'>Report Problem</a>",
- "NAME": "H02471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99959125427705,
- 38.9174707876315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02472'>Report Problem</a>",
- "NAME": "H02472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99024512411675,
- 38.906418140100186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02473'>Report Problem</a>",
- "NAME": "H02473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98902682534181,
- 38.90450224431941,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02474'>Report Problem</a>",
- "NAME": "H02474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02870471880496,
- 38.982184671468154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02475'>Report Problem</a>",
- "NAME": "H02475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02713414932595,
- 38.96999227447476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02476'>Report Problem</a>",
- "NAME": "H02476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03356480911077,
- 38.97944754535645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02477'>Report Problem</a>",
- "NAME": "H02477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07295081865969,
- 38.91707568445428,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02478'>Report Problem</a>",
- "NAME": "H02478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0125781038407,
- 38.97131856063084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02479'>Report Problem</a>",
- "NAME": "H02479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08210481711443,
- 38.95895057851505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02480'>Report Problem</a>",
- "NAME": "H02480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07023686575405,
- 38.96482982831641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02481'>Report Problem</a>",
- "NAME": "H02481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96878861215555,
- 38.872989279174504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02482'>Report Problem</a>",
- "NAME": "H02482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07155048194703,
- 38.90859926968672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02483'>Report Problem</a>",
- "NAME": "H02483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98536050657182,
- 38.85852835561634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02484'>Report Problem</a>",
- "NAME": "H02484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98235192635182,
- 38.86829500818065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02485'>Report Problem</a>",
- "NAME": "H02485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0617300239778,
- 38.95084857131873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02486'>Report Problem</a>",
- "NAME": "H02486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01958554387404,
- 38.94833879409187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02487'>Report Problem</a>",
- "NAME": "H02487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98389137909558,
- 38.928002639573705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02488'>Report Problem</a>",
- "NAME": "H02488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06032114428511,
- 38.947910311200225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02489'>Report Problem</a>",
- "NAME": "H02489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98255158013245,
- 38.92987446429014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "null<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02490'>Report Problem</a>",
- "NAME": "H02490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02074332933599,
- 38.94904158230055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02491'>Report Problem</a>",
- "NAME": "H02491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00335184310933,
- 38.92338755222246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02492'>Report Problem</a>",
- "NAME": "H02492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07453920271344,
- 38.92072243430179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02493'>Report Problem</a>",
- "NAME": "H02493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02395728255865,
- 38.95312804822754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02494'>Report Problem</a>",
- "NAME": "H02494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92454893113323,
- 38.8877063556372,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02495'>Report Problem</a>",
- "NAME": "H02495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98504739161407,
- 38.867635572547385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02496'>Report Problem</a>",
- "NAME": "H02496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96141689939331,
- 38.86160613865794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02497'>Report Problem</a>",
- "NAME": "H02497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96470789694999,
- 38.860826203846194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02498'>Report Problem</a>",
- "NAME": "H02498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9615870524531,
- 38.86054263367201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02499'>Report Problem</a>",
- "NAME": "H02499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01377791304122,
- 38.967142484485365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02500'>Report Problem</a>",
- "NAME": "H02500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99159569783862,
- 38.89189301251123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 11/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02501'>Report Problem</a>",
- "NAME": "H02501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0081087729727,
- 38.91265720106606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02502'>Report Problem</a>",
- "NAME": "H02502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02386091420239,
- 38.94912544014645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02503'>Report Problem</a>",
- "NAME": "H02503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01981977463699,
- 38.91524145511604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02504'>Report Problem</a>",
- "NAME": "H02504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04653791578609,
- 38.93440476891451,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02505'>Report Problem</a>",
- "NAME": "H02505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0386704240855,
- 38.94715544969017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02506'>Report Problem</a>",
- "NAME": "H02506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9853012082339,
- 38.903105026892945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02507'>Report Problem</a>",
- "NAME": "H02507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98476570891793,
- 38.903874668000846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02508'>Report Problem</a>",
- "NAME": "H02508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9841988909006,
- 38.904671678696246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02509'>Report Problem</a>",
- "NAME": "H02509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08614169405193,
- 38.93254277613375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02510'>Report Problem</a>",
- "NAME": "H02510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08635531173482,
- 38.93033880742206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81A<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02511'>Report Problem</a>",
- "NAME": "H02511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99136181329705,
- 38.9056356457202,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02512'>Report Problem</a>",
- "NAME": "H02512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99361190640226,
- 38.92850485165855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02513'>Report Problem</a>",
- "NAME": "H02513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96407524474564,
- 38.93292952060768,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02515'>Report Problem</a>",
- "NAME": "H02515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07286678357575,
- 38.92995519697157,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02516'>Report Problem</a>",
- "NAME": "H02516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07291624480223,
- 38.93068437990354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02517'>Report Problem</a>",
- "NAME": "H02517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09691804556762,
- 38.94973736942091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02518'>Report Problem</a>",
- "NAME": "H02518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01659968397014,
- 38.94648048790097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02519'>Report Problem</a>",
- "NAME": "H02519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05583635193537,
- 38.91732244921431,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02520'>Report Problem</a>",
- "NAME": "H02520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01926967817015,
- 38.94514473561404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02521'>Report Problem</a>",
- "NAME": "H02521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03400513235559,
- 38.927473059401436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02522'>Report Problem</a>",
- "NAME": "H02522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00461969193535,
- 38.91253773335434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02523'>Report Problem</a>",
- "NAME": "H02523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97907626040227,
- 38.88315960146201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02524'>Report Problem</a>",
- "NAME": "H02524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0223726676866,
- 38.96506522365824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02525'>Report Problem</a>",
- "NAME": "H02525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02237380545215,
- 38.96604305965153,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02526'>Report Problem</a>",
- "NAME": "H02526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02105290772236,
- 38.96558644269551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02527'>Report Problem</a>",
- "NAME": "H02527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96175158600312,
- 38.92230999037113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02528'>Report Problem</a>",
- "NAME": "H02528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02429424818841,
- 38.96483765219254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02529'>Report Problem</a>",
- "NAME": "H02529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08384401659636,
- 38.92899800094187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02530'>Report Problem</a>",
- "NAME": "H02530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97407244182004,
- 38.934161925371164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02531'>Report Problem</a>",
- "NAME": "H02531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04776528729575,
- 38.90158273835266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02532'>Report Problem</a>",
- "NAME": "H02532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0477741582394,
- 38.90074758788903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02533'>Report Problem</a>",
- "NAME": "H02533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08878949369527,
- 38.93234353971116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02534'>Report Problem</a>",
- "NAME": "H02534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0194803771406,
- 38.94642281374821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02535'>Report Problem</a>",
- "NAME": "H02535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07049248536562,
- 38.95798521892536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02536'>Report Problem</a>",
- "NAME": "H02536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02459890932167,
- 38.95198242334732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02902'>Report Problem</a>",
- "NAME": "H02902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0143887434619,
- 38.96856663211834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02903'>Report Problem</a>",
- "NAME": "H02903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02180522638218,
- 38.91772886939987,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02904'>Report Problem</a>",
- "NAME": "H02904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01940475425917,
- 38.949154055270625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02905'>Report Problem</a>",
- "NAME": "H02905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.040897844142,
- 38.98695363977869,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02906'>Report Problem</a>",
- "NAME": "H02906"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02313489206699,
- 38.94977973101786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02908'>Report Problem</a>",
- "NAME": "H02908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00003065967012,
- 38.84738203330689,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02909'>Report Problem</a>",
- "NAME": "H02909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01970155064404,
- 38.950887314757594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02910'>Report Problem</a>",
- "NAME": "H02910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08736464203297,
- 38.92760844786164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02911'>Report Problem</a>",
- "NAME": "H02911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96011631015338,
- 38.8573554648712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02912'>Report Problem</a>",
- "NAME": "H02912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08850282097029,
- 38.92756926109673,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02913'>Report Problem</a>",
- "NAME": "H02913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96386257262297,
- 38.88012288687299,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02914'>Report Problem</a>",
- "NAME": "H02914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0699376582201,
- 38.94974596661718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02915'>Report Problem</a>",
- "NAME": "H02915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99163012405444,
- 38.888394991187646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02916'>Report Problem</a>",
- "NAME": "H02916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06702757555705,
- 38.949749536027184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02917'>Report Problem</a>",
- "NAME": "H02917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07733838562105,
- 38.967086534709644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02918'>Report Problem</a>",
- "NAME": "H02918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0885831439012,
- 38.92877448591992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02919'>Report Problem</a>",
- "NAME": "H02919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06973636272916,
- 38.94885014153114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02920'>Report Problem</a>",
- "NAME": "H02920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06651544284968,
- 38.94884236163414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02921'>Report Problem</a>",
- "NAME": "H02921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06802568692844,
- 38.95146170298381,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02922'>Report Problem</a>",
- "NAME": "H02922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06524231015274,
- 38.95176906625256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02923'>Report Problem</a>",
- "NAME": "H02923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06665594828573,
- 38.951909851851,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02924'>Report Problem</a>",
- "NAME": "H02924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03176816151006,
- 38.89721848945617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02925'>Report Problem</a>",
- "NAME": "H02925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06509575606306,
- 38.950803415889446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02926'>Report Problem</a>",
- "NAME": "H02926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382306172488,
- 38.89281046491458,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02927'>Report Problem</a>",
- "NAME": "H02927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02882609154034,
- 38.90570689899109,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03087'>Report Problem</a>",
- "NAME": "H03087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04776698264268,
- 38.90850458380797,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03088'>Report Problem</a>",
- "NAME": "H03088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02815455389718,
- 38.90652160667121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03089'>Report Problem</a>",
- "NAME": "H03089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0447434790466,
- 38.90784136120179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03090'>Report Problem</a>",
- "NAME": "H03090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07078317429435,
- 38.93560885666946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03091'>Report Problem</a>",
- "NAME": "H03091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03341630351177,
- 38.919804401258716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03092'>Report Problem</a>",
- "NAME": "H03092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03208475040314,
- 38.90186314024949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03093'>Report Problem</a>",
- "NAME": "H03093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03037686585058,
- 38.905609116809615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03094'>Report Problem</a>",
- "NAME": "H03094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0425887405051,
- 38.9163995937398,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03095'>Report Problem</a>",
- "NAME": "H03095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05466293887393,
- 38.918395878206084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03096'>Report Problem</a>",
- "NAME": "H03096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05296743828444,
- 38.91890325145118,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03097'>Report Problem</a>",
- "NAME": "H03097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04041173538481,
- 38.91415293161991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03098'>Report Problem</a>",
- "NAME": "H03098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03164030582494,
- 38.899632314630544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03099'>Report Problem</a>",
- "NAME": "H03099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0433075056648,
- 38.91604122130108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03100'>Report Problem</a>",
- "NAME": "H03100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01772139508522,
- 38.892333362761406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03101'>Report Problem</a>",
- "NAME": "H03101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03208871737974,
- 38.89953363185921,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03102'>Report Problem</a>",
- "NAME": "H03102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0813364855882,
- 38.9107543116095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03103'>Report Problem</a>",
- "NAME": "H03103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02305874662248,
- 38.894909950671675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03104'>Report Problem</a>",
- "NAME": "H03104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03469703694248,
- 38.932553578595794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03105'>Report Problem</a>",
- "NAME": "H03105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02306608203807,
- 38.89599191704609,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03106'>Report Problem</a>",
- "NAME": "H03106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02341688809271,
- 38.93110941478698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03107'>Report Problem</a>",
- "NAME": "H03107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08140393638062,
- 38.91174491219483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03108'>Report Problem</a>",
- "NAME": "H03108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02307672864536,
- 38.928904419535314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03109'>Report Problem</a>",
- "NAME": "H03109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02321323735772,
- 38.929736751362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03111'>Report Problem</a>",
- "NAME": "H03111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02363740761078,
- 38.932757521025074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03112'>Report Problem</a>",
- "NAME": "H03112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02108444452564,
- 38.96020832152155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03113'>Report Problem</a>",
- "NAME": "H03113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9751703353952,
- 38.939563106514754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03114'>Report Problem</a>",
- "NAME": "H03114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01742002027113,
- 38.89345571587333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03115'>Report Problem</a>",
- "NAME": "H03115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08744946688167,
- 38.9470383515712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03116'>Report Problem</a>",
- "NAME": "H03116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08848230121285,
- 38.94713986344964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/28/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03117'>Report Problem</a>",
- "NAME": "H03117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0479340301891,
- 38.90643934270487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03118'>Report Problem</a>",
- "NAME": "H03118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04285137720532,
- 38.98895768083349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03119'>Report Problem</a>",
- "NAME": "H03119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94193495963901,
- 38.90569577398126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03120'>Report Problem</a>",
- "NAME": "H03120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98230029298894,
- 38.89551555416437,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03121'>Report Problem</a>",
- "NAME": "H03121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02365560071762,
- 38.89401038185349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03122'>Report Problem</a>",
- "NAME": "H03122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98807822613291,
- 38.86387088247043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03123'>Report Problem</a>",
- "NAME": "H03123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01971398518002,
- 38.89252267868498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03124'>Report Problem</a>",
- "NAME": "H03124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97983242169656,
- 38.864979964405556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03125'>Report Problem</a>",
- "NAME": "H03125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07296261495479,
- 38.96986861548283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03126'>Report Problem</a>",
- "NAME": "H03126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09585423574843,
- 38.93338040076271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03127'>Report Problem</a>",
- "NAME": "H03127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09741394888795,
- 38.933635001211,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03128'>Report Problem</a>",
- "NAME": "H03128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0200994217569,
- 38.89296300519965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03129'>Report Problem</a>",
- "NAME": "H03129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02608030639787,
- 38.89599669701374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03130'>Report Problem</a>",
- "NAME": "H03130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02608327485271,
- 38.89626499248735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03131'>Report Problem</a>",
- "NAME": "H03131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0260869710429,
- 38.894929600508185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03132'>Report Problem</a>",
- "NAME": "H03132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07032810487607,
- 38.96981385598583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03133'>Report Problem</a>",
- "NAME": "H03133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99106326491763,
- 38.93160310137425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03134'>Report Problem</a>",
- "NAME": "H03134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99244617314679,
- 38.93153137570906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03135'>Report Problem</a>",
- "NAME": "H03135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99361543002202,
- 38.93049740888045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03136'>Report Problem</a>",
- "NAME": "H03136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06999632434669,
- 38.94401711428125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03137'>Report Problem</a>",
- "NAME": "H03137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09425666496513,
- 38.93503335500786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03138'>Report Problem</a>",
- "NAME": "H03138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09611635346562,
- 38.93598523441239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03139'>Report Problem</a>",
- "NAME": "H03139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09610696448924,
- 38.935959352268156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03140'>Report Problem</a>",
- "NAME": "H03140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07011629969837,
- 38.944717310565544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03141'>Report Problem</a>",
- "NAME": "H03141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99236947888178,
- 38.930541628026205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03142'>Report Problem</a>",
- "NAME": "H03142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09794780001978,
- 38.935872065100014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03143'>Report Problem</a>",
- "NAME": "H03143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02854188135831,
- 38.98408985876794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02928'>Report Problem</a>",
- "NAME": "H02928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94027872795944,
- 38.901433086539136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02929'>Report Problem</a>",
- "NAME": "H02929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05837722138072,
- 38.97263133631645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02930'>Report Problem</a>",
- "NAME": "H02930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06137547955139,
- 38.923426389022524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02931'>Report Problem</a>",
- "NAME": "H02931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9451951819191,
- 38.89968399208242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02932'>Report Problem</a>",
- "NAME": "H02932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06402924165414,
- 38.97130562674562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02933'>Report Problem</a>",
- "NAME": "H02933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0200050247894,
- 38.96723731558112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02934'>Report Problem</a>",
- "NAME": "H02934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06623855970695,
- 38.96765773369292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02935'>Report Problem</a>",
- "NAME": "H02935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02000738459866,
- 38.962654657219545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02936'>Report Problem</a>",
- "NAME": "H02936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08852181372436,
- 38.95709113065836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02937'>Report Problem</a>",
- "NAME": "H02937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02187068391794,
- 38.9491867343747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02938'>Report Problem</a>",
- "NAME": "H02938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01762649204353,
- 38.94994516439553,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02939'>Report Problem</a>",
- "NAME": "H02939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08852757171282,
- 38.95600494548803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02940'>Report Problem</a>",
- "NAME": "H02940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02215820738881,
- 38.95088274915812,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02941'>Report Problem</a>",
- "NAME": "H02941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97110287178758,
- 38.86829860368583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02942'>Report Problem</a>",
- "NAME": "H02942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.101181272711,
- 38.92303626298996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02943'>Report Problem</a>",
- "NAME": "H02943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03668272521205,
- 38.9472520915482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02944'>Report Problem</a>",
- "NAME": "H02944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9827990160731,
- 38.935010991342544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02945'>Report Problem</a>",
- "NAME": "H02945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98292247631936,
- 38.93399192734275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02946'>Report Problem</a>",
- "NAME": "H02946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9862392881322,
- 38.92987011919891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 12/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02947'>Report Problem</a>",
- "NAME": "H02947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96580306856188,
- 38.931464603772504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03227'>Report Problem</a>",
- "NAME": "H03227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02092291998343,
- 38.950915451586106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02731'>Report Problem</a>",
- "NAME": "H02731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99504803004115,
- 38.886799640154344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02732'>Report Problem</a>",
- "NAME": "H02732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03356052041585,
- 38.98325528461156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02733'>Report Problem</a>",
- "NAME": "H02733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97735925089813,
- 38.90376141255918,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02734'>Report Problem</a>",
- "NAME": "H02734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05700505788282,
- 38.929619667189975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02735'>Report Problem</a>",
- "NAME": "H02735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98823540752882,
- 38.88690853239119,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02736'>Report Problem</a>",
- "NAME": "H02736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99369186423148,
- 38.888211782237654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02737'>Report Problem</a>",
- "NAME": "H02737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98847055158396,
- 38.885407291194156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02738'>Report Problem</a>",
- "NAME": "H02738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0644464776546,
- 38.975088712227425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81D<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02739'>Report Problem</a>",
- "NAME": "H02739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04781167214053,
- 38.92154345500451,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02740'>Report Problem</a>",
- "NAME": "H02740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04792649812599,
- 38.92060728084153,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02741'>Report Problem</a>",
- "NAME": "H02741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04697267821008,
- 38.91787419006351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02742'>Report Problem</a>",
- "NAME": "H02742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08377053342369,
- 38.949734683898505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02743'>Report Problem</a>",
- "NAME": "H02743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92615456755493,
- 38.89730507398183,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02744'>Report Problem</a>",
- "NAME": "H02744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04023335344576,
- 38.94750085820114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02745'>Report Problem</a>",
- "NAME": "H02745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04991627848544,
- 38.914764554297705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02746'>Report Problem</a>",
- "NAME": "H02746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98939281339175,
- 38.88541362139925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02747'>Report Problem</a>",
- "NAME": "H02747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03317375143408,
- 38.91266352015362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02748'>Report Problem</a>",
- "NAME": "H02748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9893943475846,
- 38.88416452819514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02749'>Report Problem</a>",
- "NAME": "H02749"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0498702157463,
- 38.91585565446687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02750'>Report Problem</a>",
- "NAME": "H02750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98935164636526,
- 38.94277262419313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02751'>Report Problem</a>",
- "NAME": "H02751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98558657960098,
- 38.87850638413591,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02752'>Report Problem</a>",
- "NAME": "H02752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98920779018394,
- 38.94171793866747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02753'>Report Problem</a>",
- "NAME": "H02753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05958974015776,
- 38.93686741519019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02754'>Report Problem</a>",
- "NAME": "H02754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96386806478893,
- 38.923377069036455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02755'>Report Problem</a>",
- "NAME": "H02755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96500196998929,
- 38.92349271161427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02756'>Report Problem</a>",
- "NAME": "H02756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99623721789736,
- 38.9051931170514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02757'>Report Problem</a>",
- "NAME": "H02757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1041711439131,
- 38.93034687873001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Super Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02758'>Report Problem</a>",
- "NAME": "H02758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10567693920379,
- 38.93034570706572,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02759'>Report Problem</a>",
- "NAME": "H02759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06978821523562,
- 38.95321953843046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02760'>Report Problem</a>",
- "NAME": "H02760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0182030047528,
- 38.95784771400652,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02762'>Report Problem</a>",
- "NAME": "H02762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06113582979371,
- 38.908504650197806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02763'>Report Problem</a>",
- "NAME": "H02763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02846546381095,
- 38.96597802008824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02764'>Report Problem</a>",
- "NAME": "H02764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02851827276753,
- 38.96498652348279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02765'>Report Problem</a>",
- "NAME": "H02765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98822260263263,
- 38.939553142292176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02766'>Report Problem</a>",
- "NAME": "H02766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05418627623949,
- 38.94846208211238,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02767'>Report Problem</a>",
- "NAME": "H02767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98958252679594,
- 38.88913655821772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02768'>Report Problem</a>",
- "NAME": "H02768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9874939143268,
- 38.889722239991485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02769'>Report Problem</a>",
- "NAME": "H02769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98821542043567,
- 38.88963535716788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02770'>Report Problem</a>",
- "NAME": "H02770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02429468621548,
- 38.96023289465471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02771'>Report Problem</a>",
- "NAME": "H02771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02097121178902,
- 38.95197530217497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02772'>Report Problem</a>",
- "NAME": "H02772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01810356806486,
- 38.966000198826286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02773'>Report Problem</a>",
- "NAME": "H02773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98838392888722,
- 38.8881346416142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02774'>Report Problem</a>",
- "NAME": "H02774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02408738607409,
- 38.96662288628026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02775'>Report Problem</a>",
- "NAME": "H02775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97849885896642,
- 38.935017233813696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02776'>Report Problem</a>",
- "NAME": "H02776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99015482688863,
- 38.882948561934825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02777'>Report Problem</a>",
- "NAME": "H02777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01355757632085,
- 38.963875020878895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02778'>Report Problem</a>",
- "NAME": "H02778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0620770271892,
- 38.93738847588149,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02779'>Report Problem</a>",
- "NAME": "H02779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0645353958969,
- 38.93715377542695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/26/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02780'>Report Problem</a>",
- "NAME": "H02780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99142816172018,
- 38.88300746006085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02781'>Report Problem</a>",
- "NAME": "H02781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99389191034899,
- 38.88354791080574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02782'>Report Problem</a>",
- "NAME": "H02782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9936908099422,
- 38.88527491529525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02783'>Report Problem</a>",
- "NAME": "H02783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487984117705,
- 38.88536244485919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02784'>Report Problem</a>",
- "NAME": "H02784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9577998695163,
- 38.92928478786997,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02785'>Report Problem</a>",
- "NAME": "H02785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99736249516249,
- 38.888732606981996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02786'>Report Problem</a>",
- "NAME": "H02786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03606541976758,
- 38.98042876017387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02787'>Report Problem</a>",
- "NAME": "H02787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03664211062159,
- 38.98092221336629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02788'>Report Problem</a>",
- "NAME": "H02788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03840386489804,
- 38.98111491950425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02789'>Report Problem</a>",
- "NAME": "H02789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06459310015308,
- 38.96299674096101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02790'>Report Problem</a>",
- "NAME": "H02790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06400379625342,
- 38.964058777672626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02791'>Report Problem</a>",
- "NAME": "H02791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0862127218135,
- 38.949601792913846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02792'>Report Problem</a>",
- "NAME": "H02792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00210435365605,
- 38.88681820235681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02793'>Report Problem</a>",
- "NAME": "H02793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01761415501166,
- 38.9493189740229,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02794'>Report Problem</a>",
- "NAME": "H02794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08633562595578,
- 38.94872322377017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02795'>Report Problem</a>",
- "NAME": "H02795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02811227340482,
- 38.97806615772773,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02796'>Report Problem</a>",
- "NAME": "H02796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03267863074426,
- 38.97804039652529,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02797'>Report Problem</a>",
- "NAME": "H02797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02287541079497,
- 38.89859864151087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02798'>Report Problem</a>",
- "NAME": "H02798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00337703261773,
- 38.88742496789653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02799'>Report Problem</a>",
- "NAME": "H02799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01564936281108,
- 38.97381538961255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02800'>Report Problem</a>",
- "NAME": "H02800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07231816644787,
- 38.944053706900114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02801'>Report Problem</a>",
- "NAME": "H02801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02504822445354,
- 38.970792022856486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02802'>Report Problem</a>",
- "NAME": "H02802"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00480546922454,
- 38.883310042204364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02803'>Report Problem</a>",
- "NAME": "H02803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00708853196168,
- 38.88435647499218,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02804'>Report Problem</a>",
- "NAME": "H02804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03507066553969,
- 38.9583983566694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02805'>Report Problem</a>",
- "NAME": "H02805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06049350439324,
- 38.908516443147796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02806'>Report Problem</a>",
- "NAME": "H02806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96497734743998,
- 38.93622278809826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02807'>Report Problem</a>",
- "NAME": "H02807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03606738466014,
- 38.983261699971635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02808'>Report Problem</a>",
- "NAME": "H02808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03517450948188,
- 38.957169778796455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02809'>Report Problem</a>",
- "NAME": "H02809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96355366677835,
- 38.92123712547026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02810'>Report Problem</a>",
- "NAME": "H02810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00914653023953,
- 38.88443489407119,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02811'>Report Problem</a>",
- "NAME": "H02811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02886988744604,
- 38.9498790328301,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02812'>Report Problem</a>",
- "NAME": "H02812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0376500024943,
- 38.96976644371336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02813'>Report Problem</a>",
- "NAME": "H02813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99159666743031,
- 38.89129452337258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02814'>Report Problem</a>",
- "NAME": "H02814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03755681828297,
- 38.925968484214685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02815'>Report Problem</a>",
- "NAME": "H02815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0386499319476,
- 38.92640204939267,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02816'>Report Problem</a>",
- "NAME": "H02816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9883723361935,
- 38.89681694406874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02817'>Report Problem</a>",
- "NAME": "H02817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05920013940896,
- 38.96484396320037,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02818'>Report Problem</a>",
- "NAME": "H02818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03981729799737,
- 38.98593162585151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02819'>Report Problem</a>",
- "NAME": "H02819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03666006178169,
- 38.98577612233834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02820'>Report Problem</a>",
- "NAME": "H02820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95936042291098,
- 38.89707316470831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02821'>Report Problem</a>",
- "NAME": "H02821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09662060489372,
- 38.91815114002967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02822'>Report Problem</a>",
- "NAME": "H02822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.038639075481,
- 38.92535102565968,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02823'>Report Problem</a>",
- "NAME": "H02823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0160874479547,
- 38.95755364327408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02824'>Report Problem</a>",
- "NAME": "H02824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98358950539925,
- 38.883975023099254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02825'>Report Problem</a>",
- "NAME": "H02825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0115096236005,
- 38.95771178306311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02826'>Report Problem</a>",
- "NAME": "H02826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02872088746602,
- 38.98327030166299,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02827'>Report Problem</a>",
- "NAME": "H02827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98838783107377,
- 38.90544650991937,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02828'>Report Problem</a>",
- "NAME": "H02828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03497602345617,
- 38.979443789792036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02829'>Report Problem</a>",
- "NAME": "H02829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98450900238207,
- 38.89365593737253,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02830'>Report Problem</a>",
- "NAME": "H02830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9845065187825,
- 38.89468862931972,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02831'>Report Problem</a>",
- "NAME": "H02831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06116240964118,
- 38.930197061130215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02832'>Report Problem</a>",
- "NAME": "H02832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04515146176038,
- 38.919536178937236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02833'>Report Problem</a>",
- "NAME": "H02833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05939895076244,
- 38.91197129015594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02834'>Report Problem</a>",
- "NAME": "H02834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98681380517935,
- 38.907733012885835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02835'>Report Problem</a>",
- "NAME": "H02835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00553069177245,
- 38.91190689388572,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02836'>Report Problem</a>",
- "NAME": "H02836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99250686626317,
- 38.903827856858626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02837'>Report Problem</a>",
- "NAME": "H02837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04962914635318,
- 38.90316895449359,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02838'>Report Problem</a>",
- "NAME": "H02838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05247266824095,
- 38.9001298416467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02839'>Report Problem</a>",
- "NAME": "H02839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97604911519802,
- 38.936216266633835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02840'>Report Problem</a>",
- "NAME": "H02840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03042100750358,
- 38.89976240391909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02841'>Report Problem</a>",
- "NAME": "H02841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04001351905193,
- 38.924347387804595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02842'>Report Problem</a>",
- "NAME": "H02842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.034326080924,
- 38.91816797296458,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02843'>Report Problem</a>",
- "NAME": "H02843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05135344376176,
- 38.901848683339836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02844'>Report Problem</a>",
- "NAME": "H02844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9848926326764,
- 38.906201235112746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02845'>Report Problem</a>",
- "NAME": "H02845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03861924822975,
- 38.91190855187142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02846'>Report Problem</a>",
- "NAME": "H02846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01981758338732,
- 38.95213004931649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02847'>Report Problem</a>",
- "NAME": "H02847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9873312335747,
- 38.94188502526387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02848'>Report Problem</a>",
- "NAME": "H02848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06897721180758,
- 38.90789082427492,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02849'>Report Problem</a>",
- "NAME": "H02849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96011635569127,
- 38.85842863853633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02850'>Report Problem</a>",
- "NAME": "H02850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01714663297176,
- 38.94540403641226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02851'>Report Problem</a>",
- "NAME": "H02851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03627110790353,
- 38.960841399367695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02852'>Report Problem</a>",
- "NAME": "H02852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03836330202999,
- 38.940738804845225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - MEDALLION<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02853'>Report Problem</a>",
- "NAME": "H02853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03606371287357,
- 38.98232375662743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02854'>Report Problem</a>",
- "NAME": "H02854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01373058280289,
- 38.97003265820491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02855'>Report Problem</a>",
- "NAME": "H02855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04075901523107,
- 38.94781493894056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02856'>Report Problem</a>",
- "NAME": "H02856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03961425219778,
- 38.94896500493843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02857'>Report Problem</a>",
- "NAME": "H02857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08188400494964,
- 38.94799114368281,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02858'>Report Problem</a>",
- "NAME": "H02858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07126631225275,
- 38.96218720187305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02859'>Report Problem</a>",
- "NAME": "H02859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0733276710173,
- 38.927413438138814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02860'>Report Problem</a>",
- "NAME": "H02860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07332082549893,
- 38.92609469685907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02861'>Report Problem</a>",
- "NAME": "H02861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97739677370338,
- 38.88354364027425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02862'>Report Problem</a>",
- "NAME": "H02862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05943070770421,
- 38.928994642311245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02863'>Report Problem</a>",
- "NAME": "H02863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01816270221923,
- 38.961417233318755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02864'>Report Problem</a>",
- "NAME": "H02864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08637538061116,
- 38.94795314850212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02865'>Report Problem</a>",
- "NAME": "H02865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08271188351608,
- 38.9107572646946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02866'>Report Problem</a>",
- "NAME": "H02866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03633603086506,
- 38.924808373675376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02867'>Report Problem</a>",
- "NAME": "H02867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03638060500347,
- 38.928564926314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02868'>Report Problem</a>",
- "NAME": "H02868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03638443136809,
- 38.92763329442551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/11/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02869'>Report Problem</a>",
- "NAME": "H02869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03632638903728,
- 38.92634597927871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02870'>Report Problem</a>",
- "NAME": "H02870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03636657586856,
- 38.93375563460904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02871'>Report Problem</a>",
- "NAME": "H02871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08613134814472,
- 38.927644486717035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02872'>Report Problem</a>",
- "NAME": "H02872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07055680850449,
- 38.93900010465631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/27/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02873'>Report Problem</a>",
- "NAME": "H02873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98357520181932,
- 38.92538268942487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02874'>Report Problem</a>",
- "NAME": "H02874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07522495460594,
- 38.921755168866255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02875'>Report Problem</a>",
- "NAME": "H02875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08636657697011,
- 38.95098914331841,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02876'>Report Problem</a>",
- "NAME": "H02876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01999650957241,
- 38.96674601639446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02877'>Report Problem</a>",
- "NAME": "H02877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.063921121912,
- 38.91985356575158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02878'>Report Problem</a>",
- "NAME": "H02878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98236021192426,
- 38.88871250430753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02879'>Report Problem</a>",
- "NAME": "H02879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10673440451829,
- 38.93022662910844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02880'>Report Problem</a>",
- "NAME": "H02880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07237723894121,
- 38.93190779112898,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02881'>Report Problem</a>",
- "NAME": "H02881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02483786340854,
- 38.94303296288861,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02882'>Report Problem</a>",
- "NAME": "H02882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00135270385104,
- 38.9013738532868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02883'>Report Problem</a>",
- "NAME": "H02883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01979605834092,
- 38.96136044139613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02884'>Report Problem</a>",
- "NAME": "H02884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06269314730781,
- 38.94076765411844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02885'>Report Problem</a>",
- "NAME": "H02885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01477651850657,
- 38.95675570231492,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02886'>Report Problem</a>",
- "NAME": "H02886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99367237037428,
- 38.89955134402845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02887'>Report Problem</a>",
- "NAME": "H02887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98708760656741,
- 38.93836563023403,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02888'>Report Problem</a>",
- "NAME": "H02888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99368665608712,
- 38.89822197206655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02889'>Report Problem</a>",
- "NAME": "H02889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03614336191062,
- 38.97518158899454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02890'>Report Problem</a>",
- "NAME": "H02890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06458191801624,
- 38.91046945310282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02891'>Report Problem</a>",
- "NAME": "H02891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04547516810061,
- 38.912661596130256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02892'>Report Problem</a>",
- "NAME": "H02892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9906903057795,
- 38.9276797012508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02893'>Report Problem</a>",
- "NAME": "H02893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99689708810793,
- 38.892597584106376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02894'>Report Problem</a>",
- "NAME": "H02894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98086376687272,
- 38.89670413456619,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02895'>Report Problem</a>",
- "NAME": "H02895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02254618472847,
- 38.96724671726225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02896'>Report Problem</a>",
- "NAME": "H02896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06269067060322,
- 38.95323311748991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02897'>Report Problem</a>",
- "NAME": "H02897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06168986025702,
- 38.95274852743326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02898'>Report Problem</a>",
- "NAME": "H02898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02410692005859,
- 38.9673348398549,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02899'>Report Problem</a>",
- "NAME": "H02899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06073249159013,
- 38.92543132842902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02900'>Report Problem</a>",
- "NAME": "H02900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02364450237229,
- 38.95095242526244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02901'>Report Problem</a>",
- "NAME": "H02901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03523052530355,
- 38.95175756798051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03297'>Report Problem</a>",
- "NAME": "H03297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03423424607234,
- 38.91708507249467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03298'>Report Problem</a>",
- "NAME": "H03298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98973078274481,
- 38.9068140489427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03299'>Report Problem</a>",
- "NAME": "H03299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98885272304648,
- 38.90644633779362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03300'>Report Problem</a>",
- "NAME": "H03300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03428090131767,
- 38.93596628949295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03301'>Report Problem</a>",
- "NAME": "H03301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06431463065022,
- 38.95987453370289,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03302'>Report Problem</a>",
- "NAME": "H03302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04372931068744,
- 38.92239311552636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03303'>Report Problem</a>",
- "NAME": "H03303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11076819424653,
- 38.93302548786255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03304'>Report Problem</a>",
- "NAME": "H03304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97476030792609,
- 38.8994430757703,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03305'>Report Problem</a>",
- "NAME": "H03305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05016570493255,
- 38.90641621823128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03306'>Report Problem</a>",
- "NAME": "H03306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10074616355688,
- 38.92244171100309,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03307'>Report Problem</a>",
- "NAME": "H03307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0359774153151,
- 38.917496742990586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03308'>Report Problem</a>",
- "NAME": "H03308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06401258157139,
- 38.94512770751248,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03309'>Report Problem</a>",
- "NAME": "H03309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.972553090231,
- 38.89710844848632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03310'>Report Problem</a>",
- "NAME": "H03310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04823409827345,
- 38.904661304085934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03311'>Report Problem</a>",
- "NAME": "H03311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0579089958781,
- 38.919203379751934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03312'>Report Problem</a>",
- "NAME": "H03312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03471726719849,
- 38.918058171978856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03313'>Report Problem</a>",
- "NAME": "H03313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05929658158536,
- 38.92003715234638,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03314'>Report Problem</a>",
- "NAME": "H03314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0491928417682,
- 38.91921631032356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03315'>Report Problem</a>",
- "NAME": "H03315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99755014156088,
- 38.90963021299381,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03316'>Report Problem</a>",
- "NAME": "H03316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02324493312351,
- 38.971208837008994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03317'>Report Problem</a>",
- "NAME": "H03317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97334939813467,
- 38.86956466614988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03318'>Report Problem</a>",
- "NAME": "H03318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9295753801931,
- 38.90712992640007,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03319'>Report Problem</a>",
- "NAME": "H03319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0013728864496,
- 38.93113383195846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03320'>Report Problem</a>",
- "NAME": "H03320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96556233456266,
- 38.87207556892842,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03321'>Report Problem</a>",
- "NAME": "H03321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00068902400164,
- 38.931156331733064,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03322'>Report Problem</a>",
- "NAME": "H03322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96461037011889,
- 38.87828911533239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03323'>Report Problem</a>",
- "NAME": "H03323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02609296347707,
- 38.94182111077709,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03324'>Report Problem</a>",
- "NAME": "H03324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00070550430765,
- 38.91476881807865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03325'>Report Problem</a>",
- "NAME": "H03325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98784616603112,
- 38.867320684134896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03326'>Report Problem</a>",
- "NAME": "H03326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.033996320508,
- 38.934752188852485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03327'>Report Problem</a>",
- "NAME": "H03327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9858320785056,
- 38.866959102776605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03328'>Report Problem</a>",
- "NAME": "H03328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00803190570673,
- 38.910447640819484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03329'>Report Problem</a>",
- "NAME": "H03329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04408417959783,
- 38.90728380595576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03330'>Report Problem</a>",
- "NAME": "H03330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02936940340913,
- 38.899748340725566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03433'>Report Problem</a>",
- "NAME": "H03433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02793236450039,
- 38.89990313246803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03434'>Report Problem</a>",
- "NAME": "H03434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99764032626777,
- 38.93266149871578,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03435'>Report Problem</a>",
- "NAME": "H03435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06139588781582,
- 38.96683331148713,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03436'>Report Problem</a>",
- "NAME": "H03436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05998637153127,
- 38.967377411437006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03437'>Report Problem</a>",
- "NAME": "H03437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01780065176634,
- 38.95746199717616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03438'>Report Problem</a>",
- "NAME": "H03438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0850621258863,
- 38.92664400433839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03439'>Report Problem</a>",
- "NAME": "H03439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01811267022678,
- 38.91473332884798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03440'>Report Problem</a>",
- "NAME": "H03440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98001187991588,
- 38.903631671757026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03441'>Report Problem</a>",
- "NAME": "H03441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03166179652261,
- 38.94831104108468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03442'>Report Problem</a>",
- "NAME": "H03442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09926604370759,
- 38.94976474827561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03443'>Report Problem</a>",
- "NAME": "H03443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94082029569975,
- 38.898296416762875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03444'>Report Problem</a>",
- "NAME": "H03444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96694238720148,
- 38.871877728830235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03445'>Report Problem</a>",
- "NAME": "H03445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98865543317764,
- 38.907761222173676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03446'>Report Problem</a>",
- "NAME": "H03446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10668063271588,
- 38.93213531451373,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03447'>Report Problem</a>",
- "NAME": "H03447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06378603850308,
- 38.962212835309344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03448'>Report Problem</a>",
- "NAME": "H03448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93794536763046,
- 38.89830002372759,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03449'>Report Problem</a>",
- "NAME": "H03449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04117553848172,
- 38.92703646224849,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03450'>Report Problem</a>",
- "NAME": "H03450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02667355546363,
- 38.98298752315273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03451'>Report Problem</a>",
- "NAME": "H03451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07005082813194,
- 38.97295400624552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03452'>Report Problem</a>",
- "NAME": "H03452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97412353447909,
- 38.94080864514366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03453'>Report Problem</a>",
- "NAME": "H03453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04214917276605,
- 38.98661722539487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03454'>Report Problem</a>",
- "NAME": "H03454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93476525744737,
- 38.893516667819924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03455'>Report Problem</a>",
- "NAME": "H03455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97748181777493,
- 38.927778093133114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03456'>Report Problem</a>",
- "NAME": "H03456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97085947471197,
- 38.87144759376663,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03457'>Report Problem</a>",
- "NAME": "H03457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94331158360622,
- 38.90472201663022,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03458'>Report Problem</a>",
- "NAME": "H03458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05783447726918,
- 38.971482776529804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03459'>Report Problem</a>",
- "NAME": "H03459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06009025073817,
- 38.96966792018786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03460'>Report Problem</a>",
- "NAME": "H03460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03254673160264,
- 38.94820231137163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03461'>Report Problem</a>",
- "NAME": "H03461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07712061955102,
- 38.94639891718966,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03462'>Report Problem</a>",
- "NAME": "H03462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9860802044197,
- 38.93712239682275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03463'>Report Problem</a>",
- "NAME": "H03463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05382961284064,
- 38.91634468059244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03464'>Report Problem</a>",
- "NAME": "H03464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98755501515522,
- 38.90393692183332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03465'>Report Problem</a>",
- "NAME": "H03465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04347281206081,
- 38.92345821105997,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03466'>Report Problem</a>",
- "NAME": "H03466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01610489144294,
- 38.906536915075314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03331'>Report Problem</a>",
- "NAME": "H03331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03469643328886,
- 38.95624689896507,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03332'>Report Problem</a>",
- "NAME": "H03332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01716911321745,
- 38.960098025323695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03333'>Report Problem</a>",
- "NAME": "H03333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06523098739477,
- 38.96856797063749,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03334'>Report Problem</a>",
- "NAME": "H03334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04234996255478,
- 38.911180808629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03335'>Report Problem</a>",
- "NAME": "H03335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02567608034323,
- 38.97667218153771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03336'>Report Problem</a>",
- "NAME": "H03336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0463103182848,
- 38.91918370699859,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03337'>Report Problem</a>",
- "NAME": "H03337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02583510740307,
- 38.959222423474095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03338'>Report Problem</a>",
- "NAME": "H03338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04085210627483,
- 38.91980728118933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03339'>Report Problem</a>",
- "NAME": "H03339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01451198699614,
- 38.96507280523883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03340'>Report Problem</a>",
- "NAME": "H03340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01270880921302,
- 38.96384837071562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03341'>Report Problem</a>",
- "NAME": "H03341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01371332989149,
- 38.95755259459596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03342'>Report Problem</a>",
- "NAME": "H03342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10136443028597,
- 38.940135366154614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03343'>Report Problem</a>",
- "NAME": "H03343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97010657452317,
- 38.870666572975466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03344'>Report Problem</a>",
- "NAME": "H03344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02413036517737,
- 38.95952384371296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03345'>Report Problem</a>",
- "NAME": "H03345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0363991665629,
- 38.9186570383677,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03346'>Report Problem</a>",
- "NAME": "H03346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03026347006455,
- 38.94830869093847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03347'>Report Problem</a>",
- "NAME": "H03347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97441343227625,
- 38.90013628363326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03348'>Report Problem</a>",
- "NAME": "H03348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99606881935534,
- 38.93123222569328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03349'>Report Problem</a>",
- "NAME": "H03349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00813613177841,
- 38.898990605817986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03350'>Report Problem</a>",
- "NAME": "H03350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98074488060112,
- 38.928314031291514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03351'>Report Problem</a>",
- "NAME": "H03351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03216073892442,
- 38.89629815961426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03352'>Report Problem</a>",
- "NAME": "H03352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98089050300352,
- 38.88593258465733,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03353'>Report Problem</a>",
- "NAME": "H03353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9827160037569,
- 38.899863115137556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03354'>Report Problem</a>",
- "NAME": "H03354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97785202396865,
- 38.93317642864588,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03355'>Report Problem</a>",
- "NAME": "H03355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98064753189516,
- 38.88658736383662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 04/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03356'>Report Problem</a>",
- "NAME": "H03356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98452687382702,
- 38.89087227202959,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03357'>Report Problem</a>",
- "NAME": "H03357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0408396518367,
- 38.99040349653492,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03358'>Report Problem</a>",
- "NAME": "H03358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00136040600324,
- 38.903853240550944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03359'>Report Problem</a>",
- "NAME": "H03359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04178691624276,
- 38.98969959429973,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03360'>Report Problem</a>",
- "NAME": "H03360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98950462436757,
- 38.89043620750151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 11/02/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03361'>Report Problem</a>",
- "NAME": "H03361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98930192604975,
- 38.900290368575824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03362'>Report Problem</a>",
- "NAME": "H03362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08196364767504,
- 38.96213651154911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03363'>Report Problem</a>",
- "NAME": "H03363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00217201741032,
- 38.894579887660605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03364'>Report Problem</a>",
- "NAME": "H03364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00073257896204,
- 38.89352328704712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03365'>Report Problem</a>",
- "NAME": "H03365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00129488980372,
- 38.88681949332545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03366'>Report Problem</a>",
- "NAME": "H03366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99818834996307,
- 38.893656671220334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03367'>Report Problem</a>",
- "NAME": "H03367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9827738929664,
- 38.87940478842192,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03368'>Report Problem</a>",
- "NAME": "H03368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02978944986528,
- 38.89747306465408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03369'>Report Problem</a>",
- "NAME": "H03369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00263207647633,
- 38.89093485744887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03370'>Report Problem</a>",
- "NAME": "H03370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9970116738263,
- 38.89352236830028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03371'>Report Problem</a>",
- "NAME": "H03371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382340425214,
- 38.87740396939212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03372'>Report Problem</a>",
- "NAME": "H03372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99609680847905,
- 38.89187101697557,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03373'>Report Problem</a>",
- "NAME": "H03373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00143943869173,
- 38.8908449026043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03374'>Report Problem</a>",
- "NAME": "H03374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9938183830671,
- 38.89532289850454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03375'>Report Problem</a>",
- "NAME": "H03375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98059207362998,
- 38.89483170998907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03376'>Report Problem</a>",
- "NAME": "H03376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99726706755538,
- 38.89206273034278,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03377'>Report Problem</a>",
- "NAME": "H03377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270926672081,
- 38.896038702323644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03378'>Report Problem</a>",
- "NAME": "H03378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382389041337,
- 38.89681954852394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03379'>Report Problem</a>",
- "NAME": "H03379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99957258814449,
- 38.880482794892494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03380'>Report Problem</a>",
- "NAME": "H03380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00463628183971,
- 38.89193024724656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03381'>Report Problem</a>",
- "NAME": "H03381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00266135903874,
- 38.89198713374388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03382'>Report Problem</a>",
- "NAME": "H03382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00357609404077,
- 38.88337790143777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03383'>Report Problem</a>",
- "NAME": "H03383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00649776234197,
- 38.91980883631186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03384'>Report Problem</a>",
- "NAME": "H03384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93158734956272,
- 38.89876956558682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03385'>Report Problem</a>",
- "NAME": "H03385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02408775649945,
- 38.92709242768263,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03386'>Report Problem</a>",
- "NAME": "H03386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98826504237935,
- 38.90687277145959,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03387'>Report Problem</a>",
- "NAME": "H03387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01524786921011,
- 38.95773998356088,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03388'>Report Problem</a>",
- "NAME": "H03388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01510927572625,
- 38.95864329582148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03389'>Report Problem</a>",
- "NAME": "H03389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01601229071359,
- 38.958674803639504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03390'>Report Problem</a>",
- "NAME": "H03390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04425217960876,
- 38.90034251792656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03391'>Report Problem</a>",
- "NAME": "H03391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97995818439382,
- 38.89318979179849,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03392'>Report Problem</a>",
- "NAME": "H03392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06516252786108,
- 38.94676396739446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03393'>Report Problem</a>",
- "NAME": "H03393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03218546279713,
- 38.985667403902205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03394'>Report Problem</a>",
- "NAME": "H03394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03041646992394,
- 38.985505531321294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03395'>Report Problem</a>",
- "NAME": "H03395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98578779691665,
- 38.94292929569741,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/01/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03396'>Report Problem</a>",
- "NAME": "H03396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09914738347675,
- 38.93457083996036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03397'>Report Problem</a>",
- "NAME": "H03397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08851498953393,
- 38.95539577085225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/14/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03398'>Report Problem</a>",
- "NAME": "H03398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98716895522595,
- 38.944152924790885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03399'>Report Problem</a>",
- "NAME": "H03399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02342075674645,
- 38.963814087919516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03400'>Report Problem</a>",
- "NAME": "H03400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0337478416161,
- 38.90033240399695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03401'>Report Problem</a>",
- "NAME": "H03401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02427068161309,
- 38.96282511490076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03402'>Report Problem</a>",
- "NAME": "H03402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06308281390493,
- 38.951898655356715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03403'>Report Problem</a>",
- "NAME": "H03403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94205693021019,
- 38.904697303774235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03404'>Report Problem</a>",
- "NAME": "H03404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98044613797795,
- 38.941511295281714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03405'>Report Problem</a>",
- "NAME": "H03405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9659531069675,
- 38.93609799616704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03406'>Report Problem</a>",
- "NAME": "H03406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92633030369664,
- 38.89446299077991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03407'>Report Problem</a>",
- "NAME": "H03407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06267732645263,
- 38.90390466511905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03408'>Report Problem</a>",
- "NAME": "H03408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97735007187362,
- 38.89607085770454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03409'>Report Problem</a>",
- "NAME": "H03409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9973775533355,
- 38.88609521532298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03410'>Report Problem</a>",
- "NAME": "H03410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02982017295054,
- 38.98373785017111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03411'>Report Problem</a>",
- "NAME": "H03411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06847002137327,
- 38.927590641890546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03412'>Report Problem</a>",
- "NAME": "H03412"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06287644500546,
- 38.903333941911434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03413'>Report Problem</a>",
- "NAME": "H03413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03360247456936,
- 38.89901966666405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03414'>Report Problem</a>",
- "NAME": "H03414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08615235336855,
- 38.92662663943616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03415'>Report Problem</a>",
- "NAME": "H03415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93156893220028,
- 38.90066374296222,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03416'>Report Problem</a>",
- "NAME": "H03416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02580865941684,
- 38.96797541316662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03417'>Report Problem</a>",
- "NAME": "H03417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10759934927498,
- 38.92589935689342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03418'>Report Problem</a>",
- "NAME": "H03418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03519530289861,
- 38.89850501841142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03419'>Report Problem</a>",
- "NAME": "H03419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03502880919689,
- 38.8984907271415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03420'>Report Problem</a>",
- "NAME": "H03420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99360730840769,
- 38.929493891838334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03421'>Report Problem</a>",
- "NAME": "H03421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96082276272078,
- 38.931304809550554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03422'>Report Problem</a>",
- "NAME": "H03422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00546675425886,
- 38.927512173372406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03423'>Report Problem</a>",
- "NAME": "H03423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00465765290892,
- 38.928481619922515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03424'>Report Problem</a>",
- "NAME": "H03424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92341534107159,
- 38.90081623862845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03425'>Report Problem</a>",
- "NAME": "H03425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92454528284608,
- 38.90107387430716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03426'>Report Problem</a>",
- "NAME": "H03426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03565234909287,
- 38.91042511841834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03427'>Report Problem</a>",
- "NAME": "H03427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04618683047882,
- 38.92317331773082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03428'>Report Problem</a>",
- "NAME": "H03428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01718318174782,
- 38.95772095094627,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03429'>Report Problem</a>",
- "NAME": "H03429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02503023342399,
- 38.89989009760997,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03430'>Report Problem</a>",
- "NAME": "H03430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02380387978829,
- 38.899896524653215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03431'>Report Problem</a>",
- "NAME": "H03431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02589135426061,
- 38.89966971861209,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03432'>Report Problem</a>",
- "NAME": "H03432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96888924928506,
- 38.93032416746363,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03228'>Report Problem</a>",
- "NAME": "H03228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94244393855773,
- 38.89603332682141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03229'>Report Problem</a>",
- "NAME": "H03229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06686883146358,
- 38.96027083349703,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03230'>Report Problem</a>",
- "NAME": "H03230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9982990173124,
- 38.896766676174806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03231'>Report Problem</a>",
- "NAME": "H03231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0318548600467,
- 38.96025676191078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03232'>Report Problem</a>",
- "NAME": "H03232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94092887782952,
- 38.89573406927598,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03233'>Report Problem</a>",
- "NAME": "H03233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05310225265829,
- 38.90379200372231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03234'>Report Problem</a>",
- "NAME": "H03234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97530695718312,
- 38.937280892983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03235'>Report Problem</a>",
- "NAME": "H03235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02984975618305,
- 38.9297171290891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03236'>Report Problem</a>",
- "NAME": "H03236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98613881982891,
- 38.93072204107117,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03237'>Report Problem</a>",
- "NAME": "H03237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97137625642253,
- 38.89786249033922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03238'>Report Problem</a>",
- "NAME": "H03238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97024276680973,
- 38.93622643622479,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03239'>Report Problem</a>",
- "NAME": "H03239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93767823438161,
- 38.89527454800895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03240'>Report Problem</a>",
- "NAME": "H03240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04891458948948,
- 38.9140520942187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03241'>Report Problem</a>",
- "NAME": "H03241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94050592034135,
- 38.89435393475314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03242'>Report Problem</a>",
- "NAME": "H03242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01422850545389,
- 38.950169969405366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03243'>Report Problem</a>",
- "NAME": "H03243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98910193086898,
- 38.905895789060146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03244'>Report Problem</a>",
- "NAME": "H03244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01562374262963,
- 38.950124867004895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03245'>Report Problem</a>",
- "NAME": "H03245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01575827746454,
- 38.95100529057552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03246'>Report Problem</a>",
- "NAME": "H03246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01464972767037,
- 38.95122219179631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03247'>Report Problem</a>",
- "NAME": "H03247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05803106258423,
- 38.90464530893065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03248'>Report Problem</a>",
- "NAME": "H03248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00061885650385,
- 38.907315047410485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03249'>Report Problem</a>",
- "NAME": "H03249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02131049663008,
- 38.96997450039332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03250'>Report Problem</a>",
- "NAME": "H03250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04055047279483,
- 38.927947880767114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03251'>Report Problem</a>",
- "NAME": "H03251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07081194986277,
- 38.934782660775284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03252'>Report Problem</a>",
- "NAME": "H03252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93729333939501,
- 38.899674198487396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03253'>Report Problem</a>",
- "NAME": "H03253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01603393578681,
- 38.957137847287456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03254'>Report Problem</a>",
- "NAME": "H03254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02358998154966,
- 38.93010707057808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03255'>Report Problem</a>",
- "NAME": "H03255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02191745636011,
- 38.933068867912276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03256'>Report Problem</a>",
- "NAME": "H03256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.022497638117,
- 38.93397815488185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03257'>Report Problem</a>",
- "NAME": "H03257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.031922700864,
- 38.96607360569486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03258'>Report Problem</a>",
- "NAME": "H03258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92616527381887,
- 38.88987904756654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03259'>Report Problem</a>",
- "NAME": "H03259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04001458312968,
- 38.94073239584887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - MEDALLION<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03260'>Report Problem</a>",
- "NAME": "H03260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09691833606425,
- 38.91922675867083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03261'>Report Problem</a>",
- "NAME": "H03261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09545286852136,
- 38.91921827195258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03262'>Report Problem</a>",
- "NAME": "H03262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92737624913352,
- 38.903540382115466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03263'>Report Problem</a>",
- "NAME": "H03263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02976871844585,
- 38.959369574895995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03264'>Report Problem</a>",
- "NAME": "H03264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99271603523866,
- 38.880327507124356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03265'>Report Problem</a>",
- "NAME": "H03265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02413506064522,
- 38.96115808459131,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03266'>Report Problem</a>",
- "NAME": "H03266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07221836024834,
- 38.921208692754206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03267'>Report Problem</a>",
- "NAME": "H03267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92604935599762,
- 38.89183160280566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03268'>Report Problem</a>",
- "NAME": "H03268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07230046925673,
- 38.93466808271233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03269'>Report Problem</a>",
- "NAME": "H03269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04456011873708,
- 38.9224091607994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03270'>Report Problem</a>",
- "NAME": "H03270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0121012816985,
- 38.905738204688184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03271'>Report Problem</a>",
- "NAME": "H03271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04018867609298,
- 38.913248814745145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03272'>Report Problem</a>",
- "NAME": "H03272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09863817425865,
- 38.94207134705794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81A<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03273'>Report Problem</a>",
- "NAME": "H03273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0401485840224,
- 38.91488549911225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03274'>Report Problem</a>",
- "NAME": "H03274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99067203042787,
- 38.86161732073139,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03275'>Report Problem</a>",
- "NAME": "H03275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00335825259928,
- 38.88513816406251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03276'>Report Problem</a>",
- "NAME": "H03276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06763283633927,
- 38.92623420665324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03277'>Report Problem</a>",
- "NAME": "H03277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0332973706502,
- 38.91190541524462,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03278'>Report Problem</a>",
- "NAME": "H03278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09099443256319,
- 38.93144978695123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03279'>Report Problem</a>",
- "NAME": "H03279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0036762592087,
- 38.88264829117101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03280'>Report Problem</a>",
- "NAME": "H03280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064494982652,
- 38.88334813664974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03281'>Report Problem</a>",
- "NAME": "H03281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03646717927317,
- 38.976908113652264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03282'>Report Problem</a>",
- "NAME": "H03282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06378028903576,
- 38.96964855288482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03284'>Report Problem</a>",
- "NAME": "H03284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.998286048646,
- 38.88573273493939,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03285'>Report Problem</a>",
- "NAME": "H03285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96527873609115,
- 38.86153717534136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03286'>Report Problem</a>",
- "NAME": "H03286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93060495846773,
- 38.90712227279393,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03287'>Report Problem</a>",
- "NAME": "H03287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08522915921506,
- 38.95961080136902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03288'>Report Problem</a>",
- "NAME": "H03288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0346558187928,
- 38.981274373552864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03289'>Report Problem</a>",
- "NAME": "H03289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07692993278623,
- 38.920731532738714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03290'>Report Problem</a>",
- "NAME": "H03290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01791361191718,
- 38.9746634328977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03291'>Report Problem</a>",
- "NAME": "H03291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01322022632348,
- 38.97327780788181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03292'>Report Problem</a>",
- "NAME": "H03292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00933043029164,
- 38.911905724386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03293'>Report Problem</a>",
- "NAME": "H03293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01055762599105,
- 38.97094233330344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03294'>Report Problem</a>",
- "NAME": "H03294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02256016501191,
- 38.968688754063066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03295'>Report Problem</a>",
- "NAME": "H03295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02303479238186,
- 38.97716281514932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03296'>Report Problem</a>",
- "NAME": "H03296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02498461340262,
- 38.89198192469661,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03863'>Report Problem</a>",
- "NAME": "H03863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97990996049893,
- 38.92444369334872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03864'>Report Problem</a>",
- "NAME": "H03864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92994573477426,
- 38.89711938638032,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03865'>Report Problem</a>",
- "NAME": "H03865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97640335154595,
- 38.89902273779327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03866'>Report Problem</a>",
- "NAME": "H03866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01041302258128,
- 38.890311457901525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03867'>Report Problem</a>",
- "NAME": "H03867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02612604776414,
- 38.89237705239765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03868'>Report Problem</a>",
- "NAME": "H03868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99102877721856,
- 38.93446957700486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03869'>Report Problem</a>",
- "NAME": "H03869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03402348109263,
- 38.92447660881721,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/29/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03870'>Report Problem</a>",
- "NAME": "H03870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06124243085797,
- 38.92911490482321,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03871'>Report Problem</a>",
- "NAME": "H03871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04295605152053,
- 38.985655944987855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03872'>Report Problem</a>",
- "NAME": "H03872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10076522575906,
- 38.931459797065465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03874'>Report Problem</a>",
- "NAME": "H03874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0004716434192,
- 38.92035297474018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03875'>Report Problem</a>",
- "NAME": "H03875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97347967764179,
- 38.86340106868082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03876'>Report Problem</a>",
- "NAME": "H03876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96643237263883,
- 38.9300391403663,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03877'>Report Problem</a>",
- "NAME": "H03877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07921944603848,
- 38.943220705359096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03878'>Report Problem</a>",
- "NAME": "H03878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02168194233691,
- 38.89195749610055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03879'>Report Problem</a>",
- "NAME": "H03879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07588599138984,
- 38.952145385513234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03880'>Report Problem</a>",
- "NAME": "H03880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04727774979757,
- 38.92308294239803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03881'>Report Problem</a>",
- "NAME": "H03881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0853625024635,
- 38.90862976680895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03882'>Report Problem</a>",
- "NAME": "H03882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03964665004801,
- 38.9846076838793,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03830'>Report Problem</a>",
- "NAME": "H03830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03908392320625,
- 38.98395121053371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03831'>Report Problem</a>",
- "NAME": "H03831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96321353390363,
- 38.86359825445163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03832'>Report Problem</a>",
- "NAME": "H03832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02797877832664,
- 38.978736122347094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03833'>Report Problem</a>",
- "NAME": "H03833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03223348196782,
- 38.93156513595735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - MEDALLION<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03834'>Report Problem</a>",
- "NAME": "H03834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96158654258512,
- 38.869860621375096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03835'>Report Problem</a>",
- "NAME": "H03835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08636091099869,
- 38.957082089979814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03836'>Report Problem</a>",
- "NAME": "H03836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96822075371378,
- 38.92445615217211,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03837'>Report Problem</a>",
- "NAME": "H03837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09544953554047,
- 38.95204335448902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03838'>Report Problem</a>",
- "NAME": "H03838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08615751312666,
- 38.944918346126705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03839'>Report Problem</a>",
- "NAME": "H03839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02886218470458,
- 38.8860928408347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03840'>Report Problem</a>",
- "NAME": "H03840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01334858680185,
- 38.913399619508205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03841'>Report Problem</a>",
- "NAME": "H03841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09600278938973,
- 38.91565811486848,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03842'>Report Problem</a>",
- "NAME": "H03842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0967897385974,
- 38.91513128862411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03843'>Report Problem</a>",
- "NAME": "H03843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01591880173525,
- 38.976191084700844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03844'>Report Problem</a>",
- "NAME": "H03844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98418601929126,
- 38.86652599227564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03845'>Report Problem</a>",
- "NAME": "H03845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02460898749625,
- 38.97656312313311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03847'>Report Problem</a>",
- "NAME": "H03847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09213751094268,
- 38.91488682483357,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03848'>Report Problem</a>",
- "NAME": "H03848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01901399351266,
- 38.90357978409401,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03849'>Report Problem</a>",
- "NAME": "H03849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04161429804053,
- 38.895542102096144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03850'>Report Problem</a>",
- "NAME": "H03850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01021326302616,
- 38.8923027582499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03851'>Report Problem</a>",
- "NAME": "H03851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09011456122073,
- 38.92748236935688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03852'>Report Problem</a>",
- "NAME": "H03852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03252375811546,
- 38.92659747651678,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03853'>Report Problem</a>",
- "NAME": "H03853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99000709490832,
- 38.939065455355845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03854'>Report Problem</a>",
- "NAME": "H03854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03167043335802,
- 38.891956503212036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03856'>Report Problem</a>",
- "NAME": "H03856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09099426570121,
- 38.93231315252996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03857'>Report Problem</a>",
- "NAME": "H03857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04337483415686,
- 38.892323437960094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03858'>Report Problem</a>",
- "NAME": "H03858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04650464095003,
- 38.9879141621054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03859'>Report Problem</a>",
- "NAME": "H03859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99711523397714,
- 38.89465596591057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03910'>Report Problem</a>",
- "NAME": "H03910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99428317455563,
- 38.89799081219083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03911'>Report Problem</a>",
- "NAME": "H03911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97836606831018,
- 38.86545894951317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03912'>Report Problem</a>",
- "NAME": "H03912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03707457511283,
- 38.961072110034124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03913'>Report Problem</a>",
- "NAME": "H03913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99729511234159,
- 38.89541195232633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03914'>Report Problem</a>",
- "NAME": "H03914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99731536566578,
- 38.898179682432804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03915'>Report Problem</a>",
- "NAME": "H03915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09634210368928,
- 38.929647910327986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03916'>Report Problem</a>",
- "NAME": "H03916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03616492698073,
- 38.979448887186656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03917'>Report Problem</a>",
- "NAME": "H03917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03625476942405,
- 38.98649405887124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03918'>Report Problem</a>",
- "NAME": "H03918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08686362531986,
- 38.95341327109391,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03919'>Report Problem</a>",
- "NAME": "H03919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93377621621066,
- 38.874790865740515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03920'>Report Problem</a>",
- "NAME": "H03920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09549553322232,
- 38.92783750122455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03921'>Report Problem</a>",
- "NAME": "H03921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10923121922406,
- 38.93252609933625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03922'>Report Problem</a>",
- "NAME": "H03922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05419366790687,
- 38.95196349631073,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03923'>Report Problem</a>",
- "NAME": "H03923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9588419117385,
- 38.861817506729984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03925'>Report Problem</a>",
- "NAME": "H03925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93620427886142,
- 38.87641616150902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03926'>Report Problem</a>",
- "NAME": "H03926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04694119757379,
- 38.987019544734004,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03927'>Report Problem</a>",
- "NAME": "H03927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95152028721222,
- 38.86542853072662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03928'>Report Problem</a>",
- "NAME": "H03928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95574889530575,
- 38.863987737400656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03929'>Report Problem</a>",
- "NAME": "H03929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0854956302458,
- 38.93843440169358,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03930'>Report Problem</a>",
- "NAME": "H03930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01532876019056,
- 38.88827218569448,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03931'>Report Problem</a>",
- "NAME": "H03931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06501039288709,
- 38.96986047000123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03932'>Report Problem</a>",
- "NAME": "H03932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01745467700397,
- 38.88891084251656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03933'>Report Problem</a>",
- "NAME": "H03933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98225786810792,
- 38.86540278965049,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03934'>Report Problem</a>",
- "NAME": "H03934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02300351982935,
- 38.90288464874361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 08/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03935'>Report Problem</a>",
- "NAME": "H03935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98270217181815,
- 38.90855545191018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03936'>Report Problem</a>",
- "NAME": "H03936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93786398290078,
- 38.89682821189746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03937'>Report Problem</a>",
- "NAME": "H03937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04666180513155,
- 38.9885525741736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03938'>Report Problem</a>",
- "NAME": "H03938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1116466981253,
- 38.93561441448011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03939'>Report Problem</a>",
- "NAME": "H03939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11219363916346,
- 38.93730801054442,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03940'>Report Problem</a>",
- "NAME": "H03940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04757570923891,
- 38.987569969160624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03941'>Report Problem</a>",
- "NAME": "H03941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02823779857899,
- 38.88684356270815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03942'>Report Problem</a>",
- "NAME": "H03942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0282309115219,
- 38.886187556095436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03943'>Report Problem</a>",
- "NAME": "H03943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00495713826047,
- 38.89117948535643,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03944'>Report Problem</a>",
- "NAME": "H03944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00500178262007,
- 38.88988113358681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03945'>Report Problem</a>",
- "NAME": "H03945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00984618617153,
- 38.87216582049221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03946'>Report Problem</a>",
- "NAME": "H03946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98823781582459,
- 38.89530238124047,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03947'>Report Problem</a>",
- "NAME": "H03947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04572655821386,
- 38.98716398606276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03948'>Report Problem</a>",
- "NAME": "H03948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98106120425996,
- 38.897430457030836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03949'>Report Problem</a>",
- "NAME": "H03949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08464504993837,
- 38.91460424377495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03950'>Report Problem</a>",
- "NAME": "H03950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03861614220645,
- 38.90391449224204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03951'>Report Problem</a>",
- "NAME": "H03951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99737101257563,
- 38.905014089088816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03952'>Report Problem</a>",
- "NAME": "H03952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98449943972014,
- 38.90832927041487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03953'>Report Problem</a>",
- "NAME": "H03953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01073416861786,
- 38.87048679200491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03954'>Report Problem</a>",
- "NAME": "H03954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02285070196406,
- 38.91787464961466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03955'>Report Problem</a>",
- "NAME": "H03955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10747703024757,
- 38.937333945470286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03956'>Report Problem</a>",
- "NAME": "H03956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96147869503832,
- 38.93350089214056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03957'>Report Problem</a>",
- "NAME": "H03957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99277574731735,
- 38.903198343075225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03958'>Report Problem</a>",
- "NAME": "H03958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97908142675853,
- 38.89344943044639,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 08/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03959'>Report Problem</a>",
- "NAME": "H03959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08995721371068,
- 38.925913061278344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03960'>Report Problem</a>",
- "NAME": "H03960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01579209668822,
- 38.91692364525055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03962'>Report Problem</a>",
- "NAME": "H03962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96281527751978,
- 38.8750967026841,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03963'>Report Problem</a>",
- "NAME": "H03963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09670906799096,
- 38.942093921271976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03964'>Report Problem</a>",
- "NAME": "H03964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08013863133662,
- 38.95336272738712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03965'>Report Problem</a>",
- "NAME": "H03965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0660259256967,
- 38.90870570386126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03967'>Report Problem</a>",
- "NAME": "H03967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01079539551675,
- 38.86829708593764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03467'>Report Problem</a>",
- "NAME": "H03467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01201818903515,
- 38.86829535398415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03468'>Report Problem</a>",
- "NAME": "H03468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98800133220846,
- 38.90303708811884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03469'>Report Problem</a>",
- "NAME": "H03469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0445791473415,
- 38.92423719413861,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03470'>Report Problem</a>",
- "NAME": "H03470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06739893007835,
- 38.95538959098755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03471'>Report Problem</a>",
- "NAME": "H03471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04329340794283,
- 38.925014140566084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03472'>Report Problem</a>",
- "NAME": "H03472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09547235984488,
- 38.92096937637083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03473'>Report Problem</a>",
- "NAME": "H03473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99091673282062,
- 38.93261067803325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03474'>Report Problem</a>",
- "NAME": "H03474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03561761563257,
- 38.92710714782879,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03475'>Report Problem</a>",
- "NAME": "H03475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09810802359775,
- 38.947861978639196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03476'>Report Problem</a>",
- "NAME": "H03476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09670806383083,
- 38.9486836465249,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03477'>Report Problem</a>",
- "NAME": "H03477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09682813870131,
- 38.94704998506508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03478'>Report Problem</a>",
- "NAME": "H03478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9888624176088,
- 38.93370164910796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03479'>Report Problem</a>",
- "NAME": "H03479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01224225159582,
- 38.91690852269912,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03480'>Report Problem</a>",
- "NAME": "H03480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03213043256787,
- 38.89808908467546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03481'>Report Problem</a>",
- "NAME": "H03481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03626563882898,
- 38.93041037748961,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03482'>Report Problem</a>",
- "NAME": "H03482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01409257250101,
- 38.9141623940784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03483'>Report Problem</a>",
- "NAME": "H03483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97751802616081,
- 38.87080205490014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03484'>Report Problem</a>",
- "NAME": "H03484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03778147839239,
- 38.93005594281548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03485'>Report Problem</a>",
- "NAME": "H03485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03360436617929,
- 38.98594498021841,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03486'>Report Problem</a>",
- "NAME": "H03486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03901929060466,
- 38.93149678437457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03487'>Report Problem</a>",
- "NAME": "H03487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92116154998111,
- 38.89293295892934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03488'>Report Problem</a>",
- "NAME": "H03488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06993720598565,
- 38.95146033188334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03489'>Report Problem</a>",
- "NAME": "H03489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0648778039224,
- 38.95892147295136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03607'>Report Problem</a>",
- "NAME": "H03607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04176746414652,
- 38.928147977220306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03608'>Report Problem</a>",
- "NAME": "H03608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02961774516223,
- 38.94279062562233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03609'>Report Problem</a>",
- "NAME": "H03609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03289675476479,
- 38.93557440283326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03610'>Report Problem</a>",
- "NAME": "H03610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0687630936708,
- 38.95557981693206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03611'>Report Problem</a>",
- "NAME": "H03611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98615011023337,
- 38.938265701996706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03612'>Report Problem</a>",
- "NAME": "H03612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01248667909704,
- 38.95863384036325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03613'>Report Problem</a>",
- "NAME": "H03613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98094488213499,
- 38.897887657549866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03614'>Report Problem</a>",
- "NAME": "H03614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97848309145489,
- 38.94293098092975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03615'>Report Problem</a>",
- "NAME": "H03615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02326747336885,
- 38.970016925534274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03616'>Report Problem</a>",
- "NAME": "H03616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02123102130753,
- 38.923717610292435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03617'>Report Problem</a>",
- "NAME": "H03617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01791989150955,
- 38.955487980242914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03618'>Report Problem</a>",
- "NAME": "H03618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04275495061151,
- 38.945085221162486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03619'>Report Problem</a>",
- "NAME": "H03619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06857757212204,
- 38.93172482649028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 11/02/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03620'>Report Problem</a>",
- "NAME": "H03620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06976366098428,
- 38.90863433874821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03621'>Report Problem</a>",
- "NAME": "H03621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02410955535525,
- 38.892410132338334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03622'>Report Problem</a>",
- "NAME": "H03622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0386894040868,
- 38.93255967598979,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03490'>Report Problem</a>",
- "NAME": "H03490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04115347643652,
- 38.931492160799195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03491'>Report Problem</a>",
- "NAME": "H03491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10086253282172,
- 38.936857743065055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81A<p align=center>In Service</p><hr />Last Inspection Date: 07/20/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03492'>Report Problem</a>",
- "NAME": "H03492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92435148839108,
- 38.88694422693056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03493'>Report Problem</a>",
- "NAME": "H03493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01372085823124,
- 38.95668417023782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03494'>Report Problem</a>",
- "NAME": "H03494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0997752917991,
- 38.93582170338214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03495'>Report Problem</a>",
- "NAME": "H03495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0931650833886,
- 38.93267259442051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03496'>Report Problem</a>",
- "NAME": "H03496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92073814069416,
- 38.89404085533239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03497'>Report Problem</a>",
- "NAME": "H03497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01668371123995,
- 38.916861634116884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03498'>Report Problem</a>",
- "NAME": "H03498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06847798975795,
- 38.93468727528434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03499'>Report Problem</a>",
- "NAME": "H03499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06994033852389,
- 38.95961481171528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03500'>Report Problem</a>",
- "NAME": "H03500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0700326822772,
- 38.91837021050567,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03501'>Report Problem</a>",
- "NAME": "H03501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07119585400345,
- 38.91973315256621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03502'>Report Problem</a>",
- "NAME": "H03502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01624996062424,
- 38.91856654864214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03503'>Report Problem</a>",
- "NAME": "H03503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91533726488154,
- 38.89709851513759,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03504'>Report Problem</a>",
- "NAME": "H03504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0719586462016,
- 38.95066023327597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03505'>Report Problem</a>",
- "NAME": "H03505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06976552667464,
- 38.953954780000906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03506'>Report Problem</a>",
- "NAME": "H03506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06395599340895,
- 38.92439308451422,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03507'>Report Problem</a>",
- "NAME": "H03507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06403904663674,
- 38.925894158326486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03508'>Report Problem</a>",
- "NAME": "H03508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9991027660933,
- 38.84778999505156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03509'>Report Problem</a>",
- "NAME": "H03509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97312787861743,
- 38.86998259643053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03510'>Report Problem</a>",
- "NAME": "H03510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99498873935342,
- 38.85973167311152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03511'>Report Problem</a>",
- "NAME": "H03511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02095755775508,
- 38.90730002623178,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03512'>Report Problem</a>",
- "NAME": "H03512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96502790165346,
- 38.92881473337035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03513'>Report Problem</a>",
- "NAME": "H03513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98822607764494,
- 38.908173716881976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03514'>Report Problem</a>",
- "NAME": "H03514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.986788771045,
- 38.909433731469726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. PIPE<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03515'>Report Problem</a>",
- "NAME": "H03515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0217678007848,
- 38.89972227672309,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03516'>Report Problem</a>",
- "NAME": "H03516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02097771900802,
- 38.8997218177079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03517'>Report Problem</a>",
- "NAME": "H03517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02233393008127,
- 38.9643956569575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03518'>Report Problem</a>",
- "NAME": "H03518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10996084388502,
- 38.93205912695095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03519'>Report Problem</a>",
- "NAME": "H03519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9835867974813,
- 38.89679894753847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03520'>Report Problem</a>",
- "NAME": "H03520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99256406835455,
- 38.942793447610214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03521'>Report Problem</a>",
- "NAME": "H03521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0277269091157,
- 38.96275021750744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03522'>Report Problem</a>",
- "NAME": "H03522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93896208746283,
- 38.87157923201205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03523'>Report Problem</a>",
- "NAME": "H03523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02073157901705,
- 38.90423525494305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03524'>Report Problem</a>",
- "NAME": "H03524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04437360904353,
- 38.89827069305227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03525'>Report Problem</a>",
- "NAME": "H03525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99263604315881,
- 38.93356622869363,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03526'>Report Problem</a>",
- "NAME": "H03526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99124428129417,
- 38.93356573635454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03527'>Report Problem</a>",
- "NAME": "H03527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01645539326304,
- 38.95436758528171,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03528'>Report Problem</a>",
- "NAME": "H03528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98657249782944,
- 38.93380238253051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03529'>Report Problem</a>",
- "NAME": "H03529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9872753008676,
- 38.9453083118496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03530'>Report Problem</a>",
- "NAME": "H03530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0327429624509,
- 38.8919515591772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03531'>Report Problem</a>",
- "NAME": "H03531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99258526421836,
- 38.940629838151104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03532'>Report Problem</a>",
- "NAME": "H03532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03327068465558,
- 38.984067746213725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03533'>Report Problem</a>",
- "NAME": "H03533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00782919903669,
- 38.893223111341605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03534'>Report Problem</a>",
- "NAME": "H03534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00722571707709,
- 38.89375455391396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03535'>Report Problem</a>",
- "NAME": "H03535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00818319153815,
- 38.89227793789439,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03536'>Report Problem</a>",
- "NAME": "H03536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00611604125696,
- 38.893755031669244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03537'>Report Problem</a>",
- "NAME": "H03537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97018782938873,
- 38.937110901958384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03538'>Report Problem</a>",
- "NAME": "H03538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10113057907711,
- 38.92702125554618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03539'>Report Problem</a>",
- "NAME": "H03539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05450915260506,
- 38.92823876662402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03540'>Report Problem</a>",
- "NAME": "H03540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064685369448,
- 38.889943027327455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03541'>Report Problem</a>",
- "NAME": "H03541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99504653391331,
- 38.93225566550957,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03542'>Report Problem</a>",
- "NAME": "H03542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04775599202239,
- 38.89837482021134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03543'>Report Problem</a>",
- "NAME": "H03543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01374021929531,
- 38.95866633669406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03544'>Report Problem</a>",
- "NAME": "H03544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04572830838023,
- 38.89826512594186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03545'>Report Problem</a>",
- "NAME": "H03545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97732647684614,
- 38.884241019733444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03546'>Report Problem</a>",
- "NAME": "H03546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07263374916317,
- 38.935573021349896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03547'>Report Problem</a>",
- "NAME": "H03547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07688469443129,
- 38.91922331602368,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03548'>Report Problem</a>",
- "NAME": "H03548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06855101713087,
- 38.95830295071001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03549'>Report Problem</a>",
- "NAME": "H03549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0761135742582,
- 38.91922445141739,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03550'>Report Problem</a>",
- "NAME": "H03550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0966488045416,
- 38.92537947996271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03551'>Report Problem</a>",
- "NAME": "H03551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09772203483506,
- 38.923645674339994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03552'>Report Problem</a>",
- "NAME": "H03552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0961516317116,
- 38.92618920663205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03553'>Report Problem</a>",
- "NAME": "H03553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97510464986044,
- 38.94021241925771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03554'>Report Problem</a>",
- "NAME": "H03554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92998715624509,
- 38.896341782002246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03555'>Report Problem</a>",
- "NAME": "H03555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01776505953998,
- 38.95658617430043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03556'>Report Problem</a>",
- "NAME": "H03556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08350418811625,
- 38.914294412090925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03557'>Report Problem</a>",
- "NAME": "H03557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97628105960614,
- 38.939733999281444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03558'>Report Problem</a>",
- "NAME": "H03558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09072308463259,
- 38.94402779179968,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03559'>Report Problem</a>",
- "NAME": "H03559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00640052318134,
- 38.839306354002446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03560'>Report Problem</a>",
- "NAME": "H03560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03161045862089,
- 38.89617030995506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03561'>Report Problem</a>",
- "NAME": "H03561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03801328331464,
- 38.94924861256427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03562'>Report Problem</a>",
- "NAME": "H03562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03350551320615,
- 38.8948737301164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03563'>Report Problem</a>",
- "NAME": "H03563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0335328033324,
- 38.89414833247011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03564'>Report Problem</a>",
- "NAME": "H03564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03211037259001,
- 38.893450358329694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03565'>Report Problem</a>",
- "NAME": "H03565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96498579366997,
- 38.930532371271475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03566'>Report Problem</a>",
- "NAME": "H03566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06883084150009,
- 38.96961954726777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03567'>Report Problem</a>",
- "NAME": "H03567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03483103176875,
- 38.98616942125019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03568'>Report Problem</a>",
- "NAME": "H03568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03353093077355,
- 38.89281301338369,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03570'>Report Problem</a>",
- "NAME": "H03570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03352935056255,
- 38.8934976139276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03572'>Report Problem</a>",
- "NAME": "H03572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03210758664463,
- 38.89294615162206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03573'>Report Problem</a>",
- "NAME": "H03573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98210916758026,
- 38.86880949547161,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03574'>Report Problem</a>",
- "NAME": "H03574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98083421247642,
- 38.89617984291388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03576'>Report Problem</a>",
- "NAME": "H03576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.073723600765,
- 38.91877161250799,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03577'>Report Problem</a>",
- "NAME": "H03577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03627502423484,
- 38.934939371976625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03578'>Report Problem</a>",
- "NAME": "H03578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196989818596,
- 38.90713099191895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03579'>Report Problem</a>",
- "NAME": "H03579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97030744562417,
- 38.89904102170986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03580'>Report Problem</a>",
- "NAME": "H03580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01772316190412,
- 38.951135133712526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03581'>Report Problem</a>",
- "NAME": "H03581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97030685493905,
- 38.900460099398536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03582'>Report Problem</a>",
- "NAME": "H03582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98412242592256,
- 38.92691358413429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03583'>Report Problem</a>",
- "NAME": "H03583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06869098110673,
- 38.950785765423596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03584'>Report Problem</a>",
- "NAME": "H03584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07482935147564,
- 38.919209200965525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03585'>Report Problem</a>",
- "NAME": "H03585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06175018721785,
- 38.96296459500961,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03586'>Report Problem</a>",
- "NAME": "H03586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.078610480102,
- 38.9226014616886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03587'>Report Problem</a>",
- "NAME": "H03587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07721011013284,
- 38.922601764718415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03588'>Report Problem</a>",
- "NAME": "H03588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.996237336026,
- 38.89464853605419,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03589'>Report Problem</a>",
- "NAME": "H03589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98094061209993,
- 38.88871499281592,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03590'>Report Problem</a>",
- "NAME": "H03590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10462878785783,
- 38.93153283774806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03591'>Report Problem</a>",
- "NAME": "H03591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10579525899973,
- 38.93147391829147,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, Metropolitan<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03592'>Report Problem</a>",
- "NAME": "H03592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03515977974857,
- 38.984191209676595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03593'>Report Problem</a>",
- "NAME": "H03593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98699175805315,
- 38.884048464528746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03594'>Report Problem</a>",
- "NAME": "H03594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93051093669813,
- 38.900045262021244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03595'>Report Problem</a>",
- "NAME": "H03595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09924264907829,
- 38.92766583372402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03598'>Report Problem</a>",
- "NAME": "H03598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05915347544803,
- 38.970458519593265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Am. Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03599'>Report Problem</a>",
- "NAME": "H03599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98767458054587,
- 38.909808890628184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03600'>Report Problem</a>",
- "NAME": "H03600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06918313232683,
- 38.94319846573763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03601'>Report Problem</a>",
- "NAME": "H03601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09820310633214,
- 38.93672710819925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03602'>Report Problem</a>",
- "NAME": "H03602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09640769656482,
- 38.93689336470722,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03603'>Report Problem</a>",
- "NAME": "H03603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99513930911083,
- 38.92835761224649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03604'>Report Problem</a>",
- "NAME": "H03604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0161162222745,
- 38.95561371890085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03605'>Report Problem</a>",
- "NAME": "H03605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01801310619798,
- 38.97783561092687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03606'>Report Problem</a>",
- "NAME": "H03606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0241161346038,
- 38.892947894666534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03623'>Report Problem</a>",
- "NAME": "H03623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06080593579244,
- 38.91195520720525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03624'>Report Problem</a>",
- "NAME": "H03624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00349951129549,
- 38.90179401247429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03625'>Report Problem</a>",
- "NAME": "H03625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03603311313024,
- 38.92861706597699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03626'>Report Problem</a>",
- "NAME": "H03626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98706064919195,
- 38.90011391132168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03627'>Report Problem</a>",
- "NAME": "H03627"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99251046407925,
- 38.87933429204732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03628'>Report Problem</a>",
- "NAME": "H03628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02340590137683,
- 38.94204977857756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03629'>Report Problem</a>",
- "NAME": "H03629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99503666664481,
- 38.90036731500801,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03630'>Report Problem</a>",
- "NAME": "H03630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9947877391105,
- 38.88266900606166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03631'>Report Problem</a>",
- "NAME": "H03631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270242324893,
- 38.89814173130459,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03632'>Report Problem</a>",
- "NAME": "H03632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9913498446408,
- 38.90317578837661,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03633'>Report Problem</a>",
- "NAME": "H03633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98250128690327,
- 38.86280263754207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03634'>Report Problem</a>",
- "NAME": "H03634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98453132964869,
- 38.88972583089636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03635'>Report Problem</a>",
- "NAME": "H03635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98709658955805,
- 38.86323840536412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03636'>Report Problem</a>",
- "NAME": "H03636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9817391517061,
- 38.898515838365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03637'>Report Problem</a>",
- "NAME": "H03637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01780522474259,
- 38.91831272856207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03638'>Report Problem</a>",
- "NAME": "H03638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05057805248413,
- 38.901935141495144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03860'>Report Problem</a>",
- "NAME": "H03860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08284878024966,
- 38.93576238291455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03861'>Report Problem</a>",
- "NAME": "H03861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08409890038097,
- 38.93668000362474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03862'>Report Problem</a>",
- "NAME": "H03862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05770442299941,
- 38.91611569521685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04040'>Report Problem</a>",
- "NAME": "H04040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08662125231317,
- 38.92436624935645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04041'>Report Problem</a>",
- "NAME": "H04041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98371465716961,
- 38.89899349249849,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04042'>Report Problem</a>",
- "NAME": "H04042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04177175090446,
- 38.89932046886113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04043'>Report Problem</a>",
- "NAME": "H04043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01103386883443,
- 38.831798486191275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04045'>Report Problem</a>",
- "NAME": "H04045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00995084093915,
- 38.83288575170231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04046'>Report Problem</a>",
- "NAME": "H04046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02854884668233,
- 38.894980786862554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04047'>Report Problem</a>",
- "NAME": "H04047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02514928775247,
- 38.94260309290333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04048'>Report Problem</a>",
- "NAME": "H04048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05702232323367,
- 38.97194758603748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04049'>Report Problem</a>",
- "NAME": "H04049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05629909667,
- 38.97266068612665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04050'>Report Problem</a>",
- "NAME": "H04050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97425492349903,
- 38.94171353886082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04051'>Report Problem</a>",
- "NAME": "H04051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07573085679125,
- 38.95248056685318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04052'>Report Problem</a>",
- "NAME": "H04052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01643052574566,
- 38.947537705491264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04053'>Report Problem</a>",
- "NAME": "H04053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01586649186335,
- 38.94863270354359,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04054'>Report Problem</a>",
- "NAME": "H04054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0684167028383,
- 38.97057009668146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04055'>Report Problem</a>",
- "NAME": "H04055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95978665670779,
- 38.866650130056975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04056'>Report Problem</a>",
- "NAME": "H04056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95997011447649,
- 38.867589509105336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04057'>Report Problem</a>",
- "NAME": "H04057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01487219659207,
- 38.961449290097285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04058'>Report Problem</a>",
- "NAME": "H04058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01355819790655,
- 38.95543634649551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04059'>Report Problem</a>",
- "NAME": "H04059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04419602781695,
- 38.919716197268066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04060'>Report Problem</a>",
- "NAME": "H04060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02005767147647,
- 38.96869166031924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04061'>Report Problem</a>",
- "NAME": "H04061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01375133712867,
- 38.96145372422804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04062'>Report Problem</a>",
- "NAME": "H04062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03975031325787,
- 38.98718292495032,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04063'>Report Problem</a>",
- "NAME": "H04063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0388952422845,
- 38.98778543811387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04064'>Report Problem</a>",
- "NAME": "H04064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06067002568248,
- 38.96367401986806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04066'>Report Problem</a>",
- "NAME": "H04066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9791710704358,
- 38.86830932097184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04067'>Report Problem</a>",
- "NAME": "H04067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05669197844536,
- 38.948006462190435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04068'>Report Problem</a>",
- "NAME": "H04068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95635154378483,
- 38.8574793712542,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04069'>Report Problem</a>",
- "NAME": "H04069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05886548933277,
- 38.974784329722446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04070'>Report Problem</a>",
- "NAME": "H04070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9572988108649,
- 38.857506773850666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04071'>Report Problem</a>",
- "NAME": "H04071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95650687754384,
- 38.86473471172185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04072'>Report Problem</a>",
- "NAME": "H04072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98332298599779,
- 38.903261353463854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04073'>Report Problem</a>",
- "NAME": "H04073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05973347103077,
- 38.97541950141029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04074'>Report Problem</a>",
- "NAME": "H04074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04447098000675,
- 38.98757801898338,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04075'>Report Problem</a>",
- "NAME": "H04075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0789281388047,
- 38.944837782033424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04076'>Report Problem</a>",
- "NAME": "H04076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06968110563282,
- 38.95456296060451,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04077'>Report Problem</a>",
- "NAME": "H04077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97888279186657,
- 38.8862037515252,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04078'>Report Problem</a>",
- "NAME": "H04078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98212771509833,
- 38.896160382711955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04079'>Report Problem</a>",
- "NAME": "H04079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04238191531039,
- 38.940834544272654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04080'>Report Problem</a>",
- "NAME": "H04080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97006383997629,
- 38.93762528004567,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04082'>Report Problem</a>",
- "NAME": "H04082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07155691243143,
- 38.9583234992033,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04083'>Report Problem</a>",
- "NAME": "H04083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99816703591898,
- 38.84521429970991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04084'>Report Problem</a>",
- "NAME": "H04084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07713768504172,
- 38.931925348225796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04085'>Report Problem</a>",
- "NAME": "H04085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07852847850171,
- 38.932540716448024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04086'>Report Problem</a>",
- "NAME": "H04086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05216429665562,
- 38.93550136105225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04087'>Report Problem</a>",
- "NAME": "H04087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03352291853086,
- 38.960320686584865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04088'>Report Problem</a>",
- "NAME": "H04088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05388161748036,
- 38.93504170813739,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04089'>Report Problem</a>",
- "NAME": "H04089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07870202301126,
- 38.91929192074877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04090'>Report Problem</a>",
- "NAME": "H04090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09251282938644,
- 38.94208533657608,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04091'>Report Problem</a>",
- "NAME": "H04091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98397296793766,
- 38.90909195392388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04092'>Report Problem</a>",
- "NAME": "H04092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99787141723502,
- 38.84706921384978,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04093'>Report Problem</a>",
- "NAME": "H04093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01323041960103,
- 38.951106514649524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04094'>Report Problem</a>",
- "NAME": "H04094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95853381973963,
- 38.86747746576027,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04095'>Report Problem</a>",
- "NAME": "H04095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09065436896263,
- 38.94973380945873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, 13843<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04096'>Report Problem</a>",
- "NAME": "H04096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0664335955175,
- 38.97044425092554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04097'>Report Problem</a>",
- "NAME": "H04097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07563919776541,
- 38.930486340266896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04098'>Report Problem</a>",
- "NAME": "H04098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09972541822468,
- 38.93809722509768,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04099'>Report Problem</a>",
- "NAME": "H04099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04078943476497,
- 38.988175695037896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04100'>Report Problem</a>",
- "NAME": "H04100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04185893638387,
- 38.98760633181776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04101'>Report Problem</a>",
- "NAME": "H04101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05663744327478,
- 38.97557317276737,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04102'>Report Problem</a>",
- "NAME": "H04102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03331745963929,
- 38.967670405478614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04103'>Report Problem</a>",
- "NAME": "H04103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06104480063263,
- 38.97674652924848,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04104'>Report Problem</a>",
- "NAME": "H04104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97840451796174,
- 38.940633483429274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04105'>Report Problem</a>",
- "NAME": "H04105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06770001660747,
- 38.96105156933964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02948'>Report Problem</a>",
- "NAME": "H02948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00221244259393,
- 38.905694795654476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02949'>Report Problem</a>",
- "NAME": "H02949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04156597768267,
- 38.91473781631745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02950'>Report Problem</a>",
- "NAME": "H02950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03434655343527,
- 38.911904796252664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02951'>Report Problem</a>",
- "NAME": "H02951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94185353379996,
- 38.87095546114053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02952'>Report Problem</a>",
- "NAME": "H02952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94422238688007,
- 38.87068867061388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02953'>Report Problem</a>",
- "NAME": "H02953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03064494329088,
- 38.98139730236563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02954'>Report Problem</a>",
- "NAME": "H02954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96472342470437,
- 38.86279193559433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02955'>Report Problem</a>",
- "NAME": "H02955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99256887443242,
- 38.89657497042028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02956'>Report Problem</a>",
- "NAME": "H02956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03646264841899,
- 38.90037117994516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02957'>Report Problem</a>",
- "NAME": "H02957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03989327314353,
- 38.949413134877766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02958'>Report Problem</a>",
- "NAME": "H02958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93649035427315,
- 38.894421401238304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02959'>Report Problem</a>",
- "NAME": "H02959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93787631808944,
- 38.894603665178266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02960'>Report Problem</a>",
- "NAME": "H02960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97396896606872,
- 38.91569954439072,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02961'>Report Problem</a>",
- "NAME": "H02961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9702417662267,
- 38.93514179165418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02962'>Report Problem</a>",
- "NAME": "H02962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93669390087652,
- 38.90154269543422,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02963'>Report Problem</a>",
- "NAME": "H02963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9763044924441,
- 38.934995973348904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/26/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02964'>Report Problem</a>",
- "NAME": "H02964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93649024941064,
- 38.90070270858288,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02965'>Report Problem</a>",
- "NAME": "H02965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9752576216346,
- 38.936128225814585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02966'>Report Problem</a>",
- "NAME": "H02966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08969568447627,
- 38.928812030810974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02967'>Report Problem</a>",
- "NAME": "H02967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09060295034901,
- 38.9288113309887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02968'>Report Problem</a>",
- "NAME": "H02968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10062932746031,
- 38.92577087392711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02969'>Report Problem</a>",
- "NAME": "H02969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0999641554701,
- 38.92639025337231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02970'>Report Problem</a>",
- "NAME": "H02970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01571697210065,
- 38.94543686536992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02971'>Report Problem</a>",
- "NAME": "H02971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06409720135247,
- 38.906055783001875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02972'>Report Problem</a>",
- "NAME": "H02972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02973342919985,
- 38.90271086302745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02974'>Report Problem</a>",
- "NAME": "H02974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02948487020159,
- 38.90345979949418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02975'>Report Problem</a>",
- "NAME": "H02975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97229268802785,
- 38.86817630563903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02977'>Report Problem</a>",
- "NAME": "H02977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02947389315197,
- 38.901976973057096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02978'>Report Problem</a>",
- "NAME": "H02978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08395005293166,
- 38.92758994312347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02979'>Report Problem</a>",
- "NAME": "H02979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08490699611133,
- 38.92878907840041,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02980'>Report Problem</a>",
- "NAME": "H02980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0263575848704,
- 38.98028491319458,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02981'>Report Problem</a>",
- "NAME": "H02981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97312498181334,
- 38.87210576858482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02982'>Report Problem</a>",
- "NAME": "H02982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02255583510971,
- 38.9678782563258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02983'>Report Problem</a>",
- "NAME": "H02983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02409493213075,
- 38.967884408231924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02984'>Report Problem</a>",
- "NAME": "H02984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02978067986126,
- 38.958505706828696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02985'>Report Problem</a>",
- "NAME": "H02985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0759482629434,
- 38.921640439414546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02986'>Report Problem</a>",
- "NAME": "H02986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0753347203405,
- 38.920626417876086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02987'>Report Problem</a>",
- "NAME": "H02987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9873322250439,
- 38.94279688930142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02988'>Report Problem</a>",
- "NAME": "H02988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99137291222536,
- 38.94226925460015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02989'>Report Problem</a>",
- "NAME": "H02989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99016741744016,
- 38.94279727927315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02990'>Report Problem</a>",
- "NAME": "H02990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02460274115977,
- 38.97735697440674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02991'>Report Problem</a>",
- "NAME": "H02991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06532711131152,
- 38.9385468922548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02992'>Report Problem</a>",
- "NAME": "H02992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97827601281539,
- 38.88501275921611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02993'>Report Problem</a>",
- "NAME": "H02993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06103787674311,
- 38.93941398009788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02994'>Report Problem</a>",
- "NAME": "H02994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9874904167884,
- 38.9483891668096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02995'>Report Problem</a>",
- "NAME": "H02995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05022434699933,
- 38.899021540353786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02996'>Report Problem</a>",
- "NAME": "H02996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06290389927247,
- 38.94000924979791,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02997'>Report Problem</a>",
- "NAME": "H02997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95116096184061,
- 38.89185398085343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02998'>Report Problem</a>",
- "NAME": "H02998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06206069015427,
- 38.95443700347486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H02999'>Report Problem</a>",
- "NAME": "H02999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98229656724462,
- 38.894828332352944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03000'>Report Problem</a>",
- "NAME": "H03000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03198973846924,
- 38.9840865974315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03001'>Report Problem</a>",
- "NAME": "H03001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03146467084993,
- 38.982369413712924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03002'>Report Problem</a>",
- "NAME": "H03002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0580820494067,
- 38.92976971084407,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03003'>Report Problem</a>",
- "NAME": "H03003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0212889498334,
- 38.96123611742944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03004'>Report Problem</a>",
- "NAME": "H03004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06174761456867,
- 38.95273689429035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03005'>Report Problem</a>",
- "NAME": "H03005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07116792920074,
- 38.94407248345832,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03006'>Report Problem</a>",
- "NAME": "H03006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07252430746055,
- 38.946246889557514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03007'>Report Problem</a>",
- "NAME": "H03007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06390743607209,
- 38.947817674296836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03008'>Report Problem</a>",
- "NAME": "H03008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0317115825553,
- 38.98331185864448,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03011'>Report Problem</a>",
- "NAME": "H03011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0746864483502,
- 38.94225883853485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03012'>Report Problem</a>",
- "NAME": "H03012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04660697225161,
- 38.915883972564075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03013'>Report Problem</a>",
- "NAME": "H03013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05504206511793,
- 38.922077052115164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03014'>Report Problem</a>",
- "NAME": "H03014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05420279506004,
- 38.92118215207154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03015'>Report Problem</a>",
- "NAME": "H03015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96158803992253,
- 38.8584722823408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03016'>Report Problem</a>",
- "NAME": "H03016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06420009266469,
- 38.91459228540269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03017'>Report Problem</a>",
- "NAME": "H03017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97985765635987,
- 38.93414049072257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03018'>Report Problem</a>",
- "NAME": "H03018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04185247563534,
- 38.90029193751483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03019'>Report Problem</a>",
- "NAME": "H03019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03781470311527,
- 38.98413658441228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03022'>Report Problem</a>",
- "NAME": "H03022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03655960121773,
- 38.98422727278148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03023'>Report Problem</a>",
- "NAME": "H03023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0258980132094,
- 38.89819715647122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03024'>Report Problem</a>",
- "NAME": "H03024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02589090923084,
- 38.8991105788257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03026'>Report Problem</a>",
- "NAME": "H03026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97265336894158,
- 38.89623892163102,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03027'>Report Problem</a>",
- "NAME": "H03027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99593299847837,
- 38.847614992775895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03028'>Report Problem</a>",
- "NAME": "H03028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98722162081393,
- 38.94063985150541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03029'>Report Problem</a>",
- "NAME": "H03029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98720564624243,
- 38.93973400298994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03030'>Report Problem</a>",
- "NAME": "H03030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07254358027352,
- 38.94557482355423,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03031'>Report Problem</a>",
- "NAME": "H03031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96030138624464,
- 38.855432859360555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03032'>Report Problem</a>",
- "NAME": "H03032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02543039027128,
- 38.93744058711033,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03033'>Report Problem</a>",
- "NAME": "H03033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02340156988542,
- 38.96455719127427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03034'>Report Problem</a>",
- "NAME": "H03034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98831228616139,
- 38.868264650840004,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03035'>Report Problem</a>",
- "NAME": "H03035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03489267189798,
- 38.97863815525506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03036'>Report Problem</a>",
- "NAME": "H03036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01121501130028,
- 38.86457728425669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03037'>Report Problem</a>",
- "NAME": "H03037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0627498346912,
- 38.96271200287118,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03038'>Report Problem</a>",
- "NAME": "H03038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03161623059155,
- 38.95086298079314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03039'>Report Problem</a>",
- "NAME": "H03039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07698095184269,
- 38.92737933453517,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03040'>Report Problem</a>",
- "NAME": "H03040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05625682098265,
- 38.922018396979134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/02/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03041'>Report Problem</a>",
- "NAME": "H03041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0562799401089,
- 38.9219865864635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03042'>Report Problem</a>",
- "NAME": "H03042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0324021280902,
- 38.88703742305465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03043'>Report Problem</a>",
- "NAME": "H03043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98384903271742,
- 38.902332702098725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03044'>Report Problem</a>",
- "NAME": "H03044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07689570971831,
- 38.92167502435756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03045'>Report Problem</a>",
- "NAME": "H03045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97742065292081,
- 38.870291727982654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03046'>Report Problem</a>",
- "NAME": "H03046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91988640097766,
- 38.89138571378376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03047'>Report Problem</a>",
- "NAME": "H03047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98783083546893,
- 38.905937255126915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03048'>Report Problem</a>",
- "NAME": "H03048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91935850525131,
- 38.8928769031489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03049'>Report Problem</a>",
- "NAME": "H03049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98234413229171,
- 38.88987833884194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03050'>Report Problem</a>",
- "NAME": "H03050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02210590270623,
- 38.891961443379316,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03051'>Report Problem</a>",
- "NAME": "H03051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98371962752331,
- 38.89368192726817,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 11/02/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03052'>Report Problem</a>",
- "NAME": "H03052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02229788417795,
- 38.9626276865333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03053'>Report Problem</a>",
- "NAME": "H03053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99145719128774,
- 38.896028383967334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03054'>Report Problem</a>",
- "NAME": "H03054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07118207234939,
- 38.94557519209683,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03055'>Report Problem</a>",
- "NAME": "H03055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02589261985113,
- 38.898455922851475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03056'>Report Problem</a>",
- "NAME": "H03056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07252535397834,
- 38.944860378728514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03057'>Report Problem</a>",
- "NAME": "H03057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01121321152814,
- 38.89587848417434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03058'>Report Problem</a>",
- "NAME": "H03058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09862948149636,
- 38.93542112168419,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03059'>Report Problem</a>",
- "NAME": "H03059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09429926442536,
- 38.933423734469294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03060'>Report Problem</a>",
- "NAME": "H03060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09690891832666,
- 38.93459711185135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03061'>Report Problem</a>",
- "NAME": "H03061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92801999809289,
- 38.89199576822766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03062'>Report Problem</a>",
- "NAME": "H03062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0616879339619,
- 38.90975680831896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03968'>Report Problem</a>",
- "NAME": "H03968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03606786536979,
- 38.9787393214202,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03969'>Report Problem</a>",
- "NAME": "H03969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0525084929729,
- 38.9072960431751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03970'>Report Problem</a>",
- "NAME": "H03970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03016400705357,
- 38.96458551370847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03971'>Report Problem</a>",
- "NAME": "H03971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09668170160201,
- 38.94302560853069,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03973'>Report Problem</a>",
- "NAME": "H03973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09671075726781,
- 38.94411299327274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03974'>Report Problem</a>",
- "NAME": "H03974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09803281476682,
- 38.94317677742152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03975'>Report Problem</a>",
- "NAME": "H03975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97540058984123,
- 38.9125489999525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03976'>Report Problem</a>",
- "NAME": "H03976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03460529069865,
- 38.96865568635638,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03977'>Report Problem</a>",
- "NAME": "H03977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08783395031158,
- 38.92581868369559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03978'>Report Problem</a>",
- "NAME": "H03978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08632753819212,
- 38.92547903942986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03979'>Report Problem</a>",
- "NAME": "H03979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97822738811706,
- 38.93822279533832,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03980'>Report Problem</a>",
- "NAME": "H03980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97991455023197,
- 38.9383644646014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03981'>Report Problem</a>",
- "NAME": "H03981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00674117092807,
- 38.88337491499376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03982'>Report Problem</a>",
- "NAME": "H03982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98597813021148,
- 38.90590420302283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03983'>Report Problem</a>",
- "NAME": "H03983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02301107047627,
- 38.88472800998696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03984'>Report Problem</a>",
- "NAME": "H03984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06305918575342,
- 38.97514923810629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03985'>Report Problem</a>",
- "NAME": "H03985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02675503132782,
- 38.88116717029896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03986'>Report Problem</a>",
- "NAME": "H03986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0665521850546,
- 38.964065273251784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03987'>Report Problem</a>",
- "NAME": "H03987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09241363308224,
- 38.943228008750694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03988'>Report Problem</a>",
- "NAME": "H03988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06376949697231,
- 38.95820712399084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03989'>Report Problem</a>",
- "NAME": "H03989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06031583923898,
- 38.95782405161072,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, OTHER, SEE FLD NOTES<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03990'>Report Problem</a>",
- "NAME": "H03990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09427905928855,
- 38.937236803935924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03991'>Report Problem</a>",
- "NAME": "H03991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08883645267849,
- 38.94875196927613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03992'>Report Problem</a>",
- "NAME": "H03992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07869497771303,
- 38.96202180294453,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03993'>Report Problem</a>",
- "NAME": "H03993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0429748838458,
- 38.893376574264394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03994'>Report Problem</a>",
- "NAME": "H03994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00637765657599,
- 38.958679293406085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03995'>Report Problem</a>",
- "NAME": "H03995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08982996756723,
- 38.92506344929522,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03996'>Report Problem</a>",
- "NAME": "H03996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01602771740421,
- 38.95642084448925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03997'>Report Problem</a>",
- "NAME": "H03997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06292550685887,
- 38.905942662484556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03998'>Report Problem</a>",
- "NAME": "H03998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01980276107504,
- 38.89034543915308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03999'>Report Problem</a>",
- "NAME": "H03999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01357395614416,
- 38.956034187140546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04000'>Report Problem</a>",
- "NAME": "H04000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06269138832498,
- 38.905029026189716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04001'>Report Problem</a>",
- "NAME": "H04001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02204024219837,
- 38.8890403824405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04002'>Report Problem</a>",
- "NAME": "H04002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00191570334259,
- 38.92447347439483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04003'>Report Problem</a>",
- "NAME": "H04003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97424444409062,
- 38.91267366044658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04004'>Report Problem</a>",
- "NAME": "H04004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00521851748582,
- 38.96191074751201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04005'>Report Problem</a>",
- "NAME": "H04005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96614379977014,
- 38.86332439318026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04006'>Report Problem</a>",
- "NAME": "H04006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01604768424016,
- 38.96998161076748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04007'>Report Problem</a>",
- "NAME": "H04007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01798979967707,
- 38.96999639890795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04008'>Report Problem</a>",
- "NAME": "H04008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03328315926508,
- 38.96422308535336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04010'>Report Problem</a>",
- "NAME": "H04010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0238265466472,
- 38.89338067113388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04011'>Report Problem</a>",
- "NAME": "H04011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99370727002821,
- 38.94263119441689,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04012'>Report Problem</a>",
- "NAME": "H04012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93060463282256,
- 38.8991854425678,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04013'>Report Problem</a>",
- "NAME": "H04013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01590225628522,
- 38.94936853072098,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04014'>Report Problem</a>",
- "NAME": "H04014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00597295640206,
- 38.96275739706677,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04015'>Report Problem</a>",
- "NAME": "H04015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00493167869334,
- 38.96275936437879,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04016'>Report Problem</a>",
- "NAME": "H04016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07785319025015,
- 38.92053735034512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04017'>Report Problem</a>",
- "NAME": "H04017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07863753641577,
- 38.92073190951478,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04018'>Report Problem</a>",
- "NAME": "H04018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9639708265334,
- 38.927918526610114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04019'>Report Problem</a>",
- "NAME": "H04019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04357751409007,
- 38.89440173764898,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 05/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04021'>Report Problem</a>",
- "NAME": "H04021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06345914346076,
- 38.9544323792256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04022'>Report Problem</a>",
- "NAME": "H04022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07782609452616,
- 38.92260089669057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04023'>Report Problem</a>",
- "NAME": "H04023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97809766570585,
- 38.87216301954785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04024'>Report Problem</a>",
- "NAME": "H04024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99170790665153,
- 38.881327767439224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04025'>Report Problem</a>",
- "NAME": "H04025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00914027167185,
- 38.95937947515001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04026'>Report Problem</a>",
- "NAME": "H04026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96765966457971,
- 38.872845621288775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04027'>Report Problem</a>",
- "NAME": "H04027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01250568837185,
- 38.95078117056552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04028'>Report Problem</a>",
- "NAME": "H04028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01127409964606,
- 38.893323732400454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04029'>Report Problem</a>",
- "NAME": "H04029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0298103442541,
- 38.903666872988985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04030'>Report Problem</a>",
- "NAME": "H04030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01580450973327,
- 38.952071863715666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04032'>Report Problem</a>",
- "NAME": "H04032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99164721389013,
- 38.874741483565835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04033'>Report Problem</a>",
- "NAME": "H04033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98601578552778,
- 38.93959433725474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04034'>Report Problem</a>",
- "NAME": "H04034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02127026646194,
- 38.96327450830563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04035'>Report Problem</a>",
- "NAME": "H04035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03208252955329,
- 38.90648623624658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04036'>Report Problem</a>",
- "NAME": "H04036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04629683964683,
- 38.986346257729046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04037'>Report Problem</a>",
- "NAME": "H04037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01349904007813,
- 38.95460841265484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04038'>Report Problem</a>",
- "NAME": "H04038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08855635198329,
- 38.94975116399902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04039'>Report Problem</a>",
- "NAME": "H04039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.983107967382,
- 38.881095468785446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03677'>Report Problem</a>",
- "NAME": "H03677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93649173908001,
- 38.8719792391055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03678'>Report Problem</a>",
- "NAME": "H03678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08495111066085,
- 38.95338792184123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton, Jumbo<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03679'>Report Problem</a>",
- "NAME": "H03679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99014864329517,
- 38.88850120150739,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03680'>Report Problem</a>",
- "NAME": "H03680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06649007812808,
- 38.926274012544695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03681'>Report Problem</a>",
- "NAME": "H03681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97228728616999,
- 38.89802257240617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03682'>Report Problem</a>",
- "NAME": "H03682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97305461341588,
- 38.89815158049901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03683'>Report Problem</a>",
- "NAME": "H03683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07194684810413,
- 38.95402424498342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03684'>Report Problem</a>",
- "NAME": "H03684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0704029814852,
- 38.96767312792083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03685'>Report Problem</a>",
- "NAME": "H03685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06819964179292,
- 38.95970487763922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03686'>Report Problem</a>",
- "NAME": "H03686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06857977859936,
- 38.92611669080908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03687'>Report Problem</a>",
- "NAME": "H03687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97335088000865,
- 38.89716489944282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03688'>Report Problem</a>",
- "NAME": "H03688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06939470842758,
- 38.96580666327167,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03689'>Report Problem</a>",
- "NAME": "H03689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96647728455709,
- 38.923312842592246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03690'>Report Problem</a>",
- "NAME": "H03690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99159495079708,
- 38.89412463786989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03691'>Report Problem</a>",
- "NAME": "H03691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93521318221076,
- 38.87287414331036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03692'>Report Problem</a>",
- "NAME": "H03692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01092779574589,
- 38.89388438312533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03693'>Report Problem</a>",
- "NAME": "H03693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05694661152383,
- 38.91986118140679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03694'>Report Problem</a>",
- "NAME": "H03694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94029933366774,
- 38.9027639647087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03695'>Report Problem</a>",
- "NAME": "H03695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97314431741103,
- 38.937179315985574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03696'>Report Problem</a>",
- "NAME": "H03696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0205514687882,
- 38.92702235174442,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03697'>Report Problem</a>",
- "NAME": "H03697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0853824635693,
- 38.95215701440594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03698'>Report Problem</a>",
- "NAME": "H03698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9783843125799,
- 38.89911538475254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03699'>Report Problem</a>",
- "NAME": "H03699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02234943910024,
- 38.963810532145374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03700'>Report Problem</a>",
- "NAME": "H03700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.980472508922,
- 38.89947491577438,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03701'>Report Problem</a>",
- "NAME": "H03701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02006437787375,
- 38.96382170242456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03702'>Report Problem</a>",
- "NAME": "H03702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0200717411199,
- 38.96440122888235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03703'>Report Problem</a>",
- "NAME": "H03703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97362628962821,
- 38.89622811909845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03704'>Report Problem</a>",
- "NAME": "H03704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07334808038217,
- 38.922589118554164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03705'>Report Problem</a>",
- "NAME": "H03705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08853939694403,
- 38.93443787261761,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03706'>Report Problem</a>",
- "NAME": "H03706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0135852712972,
- 38.892217321679375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03707'>Report Problem</a>",
- "NAME": "H03707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9692144008831,
- 38.9351346612466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03708'>Report Problem</a>",
- "NAME": "H03708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96144233639275,
- 38.8563659923698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03709'>Report Problem</a>",
- "NAME": "H03709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0207600042742,
- 38.90560467234774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03711'>Report Problem</a>",
- "NAME": "H03711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02171332822185,
- 38.90569951012563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03712'>Report Problem</a>",
- "NAME": "H03712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01965967869721,
- 38.905688685374685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03713'>Report Problem</a>",
- "NAME": "H03713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02500514892911,
- 38.905713526572235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03714'>Report Problem</a>",
- "NAME": "H03714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06996003837614,
- 38.95214374893433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03715'>Report Problem</a>",
- "NAME": "H03715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0691474798505,
- 38.91160221589817,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03716'>Report Problem</a>",
- "NAME": "H03716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0275442165845,
- 38.94192542711134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03717'>Report Problem</a>",
- "NAME": "H03717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0659115101399,
- 38.948024220431506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03718'>Report Problem</a>",
- "NAME": "H03718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03089662049607,
- 38.909121929570325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03719'>Report Problem</a>",
- "NAME": "H03719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92005501407913,
- 38.893834818771566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03720'>Report Problem</a>",
- "NAME": "H03720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9208296184903,
- 38.89132150558269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03721'>Report Problem</a>",
- "NAME": "H03721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01179322841816,
- 38.89621411476836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03722'>Report Problem</a>",
- "NAME": "H03722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.920399197111,
- 38.89252964150244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03723'>Report Problem</a>",
- "NAME": "H03723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02449089988893,
- 38.89384785188733,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03724'>Report Problem</a>",
- "NAME": "H03724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01135124439529,
- 38.89625492140214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03725'>Report Problem</a>",
- "NAME": "H03725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01229578405268,
- 38.896209513728095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03726'>Report Problem</a>",
- "NAME": "H03726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0175407045451,
- 38.954430467340345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03727'>Report Problem</a>",
- "NAME": "H03727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95582762484945,
- 38.89472922965072,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03728'>Report Problem</a>",
- "NAME": "H03728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09072110165582,
- 38.943221902714605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03729'>Report Problem</a>",
- "NAME": "H03729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02114474067075,
- 38.92236311680298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03730'>Report Problem</a>",
- "NAME": "H03730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02977627681746,
- 38.9603388614735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03731'>Report Problem</a>",
- "NAME": "H03731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97227316669225,
- 38.937285833876736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03732'>Report Problem</a>",
- "NAME": "H03732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07139661612302,
- 38.95144319880221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03733'>Report Problem</a>",
- "NAME": "H03733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07149511555085,
- 38.9519844548071,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03734'>Report Problem</a>",
- "NAME": "H03734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99014412893996,
- 38.87637385009661,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03735'>Report Problem</a>",
- "NAME": "H03735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06989891802888,
- 38.95079151738554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03736'>Report Problem</a>",
- "NAME": "H03736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1089673506558,
- 38.930876923651695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03737'>Report Problem</a>",
- "NAME": "H03737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07449581337784,
- 38.950685804032574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03738'>Report Problem</a>",
- "NAME": "H03738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00897728353526,
- 38.86883306897482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03739'>Report Problem</a>",
- "NAME": "H03739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99140377054967,
- 38.8594056386091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03740'>Report Problem</a>",
- "NAME": "H03740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99736764122783,
- 38.88421520178614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03741'>Report Problem</a>",
- "NAME": "H03741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09669654450336,
- 38.93833754409531,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03742'>Report Problem</a>",
- "NAME": "H03742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09363207613583,
- 38.95454338590985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03743'>Report Problem</a>",
- "NAME": "H03743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03756818679783,
- 38.94831320181106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, JCF&M - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03745'>Report Problem</a>",
- "NAME": "H03745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06782067092134,
- 38.96980681528786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03746'>Report Problem</a>",
- "NAME": "H03746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02462632034302,
- 38.97575849555607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03747'>Report Problem</a>",
- "NAME": "H03747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02975356797397,
- 38.89383454975894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03748'>Report Problem</a>",
- "NAME": "H03748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08629777521445,
- 38.95600283812685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03749'>Report Problem</a>",
- "NAME": "H03749"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0332257376092,
- 38.96678495718561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03750'>Report Problem</a>",
- "NAME": "H03750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02094461563445,
- 38.92117828812778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03751'>Report Problem</a>",
- "NAME": "H03751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03479925964035,
- 38.983269696087696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03752'>Report Problem</a>",
- "NAME": "H03752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98611537580487,
- 38.86828080558696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03753'>Report Problem</a>",
- "NAME": "H03753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98368081284474,
- 38.868295940148016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03754'>Report Problem</a>",
- "NAME": "H03754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02640885529095,
- 38.9816359993884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03755'>Report Problem</a>",
- "NAME": "H03755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93595291359323,
- 38.892961706694685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03756'>Report Problem</a>",
- "NAME": "H03756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0152190176066,
- 38.96996937125363,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03757'>Report Problem</a>",
- "NAME": "H03757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0120368884428,
- 38.89813621335621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03758'>Report Problem</a>",
- "NAME": "H03758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98857173461492,
- 38.92974780349216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03759'>Report Problem</a>",
- "NAME": "H03759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01173910187487,
- 38.962806523745826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03760'>Report Problem</a>",
- "NAME": "H03760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03163797839147,
- 38.9519323919739,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "LORTON<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03761'>Report Problem</a>",
- "NAME": "H03761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08369855437151,
- 38.9598213311138,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03762'>Report Problem</a>",
- "NAME": "H03762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02307129536355,
- 38.95192642408664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03763'>Report Problem</a>",
- "NAME": "H03763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0006666692874,
- 38.92710127701415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03764'>Report Problem</a>",
- "NAME": "H03764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00067257706168,
- 38.92865223812971,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03765'>Report Problem</a>",
- "NAME": "H03765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0981991942097,
- 38.938032018000676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03766'>Report Problem</a>",
- "NAME": "H03766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03657419052587,
- 38.97321080522942,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03767'>Report Problem</a>",
- "NAME": "H03767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99147214260988,
- 38.942797066448314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03768'>Report Problem</a>",
- "NAME": "H03768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93552592358458,
- 38.90153821012132,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03769'>Report Problem</a>",
- "NAME": "H03769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01715890067166,
- 38.92151159171768,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03770'>Report Problem</a>",
- "NAME": "H03770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02661216471658,
- 38.97572342389356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03771'>Report Problem</a>",
- "NAME": "H03771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08197121143826,
- 38.953935581040234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03772'>Report Problem</a>",
- "NAME": "H03772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06727793389449,
- 38.96301045094308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03773'>Report Problem</a>",
- "NAME": "H03773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06691636964722,
- 38.96218992536008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03774'>Report Problem</a>",
- "NAME": "H03774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03624027089462,
- 38.96484329801526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03775'>Report Problem</a>",
- "NAME": "H03775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03606891843275,
- 38.96618248104796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03776'>Report Problem</a>",
- "NAME": "H03776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01151398465859,
- 38.95863948027614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03777'>Report Problem</a>",
- "NAME": "H03777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02108847292881,
- 38.96274863950616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03778'>Report Problem</a>",
- "NAME": "H03778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01628669731507,
- 38.960114330397104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03779'>Report Problem</a>",
- "NAME": "H03779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07172472634355,
- 38.95326636250473,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03780'>Report Problem</a>",
- "NAME": "H03780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92659979375982,
- 38.89538823889925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03063'>Report Problem</a>",
- "NAME": "H03063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05481944695319,
- 38.90863927935803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03064'>Report Problem</a>",
- "NAME": "H03064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99045305923349,
- 38.89362891870926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03065'>Report Problem</a>",
- "NAME": "H03065"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02960908896921,
- 38.98432816699746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03066'>Report Problem</a>",
- "NAME": "H03066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96138370683586,
- 38.86300740514237,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03067'>Report Problem</a>",
- "NAME": "H03067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02982710973664,
- 38.98233223347925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03068'>Report Problem</a>",
- "NAME": "H03068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9838035827238,
- 38.90661697762803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03069'>Report Problem</a>",
- "NAME": "H03069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02408068276591,
- 38.90034027371829,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03070'>Report Problem</a>",
- "NAME": "H03070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96161646154707,
- 38.86464616677731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03071'>Report Problem</a>",
- "NAME": "H03071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96305345025989,
- 38.86467463746823,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03072'>Report Problem</a>",
- "NAME": "H03072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02300677333967,
- 38.901462408978254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03073'>Report Problem</a>",
- "NAME": "H03073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92482080753835,
- 38.900409802471714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03074'>Report Problem</a>",
- "NAME": "H03074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92373018419002,
- 38.90336745850674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03075'>Report Problem</a>",
- "NAME": "H03075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03364369264172,
- 38.92648065493712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03076'>Report Problem</a>",
- "NAME": "H03076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97428972209386,
- 38.91341281352198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03077'>Report Problem</a>",
- "NAME": "H03077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00334994320968,
- 38.91338393879082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03078'>Report Problem</a>",
- "NAME": "H03078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02511580881117,
- 38.901630403843804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03079'>Report Problem</a>",
- "NAME": "H03079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05419268649665,
- 38.96710665957529,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03080'>Report Problem</a>",
- "NAME": "H03080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05339476720333,
- 38.972366533079885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03081'>Report Problem</a>",
- "NAME": "H03081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1125383286442,
- 38.933493859497865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03082'>Report Problem</a>",
- "NAME": "H03082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11179712299568,
- 38.932421347729324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03083'>Report Problem</a>",
- "NAME": "H03083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11339121339472,
- 38.93430413432582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03084'>Report Problem</a>",
- "NAME": "H03084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03471359883676,
- 38.92632287668111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03085'>Report Problem</a>",
- "NAME": "H03085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01884359062524,
- 38.89914307904043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03086'>Report Problem</a>",
- "NAME": "H03086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08079917976667,
- 38.90968626762176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03144'>Report Problem</a>",
- "NAME": "H03144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05011078397638,
- 38.92509781496898,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03145'>Report Problem</a>",
- "NAME": "H03145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01716558161729,
- 38.96617805495967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03146'>Report Problem</a>",
- "NAME": "H03146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97614306030557,
- 38.937146131347774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03147'>Report Problem</a>",
- "NAME": "H03147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98686088996996,
- 38.878449367192985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03148'>Report Problem</a>",
- "NAME": "H03148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01850567279425,
- 38.95217319775716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03149'>Report Problem</a>",
- "NAME": "H03149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02136505073196,
- 38.893516344880595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03150'>Report Problem</a>",
- "NAME": "H03150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02125294674073,
- 38.96787721220207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03151'>Report Problem</a>",
- "NAME": "H03151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97193514646283,
- 38.9266449440927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03152'>Report Problem</a>",
- "NAME": "H03152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0622395873915,
- 38.96190733397728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03153'>Report Problem</a>",
- "NAME": "H03153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02208557190023,
- 38.893868951574575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03154'>Report Problem</a>",
- "NAME": "H03154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01892885021266,
- 38.9509652738986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03155'>Report Problem</a>",
- "NAME": "H03155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01269773684562,
- 38.91076793287809,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03156'>Report Problem</a>",
- "NAME": "H03156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02560353653519,
- 38.97535640157549,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03157'>Report Problem</a>",
- "NAME": "H03157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07597581965106,
- 38.920554251490216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03158'>Report Problem</a>",
- "NAME": "H03158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01445662012209,
- 38.970911630605706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03159'>Report Problem</a>",
- "NAME": "H03159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97992285017801,
- 38.892137896330816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03160'>Report Problem</a>",
- "NAME": "H03160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02757932395554,
- 38.89503858324773,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03161'>Report Problem</a>",
- "NAME": "H03161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03378412864905,
- 38.89674597564679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03162'>Report Problem</a>",
- "NAME": "H03162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03204687358763,
- 38.959331074935484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03163'>Report Problem</a>",
- "NAME": "H03163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00834632839808,
- 38.91116145773266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03164'>Report Problem</a>",
- "NAME": "H03164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00668606710775,
- 38.91116805053838,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, A.M Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03165'>Report Problem</a>",
- "NAME": "H03165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03489033834887,
- 38.98542149689027,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03166'>Report Problem</a>",
- "NAME": "H03166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0193985907573,
- 38.95545874664475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03167'>Report Problem</a>",
- "NAME": "H03167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01796350962823,
- 38.9554724613172,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03168'>Report Problem</a>",
- "NAME": "H03168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05868106619577,
- 38.96082930030023,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03169'>Report Problem</a>",
- "NAME": "H03169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06103442452928,
- 38.96111596339867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03170'>Report Problem</a>",
- "NAME": "H03170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06206808690501,
- 38.96111634711395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03171'>Report Problem</a>",
- "NAME": "H03171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06383390729334,
- 38.96111396410806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03172'>Report Problem</a>",
- "NAME": "H03172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06831085455843,
- 38.960101518445335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03173'>Report Problem</a>",
- "NAME": "H03173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00504620826737,
- 38.915662148765044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03174'>Report Problem</a>",
- "NAME": "H03174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99259931929079,
- 38.942241403978024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03175'>Report Problem</a>",
- "NAME": "H03175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04338426468321,
- 38.905765143216705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03176'>Report Problem</a>",
- "NAME": "H03176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02343349885864,
- 38.964877797455635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03177'>Report Problem</a>",
- "NAME": "H03177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04122348711469,
- 38.90554513094255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03178'>Report Problem</a>",
- "NAME": "H03178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98876281410804,
- 38.93259738370972,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03179'>Report Problem</a>",
- "NAME": "H03179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06125704515705,
- 38.90604031689242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03180'>Report Problem</a>",
- "NAME": "H03180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01795801880182,
- 38.96010097863465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03181'>Report Problem</a>",
- "NAME": "H03181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97798088532983,
- 38.905736044810936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03182'>Report Problem</a>",
- "NAME": "H03182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07218142447562,
- 38.93341050686152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03183'>Report Problem</a>",
- "NAME": "H03183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99610510582475,
- 38.882195423491474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03184'>Report Problem</a>",
- "NAME": "H03184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03342680659567,
- 38.902431263270714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03185'>Report Problem</a>",
- "NAME": "H03185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9983770585032,
- 38.88364220587385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03186'>Report Problem</a>",
- "NAME": "H03186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03188537061007,
- 38.96547600877725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03187'>Report Problem</a>",
- "NAME": "H03187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06384730087355,
- 38.93345825419992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03188'>Report Problem</a>",
- "NAME": "H03188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0623914666454,
- 38.93342628620925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03189'>Report Problem</a>",
- "NAME": "H03189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03354560389819,
- 38.905583486006044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03190'>Report Problem</a>",
- "NAME": "H03190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0295379713994,
- 38.9649033944595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03191'>Report Problem</a>",
- "NAME": "H03191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02992553456137,
- 38.96548422881598,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03192'>Report Problem</a>",
- "NAME": "H03192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0350029582957,
- 38.95298587803494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03193'>Report Problem</a>",
- "NAME": "H03193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03420182627764,
- 38.95525409969401,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03194'>Report Problem</a>",
- "NAME": "H03194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0836747219192,
- 38.95909814692505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03195'>Report Problem</a>",
- "NAME": "H03195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0210331732302,
- 38.96205700483449,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03196'>Report Problem</a>",
- "NAME": "H03196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02233705863725,
- 38.96123460669477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03197'>Report Problem</a>",
- "NAME": "H03197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08613009266448,
- 38.94615900551879,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03198'>Report Problem</a>",
- "NAME": "H03198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02001259489441,
- 38.96559534535164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03199'>Report Problem</a>",
- "NAME": "H03199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04084405420814,
- 38.94498942572128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03200'>Report Problem</a>",
- "NAME": "H03200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02233651766645,
- 38.96558315074984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03201'>Report Problem</a>",
- "NAME": "H03201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01818410341815,
- 38.96208764225485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03202'>Report Problem</a>",
- "NAME": "H03202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01978833708134,
- 38.962058780560724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03203'>Report Problem</a>",
- "NAME": "H03203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05982166459445,
- 38.92964514024582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03204'>Report Problem</a>",
- "NAME": "H03204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05484272262582,
- 38.91710801701536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03205'>Report Problem</a>",
- "NAME": "H03205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02410285262988,
- 38.965475682936756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03206'>Report Problem</a>",
- "NAME": "H03206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9731781709192,
- 38.91341622103919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03207'>Report Problem</a>",
- "NAME": "H03207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05532668603573,
- 38.917922259143026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03208'>Report Problem</a>",
- "NAME": "H03208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07708626176108,
- 38.955398522853244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03209'>Report Problem</a>",
- "NAME": "H03209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01814837482497,
- 38.95952572697822,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03210'>Report Problem</a>",
- "NAME": "H03210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09117591710422,
- 38.94170236347056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03211'>Report Problem</a>",
- "NAME": "H03211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01788018551073,
- 38.95311603756104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03212'>Report Problem</a>",
- "NAME": "H03212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03534395233046,
- 38.900405854604756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03213'>Report Problem</a>",
- "NAME": "H03213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02975547661387,
- 38.905568694103394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03214'>Report Problem</a>",
- "NAME": "H03214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03744482475409,
- 38.898599312202094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03215'>Report Problem</a>",
- "NAME": "H03215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99826787017928,
- 38.89484157005496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03217'>Report Problem</a>",
- "NAME": "H03217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96614811675154,
- 38.93740151748665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03218'>Report Problem</a>",
- "NAME": "H03218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96702467886138,
- 38.93773785859908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03219'>Report Problem</a>",
- "NAME": "H03219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01376017119289,
- 38.90650970325695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03220'>Report Problem</a>",
- "NAME": "H03220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02127716386049,
- 38.9666283589006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03221'>Report Problem</a>",
- "NAME": "H03221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03320654797018,
- 38.96547181254771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03222'>Report Problem</a>",
- "NAME": "H03222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97727047753588,
- 38.87189155540718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03223'>Report Problem</a>",
- "NAME": "H03223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03359826259181,
- 38.96607518113642,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03224'>Report Problem</a>",
- "NAME": "H03224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04580996506851,
- 38.9181264705252,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03225'>Report Problem</a>",
- "NAME": "H03225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00793015891381,
- 38.91494642066939,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03226'>Report Problem</a>",
- "NAME": "H03226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98739632735732,
- 38.94109091557004,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03883'>Report Problem</a>",
- "NAME": "H03883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02993102017118,
- 38.96689660329951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03884'>Report Problem</a>",
- "NAME": "H03884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09067994690605,
- 38.9510866978661,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03885'>Report Problem</a>",
- "NAME": "H03885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11038764936174,
- 38.93389987912438,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03886'>Report Problem</a>",
- "NAME": "H03886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94467417940768,
- 38.89338113353268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03887'>Report Problem</a>",
- "NAME": "H03887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0294107470302,
- 38.88605622905826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03888'>Report Problem</a>",
- "NAME": "H03888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03138760520034,
- 38.886051705821195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03889'>Report Problem</a>",
- "NAME": "H03889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02978226203604,
- 38.88605471159471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03890'>Report Problem</a>",
- "NAME": "H03890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01238495004036,
- 38.89282399770782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03891'>Report Problem</a>",
- "NAME": "H03891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0504189584601,
- 38.92385555226625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 04/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03892'>Report Problem</a>",
- "NAME": "H03892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05587634447056,
- 38.94552488410289,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03893'>Report Problem</a>",
- "NAME": "H03893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0612463631752,
- 38.96825400819106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03894'>Report Problem</a>",
- "NAME": "H03894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02899749615027,
- 38.93613977816719,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03895'>Report Problem</a>",
- "NAME": "H03895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97208970699663,
- 38.934006003443756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03896'>Report Problem</a>",
- "NAME": "H03896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07452274816076,
- 38.95486545414465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03897'>Report Problem</a>",
- "NAME": "H03897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96756117691892,
- 38.92938999601311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03898'>Report Problem</a>",
- "NAME": "H03898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07233903474206,
- 38.94207655466052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03899'>Report Problem</a>",
- "NAME": "H03899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98080096162482,
- 38.86424581581121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03900'>Report Problem</a>",
- "NAME": "H03900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02003147510977,
- 38.89232519721652,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03901'>Report Problem</a>",
- "NAME": "H03901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06426700595999,
- 38.94045449089907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03902'>Report Problem</a>",
- "NAME": "H03902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94701816806304,
- 38.89410343029709,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03903'>Report Problem</a>",
- "NAME": "H03903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01225239256465,
- 38.86606355011329,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03904'>Report Problem</a>",
- "NAME": "H03904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.012117532979,
- 38.86539800467446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03905'>Report Problem</a>",
- "NAME": "H03905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02313279945245,
- 38.89196242462637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03907'>Report Problem</a>",
- "NAME": "H03907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02376546437307,
- 38.89196180216161,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Muelller<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03908'>Report Problem</a>",
- "NAME": "H03908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98740892170207,
- 38.879379976435274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03909'>Report Problem</a>",
- "NAME": "H03909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02021440176755,
- 38.91642804618404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03639'>Report Problem</a>",
- "NAME": "H03639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98063121662285,
- 38.89824276963699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03640'>Report Problem</a>",
- "NAME": "H03640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03739949869475,
- 38.91190599392193,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03641'>Report Problem</a>",
- "NAME": "H03641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98282288389858,
- 38.89870385409001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03642'>Report Problem</a>",
- "NAME": "H03642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0389614784742,
- 38.91464011754894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03643'>Report Problem</a>",
- "NAME": "H03643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9718437434898,
- 38.89620212830783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03644'>Report Problem</a>",
- "NAME": "H03644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02828119021994,
- 38.91265469942714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03645'>Report Problem</a>",
- "NAME": "H03645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97696852582,
- 38.896913560633564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03646'>Report Problem</a>",
- "NAME": "H03646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98301921993799,
- 38.891959841567974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03647'>Report Problem</a>",
- "NAME": "H03647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98316287471619,
- 38.90790310782094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03648'>Report Problem</a>",
- "NAME": "H03648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07008910339574,
- 38.91257320447507,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03649'>Report Problem</a>",
- "NAME": "H03649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0220419598844,
- 38.89236167938233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03650'>Report Problem</a>",
- "NAME": "H03650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02605409876183,
- 38.914919678784116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03651'>Report Problem</a>",
- "NAME": "H03651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0220410988322,
- 38.89304449600635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03652'>Report Problem</a>",
- "NAME": "H03652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98846723544642,
- 38.90071774474027,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03653'>Report Problem</a>",
- "NAME": "H03653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0450155056833,
- 38.986431984549405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03654'>Report Problem</a>",
- "NAME": "H03654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07737144758829,
- 38.9125746087927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, UNKNOWN<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03655'>Report Problem</a>",
- "NAME": "H03655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99016210125716,
- 38.8994864211401,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03656'>Report Problem</a>",
- "NAME": "H03656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0685664874811,
- 38.97414463957226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03657'>Report Problem</a>",
- "NAME": "H03657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97732163172466,
- 38.88545134908238,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03658'>Report Problem</a>",
- "NAME": "H03658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00189385896061,
- 38.91265565640735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03659'>Report Problem</a>",
- "NAME": "H03659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01531647738463,
- 38.91266766691569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03660'>Report Problem</a>",
- "NAME": "H03660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99146062492818,
- 38.89835274907097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03661'>Report Problem</a>",
- "NAME": "H03661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99632227998107,
- 38.89667894325444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03662'>Report Problem</a>",
- "NAME": "H03662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06969589736448,
- 38.92354424519247,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03663'>Report Problem</a>",
- "NAME": "H03663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01317587490239,
- 38.91403104240183,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03664'>Report Problem</a>",
- "NAME": "H03664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01321823864798,
- 38.914782098541885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03665'>Report Problem</a>",
- "NAME": "H03665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98930899156106,
- 38.89606840244226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03666'>Report Problem</a>",
- "NAME": "H03666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02991852688407,
- 38.96608027027174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03667'>Report Problem</a>",
- "NAME": "H03667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99623514257868,
- 38.89929725684337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03668'>Report Problem</a>",
- "NAME": "H03668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98086774955685,
- 38.89543659520728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03669'>Report Problem</a>",
- "NAME": "H03669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05939719823994,
- 38.93736314077285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03670'>Report Problem</a>",
- "NAME": "H03670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.992572321266,
- 38.89269925581821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03671'>Report Problem</a>",
- "NAME": "H03671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99368999608703,
- 38.89421681732873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03672'>Report Problem</a>",
- "NAME": "H03672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06204860798529,
- 38.94210801739967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 12/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03673'>Report Problem</a>",
- "NAME": "H03673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97732142921282,
- 38.887466415623784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03674'>Report Problem</a>",
- "NAME": "H03674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851999834095,
- 38.89253414296477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03675'>Report Problem</a>",
- "NAME": "H03675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98702073677197,
- 38.87756751740622,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 03/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03676'>Report Problem</a>",
- "NAME": "H03676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97619226841928,
- 38.86553156673918,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06739'>Report Problem</a>",
- "NAME": "H06739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97571177773297,
- 38.86599735584727,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06740'>Report Problem</a>",
- "NAME": "H06740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95395505577085,
- 38.88967237753783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06741'>Report Problem</a>",
- "NAME": "H06741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95601211207112,
- 38.88958216769603,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06742'>Report Problem</a>",
- "NAME": "H06742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0257342955336,
- 38.901365180338246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06743'>Report Problem</a>",
- "NAME": "H06743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0793399357029,
- 38.95482322452686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06744'>Report Problem</a>",
- "NAME": "H06744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01151128241311,
- 38.96383945946481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06745'>Report Problem</a>",
- "NAME": "H06745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0209775280849,
- 38.90079746076288,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06746'>Report Problem</a>",
- "NAME": "H06746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02494205099968,
- 38.900803527962424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06747'>Report Problem</a>",
- "NAME": "H06747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02685710766697,
- 38.90094249872682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06748'>Report Problem</a>",
- "NAME": "H06748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08763583940052,
- 38.95923725131862,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06750'>Report Problem</a>",
- "NAME": "H06750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96779725523542,
- 38.858067618875474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06751'>Report Problem</a>",
- "NAME": "H06751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93391594052164,
- 38.899137807634276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06752'>Report Problem</a>",
- "NAME": "H06752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01997826848236,
- 38.91423012545715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06753'>Report Problem</a>",
- "NAME": "H06753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00547560881265,
- 38.84637883308082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06754'>Report Problem</a>",
- "NAME": "H06754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02439297733744,
- 38.97948113049743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06755'>Report Problem</a>",
- "NAME": "H06755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02440662013707,
- 38.980360888537334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06756'>Report Problem</a>",
- "NAME": "H06756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95477451931532,
- 38.88367693562122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06757'>Report Problem</a>",
- "NAME": "H06757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9536481212613,
- 38.88764160564635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06758'>Report Problem</a>",
- "NAME": "H06758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96462964466762,
- 38.860166655668365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06759'>Report Problem</a>",
- "NAME": "H06759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0408517845078,
- 38.99374710161613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06760'>Report Problem</a>",
- "NAME": "H06760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9755956911888,
- 38.89856910900174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06761'>Report Problem</a>",
- "NAME": "H06761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95615373364924,
- 38.88687019460337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06762'>Report Problem</a>",
- "NAME": "H06762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99463782613996,
- 38.953091536231284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06763'>Report Problem</a>",
- "NAME": "H06763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06645934937967,
- 38.937416027920605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06764'>Report Problem</a>",
- "NAME": "H06764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01878735609293,
- 38.91415425662246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06765'>Report Problem</a>",
- "NAME": "H06765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01998347678683,
- 38.9131889140317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06766'>Report Problem</a>",
- "NAME": "H06766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0180741642603,
- 38.91402962168495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06767'>Report Problem</a>",
- "NAME": "H06767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94252687115358,
- 38.896887658020376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06768'>Report Problem</a>",
- "NAME": "H06768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10211954219713,
- 38.93777130054011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06769'>Report Problem</a>",
- "NAME": "H06769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94340512482906,
- 38.90238856487108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06770'>Report Problem</a>",
- "NAME": "H06770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0395358351307,
- 38.89682850695422,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06771'>Report Problem</a>",
- "NAME": "H06771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97155970955157,
- 38.90035182436649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06772'>Report Problem</a>",
- "NAME": "H06772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00000984760143,
- 38.96004295725367,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06773'>Report Problem</a>",
- "NAME": "H06773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93302287169982,
- 38.88576873842303,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06774'>Report Problem</a>",
- "NAME": "H06774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00892011912906,
- 38.90083947816433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07197'>Report Problem</a>",
- "NAME": "H07197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00894688005167,
- 38.897743618199506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07198'>Report Problem</a>",
- "NAME": "H07198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00939348519698,
- 38.89769822603817,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07199'>Report Problem</a>",
- "NAME": "H07199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0091771433557,
- 38.90388729993978,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07200'>Report Problem</a>",
- "NAME": "H07200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00899347692015,
- 38.90013204620811,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07201'>Report Problem</a>",
- "NAME": "H07201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00894785037569,
- 38.89904613705559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07202'>Report Problem</a>",
- "NAME": "H07202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01782766257763,
- 38.88744576275732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07203'>Report Problem</a>",
- "NAME": "H07203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95825889949046,
- 38.91861289514262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07204'>Report Problem</a>",
- "NAME": "H07204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01892694196995,
- 38.883384241899456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07205'>Report Problem</a>",
- "NAME": "H07205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01871752829672,
- 38.88704923685434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07206'>Report Problem</a>",
- "NAME": "H07206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98702194377705,
- 38.882780402581254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07207'>Report Problem</a>",
- "NAME": "H07207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0760866996656,
- 38.93226364151522,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07208'>Report Problem</a>",
- "NAME": "H07208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07733033357897,
- 38.93114472297318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07209'>Report Problem</a>",
- "NAME": "H07209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07433804000576,
- 38.932022037940236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07210'>Report Problem</a>",
- "NAME": "H07210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01503886054155,
- 38.877600907692184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07211'>Report Problem</a>",
- "NAME": "H07211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01073346648421,
- 38.87723435373883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07212'>Report Problem</a>",
- "NAME": "H07212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96680159991848,
- 38.870595738904306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07213'>Report Problem</a>",
- "NAME": "H07213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04370720675433,
- 38.99274652904947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07214'>Report Problem</a>",
- "NAME": "H07214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03630310624884,
- 38.90267650414809,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07215'>Report Problem</a>",
- "NAME": "H07215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.008040458826,
- 38.95246531699045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07216'>Report Problem</a>",
- "NAME": "H07216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01598044680377,
- 38.87834588488748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07217'>Report Problem</a>",
- "NAME": "H07217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01540541759621,
- 38.878484862563035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07218'>Report Problem</a>",
- "NAME": "H07218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97432436464165,
- 38.84799496356251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07219'>Report Problem</a>",
- "NAME": "H07219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97311002954135,
- 38.848328560921125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07220'>Report Problem</a>",
- "NAME": "H07220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0093318201568,
- 38.90137860516174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07221'>Report Problem</a>",
- "NAME": "H07221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91239327832523,
- 38.894254690289245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07222'>Report Problem</a>",
- "NAME": "H07222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91620274195222,
- 38.89441105985491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07223'>Report Problem</a>",
- "NAME": "H07223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91359566850382,
- 38.89431823006889,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07224'>Report Problem</a>",
- "NAME": "H07224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93384210812016,
- 38.90368210438252,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07225'>Report Problem</a>",
- "NAME": "H07225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9151337259828,
- 38.89435100400987,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07226'>Report Problem</a>",
- "NAME": "H07226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01154222075427,
- 38.877366835132634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07227'>Report Problem</a>",
- "NAME": "H07227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99699340192487,
- 38.954002266365585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07228'>Report Problem</a>",
- "NAME": "H07228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91900045070366,
- 38.895873199959226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07229'>Report Problem</a>",
- "NAME": "H07229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93786808494754,
- 38.893322823693715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07230'>Report Problem</a>",
- "NAME": "H07230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00999535557048,
- 38.834449310180084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07231'>Report Problem</a>",
- "NAME": "H07231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99755314306138,
- 38.92094740941287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07667'>Report Problem</a>",
- "NAME": "H07667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97135230860745,
- 38.91753719035839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07668'>Report Problem</a>",
- "NAME": "H07668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97492738611184,
- 38.90367021987711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07669'>Report Problem</a>",
- "NAME": "H07669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04326853668506,
- 38.91878644352333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07670'>Report Problem</a>",
- "NAME": "H07670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99014307800064,
- 38.87547219959561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07671'>Report Problem</a>",
- "NAME": "H07671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93765621558026,
- 38.89183337460716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07672'>Report Problem</a>",
- "NAME": "H07672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01677983744221,
- 38.8730177022914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07673'>Report Problem</a>",
- "NAME": "H07673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01887697985103,
- 38.873455208423735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07674'>Report Problem</a>",
- "NAME": "H07674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01640764249932,
- 38.87633372868106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07675'>Report Problem</a>",
- "NAME": "H07675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01159629528371,
- 38.87936112579086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07677'>Report Problem</a>",
- "NAME": "H07677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01261033798694,
- 38.87658511129462,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07678'>Report Problem</a>",
- "NAME": "H07678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01233546547482,
- 38.87936309496276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07679'>Report Problem</a>",
- "NAME": "H07679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00944277407116,
- 38.87633054483603,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07680'>Report Problem</a>",
- "NAME": "H07680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05466802507115,
- 38.902797777126835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07681'>Report Problem</a>",
- "NAME": "H07681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0546644060393,
- 38.90230258949338,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07682'>Report Problem</a>",
- "NAME": "H07682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05344022400106,
- 38.902351296537745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07683'>Report Problem</a>",
- "NAME": "H07683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0563526613564,
- 38.89719554228751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07684'>Report Problem</a>",
- "NAME": "H07684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00539260233548,
- 38.836967351080574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07685'>Report Problem</a>",
- "NAME": "H07685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03491034254026,
- 38.96391870854372,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07686'>Report Problem</a>",
- "NAME": "H07686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97721122571765,
- 38.882744758604666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 04/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07687'>Report Problem</a>",
- "NAME": "H07687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96274420677837,
- 38.85721945898499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07688'>Report Problem</a>",
- "NAME": "H07688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97803667181053,
- 38.896984049594245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07689'>Report Problem</a>",
- "NAME": "H07689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0415979436605,
- 38.90487850636528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07690'>Report Problem</a>",
- "NAME": "H07690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99326421206962,
- 38.917553371752454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07691'>Report Problem</a>",
- "NAME": "H07691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05396737998048,
- 38.898283212361086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07692'>Report Problem</a>",
- "NAME": "H07692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0534704855882,
- 38.898228309672355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07693'>Report Problem</a>",
- "NAME": "H07693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03755410254352,
- 38.91743951244679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07694'>Report Problem</a>",
- "NAME": "H07694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06017002561991,
- 38.90270180948715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07695'>Report Problem</a>",
- "NAME": "H07695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98055268599259,
- 38.85524640680752,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07696'>Report Problem</a>",
- "NAME": "H07696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04766864729972,
- 38.89608397483113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07697'>Report Problem</a>",
- "NAME": "H07697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04484972777144,
- 38.89448203416388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07698'>Report Problem</a>",
- "NAME": "H07698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04444684838937,
- 38.894130240194535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07699'>Report Problem</a>",
- "NAME": "H07699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99164281106908,
- 38.876616328836434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07700'>Report Problem</a>",
- "NAME": "H07700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04880336671062,
- 38.896089649990614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07701'>Report Problem</a>",
- "NAME": "H07701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0379773301635,
- 38.899475870010406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08105'>Report Problem</a>",
- "NAME": "H08105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97894392208693,
- 38.88988682881371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08106'>Report Problem</a>",
- "NAME": "H08106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98165412357774,
- 38.862557829894975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08107'>Report Problem</a>",
- "NAME": "H08107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9147522190026,
- 38.88963372475377,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08108'>Report Problem</a>",
- "NAME": "H08108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91654995106566,
- 38.88963548236685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08109'>Report Problem</a>",
- "NAME": "H08109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02421339881987,
- 38.88333321499806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08110'>Report Problem</a>",
- "NAME": "H08110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02421108343869,
- 38.88462760318923,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08111'>Report Problem</a>",
- "NAME": "H08111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91631701038018,
- 38.88755314567799,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant,<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08112'>Report Problem</a>",
- "NAME": "H08112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01386833571942,
- 38.82122451049569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08113'>Report Problem</a>",
- "NAME": "H08113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01373901775405,
- 38.822126697690344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08114'>Report Problem</a>",
- "NAME": "H08114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93686756980581,
- 38.891976634589106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08116'>Report Problem</a>",
- "NAME": "H08116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00495907837568,
- 38.880452620386954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08117'>Report Problem</a>",
- "NAME": "H08117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03451993866423,
- 38.96030260517449,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08118'>Report Problem</a>",
- "NAME": "H08118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91736596444753,
- 38.88840732851712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08119'>Report Problem</a>",
- "NAME": "H08119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05577166845528,
- 38.8939583760691,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08120'>Report Problem</a>",
- "NAME": "H08120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01186173359831,
- 38.88752855127196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08121'>Report Problem</a>",
- "NAME": "H08121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06602071262793,
- 38.904456359945804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08122'>Report Problem</a>",
- "NAME": "H08122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91502224180435,
- 38.888557456157436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08123'>Report Problem</a>",
- "NAME": "H08123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91408993993186,
- 38.88929839807364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08124'>Report Problem</a>",
- "NAME": "H08124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03037041539007,
- 38.893085867578534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08125'>Report Problem</a>",
- "NAME": "H08125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00055785842466,
- 38.95940107255572,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08126'>Report Problem</a>",
- "NAME": "H08126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02499525397063,
- 38.9148842911261,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08127'>Report Problem</a>",
- "NAME": "H08127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02408329066122,
- 38.914723359574246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08128'>Report Problem</a>",
- "NAME": "H08128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00924159351723,
- 38.90863474849086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08129'>Report Problem</a>",
- "NAME": "H08129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05453300132713,
- 38.897308343842006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08130'>Report Problem</a>",
- "NAME": "H08130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98156112121428,
- 38.93715530917865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08131'>Report Problem</a>",
- "NAME": "H08131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03655346529241,
- 38.93627169387359,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08132'>Report Problem</a>",
- "NAME": "H08132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06182094754568,
- 38.92834710097888,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08133'>Report Problem</a>",
- "NAME": "H08133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04092863613873,
- 38.92393933632943,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08134'>Report Problem</a>",
- "NAME": "H08134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0221265819427,
- 38.898539817011454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08135'>Report Problem</a>",
- "NAME": "H08135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02271292907197,
- 38.89836079842859,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08136'>Report Problem</a>",
- "NAME": "H08136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02406975777616,
- 38.898062404027264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08137'>Report Problem</a>",
- "NAME": "H08137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02084117174662,
- 38.87633543588754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08138'>Report Problem</a>",
- "NAME": "H08138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97300181603889,
- 38.859527393050946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08139'>Report Problem</a>",
- "NAME": "H08139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01374574817113,
- 38.88377595751544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08140'>Report Problem</a>",
- "NAME": "H08140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99840104160103,
- 38.95365818727558,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06702'>Report Problem</a>",
- "NAME": "H06702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99721094891771,
- 38.952651535941946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06703'>Report Problem</a>",
- "NAME": "H06703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99880649925983,
- 38.95261883607398,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06704'>Report Problem</a>",
- "NAME": "H06704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00232570456356,
- 38.954843158538196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06705'>Report Problem</a>",
- "NAME": "H06705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00114517405473,
- 38.95480814291553,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06706'>Report Problem</a>",
- "NAME": "H06706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0005142660758,
- 38.954252031074866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06707'>Report Problem</a>",
- "NAME": "H06707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99167780726519,
- 38.890480109195764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06708'>Report Problem</a>",
- "NAME": "H06708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95310858880491,
- 38.858883995619365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06709'>Report Problem</a>",
- "NAME": "H06709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02173224424004,
- 38.919954660636435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06710'>Report Problem</a>",
- "NAME": "H06710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98307754778058,
- 38.86721708826973,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06711'>Report Problem</a>",
- "NAME": "H06711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0585309713972,
- 38.92188727193555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/02/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06712'>Report Problem</a>",
- "NAME": "H06712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99959727710178,
- 38.90865930069435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06713'>Report Problem</a>",
- "NAME": "H06713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9974288222908,
- 38.88765148607277,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06714'>Report Problem</a>",
- "NAME": "H06714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98814650876594,
- 38.88606472645686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06715'>Report Problem</a>",
- "NAME": "H06715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95402279913114,
- 38.88995550144341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06716'>Report Problem</a>",
- "NAME": "H06716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95558173450337,
- 38.88995358231732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06717'>Report Problem</a>",
- "NAME": "H06717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02013062656702,
- 38.90424171993253,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06720'>Report Problem</a>",
- "NAME": "H06720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02491135204471,
- 38.904239492161786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06721'>Report Problem</a>",
- "NAME": "H06721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04274884712204,
- 38.9466990842324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06722'>Report Problem</a>",
- "NAME": "H06722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01884121146134,
- 38.90432045178427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06723'>Report Problem</a>",
- "NAME": "H06723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97638676191636,
- 38.87314917819528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06724'>Report Problem</a>",
- "NAME": "H06724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94714033787068,
- 38.899418538210234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06725'>Report Problem</a>",
- "NAME": "H06725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93553230448904,
- 38.9109076910083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06726'>Report Problem</a>",
- "NAME": "H06726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07078422439486,
- 38.96085470511081,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06727'>Report Problem</a>",
- "NAME": "H06727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03661697939123,
- 38.98735629283935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06729'>Report Problem</a>",
- "NAME": "H06729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03906193377343,
- 38.986262689053405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06730'>Report Problem</a>",
- "NAME": "H06730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03795766048816,
- 38.98708403377112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06731'>Report Problem</a>",
- "NAME": "H06731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01084131188746,
- 38.96635609459757,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06732'>Report Problem</a>",
- "NAME": "H06732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93787036223503,
- 38.90860321777128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06733'>Report Problem</a>",
- "NAME": "H06733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9904958233762,
- 38.95619927788162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06734'>Report Problem</a>",
- "NAME": "H06734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95099574866201,
- 38.865689411630726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06735'>Report Problem</a>",
- "NAME": "H06735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9389755508876,
- 38.907339838995775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06736'>Report Problem</a>",
- "NAME": "H06736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93984986018565,
- 38.90535541954279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06737'>Report Problem</a>",
- "NAME": "H06737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93925528624392,
- 38.900397255202975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06738'>Report Problem</a>",
- "NAME": "H06738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09254635127105,
- 38.9486973026342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07232'>Report Problem</a>",
- "NAME": "H07232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93382327899475,
- 38.90474118788292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07233'>Report Problem</a>",
- "NAME": "H07233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92157933552461,
- 38.89424472400106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07234'>Report Problem</a>",
- "NAME": "H07234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9851538135623,
- 38.91911475703648,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07235'>Report Problem</a>",
- "NAME": "H07235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98330231947256,
- 38.91924845195794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07236'>Report Problem</a>",
- "NAME": "H07236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97892835332335,
- 38.855296644203406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07237'>Report Problem</a>",
- "NAME": "H07237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96679766606418,
- 38.86961438004594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07238'>Report Problem</a>",
- "NAME": "H07238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96679581303398,
- 38.86777686242704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07239'>Report Problem</a>",
- "NAME": "H07239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0636452801437,
- 38.948887919837276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07240'>Report Problem</a>",
- "NAME": "H07240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9666680627454,
- 38.86867883801794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07241'>Report Problem</a>",
- "NAME": "H07241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93226220888265,
- 38.89755675743699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07242'>Report Problem</a>",
- "NAME": "H07242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93130172420881,
- 38.89710167047263,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07243'>Report Problem</a>",
- "NAME": "H07243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01967362915791,
- 38.95321598453066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07244'>Report Problem</a>",
- "NAME": "H07244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97550798565447,
- 38.84743397409999,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07245'>Report Problem</a>",
- "NAME": "H07245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00887822824681,
- 38.87539174302792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07246'>Report Problem</a>",
- "NAME": "H07246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99623315117327,
- 38.9012061819032,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07247'>Report Problem</a>",
- "NAME": "H07247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00606339758599,
- 38.9071935853177,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07248'>Report Problem</a>",
- "NAME": "H07248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92804164672515,
- 38.88152634767735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07249'>Report Problem</a>",
- "NAME": "H07249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05344021828674,
- 38.900758663977086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07250'>Report Problem</a>",
- "NAME": "H07250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99724158304521,
- 38.901266187703385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07251'>Report Problem</a>",
- "NAME": "H07251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99826064706298,
- 38.90127459410005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07252'>Report Problem</a>",
- "NAME": "H07252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00751400965916,
- 38.946484469770624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07253'>Report Problem</a>",
- "NAME": "H07253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9737727225967,
- 38.890777566180994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07255'>Report Problem</a>",
- "NAME": "H07255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0108679583866,
- 38.887530602783514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07256'>Report Problem</a>",
- "NAME": "H07256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99075291491035,
- 38.93062772081035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07257'>Report Problem</a>",
- "NAME": "H07257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97399120404835,
- 38.89240987804229,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07258'>Report Problem</a>",
- "NAME": "H07258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00881961020227,
- 38.87758203077894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07259'>Report Problem</a>",
- "NAME": "H07259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00930522065583,
- 38.878462725693296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07260'>Report Problem</a>",
- "NAME": "H07260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00937235300053,
- 38.87469652635012,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07261'>Report Problem</a>",
- "NAME": "H07261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00944827614639,
- 38.877586476799294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07262'>Report Problem</a>",
- "NAME": "H07262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98342357713578,
- 38.876706706480256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07264'>Report Problem</a>",
- "NAME": "H07264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98676341517982,
- 38.876578961326985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07265'>Report Problem</a>",
- "NAME": "H07265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03642312919904,
- 38.904976362366526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07266'>Report Problem</a>",
- "NAME": "H07266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9853565847851,
- 38.87652116669425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07267'>Report Problem</a>",
- "NAME": "H07267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0465514278772,
- 38.896150438687805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07702'>Report Problem</a>",
- "NAME": "H07702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04368932293251,
- 38.89529565927772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07703'>Report Problem</a>",
- "NAME": "H07703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04442034926468,
- 38.894170499666586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07704'>Report Problem</a>",
- "NAME": "H07704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04572986746048,
- 38.89496064083354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07705'>Report Problem</a>",
- "NAME": "H07705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0448323779181,
- 38.89614923733559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07706'>Report Problem</a>",
- "NAME": "H07706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9840155149534,
- 38.86390963763843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07707'>Report Problem</a>",
- "NAME": "H07707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98277500179164,
- 38.863687421809345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07708'>Report Problem</a>",
- "NAME": "H07708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09010290543684,
- 38.90907642652341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07710'>Report Problem</a>",
- "NAME": "H07710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93017148673826,
- 38.88066259171604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07711'>Report Problem</a>",
- "NAME": "H07711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03931769336532,
- 38.90619250627998,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07712'>Report Problem</a>",
- "NAME": "H07712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98856490722186,
- 38.85682458078639,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07713'>Report Problem</a>",
- "NAME": "H07713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99582352528398,
- 38.91202241001932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07714'>Report Problem</a>",
- "NAME": "H07714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99046222038285,
- 38.874682216628244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07715'>Report Problem</a>",
- "NAME": "H07715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94784720320794,
- 38.90443724934308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07716'>Report Problem</a>",
- "NAME": "H07716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95246022829865,
- 38.90508292730649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07718'>Report Problem</a>",
- "NAME": "H07718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98912704057659,
- 38.83079641789728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07719'>Report Problem</a>",
- "NAME": "H07719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98999498305183,
- 38.82999721053814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07720'>Report Problem</a>",
- "NAME": "H07720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01290430053886,
- 38.873833184843015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07721'>Report Problem</a>",
- "NAME": "H07721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93653748617665,
- 38.89820879639172,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07722'>Report Problem</a>",
- "NAME": "H07722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05433234478356,
- 38.94348155986243,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07723'>Report Problem</a>",
- "NAME": "H07723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03436247298768,
- 38.94903956155696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07724'>Report Problem</a>",
- "NAME": "H07724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09724558516685,
- 38.92929154082307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07725'>Report Problem</a>",
- "NAME": "H07725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05600337284044,
- 38.900825143175915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07727'>Report Problem</a>",
- "NAME": "H07727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05597990398972,
- 38.90219493827348,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07728'>Report Problem</a>",
- "NAME": "H07728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.977988540688,
- 38.9068194262826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07729'>Report Problem</a>",
- "NAME": "H07729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9916561781167,
- 38.85849224792853,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07730'>Report Problem</a>",
- "NAME": "H07730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9312637752667,
- 38.89181323054132,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07731'>Report Problem</a>",
- "NAME": "H07731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0554934718497,
- 38.89327835858064,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07732'>Report Problem</a>",
- "NAME": "H07732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9873343554735,
- 38.85198215279726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07734'>Report Problem</a>",
- "NAME": "H07734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0662298132155,
- 38.91180775590383,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07736'>Report Problem</a>",
- "NAME": "H07736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93084474132424,
- 38.88057317864063,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07737'>Report Problem</a>",
- "NAME": "H07737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06628176841052,
- 38.910815781826415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07738'>Report Problem</a>",
- "NAME": "H07738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0662008800927,
- 38.909828224911614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07739'>Report Problem</a>",
- "NAME": "H07739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99270593709383,
- 38.89106001988396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07740'>Report Problem</a>",
- "NAME": "H07740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03664588377005,
- 38.901615708286606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08141'>Report Problem</a>",
- "NAME": "H08141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92780039612224,
- 38.88707814832078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08142'>Report Problem</a>",
- "NAME": "H08142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04151322791029,
- 38.908898493871376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08143'>Report Problem</a>",
- "NAME": "H08143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04028346416186,
- 38.908630196396956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08144'>Report Problem</a>",
- "NAME": "H08144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03736201545385,
- 38.907616178766666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08145'>Report Problem</a>",
- "NAME": "H08145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03834930200641,
- 38.90795714009193,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08146'>Report Problem</a>",
- "NAME": "H08146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05735174646733,
- 38.93023071146079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08147'>Report Problem</a>",
- "NAME": "H08147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99267277976033,
- 38.8607069825124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08148'>Report Problem</a>",
- "NAME": "H08148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00131375632988,
- 38.88610450699817,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08149'>Report Problem</a>",
- "NAME": "H08149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0007573019991,
- 38.886754268371845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08150'>Report Problem</a>",
- "NAME": "H08150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95602339297108,
- 38.900677003252326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08152'>Report Problem</a>",
- "NAME": "H08152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95722838637901,
- 38.90062352660191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08153'>Report Problem</a>",
- "NAME": "H08153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9934376085016,
- 38.91525068088991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08154'>Report Problem</a>",
- "NAME": "H08154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06049710038423,
- 38.90977916810914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08155'>Report Problem</a>",
- "NAME": "H08155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02284487258444,
- 38.89622084505351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08156'>Report Problem</a>",
- "NAME": "H08156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02246245935183,
- 38.980433010542164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 09/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08157'>Report Problem</a>",
- "NAME": "H08157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01339550515529,
- 38.89345469727164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08158'>Report Problem</a>",
- "NAME": "H08158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00209402051352,
- 38.830854568763904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08159'>Report Problem</a>",
- "NAME": "H08159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01462246845327,
- 38.891447097778624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08160'>Report Problem</a>",
- "NAME": "H08160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00926931424503,
- 38.868295433385356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08161'>Report Problem</a>",
- "NAME": "H08161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92456958859614,
- 38.89604421417688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08162'>Report Problem</a>",
- "NAME": "H08162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02424766072127,
- 38.935145217729044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/02/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08163'>Report Problem</a>",
- "NAME": "H08163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94202236269832,
- 38.90861666634091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08164'>Report Problem</a>",
- "NAME": "H08164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0172963812285,
- 38.890654725306696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08165'>Report Problem</a>",
- "NAME": "H08165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00074023920943,
- 38.886346387055426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08166'>Report Problem</a>",
- "NAME": "H08166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05812501222938,
- 38.93557330871181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08167'>Report Problem</a>",
- "NAME": "H08167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04456499397594,
- 38.911074677276005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08168'>Report Problem</a>",
- "NAME": "H08168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95381372360585,
- 38.85834333883947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08169'>Report Problem</a>",
- "NAME": "H08169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00755524231829,
- 38.90570537332664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08170'>Report Problem</a>",
- "NAME": "H08170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00880649602487,
- 38.90569611521218,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08172'>Report Problem</a>",
- "NAME": "H08172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00572081136154,
- 38.905719260326336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08173'>Report Problem</a>",
- "NAME": "H08173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01340079016845,
- 38.902443942775804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08174'>Report Problem</a>",
- "NAME": "H08174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04240553327146,
- 38.90126458670531,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08175'>Report Problem</a>",
- "NAME": "H08175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95565860108124,
- 38.85691093069084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08176'>Report Problem</a>",
- "NAME": "H08176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93171236515379,
- 38.88551644748906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06775'>Report Problem</a>",
- "NAME": "H06775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07997674543732,
- 38.961032367081344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06776'>Report Problem</a>",
- "NAME": "H06776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93561081739895,
- 38.88600962758285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06777'>Report Problem</a>",
- "NAME": "H06777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05931200835049,
- 38.90982979904883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06778'>Report Problem</a>",
- "NAME": "H06778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10244670460115,
- 38.93988473964499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06779'>Report Problem</a>",
- "NAME": "H06779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03091852572004,
- 38.88608572947236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06780'>Report Problem</a>",
- "NAME": "H06780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03035854074379,
- 38.88609295695204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06781'>Report Problem</a>",
- "NAME": "H06781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01822966368945,
- 38.92886967524745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06782'>Report Problem</a>",
- "NAME": "H06782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95941927170149,
- 38.91845287454123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06783'>Report Problem</a>",
- "NAME": "H06783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04338693484873,
- 38.90467721268086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06784'>Report Problem</a>",
- "NAME": "H06784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02966817634758,
- 38.899743058400354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06785'>Report Problem</a>",
- "NAME": "H06785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07469621511788,
- 38.93910692946605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06786'>Report Problem</a>",
- "NAME": "H06786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05744155687229,
- 38.96314680294454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06787'>Report Problem</a>",
- "NAME": "H06787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00579436256669,
- 38.888774120746874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06788'>Report Problem</a>",
- "NAME": "H06788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95380719997834,
- 38.87396028435545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06789'>Report Problem</a>",
- "NAME": "H06789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01650694641194,
- 38.97397167263155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06790'>Report Problem</a>",
- "NAME": "H06790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94350489538657,
- 38.903783169603216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06791'>Report Problem</a>",
- "NAME": "H06791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97268359089284,
- 38.922408914627795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06792'>Report Problem</a>",
- "NAME": "H06792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95114901816872,
- 38.89247950822375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06793'>Report Problem</a>",
- "NAME": "H06793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99157703651174,
- 38.955543577165905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06794'>Report Problem</a>",
- "NAME": "H06794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04437285473905,
- 38.94515082911551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06795'>Report Problem</a>",
- "NAME": "H06795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97891349259542,
- 38.843241253842216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06796'>Report Problem</a>",
- "NAME": "H06796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93930316910527,
- 38.8794846133168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06797'>Report Problem</a>",
- "NAME": "H06797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0886893672408,
- 38.94138019415723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06798'>Report Problem</a>",
- "NAME": "H06798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0980655268222,
- 38.95115875666244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06799'>Report Problem</a>",
- "NAME": "H06799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05549341051372,
- 38.984084077342835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06800'>Report Problem</a>",
- "NAME": "H06800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0526978139392,
- 38.97704680578762,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06801'>Report Problem</a>",
- "NAME": "H06801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0035409833462,
- 38.82825590688537,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06802'>Report Problem</a>",
- "NAME": "H06802"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98235268411509,
- 38.89207209518024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06803'>Report Problem</a>",
- "NAME": "H06803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98093008033639,
- 38.89206613326344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06804'>Report Problem</a>",
- "NAME": "H06804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97833887260107,
- 38.91527651301537,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06805'>Report Problem</a>",
- "NAME": "H06805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05682587062851,
- 38.97885234639924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06806'>Report Problem</a>",
- "NAME": "H06806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04295758729371,
- 38.926561641107796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06807'>Report Problem</a>",
- "NAME": "H06807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98199379578354,
- 38.919101025555314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06808'>Report Problem</a>",
- "NAME": "H06808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03549478026815,
- 38.901479082619964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08177'>Report Problem</a>",
- "NAME": "H08177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0092827879668,
- 38.902604736306714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08178'>Report Problem</a>",
- "NAME": "H08178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04150093609918,
- 38.90126745191087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08179'>Report Problem</a>",
- "NAME": "H08179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99350386421665,
- 38.92752398463641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08180'>Report Problem</a>",
- "NAME": "H08180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99355669919886,
- 38.92658690672346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08181'>Report Problem</a>",
- "NAME": "H08181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03959123380503,
- 38.89742481485953,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08182'>Report Problem</a>",
- "NAME": "H08182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04419249618404,
- 38.90140050011229,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08183'>Report Problem</a>",
- "NAME": "H08183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92182074154292,
- 38.899207829429145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08184'>Report Problem</a>",
- "NAME": "H08184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92120249374817,
- 38.900071739400516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08185'>Report Problem</a>",
- "NAME": "H08185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02363245136844,
- 38.88123143409648,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08186'>Report Problem</a>",
- "NAME": "H08186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02225212129427,
- 38.88135470577844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08187'>Report Problem</a>",
- "NAME": "H08187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0416078282054,
- 38.902217507242085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08188'>Report Problem</a>",
- "NAME": "H08188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9207012937859,
- 38.89904467214268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08189'>Report Problem</a>",
- "NAME": "H08189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00758525140215,
- 38.90569406590387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08190'>Report Problem</a>",
- "NAME": "H08190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00025186288822,
- 38.92305260761414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08191'>Report Problem</a>",
- "NAME": "H08191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9972408231606,
- 38.92448807802464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08192'>Report Problem</a>",
- "NAME": "H08192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03995315557866,
- 38.93535159953509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08193'>Report Problem</a>",
- "NAME": "H08193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01358784632926,
- 38.89290682205701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08194'>Report Problem</a>",
- "NAME": "H08194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04051846792657,
- 38.8964255864395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08195'>Report Problem</a>",
- "NAME": "H08195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01494671207605,
- 38.90258946535637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08196'>Report Problem</a>",
- "NAME": "H08196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93050311745522,
- 38.90002479938208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08197'>Report Problem</a>",
- "NAME": "H08197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09320065072461,
- 38.92114763836906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08198'>Report Problem</a>",
- "NAME": "H08198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03831158173872,
- 38.9014610409353,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08199'>Report Problem</a>",
- "NAME": "H08199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03748416543611,
- 38.90146517393015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08200'>Report Problem</a>",
- "NAME": "H08200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02119456986291,
- 38.89365163659758,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08201'>Report Problem</a>",
- "NAME": "H08201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02906451894086,
- 38.888715003678044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08202'>Report Problem</a>",
- "NAME": "H08202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92756634578595,
- 38.9047109646528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08203'>Report Problem</a>",
- "NAME": "H08203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92740591776794,
- 38.90597091741606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08204'>Report Problem</a>",
- "NAME": "H08204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03182204114798,
- 38.91197219079815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08205'>Report Problem</a>",
- "NAME": "H08205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03209063664018,
- 38.91712557874504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08206'>Report Problem</a>",
- "NAME": "H08206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03210336684512,
- 38.90895414811679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08207'>Report Problem</a>",
- "NAME": "H08207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99123696917337,
- 38.86205485832162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08208'>Report Problem</a>",
- "NAME": "H08208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04566521114579,
- 38.90863023480223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08209'>Report Problem</a>",
- "NAME": "H08209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99958465694297,
- 38.89002489648742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08210'>Report Problem</a>",
- "NAME": "H08210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0438685423126,
- 38.991540667148115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08211'>Report Problem</a>",
- "NAME": "H08211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92215662292064,
- 38.901056983892204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08212'>Report Problem</a>",
- "NAME": "H08212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05264919204835,
- 38.89643309950491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08213'>Report Problem</a>",
- "NAME": "H08213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05557594075515,
- 38.94970435584497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/20/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08214'>Report Problem</a>",
- "NAME": "H08214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04313662915926,
- 38.90875583518156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08215'>Report Problem</a>",
- "NAME": "H08215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01744375663698,
- 38.88549660543028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08216'>Report Problem</a>",
- "NAME": "H08216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03081125628373,
- 38.90141181307621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08217'>Report Problem</a>",
- "NAME": "H08217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03336025786113,
- 38.977209204283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08218'>Report Problem</a>",
- "NAME": "H08218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01929184680138,
- 38.94215128765235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08219'>Report Problem</a>",
- "NAME": "H08219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02857666736612,
- 38.934475904627455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08220'>Report Problem</a>",
- "NAME": "H08220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03931652931746,
- 38.90154979970365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08221'>Report Problem</a>",
- "NAME": "H08221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04534624867802,
- 38.92793162400314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08222'>Report Problem</a>",
- "NAME": "H08222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0463193741046,
- 38.929753137432066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08223'>Report Problem</a>",
- "NAME": "H08223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01351392151345,
- 38.86472204025098,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, A.P. Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08224'>Report Problem</a>",
- "NAME": "H08224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05338534483874,
- 38.89968216306236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08226'>Report Problem</a>",
- "NAME": "H08226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08392436344513,
- 38.93520806434547,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08227'>Report Problem</a>",
- "NAME": "H08227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0137510566863,
- 38.868501266149224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08230'>Report Problem</a>",
- "NAME": "H08230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02236734369201,
- 38.87872401757323,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08231'>Report Problem</a>",
- "NAME": "H08231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02686660091739,
- 38.9057012853849,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08232'>Report Problem</a>",
- "NAME": "H08232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01223179441675,
- 38.90273073486977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08233'>Report Problem</a>",
- "NAME": "H08233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01223631934823,
- 38.903637686407194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08234'>Report Problem</a>",
- "NAME": "H08234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01631002904152,
- 38.907182154548025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08235'>Report Problem</a>",
- "NAME": "H08235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99957175775653,
- 38.90362408420953,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08236'>Report Problem</a>",
- "NAME": "H08236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0196865787712,
- 38.887694302678234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08237'>Report Problem</a>",
- "NAME": "H08237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01712937463928,
- 38.88769284095378,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08238'>Report Problem</a>",
- "NAME": "H08238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05325998845386,
- 38.974429858512536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08239'>Report Problem</a>",
- "NAME": "H08239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05451519215418,
- 38.97400137106152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08240'>Report Problem</a>",
- "NAME": "H08240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02141160033958,
- 38.9025904232028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08241'>Report Problem</a>",
- "NAME": "H08241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01773654470381,
- 38.90138746860893,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08242'>Report Problem</a>",
- "NAME": "H08242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02423988131991,
- 38.91253429240804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08243'>Report Problem</a>",
- "NAME": "H08243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01626198843816,
- 38.901224676959394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08244'>Report Problem</a>",
- "NAME": "H08244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97312474257745,
- 38.88525611195604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08245'>Report Problem</a>",
- "NAME": "H08245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99793329869803,
- 38.87658623326196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08246'>Report Problem</a>",
- "NAME": "H08246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00578083068814,
- 38.885218820420974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08247'>Report Problem</a>",
- "NAME": "H08247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0672432194845,
- 38.97200398815426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08248'>Report Problem</a>",
- "NAME": "H08248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01999553121911,
- 38.92114513258771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08249'>Report Problem</a>",
- "NAME": "H08249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00472236749316,
- 38.885007594424685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08250'>Report Problem</a>",
- "NAME": "H08250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03071004240493,
- 38.91339480588025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08251'>Report Problem</a>",
- "NAME": "H08251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02971018132025,
- 38.91326958726182,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08252'>Report Problem</a>",
- "NAME": "H08252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02427706527385,
- 38.912565219321955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08253'>Report Problem</a>",
- "NAME": "H08253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03834107114176,
- 38.95707617833018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08254'>Report Problem</a>",
- "NAME": "H08254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00293472570456,
- 38.925205297973406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08255'>Report Problem</a>",
- "NAME": "H08255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9758817182945,
- 38.882693774413184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08256'>Report Problem</a>",
- "NAME": "H08256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01979363064866,
- 38.897860590742205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08257'>Report Problem</a>",
- "NAME": "H08257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03326918376025,
- 38.91043142449036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08258'>Report Problem</a>",
- "NAME": "H08258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93674142079028,
- 38.890259092651476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08259'>Report Problem</a>",
- "NAME": "H08259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02413260889021,
- 38.913400187017174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08260'>Report Problem</a>",
- "NAME": "H08260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02584994353063,
- 38.91337647010082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08261'>Report Problem</a>",
- "NAME": "H08261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01210857023432,
- 38.869347977064805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08262'>Report Problem</a>",
- "NAME": "H08262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00927794074641,
- 38.89511931173586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08263'>Report Problem</a>",
- "NAME": "H08263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00896262042976,
- 38.8960392256087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08264'>Report Problem</a>",
- "NAME": "H08264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01511786062102,
- 38.96854741563351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08265'>Report Problem</a>",
- "NAME": "H08265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98952692870112,
- 38.91281293838704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08266'>Report Problem</a>",
- "NAME": "H08266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98551208205598,
- 38.92471905963108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08267'>Report Problem</a>",
- "NAME": "H08267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07949187356242,
- 38.93323857834559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08268'>Report Problem</a>",
- "NAME": "H08268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01583620541501,
- 38.87752262745055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08269'>Report Problem</a>",
- "NAME": "H08269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99513327070656,
- 38.93132925498553,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08270'>Report Problem</a>",
- "NAME": "H08270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04649363470668,
- 38.89357737456082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08271'>Report Problem</a>",
- "NAME": "H08271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01230137266033,
- 38.92634611310559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08272'>Report Problem</a>",
- "NAME": "H08272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01013885360227,
- 38.926591229778545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08273'>Report Problem</a>",
- "NAME": "H08273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01398335499461,
- 38.92621440255582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08274'>Report Problem</a>",
- "NAME": "H08274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01532220622806,
- 38.92688260660708,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08275'>Report Problem</a>",
- "NAME": "H08275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02405292872156,
- 38.8944090110871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08276'>Report Problem</a>",
- "NAME": "H08276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02406840229555,
- 38.89565075720782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08277'>Report Problem</a>",
- "NAME": "H08277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02490264297842,
- 38.89603614939658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08278'>Report Problem</a>",
- "NAME": "H08278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00510950552537,
- 38.873082494450905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08279'>Report Problem</a>",
- "NAME": "H08279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99606942549883,
- 38.93299883544605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08280'>Report Problem</a>",
- "NAME": "H08280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.984790676523,
- 38.90043212834989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08281'>Report Problem</a>",
- "NAME": "H08281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06743986700921,
- 38.936163150493876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08282'>Report Problem</a>",
- "NAME": "H08282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05517856338699,
- 38.93414474992192,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08283'>Report Problem</a>",
- "NAME": "H08283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01373964756537,
- 38.89489005965317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08284'>Report Problem</a>",
- "NAME": "H08284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95138380039576,
- 38.88833419518425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08285'>Report Problem</a>",
- "NAME": "H08285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95157623961008,
- 38.88941006457362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08286'>Report Problem</a>",
- "NAME": "H08286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0428356429657,
- 38.92247281884923,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08287'>Report Problem</a>",
- "NAME": "H08287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01532574724511,
- 38.90230944559513,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08288'>Report Problem</a>",
- "NAME": "H08288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94464310550777,
- 38.90652417217478,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08289'>Report Problem</a>",
- "NAME": "H08289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02606368145655,
- 38.91274468592601,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08290'>Report Problem</a>",
- "NAME": "H08290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9403631158589,
- 38.90950012644815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08291'>Report Problem</a>",
- "NAME": "H08291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98558416828085,
- 38.89660300893139,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08292'>Report Problem</a>",
- "NAME": "H08292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98692181841473,
- 38.896762317109065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08293'>Report Problem</a>",
- "NAME": "H08293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07853351345675,
- 38.96102858898315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08294'>Report Problem</a>",
- "NAME": "H08294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04474272033883,
- 38.919258717509656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08295'>Report Problem</a>",
- "NAME": "H08295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04536119029878,
- 38.91837010471332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08296'>Report Problem</a>",
- "NAME": "H08296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98821772840788,
- 38.94636344257222,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08297'>Report Problem</a>",
- "NAME": "H08297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98822205775481,
- 38.94711051769654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08298'>Report Problem</a>",
- "NAME": "H08298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00207792724254,
- 38.82319824431888,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08299'>Report Problem</a>",
- "NAME": "H08299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00374368104323,
- 38.83209246142694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08300'>Report Problem</a>",
- "NAME": "H08300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0745179419083,
- 38.92233686601356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08301'>Report Problem</a>",
- "NAME": "H08301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00137767016994,
- 38.88861960954308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08302'>Report Problem</a>",
- "NAME": "H08302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03954898450759,
- 38.90482729379108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08303'>Report Problem</a>",
- "NAME": "H08303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03870626477836,
- 38.90481002775378,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08304'>Report Problem</a>",
- "NAME": "H08304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00415039685,
- 38.887707932173186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08305'>Report Problem</a>",
- "NAME": "H08305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03084566274906,
- 38.91414191257845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08306'>Report Problem</a>",
- "NAME": "H08306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02971224774062,
- 38.913967498614944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08307'>Report Problem</a>",
- "NAME": "H08307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9892134418145,
- 38.87402078337386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08308'>Report Problem</a>",
- "NAME": "H08308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92179076001224,
- 38.89728089314876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08309'>Report Problem</a>",
- "NAME": "H08309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03350578907524,
- 38.90972104906031,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08310'>Report Problem</a>",
- "NAME": "H08310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03074528355717,
- 38.89724948166159,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08311'>Report Problem</a>",
- "NAME": "H08311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96362156871533,
- 38.850699911071544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08312'>Report Problem</a>",
- "NAME": "H08312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96257937013323,
- 38.85150873728961,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08313'>Report Problem</a>",
- "NAME": "H08313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0113459515883,
- 38.9013182150612,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08314'>Report Problem</a>",
- "NAME": "H08314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0160661789324,
- 38.91755385770648,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08315'>Report Problem</a>",
- "NAME": "H08315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01510686781566,
- 38.8923022999448,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08316'>Report Problem</a>",
- "NAME": "H08316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99055525683777,
- 38.87335822368137,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08317'>Report Problem</a>",
- "NAME": "H08317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98222824471678,
- 38.83619910675699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08318'>Report Problem</a>",
- "NAME": "H08318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96254275137659,
- 38.926826639313255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08428'>Report Problem</a>",
- "NAME": "H08428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96280426767339,
- 38.925778650334095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08429'>Report Problem</a>",
- "NAME": "H08429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9613028254853,
- 38.92613610827265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08430'>Report Problem</a>",
- "NAME": "H08430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9392726023663,
- 38.89175677212225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08431'>Report Problem</a>",
- "NAME": "H08431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02083652520874,
- 38.884773856446024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08432'>Report Problem</a>",
- "NAME": "H08432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02679516929125,
- 38.97648061376269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08433'>Report Problem</a>",
- "NAME": "H08433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98696072061638,
- 38.908576156445044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08434'>Report Problem</a>",
- "NAME": "H08434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96481506894972,
- 38.84973311316996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08437'>Report Problem</a>",
- "NAME": "H08437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99698155188067,
- 38.94559483426475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08438'>Report Problem</a>",
- "NAME": "H08438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99840611729657,
- 38.945426704764486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08439'>Report Problem</a>",
- "NAME": "H08439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02605733788842,
- 38.90977280878796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08440'>Report Problem</a>",
- "NAME": "H08440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02587864211371,
- 38.9110871926042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08441'>Report Problem</a>",
- "NAME": "H08441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97718498973083,
- 38.88679479636077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08442'>Report Problem</a>",
- "NAME": "H08442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00381412784823,
- 38.87470687551057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08443'>Report Problem</a>",
- "NAME": "H08443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02605383574824,
- 38.90848666127305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08444'>Report Problem</a>",
- "NAME": "H08444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02591163873204,
- 38.90711401011605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08445'>Report Problem</a>",
- "NAME": "H08445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97489749027639,
- 38.927786358732135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08446'>Report Problem</a>",
- "NAME": "H08446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97370627688652,
- 38.92776132393991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08447'>Report Problem</a>",
- "NAME": "H08447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03900908895159,
- 38.903847997163304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08448'>Report Problem</a>",
- "NAME": "H08448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98381084491167,
- 38.881325570503094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08449'>Report Problem</a>",
- "NAME": "H08449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02423415194802,
- 38.920817517456605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08450'>Report Problem</a>",
- "NAME": "H08450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10248470261361,
- 38.923019930141635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08452'>Report Problem</a>",
- "NAME": "H08452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0150670437515,
- 38.895202360187156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08453'>Report Problem</a>",
- "NAME": "H08453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0197770001507,
- 38.894299667958826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08454'>Report Problem</a>",
- "NAME": "H08454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01968850613716,
- 38.893676231752664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08455'>Report Problem</a>",
- "NAME": "H08455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00790620159373,
- 38.89677353762276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08456'>Report Problem</a>",
- "NAME": "H08456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09146094765984,
- 38.916366471316195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08457'>Report Problem</a>",
- "NAME": "H08457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9949765650847,
- 38.8387182415587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08458'>Report Problem</a>",
- "NAME": "H08458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99184322048237,
- 38.882666954785755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08459'>Report Problem</a>",
- "NAME": "H08459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99279589759597,
- 38.88266990912566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08460'>Report Problem</a>",
- "NAME": "H08460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03808518129945,
- 38.8964851216087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08461'>Report Problem</a>",
- "NAME": "H08461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95899268806791,
- 38.927475865897996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08462'>Report Problem</a>",
- "NAME": "H08462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95952451906204,
- 38.92641322328298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08463'>Report Problem</a>",
- "NAME": "H08463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95816678847049,
- 38.92822525403737,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08464'>Report Problem</a>",
- "NAME": "H08464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95856004768567,
- 38.92774257557982,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08465'>Report Problem</a>",
- "NAME": "H08465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97874310067432,
- 38.83891656384935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08320'>Report Problem</a>",
- "NAME": "H08320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98090804420679,
- 38.83722066429693,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08321'>Report Problem</a>",
- "NAME": "H08321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04477094130978,
- 38.93428994564243,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08322'>Report Problem</a>",
- "NAME": "H08322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98439807816389,
- 38.85959801716119,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08323'>Report Problem</a>",
- "NAME": "H08323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08455634619834,
- 38.95874907307745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08324'>Report Problem</a>",
- "NAME": "H08324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05050700205177,
- 38.89719671153101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08325'>Report Problem</a>",
- "NAME": "H08325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03434068464448,
- 38.91109067822516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08326'>Report Problem</a>",
- "NAME": "H08326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03318859323646,
- 38.91118194134541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08327'>Report Problem</a>",
- "NAME": "H08327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02799335021693,
- 38.89720467227648,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08328'>Report Problem</a>",
- "NAME": "H08328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02817944809317,
- 38.897510533529406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08329'>Report Problem</a>",
- "NAME": "H08329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02798523689899,
- 38.89750416626152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08330'>Report Problem</a>",
- "NAME": "H08330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02971165071288,
- 38.898224859335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08331'>Report Problem</a>",
- "NAME": "H08331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0278904743096,
- 38.89840758351679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08332'>Report Problem</a>",
- "NAME": "H08332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98845940621565,
- 38.88277003166853,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08333'>Report Problem</a>",
- "NAME": "H08333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00522213820375,
- 38.90991302897518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08334'>Report Problem</a>",
- "NAME": "H08334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04055172817277,
- 38.90139941536408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08335'>Report Problem</a>",
- "NAME": "H08335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06645356958478,
- 38.922527824070826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08336'>Report Problem</a>",
- "NAME": "H08336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06502920837417,
- 38.92272326820528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08337'>Report Problem</a>",
- "NAME": "H08337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06543401109026,
- 38.92333855392444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08338'>Report Problem</a>",
- "NAME": "H08338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98689992846845,
- 38.85620339196964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08339'>Report Problem</a>",
- "NAME": "H08339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98555681399935,
- 38.857141091752496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08340'>Report Problem</a>",
- "NAME": "H08340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01898043308506,
- 38.91272105309525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08341'>Report Problem</a>",
- "NAME": "H08341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04501646204457,
- 38.89529116468103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08342'>Report Problem</a>",
- "NAME": "H08342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98816471194674,
- 38.837750818319385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08343'>Report Problem</a>",
- "NAME": "H08343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02619707222384,
- 38.898391445191194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08344'>Report Problem</a>",
- "NAME": "H08344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02381303904498,
- 38.898532792202516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08345'>Report Problem</a>",
- "NAME": "H08345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9883786746581,
- 38.879420011156185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08346'>Report Problem</a>",
- "NAME": "H08346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02283404670345,
- 38.897080569409574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08347'>Report Problem</a>",
- "NAME": "H08347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02206304492873,
- 38.89710260789232,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08348'>Report Problem</a>",
- "NAME": "H08348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0169171448239,
- 38.97330557233673,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08349'>Report Problem</a>",
- "NAME": "H08349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04337971467226,
- 38.906529998821355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08350'>Report Problem</a>",
- "NAME": "H08350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03295321706722,
- 38.92350394493053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08351'>Report Problem</a>",
- "NAME": "H08351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03285151529943,
- 38.92267544224298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08352'>Report Problem</a>",
- "NAME": "H08352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02172945583831,
- 38.911068246585344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08353'>Report Problem</a>",
- "NAME": "H08353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02097298162155,
- 38.91125199281655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08354'>Report Problem</a>",
- "NAME": "H08354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00716575264279,
- 38.90718151478236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08355'>Report Problem</a>",
- "NAME": "H08355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0145768195112,
- 38.896003203035555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08356'>Report Problem</a>",
- "NAME": "H08356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98768896734745,
- 38.83681138550871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08357'>Report Problem</a>",
- "NAME": "H08357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98928491590188,
- 38.879224579692156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08358'>Report Problem</a>",
- "NAME": "H08358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98837899611085,
- 38.88112601104574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08359'>Report Problem</a>",
- "NAME": "H08359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01403141657126,
- 38.90379759906298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08360'>Report Problem</a>",
- "NAME": "H08360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96326847348543,
- 38.880678366073994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08362'>Report Problem</a>",
- "NAME": "H08362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9825575519487,
- 38.92894088897529,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08363'>Report Problem</a>",
- "NAME": "H08363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94577625936975,
- 38.86921353709764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08364'>Report Problem</a>",
- "NAME": "H08364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94703477273785,
- 38.8683998085889,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08365'>Report Problem</a>",
- "NAME": "H08365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9563895304164,
- 38.92728647858071,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08366'>Report Problem</a>",
- "NAME": "H08366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95998785756807,
- 38.92908739259746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08367'>Report Problem</a>",
- "NAME": "H08367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04025982788481,
- 38.903890200379095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08369'>Report Problem</a>",
- "NAME": "H08369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92332854926619,
- 38.89953523775674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08370'>Report Problem</a>",
- "NAME": "H08370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03443405457999,
- 38.9014902821746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08371'>Report Problem</a>",
- "NAME": "H08371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03354155308863,
- 38.90123515490904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08372'>Report Problem</a>",
- "NAME": "H08372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02204435392741,
- 38.884068467473675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08373'>Report Problem</a>",
- "NAME": "H08373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98899509108924,
- 38.8612038684665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08374'>Report Problem</a>",
- "NAME": "H08374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91974324070002,
- 38.89917079258774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08375'>Report Problem</a>",
- "NAME": "H08375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0326395003206,
- 38.90123053689111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08376'>Report Problem</a>",
- "NAME": "H08376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01829311716507,
- 38.89196076946774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08377'>Report Problem</a>",
- "NAME": "H08377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03347096524197,
- 38.90140821668236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08378'>Report Problem</a>",
- "NAME": "H08378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01384898174817,
- 38.8851367246785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08379'>Report Problem</a>",
- "NAME": "H08379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01063685948301,
- 38.9057054847332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08380'>Report Problem</a>",
- "NAME": "H08380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99460350852914,
- 38.909909138456875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08381'>Report Problem</a>",
- "NAME": "H08381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99551978574854,
- 38.909654691506766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08382'>Report Problem</a>",
- "NAME": "H08382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.032102210849,
- 38.90121111060677,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08383'>Report Problem</a>",
- "NAME": "H08383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03217864309157,
- 38.90141339025018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08384'>Report Problem</a>",
- "NAME": "H08384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96375080281416,
- 38.924997377139746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08385'>Report Problem</a>",
- "NAME": "H08385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9898512889259,
- 38.83379076058705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08386'>Report Problem</a>",
- "NAME": "H08386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0228134302436,
- 38.88491735091642,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08387'>Report Problem</a>",
- "NAME": "H08387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02822365104687,
- 38.89621301216608,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08388'>Report Problem</a>",
- "NAME": "H08388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02825521358331,
- 38.89481603216257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08389'>Report Problem</a>",
- "NAME": "H08389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01470054031982,
- 38.91768706349387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08390'>Report Problem</a>",
- "NAME": "H08390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02011984858905,
- 38.897421323292384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08391'>Report Problem</a>",
- "NAME": "H08391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01456811375331,
- 38.90863579123086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08392'>Report Problem</a>",
- "NAME": "H08392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0526693576068,
- 38.913784905295614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08393'>Report Problem</a>",
- "NAME": "H08393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98853372608112,
- 38.86072686429535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08394'>Report Problem</a>",
- "NAME": "H08394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99485835521703,
- 38.93352980089793,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08395'>Report Problem</a>",
- "NAME": "H08395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02089442069115,
- 38.89725620816021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08396'>Report Problem</a>",
- "NAME": "H08396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99504121148979,
- 38.89286552808492,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08397'>Report Problem</a>",
- "NAME": "H08397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9963869020058,
- 38.89239424150939,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08398'>Report Problem</a>",
- "NAME": "H08398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00009277077737,
- 38.960240183984304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08399'>Report Problem</a>",
- "NAME": "H08399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03472186902212,
- 38.901528500520605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08400'>Report Problem</a>",
- "NAME": "H08400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04035226386559,
- 38.91884498711813,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08401'>Report Problem</a>",
- "NAME": "H08401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09758322381626,
- 38.91781397793509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08402'>Report Problem</a>",
- "NAME": "H08402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00076633215748,
- 38.87758588357054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08403'>Report Problem</a>",
- "NAME": "H08403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09665497285758,
- 38.91737221497994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08404'>Report Problem</a>",
- "NAME": "H08404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96086351700934,
- 38.92771938951734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08405'>Report Problem</a>",
- "NAME": "H08405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96185308264808,
- 38.926848792888386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08406'>Report Problem</a>",
- "NAME": "H08406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96094253819084,
- 38.92706797972132,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08407'>Report Problem</a>",
- "NAME": "H08407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9619430855142,
- 38.924185378131774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08408'>Report Problem</a>",
- "NAME": "H08408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00471748575956,
- 38.894848162840894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08409'>Report Problem</a>",
- "NAME": "H08409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00336797377814,
- 38.89525374818417,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08410'>Report Problem</a>",
- "NAME": "H08410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99801097628497,
- 38.946349092688955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08411'>Report Problem</a>",
- "NAME": "H08411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99845883958635,
- 38.947335470064644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08412'>Report Problem</a>",
- "NAME": "H08412"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99770476850875,
- 38.94720454937909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08413'>Report Problem</a>",
- "NAME": "H08413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01016547589707,
- 38.903815457590504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08414'>Report Problem</a>",
- "NAME": "H08414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01624662809736,
- 38.89599123582937,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08415'>Report Problem</a>",
- "NAME": "H08415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01129772563324,
- 38.90384923399925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08416'>Report Problem</a>",
- "NAME": "H08416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01222011013053,
- 38.92120324505646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08418'>Report Problem</a>",
- "NAME": "H08418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96200971460257,
- 38.92475458143464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08419'>Report Problem</a>",
- "NAME": "H08419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96402536763,
- 38.92594683051196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08420'>Report Problem</a>",
- "NAME": "H08420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9621355275832,
- 38.927497267175745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08421'>Report Problem</a>",
- "NAME": "H08421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96258566163135,
- 38.92368791198445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08423'>Report Problem</a>",
- "NAME": "H08423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96036446401986,
- 38.92427438707619,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08424'>Report Problem</a>",
- "NAME": "H08424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96369466263668,
- 38.92576998507413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08425'>Report Problem</a>",
- "NAME": "H08425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9625030277677,
- 38.9255432928641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08426'>Report Problem</a>",
- "NAME": "H08426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96309268978209,
- 38.9267188225985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08427'>Report Problem</a>",
- "NAME": "H08427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95689856788752,
- 38.92864146368962,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08466'>Report Problem</a>",
- "NAME": "H08466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95970909884488,
- 38.924449050474934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08467'>Report Problem</a>",
- "NAME": "H08467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95726784464247,
- 38.92814826806567,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08468'>Report Problem</a>",
- "NAME": "H08468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95984502892284,
- 38.92534896520106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08469'>Report Problem</a>",
- "NAME": "H08469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08638710577023,
- 38.93462981066992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08470'>Report Problem</a>",
- "NAME": "H08470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02798760970032,
- 38.89365008944466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08471'>Report Problem</a>",
- "NAME": "H08471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02836423520479,
- 38.89196439736748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08472'>Report Problem</a>",
- "NAME": "H08472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02826522843692,
- 38.89236599654917,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08473'>Report Problem</a>",
- "NAME": "H08473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02826125937592,
- 38.892938407398994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08474'>Report Problem</a>",
- "NAME": "H08474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06318425130685,
- 38.944293495447674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08475'>Report Problem</a>",
- "NAME": "H08475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0573447641172,
- 38.93383851487389,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08476'>Report Problem</a>",
- "NAME": "H08476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94637204663934,
- 38.89843839358465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08477'>Report Problem</a>",
- "NAME": "H08477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94616299994543,
- 38.898971673545276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08478'>Report Problem</a>",
- "NAME": "H08478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02847482355152,
- 38.911745638926384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08479'>Report Problem</a>",
- "NAME": "H08479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02875439842148,
- 38.91095659298035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08480'>Report Problem</a>",
- "NAME": "H08480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03812996010343,
- 38.89634445038992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08481'>Report Problem</a>",
- "NAME": "H08481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08658881613316,
- 38.95998389743036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08482'>Report Problem</a>",
- "NAME": "H08482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92255226785032,
- 38.898665229480834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08483'>Report Problem</a>",
- "NAME": "H08483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02182938574424,
- 38.8974671481761,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08484'>Report Problem</a>",
- "NAME": "H08484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02204448311844,
- 38.899259240202056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08485'>Report Problem</a>",
- "NAME": "H08485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97922669310609,
- 38.919809755946844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08486'>Report Problem</a>",
- "NAME": "H08486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98449915185869,
- 38.84439894866785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08487'>Report Problem</a>",
- "NAME": "H08487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97208616208393,
- 38.928242145248376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08488'>Report Problem</a>",
- "NAME": "H08488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05459880699436,
- 38.94173242238124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08489'>Report Problem</a>",
- "NAME": "H08489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97510623589379,
- 38.87412643178905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08490'>Report Problem</a>",
- "NAME": "H08490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97512818899816,
- 38.89879257990533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08491'>Report Problem</a>",
- "NAME": "H08491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02859860157034,
- 38.88768369546333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08492'>Report Problem</a>",
- "NAME": "H08492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02822972218756,
- 38.88667732401562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08493'>Report Problem</a>",
- "NAME": "H08493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00432219533818,
- 38.84966108808251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08494'>Report Problem</a>",
- "NAME": "H08494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05497110319803,
- 38.95221189678646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08495'>Report Problem</a>",
- "NAME": "H08495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00622271852494,
- 38.90147398542171,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08496'>Report Problem</a>",
- "NAME": "H08496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01626838110322,
- 38.89159573448617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08497'>Report Problem</a>",
- "NAME": "H08497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99732923533367,
- 38.88520448349828,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08498'>Report Problem</a>",
- "NAME": "H08498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99744155044182,
- 38.884990005440564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08499'>Report Problem</a>",
- "NAME": "H08499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98711293458845,
- 38.881325477069744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08500'>Report Problem</a>",
- "NAME": "H08500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03100176511474,
- 38.91107117192213,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08501'>Report Problem</a>",
- "NAME": "H08501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.029718354384,
- 38.91127255354978,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08502'>Report Problem</a>",
- "NAME": "H08502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00579074823631,
- 38.89494169348083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08503'>Report Problem</a>",
- "NAME": "H08503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99708905931759,
- 38.944563721900295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08504'>Report Problem</a>",
- "NAME": "H08504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99780241534405,
- 38.94433857542791,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08505'>Report Problem</a>",
- "NAME": "H08505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0432831916959,
- 38.9148896048663,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08506'>Report Problem</a>",
- "NAME": "H08506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04329924046024,
- 38.91562729143581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08507'>Report Problem</a>",
- "NAME": "H08507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04336543084449,
- 38.91328248714605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08508'>Report Problem</a>",
- "NAME": "H08508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04336294928191,
- 38.91420757221476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08509'>Report Problem</a>",
- "NAME": "H08509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00467641774055,
- 38.955577477958514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08510'>Report Problem</a>",
- "NAME": "H08510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01676421713123,
- 38.97492892271481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08511'>Report Problem</a>",
- "NAME": "H08511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00094005175632,
- 38.952682427762525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08512'>Report Problem</a>",
- "NAME": "H08512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00111515709453,
- 38.95275324023068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08513'>Report Problem</a>",
- "NAME": "H08513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0046655435606,
- 38.95495466495944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08514'>Report Problem</a>",
- "NAME": "H08514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97800595108619,
- 38.841120966288855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08516'>Report Problem</a>",
- "NAME": "H08516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92790991157297,
- 38.88776816789205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08518'>Report Problem</a>",
- "NAME": "H08518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92981760872138,
- 38.888724920649125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08519'>Report Problem</a>",
- "NAME": "H08519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93041850895601,
- 38.88594005981671,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08520'>Report Problem</a>",
- "NAME": "H08520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97168509423048,
- 38.85692322325186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08521'>Report Problem</a>",
- "NAME": "H08521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9269147821931,
- 38.8814460948615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08522'>Report Problem</a>",
- "NAME": "H08522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92996967614468,
- 38.88805560823569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08523'>Report Problem</a>",
- "NAME": "H08523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03181107669249,
- 38.90145226288173,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/21/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08525'>Report Problem</a>",
- "NAME": "H08525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02006637347118,
- 38.88882305079976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08526'>Report Problem</a>",
- "NAME": "H08526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02685913709283,
- 38.89041123219989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08527'>Report Problem</a>",
- "NAME": "H08527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03036355406417,
- 38.888691909048134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08528'>Report Problem</a>",
- "NAME": "H08528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92575333584115,
- 38.88681264016373,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08529'>Report Problem</a>",
- "NAME": "H08529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92903683068647,
- 38.881683576463125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08530'>Report Problem</a>",
- "NAME": "H08530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0376211413675,
- 38.96128358441223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08531'>Report Problem</a>",
- "NAME": "H08531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98387172945833,
- 38.8553852639279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08532'>Report Problem</a>",
- "NAME": "H08532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9482544365408,
- 38.88915211769327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08533'>Report Problem</a>",
- "NAME": "H08533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99043433811318,
- 38.86019398022922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08534'>Report Problem</a>",
- "NAME": "H08534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93534554685658,
- 38.904581087974115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08535'>Report Problem</a>",
- "NAME": "H08535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93597316733936,
- 38.90601041048936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08536'>Report Problem</a>",
- "NAME": "H08536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95496542205478,
- 38.864111889116856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08537'>Report Problem</a>",
- "NAME": "H08537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97360608449723,
- 38.858177709127055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08538'>Report Problem</a>",
- "NAME": "H08538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99010971881326,
- 38.83154461312445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06304'>Report Problem</a>",
- "NAME": "H06304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99158447120384,
- 38.84400563613905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/21/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06305'>Report Problem</a>",
- "NAME": "H06305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99650063765533,
- 38.82731645106532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06306'>Report Problem</a>",
- "NAME": "H06306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9942613489853,
- 38.85891046792447,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06307'>Report Problem</a>",
- "NAME": "H06307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9424613941558,
- 38.87942205420123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06308'>Report Problem</a>",
- "NAME": "H06308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94318930617003,
- 38.880100904643065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06309'>Report Problem</a>",
- "NAME": "H06309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00094198954898,
- 38.95876499697013,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06310'>Report Problem</a>",
- "NAME": "H06310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99793491978788,
- 38.824950095276236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06311'>Report Problem</a>",
- "NAME": "H06311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99772070099907,
- 38.82556903633247,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06312'>Report Problem</a>",
- "NAME": "H06312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0000479654624,
- 38.95502742771825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06313'>Report Problem</a>",
- "NAME": "H06313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99654653064003,
- 38.948286640332384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06314'>Report Problem</a>",
- "NAME": "H06314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00131907759724,
- 38.95697461055816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06315'>Report Problem</a>",
- "NAME": "H06315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96467675990772,
- 38.873105370179346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06316'>Report Problem</a>",
- "NAME": "H06316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9513462421715,
- 38.86993561831918,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06317'>Report Problem</a>",
- "NAME": "H06317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06008266147673,
- 38.90404294626886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06318'>Report Problem</a>",
- "NAME": "H06318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96223514638304,
- 38.87188215688112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06319'>Report Problem</a>",
- "NAME": "H06319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03984973394303,
- 38.905599108174734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06320'>Report Problem</a>",
- "NAME": "H06320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99797795290505,
- 38.96087385228594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06321'>Report Problem</a>",
- "NAME": "H06321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00292127032174,
- 38.959335141986934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06322'>Report Problem</a>",
- "NAME": "H06322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0029134179376,
- 38.95860702266086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06323'>Report Problem</a>",
- "NAME": "H06323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.959429989507,
- 38.871193757676636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06324'>Report Problem</a>",
- "NAME": "H06324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08621657401493,
- 38.941646176336384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06325'>Report Problem</a>",
- "NAME": "H06325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0060432725119,
- 38.82914523706379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06326'>Report Problem</a>",
- "NAME": "H06326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97975742844228,
- 38.907449627792346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06327'>Report Problem</a>",
- "NAME": "H06327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05602825092163,
- 38.959417683301226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06328'>Report Problem</a>",
- "NAME": "H06328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09058080915013,
- 38.94488207705248,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06329'>Report Problem</a>",
- "NAME": "H06329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92994923586132,
- 38.87848045455763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06330'>Report Problem</a>",
- "NAME": "H06330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92997035249158,
- 38.879522179931946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06331'>Report Problem</a>",
- "NAME": "H06331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95678689031837,
- 38.89197872047685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06332'>Report Problem</a>",
- "NAME": "H06332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96668122823594,
- 38.92563092149949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06333'>Report Problem</a>",
- "NAME": "H06333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98107604350997,
- 38.84970423505059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06334'>Report Problem</a>",
- "NAME": "H06334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95761052706486,
- 38.885276744294536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06335'>Report Problem</a>",
- "NAME": "H06335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9689828986322,
- 38.85529060601268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06336'>Report Problem</a>",
- "NAME": "H06336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10319215143784,
- 38.937125373112885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06337'>Report Problem</a>",
- "NAME": "H06337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96025208313756,
- 38.87751710826846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06338'>Report Problem</a>",
- "NAME": "H06338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10199165846161,
- 38.94207491012106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06809'>Report Problem</a>",
- "NAME": "H06809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93188206066793,
- 38.889632854120734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06810'>Report Problem</a>",
- "NAME": "H06810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04354367039312,
- 38.99020962857461,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06811'>Report Problem</a>",
- "NAME": "H06811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04431139193487,
- 38.98497449063176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06812'>Report Problem</a>",
- "NAME": "H06812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05259754131637,
- 38.89962876752536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06813'>Report Problem</a>",
- "NAME": "H06813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08112630706023,
- 38.9067914243098,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06814'>Report Problem</a>",
- "NAME": "H06814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97907583196913,
- 38.90427153327567,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06815'>Report Problem</a>",
- "NAME": "H06815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93903046883437,
- 38.89978244361404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06816'>Report Problem</a>",
- "NAME": "H06816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97909581360963,
- 38.90103858259027,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06817'>Report Problem</a>",
- "NAME": "H06817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97935427625308,
- 38.89961572234665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06818'>Report Problem</a>",
- "NAME": "H06818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0498815307086,
- 38.91266203218983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06819'>Report Problem</a>",
- "NAME": "H06819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05524152681508,
- 38.966256015539265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06820'>Report Problem</a>",
- "NAME": "H06820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9791653098176,
- 38.90501399955406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06821'>Report Problem</a>",
- "NAME": "H06821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97916724142279,
- 38.9037688565339,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06822'>Report Problem</a>",
- "NAME": "H06822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97915266357276,
- 38.90256463524427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06823'>Report Problem</a>",
- "NAME": "H06823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97890899180648,
- 38.90175636187868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06824'>Report Problem</a>",
- "NAME": "H06824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.950614591531,
- 38.90207286702679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06825'>Report Problem</a>",
- "NAME": "H06825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93277440125377,
- 38.89183110849277,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06826'>Report Problem</a>",
- "NAME": "H06826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93397222830615,
- 38.891781056551544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06827'>Report Problem</a>",
- "NAME": "H06827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08344901069415,
- 38.96247001853708,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06828'>Report Problem</a>",
- "NAME": "H06828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99794042749807,
- 38.84321258359658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06829'>Report Problem</a>",
- "NAME": "H06829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00211459104457,
- 38.8791159604665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06830'>Report Problem</a>",
- "NAME": "H06830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9777128015119,
- 38.90233239529218,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06832'>Report Problem</a>",
- "NAME": "H06832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98036613862679,
- 38.90127756047794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06833'>Report Problem</a>",
- "NAME": "H06833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04581257261422,
- 38.942667049608396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06834'>Report Problem</a>",
- "NAME": "H06834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93061566693929,
- 38.8981998981573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06835'>Report Problem</a>",
- "NAME": "H06835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00197923389352,
- 38.88001350485407,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06836'>Report Problem</a>",
- "NAME": "H06836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00218617108085,
- 38.878343606629706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06837'>Report Problem</a>",
- "NAME": "H06837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00074163014447,
- 38.87933638556729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 11/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06838'>Report Problem</a>",
- "NAME": "H06838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98829182615815,
- 38.912835648282005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06839'>Report Problem</a>",
- "NAME": "H06839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99682697263924,
- 38.91014814825445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06840'>Report Problem</a>",
- "NAME": "H06840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9932680535277,
- 38.91057318212014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06841'>Report Problem</a>",
- "NAME": "H06841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06492180613985,
- 38.903931743686734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06842'>Report Problem</a>",
- "NAME": "H06842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99607692273177,
- 38.84348248291928,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06843'>Report Problem</a>",
- "NAME": "H06843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06799562489095,
- 38.90967835835896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07268'>Report Problem</a>",
- "NAME": "H07268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97288442106708,
- 38.874268999431315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07269'>Report Problem</a>",
- "NAME": "H07269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1057971046107,
- 38.92774309571597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07270'>Report Problem</a>",
- "NAME": "H07270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9718932464032,
- 38.87758487310338,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07271'>Report Problem</a>",
- "NAME": "H07271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97102071397458,
- 38.87902117427944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07272'>Report Problem</a>",
- "NAME": "H07272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93505601398128,
- 38.883847091875765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07273'>Report Problem</a>",
- "NAME": "H07273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0172380791555,
- 38.82272044132549,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07274'>Report Problem</a>",
- "NAME": "H07274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05588598026421,
- 38.93690658413924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/18/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07275'>Report Problem</a>",
- "NAME": "H07275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99827184749294,
- 38.91957081503366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07276'>Report Problem</a>",
- "NAME": "H07276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99166522071086,
- 38.898960666041795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07277'>Report Problem</a>",
- "NAME": "H07277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.992527170893,
- 38.89896296744019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07278'>Report Problem</a>",
- "NAME": "H07278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04337789329506,
- 38.90362982387168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07279'>Report Problem</a>",
- "NAME": "H07279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0279766083476,
- 38.88343885332378,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07280'>Report Problem</a>",
- "NAME": "H07280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00049927276746,
- 38.83139627437486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07281'>Report Problem</a>",
- "NAME": "H07281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99473614256651,
- 38.89153822135641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07282'>Report Problem</a>",
- "NAME": "H07282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01433752866193,
- 38.87935951522073,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07283'>Report Problem</a>",
- "NAME": "H07283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01998269109451,
- 38.87742059309258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/21/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07284'>Report Problem</a>",
- "NAME": "H07284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01913810912403,
- 38.87834478854834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07285'>Report Problem</a>",
- "NAME": "H07285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01998414816177,
- 38.878508275290706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07286'>Report Problem</a>",
- "NAME": "H07286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03124438213845,
- 38.97214077611694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07287'>Report Problem</a>",
- "NAME": "H07287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09438902912585,
- 38.93248178929561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07288'>Report Problem</a>",
- "NAME": "H07288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98649905520308,
- 38.932808217717465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07291'>Report Problem</a>",
- "NAME": "H07291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97412070698806,
- 38.88402778257524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07292'>Report Problem</a>",
- "NAME": "H07292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93814038792657,
- 38.876428562683174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07293'>Report Problem</a>",
- "NAME": "H07293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95743452962736,
- 38.885872710903186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07294'>Report Problem</a>",
- "NAME": "H07294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02796855055394,
- 38.881700353750524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07295'>Report Problem</a>",
- "NAME": "H07295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03114521856557,
- 38.882812887396334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07296'>Report Problem</a>",
- "NAME": "H07296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03087176449948,
- 38.88312784813139,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07297'>Report Problem</a>",
- "NAME": "H07297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03925445444915,
- 38.982948349912874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07298'>Report Problem</a>",
- "NAME": "H07298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98375852939992,
- 38.91475560227307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07299'>Report Problem</a>",
- "NAME": "H07299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93392357053568,
- 38.90612145930246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07300'>Report Problem</a>",
- "NAME": "H07300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01884523396411,
- 38.89598159392819,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07301'>Report Problem</a>",
- "NAME": "H07301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95132071266752,
- 38.873913376547904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07302'>Report Problem</a>",
- "NAME": "H07302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95287539677435,
- 38.87454847589481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07303'>Report Problem</a>",
- "NAME": "H07303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91649170986268,
- 38.893011248621335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07304'>Report Problem</a>",
- "NAME": "H07304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01342033836507,
- 38.878461757788635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07741'>Report Problem</a>",
- "NAME": "H07741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92526210004631,
- 38.88185626399039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07742'>Report Problem</a>",
- "NAME": "H07742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93281190286608,
- 38.90613430179411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07743'>Report Problem</a>",
- "NAME": "H07743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05263459899241,
- 38.89868417910864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07744'>Report Problem</a>",
- "NAME": "H07744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05160308022576,
- 38.8981174818172,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07745'>Report Problem</a>",
- "NAME": "H07745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99181324622516,
- 38.913476458853495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07746'>Report Problem</a>",
- "NAME": "H07746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05002308526707,
- 38.90711874141516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07747'>Report Problem</a>",
- "NAME": "H07747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00713398029409,
- 38.902596068103726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07748'>Report Problem</a>",
- "NAME": "H07748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9730906640221,
- 38.916419030126704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07749'>Report Problem</a>",
- "NAME": "H07749"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05654547254223,
- 38.89470632929781,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07750'>Report Problem</a>",
- "NAME": "H07750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97854699647581,
- 38.9290532669026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07751'>Report Problem</a>",
- "NAME": "H07751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97725497061309,
- 38.9291135404281,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07752'>Report Problem</a>",
- "NAME": "H07752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06110013765166,
- 38.906758932084074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07753'>Report Problem</a>",
- "NAME": "H07753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05717522525298,
- 38.90690650266282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07754'>Report Problem</a>",
- "NAME": "H07754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99488126588837,
- 38.902294033570534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07755'>Report Problem</a>",
- "NAME": "H07755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0582657616718,
- 38.90689473049063,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07756'>Report Problem</a>",
- "NAME": "H07756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487383548785,
- 38.90382141760269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07757'>Report Problem</a>",
- "NAME": "H07757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06946745852954,
- 38.916522866822895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07758'>Report Problem</a>",
- "NAME": "H07758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487947157466,
- 38.89468810322306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07759'>Report Problem</a>",
- "NAME": "H07759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93052527485881,
- 38.90470013195742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07760'>Report Problem</a>",
- "NAME": "H07760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0093999101176,
- 38.88311783915731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07761'>Report Problem</a>",
- "NAME": "H07761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01063283576278,
- 38.88312134578459,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07762'>Report Problem</a>",
- "NAME": "H07762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487230027009,
- 38.89903637692326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07763'>Report Problem</a>",
- "NAME": "H07763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196897298102,
- 38.842707697793834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07764'>Report Problem</a>",
- "NAME": "H07764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99139999991228,
- 38.87320087615333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07765'>Report Problem</a>",
- "NAME": "H07765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01742140936466,
- 38.87384271477187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07766'>Report Problem</a>",
- "NAME": "H07766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01765882040428,
- 38.87451807484806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07767'>Report Problem</a>",
- "NAME": "H07767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02081924170639,
- 38.88135481684726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07768'>Report Problem</a>",
- "NAME": "H07768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0174426769584,
- 38.87551687743489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07769'>Report Problem</a>",
- "NAME": "H07769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01867656891648,
- 38.881341846725824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07770'>Report Problem</a>",
- "NAME": "H07770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03621679669857,
- 38.89796392521521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07771'>Report Problem</a>",
- "NAME": "H07771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0368967817473,
- 38.89796860396744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07772'>Report Problem</a>",
- "NAME": "H07772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04346389556616,
- 38.92826027783582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07773'>Report Problem</a>",
- "NAME": "H07773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02406298086142,
- 38.81754920450373,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07774'>Report Problem</a>",
- "NAME": "H07774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99745840910933,
- 38.82620057874815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06339'>Report Problem</a>",
- "NAME": "H06339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9956068334873,
- 38.82844436207334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06340'>Report Problem</a>",
- "NAME": "H06340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99682326982476,
- 38.828125006322736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06341'>Report Problem</a>",
- "NAME": "H06341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99339191721745,
- 38.95552054258865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06342'>Report Problem</a>",
- "NAME": "H06342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93476059633116,
- 38.895033836867896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06343'>Report Problem</a>",
- "NAME": "H06343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94791305166814,
- 38.86882538255405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06344'>Report Problem</a>",
- "NAME": "H06344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95998804184612,
- 38.88935925271337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06345'>Report Problem</a>",
- "NAME": "H06345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06107098506828,
- 38.90850181945575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06346'>Report Problem</a>",
- "NAME": "H06346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93320064366125,
- 38.88965038022436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06347'>Report Problem</a>",
- "NAME": "H06347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99032197115449,
- 38.88140162869176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06348'>Report Problem</a>",
- "NAME": "H06348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9760216362617,
- 38.84839872241051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06349'>Report Problem</a>",
- "NAME": "H06349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10189551860627,
- 38.93639631563402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06350'>Report Problem</a>",
- "NAME": "H06350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00192226267096,
- 38.82213544512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06352'>Report Problem</a>",
- "NAME": "H06352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03855193202259,
- 38.912755556166076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06353'>Report Problem</a>",
- "NAME": "H06353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98762947524733,
- 38.83216761803273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06354'>Report Problem</a>",
- "NAME": "H06354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99506468853413,
- 38.92624212382352,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06355'>Report Problem</a>",
- "NAME": "H06355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99598770630901,
- 38.925284016651744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06356'>Report Problem</a>",
- "NAME": "H06356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98563966534705,
- 38.86056768974044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06357'>Report Problem</a>",
- "NAME": "H06357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08950270210565,
- 38.90941356583103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06358'>Report Problem</a>",
- "NAME": "H06358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93547349084179,
- 38.90275046283293,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06359'>Report Problem</a>",
- "NAME": "H06359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95493978817174,
- 38.85947083173937,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06360'>Report Problem</a>",
- "NAME": "H06360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91612755633857,
- 38.89788590295347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06361'>Report Problem</a>",
- "NAME": "H06361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0347101888558,
- 38.90360959613769,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06362'>Report Problem</a>",
- "NAME": "H06362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95963016559689,
- 38.88526874870483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06363'>Report Problem</a>",
- "NAME": "H06363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93369194522047,
- 38.90070602734576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06364'>Report Problem</a>",
- "NAME": "H06364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00857842370351,
- 38.82447080877871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06365'>Report Problem</a>",
- "NAME": "H06365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94415948378074,
- 38.90044744658407,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06366'>Report Problem</a>",
- "NAME": "H06366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10301117280481,
- 38.93838187549443,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81A<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06367'>Report Problem</a>",
- "NAME": "H06367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99841487177481,
- 38.90708070417186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06368'>Report Problem</a>",
- "NAME": "H06368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94010232235925,
- 38.87872176274441,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06369'>Report Problem</a>",
- "NAME": "H06369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01083734992935,
- 38.82609913629217,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06370'>Report Problem</a>",
- "NAME": "H06370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99191366111425,
- 38.83417960066931,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06372'>Report Problem</a>",
- "NAME": "H06372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98957882319804,
- 38.83502705741386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06373'>Report Problem</a>",
- "NAME": "H06373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94078738017618,
- 38.869412767156305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06374'>Report Problem</a>",
- "NAME": "H06374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94462028341387,
- 38.892721515049516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06375'>Report Problem</a>",
- "NAME": "H06375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99864897478108,
- 38.84317751506021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06844'>Report Problem</a>",
- "NAME": "H06844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99484419430694,
- 38.843697448548774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06845'>Report Problem</a>",
- "NAME": "H06845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9922569181805,
- 38.84395933423378,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06846'>Report Problem</a>",
- "NAME": "H06846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99955191583206,
- 38.84320232226955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06848'>Report Problem</a>",
- "NAME": "H06848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91897316867937,
- 38.891790001345214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06849'>Report Problem</a>",
- "NAME": "H06849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9402533802271,
- 38.87757590921841,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06850'>Report Problem</a>",
- "NAME": "H06850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93928743314085,
- 38.87652350957581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06851'>Report Problem</a>",
- "NAME": "H06851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08364710794544,
- 38.95335321635176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06852'>Report Problem</a>",
- "NAME": "H06852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09069924201972,
- 38.953367298846686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06853'>Report Problem</a>",
- "NAME": "H06853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94248132894039,
- 38.8672304526927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06854'>Report Problem</a>",
- "NAME": "H06854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94265647631872,
- 38.86794841010728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06855'>Report Problem</a>",
- "NAME": "H06855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94618815273662,
- 38.906538136283935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06856'>Report Problem</a>",
- "NAME": "H06856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93474601630156,
- 38.892914303294454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06857'>Report Problem</a>",
- "NAME": "H06857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.963360431868,
- 38.93503937652759,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06858'>Report Problem</a>",
- "NAME": "H06858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96128073431242,
- 38.882799424655836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06859'>Report Problem</a>",
- "NAME": "H06859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00222589421041,
- 38.91816450759264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06860'>Report Problem</a>",
- "NAME": "H06860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00369154111137,
- 38.91805374010515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06861'>Report Problem</a>",
- "NAME": "H06861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99063765723189,
- 38.92962671738468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06862'>Report Problem</a>",
- "NAME": "H06862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05725835591967,
- 38.91261370752583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06863'>Report Problem</a>",
- "NAME": "H06863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05520375582552,
- 38.970257873523714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06864'>Report Problem</a>",
- "NAME": "H06864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06425030350772,
- 38.906894673585185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06865'>Report Problem</a>",
- "NAME": "H06865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97134524838968,
- 38.8522550803544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06866'>Report Problem</a>",
- "NAME": "H06866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05606306758123,
- 38.96852105408021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06867'>Report Problem</a>",
- "NAME": "H06867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05625816843887,
- 38.962009617823256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06868'>Report Problem</a>",
- "NAME": "H06868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05983560459721,
- 38.966514994145456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06869'>Report Problem</a>",
- "NAME": "H06869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98376542601555,
- 38.857205735079866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06870'>Report Problem</a>",
- "NAME": "H06870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08314101453924,
- 38.94104236238156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06871'>Report Problem</a>",
- "NAME": "H06871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97073573734988,
- 38.91963415842319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06872'>Report Problem</a>",
- "NAME": "H06872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9704394700389,
- 38.92000406482806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06873'>Report Problem</a>",
- "NAME": "H06873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96784416447316,
- 38.92242569083767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06874'>Report Problem</a>",
- "NAME": "H06874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96646694615163,
- 38.92384010561988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06875'>Report Problem</a>",
- "NAME": "H06875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96922992836353,
- 38.92147108261294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06876'>Report Problem</a>",
- "NAME": "H06876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96698599320483,
- 38.92353877195621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06877'>Report Problem</a>",
- "NAME": "H06877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96046686602362,
- 38.8763736734287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06878'>Report Problem</a>",
- "NAME": "H06878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95811052128136,
- 38.93061837270984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06879'>Report Problem</a>",
- "NAME": "H06879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96727098728275,
- 38.857171800876756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07305'>Report Problem</a>",
- "NAME": "H07305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99635417416557,
- 38.884554151004195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07306'>Report Problem</a>",
- "NAME": "H07306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01494724758,
- 38.881212401512734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07307'>Report Problem</a>",
- "NAME": "H07307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01378666928579,
- 38.8813579576819,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07308'>Report Problem</a>",
- "NAME": "H07308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01279834871673,
- 38.881219872480905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07309'>Report Problem</a>",
- "NAME": "H07309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06878110099485,
- 38.91722232852371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07310'>Report Problem</a>",
- "NAME": "H07310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01602895733629,
- 38.96265282003601,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07311'>Report Problem</a>",
- "NAME": "H07311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05135348582326,
- 38.90381273899625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07312'>Report Problem</a>",
- "NAME": "H07312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97474021922181,
- 38.87126849176154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07313'>Report Problem</a>",
- "NAME": "H07313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93934619799694,
- 38.897468791997184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07314'>Report Problem</a>",
- "NAME": "H07314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98460593523568,
- 38.932915786081175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07315'>Report Problem</a>",
- "NAME": "H07315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0269938774607,
- 38.882992178578796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07316'>Report Problem</a>",
- "NAME": "H07316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0532342281229,
- 38.90276396427433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07317'>Report Problem</a>",
- "NAME": "H07317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0493638217325,
- 38.902781509455075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07318'>Report Problem</a>",
- "NAME": "H07318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04772895307246,
- 38.9023632372102,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07319'>Report Problem</a>",
- "NAME": "H07319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05152540812392,
- 38.90271795003059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07320'>Report Problem</a>",
- "NAME": "H07320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04669577766252,
- 38.902774507813405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07321'>Report Problem</a>",
- "NAME": "H07321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0148720424155,
- 38.87301176305626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07322'>Report Problem</a>",
- "NAME": "H07322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01684278490809,
- 38.874695931097925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07323'>Report Problem</a>",
- "NAME": "H07323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01591764608332,
- 38.87461418352595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07324'>Report Problem</a>",
- "NAME": "H07324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01450467759673,
- 38.873992616869565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07325'>Report Problem</a>",
- "NAME": "H07325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01450659961178,
- 38.874774005160646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07326'>Report Problem</a>",
- "NAME": "H07326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382187311828,
- 38.86127895747909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07327'>Report Problem</a>",
- "NAME": "H07327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02979387119423,
- 38.92252251676341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07328'>Report Problem</a>",
- "NAME": "H07328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02708016953936,
- 38.88442227572075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07329'>Report Problem</a>",
- "NAME": "H07329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0270826006272,
- 38.883752060381994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07330'>Report Problem</a>",
- "NAME": "H07330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96347613201775,
- 38.85251151579887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07331'>Report Problem</a>",
- "NAME": "H07331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02180399151449,
- 38.895473034350346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07332'>Report Problem</a>",
- "NAME": "H07332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02201541580818,
- 38.89580636728702,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07333'>Report Problem</a>",
- "NAME": "H07333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02180749732133,
- 38.89415795624079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07334'>Report Problem</a>",
- "NAME": "H07334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02174944125531,
- 38.894860484606916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07335'>Report Problem</a>",
- "NAME": "H07335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02200250619778,
- 38.89468900798926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07336'>Report Problem</a>",
- "NAME": "H07336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01142075801127,
- 38.815766086697586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07338'>Report Problem</a>",
- "NAME": "H07338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01144093096623,
- 38.81439651564001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07339'>Report Problem</a>",
- "NAME": "H07339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0227656159168,
- 38.94630885992599,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07340'>Report Problem</a>",
- "NAME": "H07340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07876359814216,
- 38.94389898622888,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07775'>Report Problem</a>",
- "NAME": "H07775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99651848135503,
- 38.848006392343244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07776'>Report Problem</a>",
- "NAME": "H07776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01372098245272,
- 38.89595689559788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07777'>Report Problem</a>",
- "NAME": "H07777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99087963650723,
- 38.91957312034873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07778'>Report Problem</a>",
- "NAME": "H07778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04360849355336,
- 38.91255213573038,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07779'>Report Problem</a>",
- "NAME": "H07779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99029430469642,
- 38.91372777423202,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07780'>Report Problem</a>",
- "NAME": "H07780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98881807747505,
- 38.91424336049654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07781'>Report Problem</a>",
- "NAME": "H07781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01552177152728,
- 38.95446121876773,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07782'>Report Problem</a>",
- "NAME": "H07782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99293796545437,
- 38.831023814076744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07783'>Report Problem</a>",
- "NAME": "H07783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05909760345287,
- 38.90614583593231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07784'>Report Problem</a>",
- "NAME": "H07784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99232283930444,
- 38.82834727015251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07785'>Report Problem</a>",
- "NAME": "H07785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07594643658683,
- 38.92489561624111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07786'>Report Problem</a>",
- "NAME": "H07786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97773433433112,
- 38.917372665271934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/00<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07788'>Report Problem</a>",
- "NAME": "H07788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97600817203194,
- 38.917150493472356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07789'>Report Problem</a>",
- "NAME": "H07789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98932201571286,
- 38.9143341035538,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07790'>Report Problem</a>",
- "NAME": "H07790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98282006843007,
- 38.91633001660792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - MEDALLION<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07791'>Report Problem</a>",
- "NAME": "H07791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98427216517216,
- 38.91582564636996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07792'>Report Problem</a>",
- "NAME": "H07792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0368585383062,
- 38.90752945317807,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07793'>Report Problem</a>",
- "NAME": "H07793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97512242465194,
- 38.917437277631876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07794'>Report Problem</a>",
- "NAME": "H07794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98761884680764,
- 38.914650587478306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07795'>Report Problem</a>",
- "NAME": "H07795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97394390447603,
- 38.91716589706266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07796'>Report Problem</a>",
- "NAME": "H07796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98505442179395,
- 38.91550058425484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07798'>Report Problem</a>",
- "NAME": "H07798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03167743781633,
- 38.976578159461894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07800'>Report Problem</a>",
- "NAME": "H07800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99003768502162,
- 38.935594255091814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07801'>Report Problem</a>",
- "NAME": "H07801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02689659986729,
- 38.89561209793297,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07802'>Report Problem</a>",
- "NAME": "H07802"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92280358021574,
- 38.88282226502623,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07803'>Report Problem</a>",
- "NAME": "H07803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01348751390485,
- 38.92015589692185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07804'>Report Problem</a>",
- "NAME": "H07804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99066590132217,
- 38.830688431535556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07805'>Report Problem</a>",
- "NAME": "H07805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0217240860084,
- 38.9453369203669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07806'>Report Problem</a>",
- "NAME": "H07806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0219117482382,
- 38.94613258689647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07807'>Report Problem</a>",
- "NAME": "H07807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06614962748161,
- 38.906008732419245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07808'>Report Problem</a>",
- "NAME": "H07808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06771622604425,
- 38.90597631470976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07809'>Report Problem</a>",
- "NAME": "H07809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10280732391429,
- 38.93483740473735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07810'>Report Problem</a>",
- "NAME": "H07810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07902293422096,
- 38.965877087039736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07811'>Report Problem</a>",
- "NAME": "H07811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03632478450702,
- 38.90368134326886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06376'>Report Problem</a>",
- "NAME": "H06376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95621682912618,
- 38.861642256984226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06377'>Report Problem</a>",
- "NAME": "H06377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98573229222727,
- 38.95115954146684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06378'>Report Problem</a>",
- "NAME": "H06378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96890085144213,
- 38.87151492186587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06379'>Report Problem</a>",
- "NAME": "H06379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92413955013444,
- 38.89377047541237,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06380'>Report Problem</a>",
- "NAME": "H06380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92518488992707,
- 38.894323353731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06381'>Report Problem</a>",
- "NAME": "H06381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98225091412405,
- 38.90448472794493,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06382'>Report Problem</a>",
- "NAME": "H06382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92548692103111,
- 38.89338060451896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06383'>Report Problem</a>",
- "NAME": "H06383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04018306995864,
- 38.92724280083231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06384'>Report Problem</a>",
- "NAME": "H06384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94820585250427,
- 38.889628558221574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06385'>Report Problem</a>",
- "NAME": "H06385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95250851558777,
- 38.88471370305015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06386'>Report Problem</a>",
- "NAME": "H06386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05867796190613,
- 38.95498451607828,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06387'>Report Problem</a>",
- "NAME": "H06387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05993017911504,
- 38.95455106065457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06388'>Report Problem</a>",
- "NAME": "H06388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98736806711368,
- 38.919086073617436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06389'>Report Problem</a>",
- "NAME": "H06389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07262882789776,
- 38.932564845168564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06390'>Report Problem</a>",
- "NAME": "H06390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92729133065178,
- 38.88964889623357,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06391'>Report Problem</a>",
- "NAME": "H06391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98565165251033,
- 38.900092189763704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06392'>Report Problem</a>",
- "NAME": "H06392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94730003285807,
- 38.889951697895846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06393'>Report Problem</a>",
- "NAME": "H06393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94277294832536,
- 38.88989497692029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06394'>Report Problem</a>",
- "NAME": "H06394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07666750097329,
- 38.95081085820682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06395'>Report Problem</a>",
- "NAME": "H06395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94488773117428,
- 38.86805889165294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06396'>Report Problem</a>",
- "NAME": "H06396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94408807622351,
- 38.86866497566869,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06397'>Report Problem</a>",
- "NAME": "H06397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01915796192878,
- 38.93743690998917,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06398'>Report Problem</a>",
- "NAME": "H06398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9920012876199,
- 38.95744291813311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06399'>Report Problem</a>",
- "NAME": "H06399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99282387370222,
- 38.958034625072735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06400'>Report Problem</a>",
- "NAME": "H06400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95485103689134,
- 38.858286928442375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06401'>Report Problem</a>",
- "NAME": "H06401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9885581649474,
- 38.9323779485778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06402'>Report Problem</a>",
- "NAME": "H06402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9403906052068,
- 38.889658801942446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06403'>Report Problem</a>",
- "NAME": "H06403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95621010546085,
- 38.859474134721815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06404'>Report Problem</a>",
- "NAME": "H06404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98872848378188,
- 38.934536940069194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06405'>Report Problem</a>",
- "NAME": "H06405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95993184202754,
- 38.89702941929888,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06406'>Report Problem</a>",
- "NAME": "H06406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07357713243127,
- 38.93722579682287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06407'>Report Problem</a>",
- "NAME": "H06407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07230564822046,
- 38.93806898330772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06408'>Report Problem</a>",
- "NAME": "H06408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93446043709126,
- 38.88957287413981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06409'>Report Problem</a>",
- "NAME": "H06409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92921366782463,
- 38.8896477258259,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06410'>Report Problem</a>",
- "NAME": "H06410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95845546909602,
- 38.93003918047837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06880'>Report Problem</a>",
- "NAME": "H06880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96354541629603,
- 38.92663907895507,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06881'>Report Problem</a>",
- "NAME": "H06881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96297487993984,
- 38.92719529815789,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06882'>Report Problem</a>",
- "NAME": "H06882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97170466665071,
- 38.901337761238985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06883'>Report Problem</a>",
- "NAME": "H06883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96158661395637,
- 38.92134311795151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06884'>Report Problem</a>",
- "NAME": "H06884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9808575383346,
- 38.88546202645402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06885'>Report Problem</a>",
- "NAME": "H06885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98067951818366,
- 38.891050821518625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06886'>Report Problem</a>",
- "NAME": "H06886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98084054752002,
- 38.88422369533478,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06887'>Report Problem</a>",
- "NAME": "H06887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1022441627605,
- 38.941546208943365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06888'>Report Problem</a>",
- "NAME": "H06888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04577710186203,
- 38.90557013625271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06889'>Report Problem</a>",
- "NAME": "H06889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94929066275576,
- 38.87726620429468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06890'>Report Problem</a>",
- "NAME": "H06890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91262698875987,
- 38.89536936296406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06891'>Report Problem</a>",
- "NAME": "H06891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91187691952949,
- 38.89471703491633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06892'>Report Problem</a>",
- "NAME": "H06892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91416352642354,
- 38.89660709893166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06893'>Report Problem</a>",
- "NAME": "H06893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00195263729442,
- 38.965196363764406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06894'>Report Problem</a>",
- "NAME": "H06894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97797636106448,
- 38.92027692397566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06895'>Report Problem</a>",
- "NAME": "H06895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92058618802173,
- 38.898204320775314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06896'>Report Problem</a>",
- "NAME": "H06896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92479314900567,
- 38.898443682540936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06897'>Report Problem</a>",
- "NAME": "H06897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05851610742279,
- 38.95360645820845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06898'>Report Problem</a>",
- "NAME": "H06898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92568413701112,
- 38.898516679986486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06899'>Report Problem</a>",
- "NAME": "H06899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92183103294697,
- 38.898221807835306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06900'>Report Problem</a>",
- "NAME": "H06900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93675589040556,
- 38.899096923205846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06901'>Report Problem</a>",
- "NAME": "H06901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97006697274162,
- 38.9199159406427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06902'>Report Problem</a>",
- "NAME": "H06902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9619108089718,
- 38.928025045285246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06903'>Report Problem</a>",
- "NAME": "H06903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9600933858736,
- 38.92928934997076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06904'>Report Problem</a>",
- "NAME": "H06904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97828247739685,
- 38.86892409103628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06905'>Report Problem</a>",
- "NAME": "H06905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95996523487764,
- 38.88031413424983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06906'>Report Problem</a>",
- "NAME": "H06906"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97873576249505,
- 38.869549475017244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06907'>Report Problem</a>",
- "NAME": "H06907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03481222745445,
- 38.97513333035078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06908'>Report Problem</a>",
- "NAME": "H06908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02742612846652,
- 38.974926070584175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06910'>Report Problem</a>",
- "NAME": "H06910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02857030781799,
- 38.97461768814917,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06911'>Report Problem</a>",
- "NAME": "H06911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93860683013166,
- 38.87469578200884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06912'>Report Problem</a>",
- "NAME": "H06912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97890893510812,
- 38.921170595704275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06913'>Report Problem</a>",
- "NAME": "H06913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9219028564582,
- 38.88646612596618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06914'>Report Problem</a>",
- "NAME": "H06914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01969474537717,
- 38.92930442183414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06915'>Report Problem</a>",
- "NAME": "H06915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05945717749043,
- 38.97996399532121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07341'>Report Problem</a>",
- "NAME": "H07341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05416500998363,
- 38.98012532686826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07342'>Report Problem</a>",
- "NAME": "H07342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97073411433927,
- 38.923308094717704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07343'>Report Problem</a>",
- "NAME": "H07343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97004308855342,
- 38.9222555675058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07344'>Report Problem</a>",
- "NAME": "H07344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01057828303236,
- 38.87851643345949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07345'>Report Problem</a>",
- "NAME": "H07345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93371434777302,
- 38.90841946070984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07346'>Report Problem</a>",
- "NAME": "H07346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01425467205539,
- 38.87633756963333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07347'>Report Problem</a>",
- "NAME": "H07347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96739819608914,
- 38.91745290808618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07348'>Report Problem</a>",
- "NAME": "H07348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96415166667015,
- 38.91686995596387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07349'>Report Problem</a>",
- "NAME": "H07349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96305428232182,
- 38.917178014373874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07350'>Report Problem</a>",
- "NAME": "H07350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96523652644659,
- 38.91730362050751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07351'>Report Problem</a>",
- "NAME": "H07351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96621225655664,
- 38.91737508153287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07352'>Report Problem</a>",
- "NAME": "H07352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0159281040351,
- 38.872935493791175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07353'>Report Problem</a>",
- "NAME": "H07353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98713634192262,
- 38.867198778360724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07354'>Report Problem</a>",
- "NAME": "H07354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00916426489884,
- 38.88745975384796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07355'>Report Problem</a>",
- "NAME": "H07355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97818278157972,
- 38.89352903517165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07356'>Report Problem</a>",
- "NAME": "H07356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03823057312687,
- 38.990129754296284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07357'>Report Problem</a>",
- "NAME": "H07357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96319829252309,
- 38.86558191155318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07358'>Report Problem</a>",
- "NAME": "H07358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9730110862898,
- 38.8879686711808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07359'>Report Problem</a>",
- "NAME": "H07359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.938462196277,
- 38.889603427344525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07360'>Report Problem</a>",
- "NAME": "H07360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99121177677247,
- 38.94622085267838,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07361'>Report Problem</a>",
- "NAME": "H07361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02648922113475,
- 38.89198671894936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07362'>Report Problem</a>",
- "NAME": "H07362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02785508964458,
- 38.892193891046944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07363'>Report Problem</a>",
- "NAME": "H07363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02762717275141,
- 38.89196901514472,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07364'>Report Problem</a>",
- "NAME": "H07364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00931098896494,
- 38.87921491696026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07365'>Report Problem</a>",
- "NAME": "H07365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00792679835567,
- 38.96168838868454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07366'>Report Problem</a>",
- "NAME": "H07366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00882340847184,
- 38.96105161203931,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07367'>Report Problem</a>",
- "NAME": "H07367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02380879400752,
- 38.886539102342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07369'>Report Problem</a>",
- "NAME": "H07369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95050953117146,
- 38.873211155001464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07370'>Report Problem</a>",
- "NAME": "H07370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97784390927255,
- 38.89838238129811,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07371'>Report Problem</a>",
- "NAME": "H07371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97778232687293,
- 38.8978277788175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07372'>Report Problem</a>",
- "NAME": "H07372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97763497622866,
- 38.898936508822565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07373'>Report Problem</a>",
- "NAME": "H07373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02345871272976,
- 38.887445911617895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07375'>Report Problem</a>",
- "NAME": "H07375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00926191581291,
- 38.870865559320144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07376'>Report Problem</a>",
- "NAME": "H07376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9705466305446,
- 38.915511376550384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07377'>Report Problem</a>",
- "NAME": "H07377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00829882753979,
- 38.88512332393778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07812'>Report Problem</a>",
- "NAME": "H07812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.010037273082,
- 38.88511783650101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07813'>Report Problem</a>",
- "NAME": "H07813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98299423988234,
- 38.8513928821244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07814'>Report Problem</a>",
- "NAME": "H07814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98139905696112,
- 38.85146427392455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07815'>Report Problem</a>",
- "NAME": "H07815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98436377749722,
- 38.851974964332385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07816'>Report Problem</a>",
- "NAME": "H07816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06036244463759,
- 38.92284485292878,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07817'>Report Problem</a>",
- "NAME": "H07817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00925396806588,
- 38.88511078456666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07818'>Report Problem</a>",
- "NAME": "H07818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01082520137022,
- 38.8859689320723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07819'>Report Problem</a>",
- "NAME": "H07819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06743021004122,
- 38.96580750633269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07820'>Report Problem</a>",
- "NAME": "H07820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02333500914509,
- 38.945262327599174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07821'>Report Problem</a>",
- "NAME": "H07821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05595884182088,
- 38.90012345835988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07822'>Report Problem</a>",
- "NAME": "H07822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01766589212484,
- 38.87222067037575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07823'>Report Problem</a>",
- "NAME": "H07823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98445260119188,
- 38.93094021732408,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07824'>Report Problem</a>",
- "NAME": "H07824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00665768488938,
- 38.900347943841645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07825'>Report Problem</a>",
- "NAME": "H07825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06788693269378,
- 38.906685082759836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07826'>Report Problem</a>",
- "NAME": "H07826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98940049754484,
- 38.949367330114825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07827'>Report Problem</a>",
- "NAME": "H07827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00428361044698,
- 38.95959448378412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07828'>Report Problem</a>",
- "NAME": "H07828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99502639156024,
- 38.93050889096717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07829'>Report Problem</a>",
- "NAME": "H07829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03936084651036,
- 38.99134976553878,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07830'>Report Problem</a>",
- "NAME": "H07830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05771518043335,
- 38.95316078481239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81D<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07831'>Report Problem</a>",
- "NAME": "H07831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98611011722467,
- 38.90222659512454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07832'>Report Problem</a>",
- "NAME": "H07832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09328228032055,
- 38.938591965554785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07833'>Report Problem</a>",
- "NAME": "H07833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93273344655442,
- 38.88163480354615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07834'>Report Problem</a>",
- "NAME": "H07834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07270935805565,
- 38.970468523916345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07835'>Report Problem</a>",
- "NAME": "H07835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03776997920576,
- 38.92315260424226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 10/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07836'>Report Problem</a>",
- "NAME": "H07836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03867857225319,
- 38.941932344447345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07837'>Report Problem</a>",
- "NAME": "H07837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01830071987415,
- 38.88452667688121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07838'>Report Problem</a>",
- "NAME": "H07838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04454491329965,
- 38.9456414538869,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, UNKNOWN<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07839'>Report Problem</a>",
- "NAME": "H07839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02177149392207,
- 38.881114029161814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07840'>Report Problem</a>",
- "NAME": "H07840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02004418334263,
- 38.88134952938589,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07841'>Report Problem</a>",
- "NAME": "H07841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93248096639293,
- 38.88276431887421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07842'>Report Problem</a>",
- "NAME": "H07842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00918852714993,
- 38.88235576454363,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07844'>Report Problem</a>",
- "NAME": "H07844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97206170668471,
- 38.91342222021708,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07845'>Report Problem</a>",
- "NAME": "H07845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99625799472017,
- 38.87945192364907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07846'>Report Problem</a>",
- "NAME": "H07846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99841081003788,
- 38.832717571741746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07847'>Report Problem</a>",
- "NAME": "H07847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9963243043215,
- 38.82517306037714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06447'>Report Problem</a>",
- "NAME": "H06447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9995304864059,
- 38.95591449763924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06448'>Report Problem</a>",
- "NAME": "H06448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0160062209351,
- 38.97295330748421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06451'>Report Problem</a>",
- "NAME": "H06451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00255576232554,
- 38.95669546905703,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06452'>Report Problem</a>",
- "NAME": "H06452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08395272345864,
- 38.94402240957244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06453'>Report Problem</a>",
- "NAME": "H06453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0034081284013,
- 38.95615570822822,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06454'>Report Problem</a>",
- "NAME": "H06454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99619304064757,
- 38.95462273246034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06455'>Report Problem</a>",
- "NAME": "H06455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91846497136584,
- 38.88986413421935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06456'>Report Problem</a>",
- "NAME": "H06456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91770324035967,
- 38.89207103964668,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06457'>Report Problem</a>",
- "NAME": "H06457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92050698962676,
- 38.8896401070975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06458'>Report Problem</a>",
- "NAME": "H06458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91850117890932,
- 38.88695578580477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06461'>Report Problem</a>",
- "NAME": "H06461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92034881451684,
- 38.88853236505423,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06462'>Report Problem</a>",
- "NAME": "H06462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99308457652555,
- 38.95458937644197,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06466'>Report Problem</a>",
- "NAME": "H06466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04574062857647,
- 38.91397363799839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06467'>Report Problem</a>",
- "NAME": "H06467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99470559737202,
- 38.95458836207815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06468'>Report Problem</a>",
- "NAME": "H06468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09691311326478,
- 38.93097133599927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06469'>Report Problem</a>",
- "NAME": "H06469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97530820249524,
- 38.84672567041775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06470'>Report Problem</a>",
- "NAME": "H06470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97490026413797,
- 38.868958455730656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06471'>Report Problem</a>",
- "NAME": "H06471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01562281186364,
- 38.91508468000044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06472'>Report Problem</a>",
- "NAME": "H06472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92223478019082,
- 38.88749401469716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06473'>Report Problem</a>",
- "NAME": "H06473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98212791287683,
- 38.87834584494729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06474'>Report Problem</a>",
- "NAME": "H06474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08433487266956,
- 38.93983558472638,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06475'>Report Problem</a>",
- "NAME": "H06475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08538363866316,
- 38.93998172162816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06476'>Report Problem</a>",
- "NAME": "H06476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0850377212599,
- 38.94069364712121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06477'>Report Problem</a>",
- "NAME": "H06477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0583610949476,
- 38.92471649247591,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06478'>Report Problem</a>",
- "NAME": "H06478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95872191496316,
- 38.87003664107611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06479'>Report Problem</a>",
- "NAME": "H06479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9737771242671,
- 38.84687694858346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06480'>Report Problem</a>",
- "NAME": "H06480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97695557469099,
- 38.84654202785491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06481'>Report Problem</a>",
- "NAME": "H06481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00204359595887,
- 38.95911800755165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06482'>Report Problem</a>",
- "NAME": "H06482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00122056940498,
- 38.9588904434059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06483'>Report Problem</a>",
- "NAME": "H06483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97008413065218,
- 38.926762674020075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06484'>Report Problem</a>",
- "NAME": "H06484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00343822568875,
- 38.89222276344097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06485'>Report Problem</a>",
- "NAME": "H06485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98372679465297,
- 38.867062262925614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06486'>Report Problem</a>",
- "NAME": "H06486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00648724533183,
- 38.85325258725298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06487'>Report Problem</a>",
- "NAME": "H06487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00717190165935,
- 38.96833554239617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06488'>Report Problem</a>",
- "NAME": "H06488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01964243886209,
- 38.93029224580981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06916'>Report Problem</a>",
- "NAME": "H06916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02158505873793,
- 38.929979585111354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06917'>Report Problem</a>",
- "NAME": "H06917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0215817437073,
- 38.92904840573736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06918'>Report Problem</a>",
- "NAME": "H06918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92986964040844,
- 38.883153320736085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06919'>Report Problem</a>",
- "NAME": "H06919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93100726507458,
- 38.88331737440409,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06920'>Report Problem</a>",
- "NAME": "H06920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02064868456085,
- 38.927567058325636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06921'>Report Problem</a>",
- "NAME": "H06921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03493547813184,
- 38.930996926259304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06922'>Report Problem</a>",
- "NAME": "H06922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06992232888156,
- 38.91855824442158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06923'>Report Problem</a>",
- "NAME": "H06923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92181478852825,
- 38.89570943557277,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06924'>Report Problem</a>",
- "NAME": "H06924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03411727054059,
- 38.9733074764901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06925'>Report Problem</a>",
- "NAME": "H06925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93384257741761,
- 38.890621452199134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06926'>Report Problem</a>",
- "NAME": "H06926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05942323667135,
- 38.93421465431748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06927'>Report Problem</a>",
- "NAME": "H06927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04191154650579,
- 38.994395190684806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06928'>Report Problem</a>",
- "NAME": "H06928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95498377859809,
- 38.86151564320145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06929'>Report Problem</a>",
- "NAME": "H06929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08950568737377,
- 38.91491630083296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06930'>Report Problem</a>",
- "NAME": "H06930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08879060316153,
- 38.91508145576154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06931'>Report Problem</a>",
- "NAME": "H06931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05232545414204,
- 38.934534247823116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06932'>Report Problem</a>",
- "NAME": "H06932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0938246535971,
- 38.928670880702796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06933'>Report Problem</a>",
- "NAME": "H06933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00898722427414,
- 38.886555002027116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06934'>Report Problem</a>",
- "NAME": "H06934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92552813657788,
- 38.882575150284744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06935'>Report Problem</a>",
- "NAME": "H06935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09929866359468,
- 38.94303676509001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06937'>Report Problem</a>",
- "NAME": "H06937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93998868767575,
- 38.91246026526381,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06938'>Report Problem</a>",
- "NAME": "H06938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93867579625896,
- 38.911861609933425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 12/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06939'>Report Problem</a>",
- "NAME": "H06939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02822647912558,
- 38.96011392235304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06940'>Report Problem</a>",
- "NAME": "H06940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98421121856971,
- 38.93194959273384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06941'>Report Problem</a>",
- "NAME": "H06941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93744237833668,
- 38.880254515601784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06942'>Report Problem</a>",
- "NAME": "H06942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92759163468226,
- 38.89842460526843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06943'>Report Problem</a>",
- "NAME": "H06943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97739999711641,
- 38.92445505382356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06944'>Report Problem</a>",
- "NAME": "H06944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99838069273713,
- 38.89820737574346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06945'>Report Problem</a>",
- "NAME": "H06945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98377964562911,
- 38.92214121834334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06946'>Report Problem</a>",
- "NAME": "H06946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03502432212396,
- 38.962185216538025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06947'>Report Problem</a>",
- "NAME": "H06947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96062208914762,
- 38.8692708169922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06948'>Report Problem</a>",
- "NAME": "H06948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93769124525946,
- 38.89596496525098,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06949'>Report Problem</a>",
- "NAME": "H06949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0010194459706,
- 38.8267402093052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06950'>Report Problem</a>",
- "NAME": "H06950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94896904881244,
- 38.871205725811464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06951'>Report Problem</a>",
- "NAME": "H06951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9720106215178,
- 38.91549331435399,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07378'>Report Problem</a>",
- "NAME": "H07378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02256505126924,
- 38.88637850461337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07379'>Report Problem</a>",
- "NAME": "H07379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02324738863086,
- 38.88637426297682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07380'>Report Problem</a>",
- "NAME": "H07380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99016298111175,
- 38.89536313147431,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07381'>Report Problem</a>",
- "NAME": "H07381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99031247405496,
- 38.89625968350196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07382'>Report Problem</a>",
- "NAME": "H07382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9907489650503,
- 38.83235346327543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07383'>Report Problem</a>",
- "NAME": "H07383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95923561316053,
- 38.86279675180596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07384'>Report Problem</a>",
- "NAME": "H07384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00869900764677,
- 38.89140123292308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07385'>Report Problem</a>",
- "NAME": "H07385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01047483178928,
- 38.889314225282924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07386'>Report Problem</a>",
- "NAME": "H07386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0086958727219,
- 38.89140423294449,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07387'>Report Problem</a>",
- "NAME": "H07387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00862872610426,
- 38.88823448811311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07388'>Report Problem</a>",
- "NAME": "H07388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00862540697659,
- 38.8882381637762,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07389'>Report Problem</a>",
- "NAME": "H07389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99965400989588,
- 38.86201525233027,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 12/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07390'>Report Problem</a>",
- "NAME": "H07390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96488309635455,
- 38.87387423637057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07391'>Report Problem</a>",
- "NAME": "H07391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01998219940283,
- 38.88735268178771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07392'>Report Problem</a>",
- "NAME": "H07392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98404873624094,
- 38.86307440890552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07393'>Report Problem</a>",
- "NAME": "H07393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9780067069492,
- 38.90256948782962,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07394'>Report Problem</a>",
- "NAME": "H07394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97800693630485,
- 38.90362040241758,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07395'>Report Problem</a>",
- "NAME": "H07395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95149439379644,
- 38.90127230260149,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07396'>Report Problem</a>",
- "NAME": "H07396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97635823330886,
- 38.90569377584452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07397'>Report Problem</a>",
- "NAME": "H07397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97671468912473,
- 38.90294310217873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07398'>Report Problem</a>",
- "NAME": "H07398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00920357020638,
- 38.90480246529546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07399'>Report Problem</a>",
- "NAME": "H07399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00885304021857,
- 38.906541491158926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07400'>Report Problem</a>",
- "NAME": "H07400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00887512558583,
- 38.90844974550422,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07401'>Report Problem</a>",
- "NAME": "H07401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00923958829911,
- 38.90552679686227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07402'>Report Problem</a>",
- "NAME": "H07402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00887017082094,
- 38.9077317447217,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07403'>Report Problem</a>",
- "NAME": "H07403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0092808096706,
- 38.90786818926415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07404'>Report Problem</a>",
- "NAME": "H07404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04447671283583,
- 38.91550002985804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07405'>Report Problem</a>",
- "NAME": "H07405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96768635817297,
- 38.86960370214958,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07406'>Report Problem</a>",
- "NAME": "H07406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96767823483512,
- 38.86843204837949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07407'>Report Problem</a>",
- "NAME": "H07407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00070857753023,
- 38.86199491869393,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07408'>Report Problem</a>",
- "NAME": "H07408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03747415366104,
- 38.918067589882845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07409'>Report Problem</a>",
- "NAME": "H07409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92602909937159,
- 38.884742490282626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07411'>Report Problem</a>",
- "NAME": "H07411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9238507841437,
- 38.8843195069313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07412'>Report Problem</a>",
- "NAME": "H07412"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98594800848531,
- 38.85034603550454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07848'>Report Problem</a>",
- "NAME": "H07848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05290796512216,
- 38.925624667718154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/14/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07849'>Report Problem</a>",
- "NAME": "H07849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07540860735465,
- 38.949573363198404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07850'>Report Problem</a>",
- "NAME": "H07850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0077153522999,
- 38.90639261879274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07852'>Report Problem</a>",
- "NAME": "H07852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04414961176225,
- 38.909039525950995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07853'>Report Problem</a>",
- "NAME": "H07853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99436444025051,
- 38.826706962554184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07854'>Report Problem</a>",
- "NAME": "H07854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00065591240252,
- 38.91990562041026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07855'>Report Problem</a>",
- "NAME": "H07855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02205062500774,
- 38.887764298801066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07856'>Report Problem</a>",
- "NAME": "H07856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0526197535387,
- 38.898156322778675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07857'>Report Problem</a>",
- "NAME": "H07857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0662884505694,
- 38.971337491236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07858'>Report Problem</a>",
- "NAME": "H07858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05252470264118,
- 38.897556768885565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07859'>Report Problem</a>",
- "NAME": "H07859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10290292137577,
- 38.930229777114825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07860'>Report Problem</a>",
- "NAME": "H07860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99337856787909,
- 38.82748258498991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07861'>Report Problem</a>",
- "NAME": "H07861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98569205940727,
- 38.833474785503725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07862'>Report Problem</a>",
- "NAME": "H07862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99522632422931,
- 38.82602436617305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07863'>Report Problem</a>",
- "NAME": "H07863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03017195431408,
- 38.95975453853187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07864'>Report Problem</a>",
- "NAME": "H07864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06225952363265,
- 38.94320213313865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07865'>Report Problem</a>",
- "NAME": "H07865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02566035874844,
- 38.88295559883774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07866'>Report Problem</a>",
- "NAME": "H07866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02631492721297,
- 38.88477947989644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07867'>Report Problem</a>",
- "NAME": "H07867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02561315135392,
- 38.88475583575133,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07868'>Report Problem</a>",
- "NAME": "H07868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02577593649214,
- 38.883499733922086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07869'>Report Problem</a>",
- "NAME": "H07869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02619484318929,
- 38.883405223837116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07870'>Report Problem</a>",
- "NAME": "H07870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02431815449141,
- 38.88296239907488,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07871'>Report Problem</a>",
- "NAME": "H07871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05203321111429,
- 38.92467207946045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07872'>Report Problem</a>",
- "NAME": "H07872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02580182988397,
- 38.886005283847766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07873'>Report Problem</a>",
- "NAME": "H07873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.015200697957,
- 38.872180632616704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07874'>Report Problem</a>",
- "NAME": "H07874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97210640348297,
- 38.92929989698902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07875'>Report Problem</a>",
- "NAME": "H07875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96626492175632,
- 38.926387951043914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07876'>Report Problem</a>",
- "NAME": "H07876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.968149734719,
- 38.9277700670659,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07877'>Report Problem</a>",
- "NAME": "H07877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96860244533637,
- 38.92859304485643,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07878'>Report Problem</a>",
- "NAME": "H07878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97151990766324,
- 38.93109057132295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07879'>Report Problem</a>",
- "NAME": "H07879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04857480353088,
- 38.911080303773396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07880'>Report Problem</a>",
- "NAME": "H07880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06790376094129,
- 38.90767343303258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07881'>Report Problem</a>",
- "NAME": "H07881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07132303600713,
- 38.957023479419924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07882'>Report Problem</a>",
- "NAME": "H07882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08683836022527,
- 38.94122595662857,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06411'>Report Problem</a>",
- "NAME": "H06411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99756873306923,
- 38.95479164712626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06412'>Report Problem</a>",
- "NAME": "H06412"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92788669890638,
- 38.88993374987981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06413'>Report Problem</a>",
- "NAME": "H06413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96791051099046,
- 38.923390707481786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06414'>Report Problem</a>",
- "NAME": "H06414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00773456528148,
- 38.81968157461506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06415'>Report Problem</a>",
- "NAME": "H06415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00713999550366,
- 38.821944776314936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06416'>Report Problem</a>",
- "NAME": "H06416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00705047874656,
- 38.82048374190161,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06417'>Report Problem</a>",
- "NAME": "H06417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91360021451412,
- 38.889917353913354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06418'>Report Problem</a>",
- "NAME": "H06418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97174732588093,
- 38.92062548537049,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06419'>Report Problem</a>",
- "NAME": "H06419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10639501715012,
- 38.92932789067318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06420'>Report Problem</a>",
- "NAME": "H06420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96153600806343,
- 38.86557201607332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06422'>Report Problem</a>",
- "NAME": "H06422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92483908063348,
- 38.88964277679233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06423'>Report Problem</a>",
- "NAME": "H06423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92300169281533,
- 38.88993334339456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06424'>Report Problem</a>",
- "NAME": "H06424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0416231474056,
- 38.993135776693364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06425'>Report Problem</a>",
- "NAME": "H06425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08694628283081,
- 38.94021591145779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06426'>Report Problem</a>",
- "NAME": "H06426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99462262055135,
- 38.829372967625396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06427'>Report Problem</a>",
- "NAME": "H06427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92458257666763,
- 38.88986487516813,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06428'>Report Problem</a>",
- "NAME": "H06428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91765868460706,
- 38.88950798089341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06429'>Report Problem</a>",
- "NAME": "H06429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99657988162654,
- 38.83550807372832,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06430'>Report Problem</a>",
- "NAME": "H06430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91082475018672,
- 38.89285377339497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06431'>Report Problem</a>",
- "NAME": "H06431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91110909801176,
- 38.892012932211614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06432'>Report Problem</a>",
- "NAME": "H06432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99856289867849,
- 38.955633891328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06433'>Report Problem</a>",
- "NAME": "H06433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94160384950266,
- 38.87008790806052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06434'>Report Problem</a>",
- "NAME": "H06434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9986870199681,
- 38.954153690590985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06435'>Report Problem</a>",
- "NAME": "H06435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97644168961469,
- 38.84520790112694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06436'>Report Problem</a>",
- "NAME": "H06436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9925421124516,
- 38.94184486450241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06437'>Report Problem</a>",
- "NAME": "H06437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97415640532023,
- 38.84545124908119,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06438'>Report Problem</a>",
- "NAME": "H06438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99175041462823,
- 38.8411274132506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06439'>Report Problem</a>",
- "NAME": "H06439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98531691857632,
- 38.86128333249696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06440'>Report Problem</a>",
- "NAME": "H06440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98575726491512,
- 38.86243383410268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06441'>Report Problem</a>",
- "NAME": "H06441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00897148354399,
- 38.954324564868124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06442'>Report Problem</a>",
- "NAME": "H06442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00560326134706,
- 38.82178048255727,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06443'>Report Problem</a>",
- "NAME": "H06443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00541823829477,
- 38.820382132395096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06444'>Report Problem</a>",
- "NAME": "H06444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97400629735824,
- 38.84396117409836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06445'>Report Problem</a>",
- "NAME": "H06445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03286062760037,
- 38.897178946827985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06446'>Report Problem</a>",
- "NAME": "H06446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1017552271079,
- 38.92965448406576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06952'>Report Problem</a>",
- "NAME": "H06952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10259679255353,
- 38.9291434722956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06953'>Report Problem</a>",
- "NAME": "H06953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00338175553144,
- 38.87934082513986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06954'>Report Problem</a>",
- "NAME": "H06954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00345463349966,
- 38.88042332524441,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/01/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06955'>Report Problem</a>",
- "NAME": "H06955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97720895839207,
- 38.94064721928847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06956'>Report Problem</a>",
- "NAME": "H06956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98556796112138,
- 38.89944858625816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06957'>Report Problem</a>",
- "NAME": "H06957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99627292134048,
- 38.89817018603768,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06958'>Report Problem</a>",
- "NAME": "H06958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03115732724314,
- 38.96182514299751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06959'>Report Problem</a>",
- "NAME": "H06959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02999061288051,
- 38.9616717852718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06960'>Report Problem</a>",
- "NAME": "H06960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0661075125801,
- 38.90526358540482,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06961'>Report Problem</a>",
- "NAME": "H06961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06010384333933,
- 38.905100479983815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06962'>Report Problem</a>",
- "NAME": "H06962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05908587798966,
- 38.90510164783787,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06963'>Report Problem</a>",
- "NAME": "H06963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06523188111883,
- 38.90525056505461,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06964'>Report Problem</a>",
- "NAME": "H06964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00368841244952,
- 38.95298571782302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06965'>Report Problem</a>",
- "NAME": "H06965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96909341708202,
- 38.87272407181803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06966'>Report Problem</a>",
- "NAME": "H06966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99363869562072,
- 38.843716631117545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06967'>Report Problem</a>",
- "NAME": "H06967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93225284760618,
- 38.896173688569974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06968'>Report Problem</a>",
- "NAME": "H06968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02592147669041,
- 38.91572090948699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06969'>Report Problem</a>",
- "NAME": "H06969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02792098507723,
- 38.91227058041637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06970'>Report Problem</a>",
- "NAME": "H06970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92972891587851,
- 38.898447206222606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06971'>Report Problem</a>",
- "NAME": "H06971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08734832988705,
- 38.936294128063686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06972'>Report Problem</a>",
- "NAME": "H06972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99368676911035,
- 38.895772526019954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06973'>Report Problem</a>",
- "NAME": "H06973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09625834931724,
- 38.945468591612475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06974'>Report Problem</a>",
- "NAME": "H06974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00915681333376,
- 38.830027611670445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06975'>Report Problem</a>",
- "NAME": "H06975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93711222287227,
- 38.91120534991192,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06976'>Report Problem</a>",
- "NAME": "H06976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93793312400777,
- 38.9130081506638,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06977'>Report Problem</a>",
- "NAME": "H06977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9368172494712,
- 38.91197466531144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06978'>Report Problem</a>",
- "NAME": "H06978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03222205275104,
- 38.92350095987291,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06979'>Report Problem</a>",
- "NAME": "H06979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05752098331406,
- 38.96079725785688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06980'>Report Problem</a>",
- "NAME": "H06980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06605316759736,
- 38.960942664582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06981'>Report Problem</a>",
- "NAME": "H06981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05632422330982,
- 38.96083973787946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06982'>Report Problem</a>",
- "NAME": "H06982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98417076668625,
- 38.89991512838244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06983'>Report Problem</a>",
- "NAME": "H06983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98806538713458,
- 38.898135485163984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06984'>Report Problem</a>",
- "NAME": "H06984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9911611748645,
- 38.95669336123746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06985'>Report Problem</a>",
- "NAME": "H06985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94449869531007,
- 38.890930088276136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06986'>Report Problem</a>",
- "NAME": "H06986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92632938766549,
- 38.88338365683179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07413'>Report Problem</a>",
- "NAME": "H07413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96862657910718,
- 38.86385943888858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07414'>Report Problem</a>",
- "NAME": "H07414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99026975297478,
- 38.925416381971466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07415'>Report Problem</a>",
- "NAME": "H07415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06014937442826,
- 38.94654352816389,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07416'>Report Problem</a>",
- "NAME": "H07416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06225246121589,
- 38.94679193854353,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07417'>Report Problem</a>",
- "NAME": "H07417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98772872958861,
- 38.91078386915941,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07418'>Report Problem</a>",
- "NAME": "H07418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00051212805226,
- 38.876662479468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07419'>Report Problem</a>",
- "NAME": "H07419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97352733206057,
- 38.85535999977145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07420'>Report Problem</a>",
- "NAME": "H07420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01008000518348,
- 38.82968332214097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07421'>Report Problem</a>",
- "NAME": "H07421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9445063059086,
- 38.889977870578285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07423'>Report Problem</a>",
- "NAME": "H07423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09514643003492,
- 38.94309483579863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07424'>Report Problem</a>",
- "NAME": "H07424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92624113029149,
- 38.88405893290013,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07425'>Report Problem</a>",
- "NAME": "H07425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98282968371099,
- 38.88597101830189,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07426'>Report Problem</a>",
- "NAME": "H07426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02203506364303,
- 38.88656688995685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07427'>Report Problem</a>",
- "NAME": "H07427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03968085439364,
- 38.90029132604644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07428'>Report Problem</a>",
- "NAME": "H07428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01511110315764,
- 38.88519652800059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07429'>Report Problem</a>",
- "NAME": "H07429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01534670805299,
- 38.885760250818294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07430'>Report Problem</a>",
- "NAME": "H07430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92326426360978,
- 38.895863890300376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07431'>Report Problem</a>",
- "NAME": "H07431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04995342455808,
- 38.903792734900286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07432'>Report Problem</a>",
- "NAME": "H07432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02202100457184,
- 38.901363930420096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07433'>Report Problem</a>",
- "NAME": "H07433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0220115950943,
- 38.9081187090952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07434'>Report Problem</a>",
- "NAME": "H07434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02200605938337,
- 38.90489990122216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07435'>Report Problem</a>",
- "NAME": "H07435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02180465098186,
- 38.900195253729066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07436'>Report Problem</a>",
- "NAME": "H07436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02181684851732,
- 38.90626615202735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07437'>Report Problem</a>",
- "NAME": "H07437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01224432053385,
- 38.88624380878003,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07438'>Report Problem</a>",
- "NAME": "H07438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03359572823398,
- 38.90816929985527,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07439'>Report Problem</a>",
- "NAME": "H07439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02201799698209,
- 38.90316099873112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07440'>Report Problem</a>",
- "NAME": "H07440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0218189139256,
- 38.90397254454837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07441'>Report Problem</a>",
- "NAME": "H07441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02181922453205,
- 38.90189741610248,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07442'>Report Problem</a>",
- "NAME": "H07442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02201064222825,
- 38.901967230984845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07443'>Report Problem</a>",
- "NAME": "H07443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03776977029426,
- 38.90719054739083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07444'>Report Problem</a>",
- "NAME": "H07444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00927240504991,
- 38.91549818139271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07445'>Report Problem</a>",
- "NAME": "H07445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00928308223466,
- 38.914876218161965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07446'>Report Problem</a>",
- "NAME": "H07446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00877638181386,
- 38.91806332394905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07447'>Report Problem</a>",
- "NAME": "H07447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00876146325494,
- 38.916771260298475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07448'>Report Problem</a>",
- "NAME": "H07448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04750411240195,
- 38.90516940396755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07884'>Report Problem</a>",
- "NAME": "H07884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02581383360821,
- 38.8866568843909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07885'>Report Problem</a>",
- "NAME": "H07885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02615175350172,
- 38.88665560209699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07886'>Report Problem</a>",
- "NAME": "H07886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02616242912586,
- 38.88600236599295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07887'>Report Problem</a>",
- "NAME": "H07887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02124955130948,
- 38.87761921174285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07888'>Report Problem</a>",
- "NAME": "H07888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99857922853874,
- 38.841949167495265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07889'>Report Problem</a>",
- "NAME": "H07889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02277696705843,
- 38.894859703232484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07890'>Report Problem</a>",
- "NAME": "H07890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10521583674903,
- 38.92865147874046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07891'>Report Problem</a>",
- "NAME": "H07891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02095840918759,
- 38.89485575568156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07892'>Report Problem</a>",
- "NAME": "H07892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00024455167912,
- 38.82217857526091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07893'>Report Problem</a>",
- "NAME": "H07893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02415874532174,
- 38.89044881030504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07894'>Report Problem</a>",
- "NAME": "H07894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02412524303273,
- 38.89196544886698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07895'>Report Problem</a>",
- "NAME": "H07895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0240496166839,
- 38.88985017228636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07896'>Report Problem</a>",
- "NAME": "H07896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98065146999187,
- 38.86845278231885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07898'>Report Problem</a>",
- "NAME": "H07898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02245902647606,
- 38.88744929708282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07901'>Report Problem</a>",
- "NAME": "H07901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02080869508427,
- 38.886765362295634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07902'>Report Problem</a>",
- "NAME": "H07902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0217171559744,
- 38.887447978017185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07903'>Report Problem</a>",
- "NAME": "H07903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96881586516558,
- 38.92333364164194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07905'>Report Problem</a>",
- "NAME": "H07905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98661696338365,
- 38.89605588268407,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07906'>Report Problem</a>",
- "NAME": "H07906"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0138799955668,
- 38.813435513840034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07907'>Report Problem</a>",
- "NAME": "H07907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01258659060446,
- 38.91117307700959,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07908'>Report Problem</a>",
- "NAME": "H07908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00614832911347,
- 38.892018729736456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07909'>Report Problem</a>",
- "NAME": "H07909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02167890682476,
- 38.87935053691836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07910'>Report Problem</a>",
- "NAME": "H07910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96931869991654,
- 38.92444437443467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07911'>Report Problem</a>",
- "NAME": "H07911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99341733846948,
- 38.86014789223935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07912'>Report Problem</a>",
- "NAME": "H07912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93770853696317,
- 38.90284266030697,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07913'>Report Problem</a>",
- "NAME": "H07913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04260900694922,
- 38.910659464776614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07915'>Report Problem</a>",
- "NAME": "H07915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03331918426504,
- 38.95277441444272,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07916'>Report Problem</a>",
- "NAME": "H07916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03352030941684,
- 38.95415965754698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07917'>Report Problem</a>",
- "NAME": "H07917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99489749411727,
- 38.835303637441534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07918'>Report Problem</a>",
- "NAME": "H07918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01980959849544,
- 38.88342038130411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07920'>Report Problem</a>",
- "NAME": "H07920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01981900895566,
- 38.88406309191132,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07921'>Report Problem</a>",
- "NAME": "H07921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9436431243427,
- 38.88494669135117,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07922'>Report Problem</a>",
- "NAME": "H07922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04163967723093,
- 38.90736462479426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07923'>Report Problem</a>",
- "NAME": "H07923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07725788174332,
- 38.95474298596072,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06489'>Report Problem</a>",
- "NAME": "H06489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00028739141594,
- 38.848327792919605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06490'>Report Problem</a>",
- "NAME": "H06490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92616184945268,
- 38.890715293032855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06491'>Report Problem</a>",
- "NAME": "H06491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9753159690198,
- 38.9224451732559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06492'>Report Problem</a>",
- "NAME": "H06492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99031734024099,
- 38.94448902978518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06493'>Report Problem</a>",
- "NAME": "H06493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99030994721933,
- 38.94363182781952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06494'>Report Problem</a>",
- "NAME": "H06494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05825585510728,
- 38.92635757229419,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06495'>Report Problem</a>",
- "NAME": "H06495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04652667599123,
- 38.94164240797303,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06496'>Report Problem</a>",
- "NAME": "H06496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94218898396095,
- 38.90217811973996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darily<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06497'>Report Problem</a>",
- "NAME": "H06497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05968278999548,
- 38.952731264454215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06498'>Report Problem</a>",
- "NAME": "H06498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95063597597994,
- 38.897159842421225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06499'>Report Problem</a>",
- "NAME": "H06499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93591157539885,
- 38.89030796115112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06500'>Report Problem</a>",
- "NAME": "H06500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93590711364858,
- 38.89197701238156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06501'>Report Problem</a>",
- "NAME": "H06501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91785789979404,
- 38.89088725875616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06502'>Report Problem</a>",
- "NAME": "H06502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91465669938479,
- 38.89079910490493,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06503'>Report Problem</a>",
- "NAME": "H06503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03522198549426,
- 38.988337678909495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06504'>Report Problem</a>",
- "NAME": "H06504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96383970105636,
- 38.924163333461784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06505'>Report Problem</a>",
- "NAME": "H06505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9576964210263,
- 38.92000902871361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06506'>Report Problem</a>",
- "NAME": "H06506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95628174702554,
- 38.91906579556323,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06507'>Report Problem</a>",
- "NAME": "H06507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9881385232493,
- 38.954412336166556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06508'>Report Problem</a>",
- "NAME": "H06508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99034002312658,
- 38.95484302582045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06509'>Report Problem</a>",
- "NAME": "H06509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98932040426332,
- 38.955357525285436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06510'>Report Problem</a>",
- "NAME": "H06510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06756779303588,
- 38.91558434835727,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06511'>Report Problem</a>",
- "NAME": "H06511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03791854932126,
- 38.991171807524985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06512'>Report Problem</a>",
- "NAME": "H06512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02410448849469,
- 38.969971183317014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06513'>Report Problem</a>",
- "NAME": "H06513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02667759581159,
- 38.978057548616206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06514'>Report Problem</a>",
- "NAME": "H06514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10797354109583,
- 38.935709389750265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06515'>Report Problem</a>",
- "NAME": "H06515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04088594881263,
- 38.99259359003843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06516'>Report Problem</a>",
- "NAME": "H06516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96223775778958,
- 38.865705803858894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06519'>Report Problem</a>",
- "NAME": "H06519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95301544902972,
- 38.86612948299471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06520'>Report Problem</a>",
- "NAME": "H06520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92285090576733,
- 38.890782814936465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06521'>Report Problem</a>",
- "NAME": "H06521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97981826940892,
- 38.870653169794814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06522'>Report Problem</a>",
- "NAME": "H06522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02798289407815,
- 38.901494095447674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06523'>Report Problem</a>",
- "NAME": "H06523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00572903369728,
- 38.83210742498885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06524'>Report Problem</a>",
- "NAME": "H06524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00448355760875,
- 38.94156474153692,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06525'>Report Problem</a>",
- "NAME": "H06525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05606924329489,
- 38.96114651049311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06987'>Report Problem</a>",
- "NAME": "H06987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0162519783485,
- 38.88122228961411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06988'>Report Problem</a>",
- "NAME": "H06988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97505727489293,
- 38.91436977328595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06989'>Report Problem</a>",
- "NAME": "H06989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01765801769707,
- 38.880402177956135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06990'>Report Problem</a>",
- "NAME": "H06990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97247311061375,
- 38.91754342327378,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06991'>Report Problem</a>",
- "NAME": "H06991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02950943823365,
- 38.94724034870919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06992'>Report Problem</a>",
- "NAME": "H06992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9354711764542,
- 38.88140094999921,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06993'>Report Problem</a>",
- "NAME": "H06993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99382187716199,
- 38.8962398601898,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06994'>Report Problem</a>",
- "NAME": "H06994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01193346336534,
- 38.967273522995576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06995'>Report Problem</a>",
- "NAME": "H06995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02067193214236,
- 38.92791736047882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06996'>Report Problem</a>",
- "NAME": "H06996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97735515863302,
- 38.944106349182775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06997'>Report Problem</a>",
- "NAME": "H06997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02134675927545,
- 38.937825752192786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06998'>Report Problem</a>",
- "NAME": "H06998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02011530125887,
- 38.93186589863517,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06999'>Report Problem</a>",
- "NAME": "H06999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0192850435997,
- 38.93593462033714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07000'>Report Problem</a>",
- "NAME": "H07000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99837624703336,
- 38.83776010022164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07001'>Report Problem</a>",
- "NAME": "H07001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01873346617424,
- 38.931990235718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07002'>Report Problem</a>",
- "NAME": "H07002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01952199171801,
- 38.934141848137195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07003'>Report Problem</a>",
- "NAME": "H07003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01912682623846,
- 38.93892398642003,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07004'>Report Problem</a>",
- "NAME": "H07004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01929445556377,
- 38.935253483242214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07005'>Report Problem</a>",
- "NAME": "H07005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02158265043997,
- 38.93871203501573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07006'>Report Problem</a>",
- "NAME": "H07006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02051081021706,
- 38.93333529157292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07007'>Report Problem</a>",
- "NAME": "H07007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01917352272751,
- 38.942459138336176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07008'>Report Problem</a>",
- "NAME": "H07008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01912559332496,
- 38.93359704650033,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07009'>Report Problem</a>",
- "NAME": "H07009"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04374823318042,
- 38.920642971229206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07010'>Report Problem</a>",
- "NAME": "H07010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02134621464103,
- 38.93639191968371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, DRY WELL<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07011'>Report Problem</a>",
- "NAME": "H07011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02094613188794,
- 38.93482078248051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07012'>Report Problem</a>",
- "NAME": "H07012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0985620903297,
- 38.94388257335056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07013'>Report Problem</a>",
- "NAME": "H07013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0976519107093,
- 38.944001453929395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07014'>Report Problem</a>",
- "NAME": "H07014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00699942023506,
- 38.892041409959404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07015'>Report Problem</a>",
- "NAME": "H07015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93430973525066,
- 38.885859399955486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07016'>Report Problem</a>",
- "NAME": "H07016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02328546307889,
- 38.93748958881003,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07017'>Report Problem</a>",
- "NAME": "H07017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95969116783435,
- 38.91702032883963,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07018'>Report Problem</a>",
- "NAME": "H07018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96125260077652,
- 38.9170967702412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07019'>Report Problem</a>",
- "NAME": "H07019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02036885504953,
- 38.94181423999462,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07020'>Report Problem</a>",
- "NAME": "H07020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00921986286824,
- 38.9181988291148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07449'>Report Problem</a>",
- "NAME": "H07449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00877571293505,
- 38.918062720441256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07450'>Report Problem</a>",
- "NAME": "H07450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00875880106659,
- 38.91678307042007,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07451'>Report Problem</a>",
- "NAME": "H07451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0088252011388,
- 38.91477439640563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07452'>Report Problem</a>",
- "NAME": "H07452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03078416236093,
- 38.920240010252606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07453'>Report Problem</a>",
- "NAME": "H07453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9193042667873,
- 38.88993501844188,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/21/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07454'>Report Problem</a>",
- "NAME": "H07454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95763540449762,
- 38.91720066907016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07455'>Report Problem</a>",
- "NAME": "H07455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09361239005848,
- 38.94320820055547,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07456'>Report Problem</a>",
- "NAME": "H07456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05398219670032,
- 38.89889699028136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07457'>Report Problem</a>",
- "NAME": "H07457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98315240981138,
- 38.84267407718769,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07458'>Report Problem</a>",
- "NAME": "H07458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98268059050783,
- 38.84164461285684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07459'>Report Problem</a>",
- "NAME": "H07459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03177211577905,
- 38.886710519867904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07460'>Report Problem</a>",
- "NAME": "H07460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0136034782694,
- 38.829498723497665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07461'>Report Problem</a>",
- "NAME": "H07461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93904850503645,
- 38.889953025563734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07462'>Report Problem</a>",
- "NAME": "H07462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01439181712323,
- 38.95755944940955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07463'>Report Problem</a>",
- "NAME": "H07463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05036330371277,
- 38.89224201785637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07464'>Report Problem</a>",
- "NAME": "H07464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9611819660535,
- 38.87465600281075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07465'>Report Problem</a>",
- "NAME": "H07465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94450700114177,
- 38.89172185623164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07466'>Report Problem</a>",
- "NAME": "H07466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95707015355423,
- 38.872226862563544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07467'>Report Problem</a>",
- "NAME": "H07467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92936742682755,
- 38.89209758363686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07468'>Report Problem</a>",
- "NAME": "H07468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96127880578582,
- 38.87747564523609,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07470'>Report Problem</a>",
- "NAME": "H07470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04297437622263,
- 38.993552232490885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07471'>Report Problem</a>",
- "NAME": "H07471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93909054247733,
- 38.892693764316526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07472'>Report Problem</a>",
- "NAME": "H07472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9716480037056,
- 38.922078585022724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07473'>Report Problem</a>",
- "NAME": "H07473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03822905659493,
- 38.983151932924564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07474'>Report Problem</a>",
- "NAME": "H07474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02343360014387,
- 38.97950365803748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07475'>Report Problem</a>",
- "NAME": "H07475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97716561778017,
- 38.89279867636867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07476'>Report Problem</a>",
- "NAME": "H07476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00398878817452,
- 38.95451083472198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07477'>Report Problem</a>",
- "NAME": "H07477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92651167787781,
- 38.89276973835049,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07478'>Report Problem</a>",
- "NAME": "H07478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01528035227209,
- 38.88419382791563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07479'>Report Problem</a>",
- "NAME": "H07479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01876919457493,
- 38.87633862491311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07480'>Report Problem</a>",
- "NAME": "H07480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0210759447468,
- 38.894201159527846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07481'>Report Problem</a>",
- "NAME": "H07481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01864675272685,
- 38.8747244027887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07482'>Report Problem</a>",
- "NAME": "H07482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0590056325616,
- 38.94084564872903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennnedy<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07483'>Report Problem</a>",
- "NAME": "H07483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99965052015793,
- 38.861720046462345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07484'>Report Problem</a>",
- "NAME": "H07484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02205400529027,
- 38.8829641097241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07924'>Report Problem</a>",
- "NAME": "H07924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02385896355244,
- 38.89600808095506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07925'>Report Problem</a>",
- "NAME": "H07925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0238678108412,
- 38.89671409170843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07926'>Report Problem</a>",
- "NAME": "H07926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98045364055163,
- 38.94326049884007,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07927'>Report Problem</a>",
- "NAME": "H07927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04139487580589,
- 38.90637474836192,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07928'>Report Problem</a>",
- "NAME": "H07928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01735675707307,
- 38.881222337849344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07929'>Report Problem</a>",
- "NAME": "H07929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02588685858001,
- 38.96857369630835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07930'>Report Problem</a>",
- "NAME": "H07930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01373275033698,
- 38.89780426636046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07931'>Report Problem</a>",
- "NAME": "H07931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97232428373464,
- 38.86880160477246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07932'>Report Problem</a>",
- "NAME": "H07932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01355965696004,
- 38.89669742001146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07933'>Report Problem</a>",
- "NAME": "H07933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97367537173753,
- 38.868900108816895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07934'>Report Problem</a>",
- "NAME": "H07934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0447964213905,
- 38.893594279841516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07935'>Report Problem</a>",
- "NAME": "H07935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99624728954058,
- 38.88030133344313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 11/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07936'>Report Problem</a>",
- "NAME": "H07936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01612975315861,
- 38.876578849809384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07937'>Report Problem</a>",
- "NAME": "H07937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92748441403334,
- 38.89287839268856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07938'>Report Problem</a>",
- "NAME": "H07938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03251785223235,
- 38.9254314327115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07939'>Report Problem</a>",
- "NAME": "H07939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0321158674721,
- 38.924656134904616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07940'>Report Problem</a>",
- "NAME": "H07940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01531411831252,
- 38.88331561411112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07941'>Report Problem</a>",
- "NAME": "H07941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92336388826358,
- 38.90017414297687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07942'>Report Problem</a>",
- "NAME": "H07942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09110452368616,
- 38.95651193299512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07943'>Report Problem</a>",
- "NAME": "H07943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03260578450856,
- 38.92742051632777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07944'>Report Problem</a>",
- "NAME": "H07944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03223979431193,
- 38.9258594948786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07945'>Report Problem</a>",
- "NAME": "H07945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9948281618923,
- 38.95099733804596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07946'>Report Problem</a>",
- "NAME": "H07946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02029059331193,
- 38.875762202455405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07947'>Report Problem</a>",
- "NAME": "H07947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00367588903994,
- 38.96383095104751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07948'>Report Problem</a>",
- "NAME": "H07948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9869965980431,
- 38.85964119754781,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07949'>Report Problem</a>",
- "NAME": "H07949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01624787745084,
- 38.902742037298076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07950'>Report Problem</a>",
- "NAME": "H07950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08869792606939,
- 38.91903604098807,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07951'>Report Problem</a>",
- "NAME": "H07951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02396605231161,
- 38.893874202124465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07952'>Report Problem</a>",
- "NAME": "H07952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01103244471595,
- 38.90457599010864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07953'>Report Problem</a>",
- "NAME": "H07953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02040001452612,
- 38.93779555429568,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07954'>Report Problem</a>",
- "NAME": "H07954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02134002210782,
- 38.939902903854346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07955'>Report Problem</a>",
- "NAME": "H07955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01222965737209,
- 38.90479049488283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07956'>Report Problem</a>",
- "NAME": "H07956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01224855341788,
- 38.91593600056736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07957'>Report Problem</a>",
- "NAME": "H07957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07721748335199,
- 38.93345800499922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06526'>Report Problem</a>",
- "NAME": "H06526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09894925603915,
- 38.92575299465459,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06527'>Report Problem</a>",
- "NAME": "H06527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95876618764156,
- 38.86802238568965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06528'>Report Problem</a>",
- "NAME": "H06528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03840838976555,
- 38.99182145423093,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06529'>Report Problem</a>",
- "NAME": "H06529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03898405280461,
- 38.99262210168253,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06530'>Report Problem</a>",
- "NAME": "H06530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10160852995067,
- 38.9250025716698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06531'>Report Problem</a>",
- "NAME": "H06531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00193451766445,
- 38.84517849851957,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06532'>Report Problem</a>",
- "NAME": "H06532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09962189800203,
- 38.92214123818247,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06533'>Report Problem</a>",
- "NAME": "H06533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00073182254216,
- 38.831021052649234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 03/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06534'>Report Problem</a>",
- "NAME": "H06534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04174287581495,
- 38.99148379252362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06535'>Report Problem</a>",
- "NAME": "H06535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96859949384928,
- 38.865238845073264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06536'>Report Problem</a>",
- "NAME": "H06536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97080932290235,
- 38.91723002505121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06537'>Report Problem</a>",
- "NAME": "H06537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91657282320223,
- 38.88986904992909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06538'>Report Problem</a>",
- "NAME": "H06538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96886999819282,
- 38.91717397913174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06539'>Report Problem</a>",
- "NAME": "H06539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06515470111678,
- 38.93634517117816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06540'>Report Problem</a>",
- "NAME": "H06540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99483977402123,
- 38.905329801430874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06541'>Report Problem</a>",
- "NAME": "H06541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9944489519022,
- 38.905757644083046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06542'>Report Problem</a>",
- "NAME": "H06542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93912598595999,
- 38.89669493996138,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06543'>Report Problem</a>",
- "NAME": "H06543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02381686441643,
- 38.919347696708975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06544'>Report Problem</a>",
- "NAME": "H06544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08593476549828,
- 38.91380001075514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06545'>Report Problem</a>",
- "NAME": "H06545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01030701031365,
- 38.8948463079967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06546'>Report Problem</a>",
- "NAME": "H06546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99257229569044,
- 38.947195138488254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06547'>Report Problem</a>",
- "NAME": "H06547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.076819591807,
- 38.947947756260206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06548'>Report Problem</a>",
- "NAME": "H06548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96890161469761,
- 38.86957832211967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06549'>Report Problem</a>",
- "NAME": "H06549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00572608536115,
- 38.8311030356256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06550'>Report Problem</a>",
- "NAME": "H06550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9329825764222,
- 38.89055516477139,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06551'>Report Problem</a>",
- "NAME": "H06551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97268893821048,
- 38.84572533916201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06552'>Report Problem</a>",
- "NAME": "H06552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97188645664649,
- 38.844301120938916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06553'>Report Problem</a>",
- "NAME": "H06553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97286296573763,
- 38.84744343360558,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06554'>Report Problem</a>",
- "NAME": "H06554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0225048778306,
- 38.89059271611999,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06555'>Report Problem</a>",
- "NAME": "H06555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0770147489041,
- 38.92991599052319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06556'>Report Problem</a>",
- "NAME": "H06556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01159263294112,
- 38.96904227158588,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06557'>Report Problem</a>",
- "NAME": "H06557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00334481761338,
- 38.830889717669116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06558'>Report Problem</a>",
- "NAME": "H06558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07998341493588,
- 38.9479649932339,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06559'>Report Problem</a>",
- "NAME": "H06559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99004990742897,
- 38.91909028740231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06560'>Report Problem</a>",
- "NAME": "H06560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02060330149321,
- 38.94113048775644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07021'>Report Problem</a>",
- "NAME": "H07021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98582953879914,
- 38.911204172613175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07022'>Report Problem</a>",
- "NAME": "H07022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98625584121956,
- 38.91190356797587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07023'>Report Problem</a>",
- "NAME": "H07023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0654449147393,
- 38.96199673839912,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07024'>Report Problem</a>",
- "NAME": "H07024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09070276352669,
- 38.95215457524894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07026'>Report Problem</a>",
- "NAME": "H07026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02536723633878,
- 38.920701853319024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07027'>Report Problem</a>",
- "NAME": "H07027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97296629082248,
- 38.88466468406594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07029'>Report Problem</a>",
- "NAME": "H07029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10354674620037,
- 38.92847582089967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07030'>Report Problem</a>",
- "NAME": "H07030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02532714536176,
- 38.92386317053315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07031'>Report Problem</a>",
- "NAME": "H07031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01131150078882,
- 38.95341996785075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07032'>Report Problem</a>",
- "NAME": "H07032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02638132517758,
- 38.930846839677955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07033'>Report Problem</a>",
- "NAME": "H07033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94568083769293,
- 38.86474459980602,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07034'>Report Problem</a>",
- "NAME": "H07034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02585749499349,
- 38.92701759580693,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07035'>Report Problem</a>",
- "NAME": "H07035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02634256011007,
- 38.92871849115306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07036'>Report Problem</a>",
- "NAME": "H07036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02593440991157,
- 38.92490482237563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07037'>Report Problem</a>",
- "NAME": "H07037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02629431183908,
- 38.92995209102587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07038'>Report Problem</a>",
- "NAME": "H07038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02583105131406,
- 38.92571365701877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07039'>Report Problem</a>",
- "NAME": "H07039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9394556869378,
- 38.88026171136533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07040'>Report Problem</a>",
- "NAME": "H07040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94038029439855,
- 38.89301790233104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07041'>Report Problem</a>",
- "NAME": "H07041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93796464544897,
- 38.87070997176365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07042'>Report Problem</a>",
- "NAME": "H07042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94699250718553,
- 38.86365095033626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07043'>Report Problem</a>",
- "NAME": "H07043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9438371694588,
- 38.86622229662141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07044'>Report Problem</a>",
- "NAME": "H07044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9446985421607,
- 38.865520952328055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07045'>Report Problem</a>",
- "NAME": "H07045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96932535513365,
- 38.874281829597855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07046'>Report Problem</a>",
- "NAME": "H07046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00646140437084,
- 38.91166912505933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07047'>Report Problem</a>",
- "NAME": "H07047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00921710000658,
- 38.92028658117106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07048'>Report Problem</a>",
- "NAME": "H07048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00888345785944,
- 38.92462091589967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07049'>Report Problem</a>",
- "NAME": "H07049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01620281476676,
- 38.88331531403804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07050'>Report Problem</a>",
- "NAME": "H07050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01707740404841,
- 38.88331518943418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07051'>Report Problem</a>",
- "NAME": "H07051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01389189398566,
- 38.88331042293399,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07052'>Report Problem</a>",
- "NAME": "H07052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0145890366043,
- 38.88331000462411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07053'>Report Problem</a>",
- "NAME": "H07053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9400952582351,
- 38.90848298321637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07054'>Report Problem</a>",
- "NAME": "H07054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93896547417108,
- 38.908471669554196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07055'>Report Problem</a>",
- "NAME": "H07055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94329154399351,
- 38.90566748747477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07056'>Report Problem</a>",
- "NAME": "H07056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01454543998229,
- 38.905324271557234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07057'>Report Problem</a>",
- "NAME": "H07057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99581738136735,
- 38.85674578270633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07485'>Report Problem</a>",
- "NAME": "H07485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94069594656754,
- 38.88989004925468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07487'>Report Problem</a>",
- "NAME": "H07487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02992657477775,
- 38.92767723135113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07488'>Report Problem</a>",
- "NAME": "H07488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98138909122179,
- 38.84218735323076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07490'>Report Problem</a>",
- "NAME": "H07490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98544159228483,
- 38.840577948111616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07491'>Report Problem</a>",
- "NAME": "H07491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00211112049904,
- 38.86075438844818,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07492'>Report Problem</a>",
- "NAME": "H07492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94154922390052,
- 38.889889371324585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07493'>Report Problem</a>",
- "NAME": "H07493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94244360912218,
- 38.89179807752878,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07494'>Report Problem</a>",
- "NAME": "H07494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03328538857521,
- 38.90317920426543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07495'>Report Problem</a>",
- "NAME": "H07495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98426127593997,
- 38.834594487921336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07496'>Report Problem</a>",
- "NAME": "H07496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02201151698797,
- 38.910406116741186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07497'>Report Problem</a>",
- "NAME": "H07497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96906246954298,
- 38.86808655447621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07498'>Report Problem</a>",
- "NAME": "H07498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98677236819651,
- 38.83598957895159,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07499'>Report Problem</a>",
- "NAME": "H07499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98655811013855,
- 38.832823477688024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07500'>Report Problem</a>",
- "NAME": "H07500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9974929190682,
- 38.939489281422944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07501'>Report Problem</a>",
- "NAME": "H07501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06024466971265,
- 38.94097268222592,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 12/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07502'>Report Problem</a>",
- "NAME": "H07502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00764142412145,
- 38.90862664849224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07503'>Report Problem</a>",
- "NAME": "H07503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05578154231246,
- 38.93060180305019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant,Mueller<p align=center>In Service</p><hr />Last Inspection Date: 04/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07504'>Report Problem</a>",
- "NAME": "H07504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0512340218352,
- 38.92360021725625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07505'>Report Problem</a>",
- "NAME": "H07505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96141025255085,
- 38.9301589680097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07506'>Report Problem</a>",
- "NAME": "H07506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06939661267404,
- 38.96033231024709,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07507'>Report Problem</a>",
- "NAME": "H07507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98506395686054,
- 38.83407229197827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07508'>Report Problem</a>",
- "NAME": "H07508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01775120651455,
- 38.883171558367586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07509'>Report Problem</a>",
- "NAME": "H07509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02100290703396,
- 38.88331271178691,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07510'>Report Problem</a>",
- "NAME": "H07510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0018864033965,
- 38.914133618281895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07511'>Report Problem</a>",
- "NAME": "H07511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03435582600682,
- 38.9001568610635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07512'>Report Problem</a>",
- "NAME": "H07512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0348872092274,
- 38.91913530127127,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07513'>Report Problem</a>",
- "NAME": "H07513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98720333301587,
- 38.92209673691571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07514'>Report Problem</a>",
- "NAME": "H07514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99228694092861,
- 38.92260873858445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07515'>Report Problem</a>",
- "NAME": "H07515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98664190965306,
- 38.92449436463466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07516'>Report Problem</a>",
- "NAME": "H07516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98696476401386,
- 38.923988511934226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07517'>Report Problem</a>",
- "NAME": "H07517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99333623171619,
- 38.92227675639505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07518'>Report Problem</a>",
- "NAME": "H07518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98995621718983,
- 38.92333794722294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07519'>Report Problem</a>",
- "NAME": "H07519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98781983232017,
- 38.92398945096424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07520'>Report Problem</a>",
- "NAME": "H07520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00282861899113,
- 38.85750789108447,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07521'>Report Problem</a>",
- "NAME": "H07521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98129632993214,
- 38.863423707163925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07958'>Report Problem</a>",
- "NAME": "H07958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03205331587833,
- 38.92175468003542,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Muller<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07959'>Report Problem</a>",
- "NAME": "H07959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9286733672165,
- 38.900756977111904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07960'>Report Problem</a>",
- "NAME": "H07960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99330891008296,
- 38.912966087654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07961'>Report Problem</a>",
- "NAME": "H07961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98244921588199,
- 38.87888355057267,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07962'>Report Problem</a>",
- "NAME": "H07962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97718372278936,
- 38.89122516062354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07963'>Report Problem</a>",
- "NAME": "H07963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9771489637263,
- 38.89019973066068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07964'>Report Problem</a>",
- "NAME": "H07964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99618090254062,
- 38.85580872063352,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07965'>Report Problem</a>",
- "NAME": "H07965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06281180289439,
- 38.94974584155491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07966'>Report Problem</a>",
- "NAME": "H07966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93554165325334,
- 38.888098633072644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07967'>Report Problem</a>",
- "NAME": "H07967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03889178521771,
- 38.9341308732306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07968'>Report Problem</a>",
- "NAME": "H07968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04141890811663,
- 38.93422023217442,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07969'>Report Problem</a>",
- "NAME": "H07969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04275001885617,
- 38.934225752419614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07970'>Report Problem</a>",
- "NAME": "H07970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04122222301686,
- 38.93246390762373,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07971'>Report Problem</a>",
- "NAME": "H07971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03984996827357,
- 38.9342283896436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07972'>Report Problem</a>",
- "NAME": "H07972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04408508851533,
- 38.93423553495599,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07973'>Report Problem</a>",
- "NAME": "H07973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9757629410183,
- 38.89747700604972,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07974'>Report Problem</a>",
- "NAME": "H07974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96016551203775,
- 38.89669328903745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07975'>Report Problem</a>",
- "NAME": "H07975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9834941857576,
- 38.86565281928153,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07976'>Report Problem</a>",
- "NAME": "H07976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02157026279619,
- 38.87698943913902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07977'>Report Problem</a>",
- "NAME": "H07977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02353961419217,
- 38.8947452809032,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07978'>Report Problem</a>",
- "NAME": "H07978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05802459227196,
- 38.950872944786894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07979'>Report Problem</a>",
- "NAME": "H07979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01373422884703,
- 38.89728068214012,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07980'>Report Problem</a>",
- "NAME": "H07980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02642291209831,
- 38.8972605746037,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07981'>Report Problem</a>",
- "NAME": "H07981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02756100451121,
- 38.89727015778023,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07982'>Report Problem</a>",
- "NAME": "H07982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02738555592565,
- 38.88457779731689,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07983'>Report Problem</a>",
- "NAME": "H07983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02055137040394,
- 38.874741748613815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07984'>Report Problem</a>",
- "NAME": "H07984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02083446333175,
- 38.875383907150834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07985'>Report Problem</a>",
- "NAME": "H07985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05717764283798,
- 38.95292591505484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07986'>Report Problem</a>",
- "NAME": "H07986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05948560223611,
- 38.9517057641324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07987'>Report Problem</a>",
- "NAME": "H07987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0479143837426,
- 38.9096993903211,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07988'>Report Problem</a>",
- "NAME": "H07988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05804298470514,
- 38.95089125848744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07989'>Report Problem</a>",
- "NAME": "H07989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91837844798148,
- 38.89986321168602,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/29/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07990'>Report Problem</a>",
- "NAME": "H07990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92242589383024,
- 38.90313217528559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07991'>Report Problem</a>",
- "NAME": "H07991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9612665794444,
- 38.883694195910586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06596'>Report Problem</a>",
- "NAME": "H06596"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97586111681542,
- 38.88775236418858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06597'>Report Problem</a>",
- "NAME": "H06597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9893342766315,
- 38.95347553749706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06598'>Report Problem</a>",
- "NAME": "H06598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98815288504281,
- 38.95324291133274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06599'>Report Problem</a>",
- "NAME": "H06599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97338060761466,
- 38.88747089893495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06600'>Report Problem</a>",
- "NAME": "H06600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99357837235254,
- 38.89363530305947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06601'>Report Problem</a>",
- "NAME": "H06601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94218058558862,
- 38.903465076305174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06602'>Report Problem</a>",
- "NAME": "H06602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94811367961901,
- 38.89917922604904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06603'>Report Problem</a>",
- "NAME": "H06603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9409561189485,
- 38.90440921501846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06604'>Report Problem</a>",
- "NAME": "H06604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9359593191026,
- 38.90951795636217,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06605'>Report Problem</a>",
- "NAME": "H06605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06358202075745,
- 38.95040631739217,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06606'>Report Problem</a>",
- "NAME": "H06606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0056835614632,
- 38.89357375108473,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06607'>Report Problem</a>",
- "NAME": "H06607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98849233603455,
- 38.8874758336278,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/09/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06608'>Report Problem</a>",
- "NAME": "H06608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99043359955685,
- 38.88753912145234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/03/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06609'>Report Problem</a>",
- "NAME": "H06609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00598179594421,
- 38.909018184825754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/27/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06610'>Report Problem</a>",
- "NAME": "H06610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10249631814436,
- 38.940432418633776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06611'>Report Problem</a>",
- "NAME": "H06611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99632546556836,
- 38.88765017738371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/23/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06612'>Report Problem</a>",
- "NAME": "H06612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99609997925823,
- 38.88721584911839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06613'>Report Problem</a>",
- "NAME": "H06613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05636385401819,
- 38.97971610729608,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06614'>Report Problem</a>",
- "NAME": "H06614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97522797171716,
- 38.89305993864624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06615'>Report Problem</a>",
- "NAME": "H06615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98689771275237,
- 38.95288069903672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06616'>Report Problem</a>",
- "NAME": "H06616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93650321414749,
- 38.89753484403575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06617'>Report Problem</a>",
- "NAME": "H06617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9828546656321,
- 38.92456023465083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06619'>Report Problem</a>",
- "NAME": "H06619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98813257996659,
- 38.92455656580424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06620'>Report Problem</a>",
- "NAME": "H06620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04242749508843,
- 38.99052153337876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06621'>Report Problem</a>",
- "NAME": "H06621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03810444606532,
- 38.9929801250602,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06622'>Report Problem</a>",
- "NAME": "H06622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03943474533014,
- 38.99385340717039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06623'>Report Problem</a>",
- "NAME": "H06623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9603153245525,
- 38.89342086144566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06624'>Report Problem</a>",
- "NAME": "H06624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94151022866663,
- 38.904695508944975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06625'>Report Problem</a>",
- "NAME": "H06625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97597306191932,
- 38.89674650721517,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06626'>Report Problem</a>",
- "NAME": "H06626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94047460283964,
- 38.905666095238765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06627'>Report Problem</a>",
- "NAME": "H06627"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97606572154815,
- 38.89616169420622,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06628'>Report Problem</a>",
- "NAME": "H06628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93741785376862,
- 38.90798022923433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06629'>Report Problem</a>",
- "NAME": "H06629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93883813344227,
- 38.90641062797429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06630'>Report Problem</a>",
- "NAME": "H06630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9806156663805,
- 38.89344552424362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06631'>Report Problem</a>",
- "NAME": "H06631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01373256841333,
- 38.905901688022574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07058'>Report Problem</a>",
- "NAME": "H07058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00948251712136,
- 38.90708367221532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07059'>Report Problem</a>",
- "NAME": "H07059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01962950723264,
- 38.90355290046491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07060'>Report Problem</a>",
- "NAME": "H07060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02086622622208,
- 38.903136680373294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07061'>Report Problem</a>",
- "NAME": "H07061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01087744909373,
- 38.90683976678106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07062'>Report Problem</a>",
- "NAME": "H07062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01908953226771,
- 38.903975878045486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07063'>Report Problem</a>",
- "NAME": "H07063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94196476012863,
- 38.90629370904827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07064'>Report Problem</a>",
- "NAME": "H07064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94328491439262,
- 38.906421933602644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07065'>Report Problem</a>",
- "NAME": "H07065"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99310321539645,
- 38.858177092598496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07066'>Report Problem</a>",
- "NAME": "H07066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99322601508506,
- 38.8558261980563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07067'>Report Problem</a>",
- "NAME": "H07067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9453762914611,
- 38.884851665558834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07068'>Report Problem</a>",
- "NAME": "H07068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04998793006257,
- 38.895254271688295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07069'>Report Problem</a>",
- "NAME": "H07069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10234467986926,
- 38.94303398477356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07070'>Report Problem</a>",
- "NAME": "H07070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10089793139336,
- 38.94311738009003,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07071'>Report Problem</a>",
- "NAME": "H07071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93153132072348,
- 38.892466810048845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07072'>Report Problem</a>",
- "NAME": "H07072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03092325085856,
- 38.894594534238394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07073'>Report Problem</a>",
- "NAME": "H07073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00870329748531,
- 38.91173151546771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07074'>Report Problem</a>",
- "NAME": "H07074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97101290282923,
- 38.85958114690573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07075'>Report Problem</a>",
- "NAME": "H07075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93729477420432,
- 38.87131411407198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07076'>Report Problem</a>",
- "NAME": "H07076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95157349962516,
- 38.886059793121355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07077'>Report Problem</a>",
- "NAME": "H07077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04891940633051,
- 38.89266493493581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07078'>Report Problem</a>",
- "NAME": "H07078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99838288135655,
- 38.83929133904618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07079'>Report Problem</a>",
- "NAME": "H07079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98545468967123,
- 38.87783297237987,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07081'>Report Problem</a>",
- "NAME": "H07081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10933279625895,
- 38.93692742724404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07082'>Report Problem</a>",
- "NAME": "H07082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01408142276355,
- 38.87561936020418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07083'>Report Problem</a>",
- "NAME": "H07083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98399450997972,
- 38.86128793317125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07084'>Report Problem</a>",
- "NAME": "H07084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06906958177271,
- 38.909803430877055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07085'>Report Problem</a>",
- "NAME": "H07085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01531163990133,
- 38.88019853217063,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07086'>Report Problem</a>",
- "NAME": "H07086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09499629650102,
- 38.944312932788314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07087'>Report Problem</a>",
- "NAME": "H07087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93706903318301,
- 38.87947513411545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07088'>Report Problem</a>",
- "NAME": "H07088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9909764186452,
- 38.835915605869246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07089'>Report Problem</a>",
- "NAME": "H07089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93808035237032,
- 38.87947572872575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07090'>Report Problem</a>",
- "NAME": "H07090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92799687155481,
- 38.88221134508788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07091'>Report Problem</a>",
- "NAME": "H07091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00351691919143,
- 38.91886124302476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07092'>Report Problem</a>",
- "NAME": "H07092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01558136032891,
- 38.91466741949089,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07093'>Report Problem</a>",
- "NAME": "H07093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064424622538,
- 38.8807347765613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07522'>Report Problem</a>",
- "NAME": "H07522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0122761433547,
- 38.880346583236744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07523'>Report Problem</a>",
- "NAME": "H07523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04359161413787,
- 38.89340544277975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07524'>Report Problem</a>",
- "NAME": "H07524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01427581143115,
- 38.81454512252718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07525'>Report Problem</a>",
- "NAME": "H07525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00689339114835,
- 38.96285577058463,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07526'>Report Problem</a>",
- "NAME": "H07526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01148735152242,
- 38.88022469889475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07527'>Report Problem</a>",
- "NAME": "H07527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00217398221044,
- 38.87659192462013,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07528'>Report Problem</a>",
- "NAME": "H07528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99484397325296,
- 38.8769029359662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07529'>Report Problem</a>",
- "NAME": "H07529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0073842868926,
- 38.876622258870654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07530'>Report Problem</a>",
- "NAME": "H07530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9993562867439,
- 38.8765900873512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07531'>Report Problem</a>",
- "NAME": "H07531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00359297410337,
- 38.876644931016926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07532'>Report Problem</a>",
- "NAME": "H07532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00438971164047,
- 38.876592556001036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07533'>Report Problem</a>",
- "NAME": "H07533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00283423842367,
- 38.876583064218515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07534'>Report Problem</a>",
- "NAME": "H07534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99274567324093,
- 38.87662921248858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07535'>Report Problem</a>",
- "NAME": "H07535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99361662298084,
- 38.8765908425349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07536'>Report Problem</a>",
- "NAME": "H07536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00923626379951,
- 38.886085105481726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07537'>Report Problem</a>",
- "NAME": "H07537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95485780336782,
- 38.87535109662965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07538'>Report Problem</a>",
- "NAME": "H07538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02469773523207,
- 38.91782975466534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07539'>Report Problem</a>",
- "NAME": "H07539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95553235800632,
- 38.872360917699716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07540'>Report Problem</a>",
- "NAME": "H07540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04611918328935,
- 38.91605742338394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07541'>Report Problem</a>",
- "NAME": "H07541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0448835911217,
- 38.915784420524105,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07542'>Report Problem</a>",
- "NAME": "H07542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487654096747,
- 38.88332906340564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07543'>Report Problem</a>",
- "NAME": "H07543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06056332229282,
- 38.943284729415765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07544'>Report Problem</a>",
- "NAME": "H07544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04585122443714,
- 38.897412688431686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07545'>Report Problem</a>",
- "NAME": "H07545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01870812053822,
- 38.87921542023988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07546'>Report Problem</a>",
- "NAME": "H07546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01767210440804,
- 38.87943758439848,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07547'>Report Problem</a>",
- "NAME": "H07547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01999063127565,
- 38.879476640284096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07548'>Report Problem</a>",
- "NAME": "H07548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01080807557877,
- 38.8792085722202,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07549'>Report Problem</a>",
- "NAME": "H07549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01961861923418,
- 38.876582423659926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07550'>Report Problem</a>",
- "NAME": "H07550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01534029043992,
- 38.876335981725674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07551'>Report Problem</a>",
- "NAME": "H07551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0153042530359,
- 38.87912690397354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07552'>Report Problem</a>",
- "NAME": "H07552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00995451579122,
- 38.8762630835017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07554'>Report Problem</a>",
- "NAME": "H07554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01622942681595,
- 38.87936154676377,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07555'>Report Problem</a>",
- "NAME": "H07555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01384686488369,
- 38.876248255409244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07556'>Report Problem</a>",
- "NAME": "H07556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01126102000066,
- 38.87633136558022,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07557'>Report Problem</a>",
- "NAME": "H07557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08878642722624,
- 38.94401500064822,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/18/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07992'>Report Problem</a>",
- "NAME": "H07992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91748805934091,
- 38.89912437788262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/14/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07993'>Report Problem</a>",
- "NAME": "H07993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92641360645341,
- 38.90600093403838,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07994'>Report Problem</a>",
- "NAME": "H07994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91917924042815,
- 38.900474355191186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07995'>Report Problem</a>",
- "NAME": "H07995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92868048849542,
- 38.90788612992194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07996'>Report Problem</a>",
- "NAME": "H07996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01318569746388,
- 38.87292325991333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07997'>Report Problem</a>",
- "NAME": "H07997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05805070129023,
- 38.94882143198823,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07998'>Report Problem</a>",
- "NAME": "H07998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92091372831496,
- 38.901814436785116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07999'>Report Problem</a>",
- "NAME": "H07999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01209855826444,
- 38.87547564628886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08000'>Report Problem</a>",
- "NAME": "H08000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92529264376194,
- 38.90520203757137,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08002'>Report Problem</a>",
- "NAME": "H08002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92732558473102,
- 38.90682878678369,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08003'>Report Problem</a>",
- "NAME": "H08003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00123309581588,
- 38.904666101559286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08004'>Report Problem</a>",
- "NAME": "H08004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00374803505183,
- 38.95365565184983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08006'>Report Problem</a>",
- "NAME": "H08006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9678374738352,
- 38.91902988378352,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08007'>Report Problem</a>",
- "NAME": "H08007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01768407170381,
- 38.95204638036826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08008'>Report Problem</a>",
- "NAME": "H08008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0122856540688,
- 38.9678472395543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08009'>Report Problem</a>",
- "NAME": "H08009"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99137576391018,
- 38.87845629192337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 03/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08010'>Report Problem</a>",
- "NAME": "H08010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09013119401561,
- 38.919209066330524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08011'>Report Problem</a>",
- "NAME": "H08011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07302869177259,
- 38.92117904722717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08012'>Report Problem</a>",
- "NAME": "H08012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92363582624476,
- 38.898915411420504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08013'>Report Problem</a>",
- "NAME": "H08013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91864752837658,
- 38.88581113845447,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08014'>Report Problem</a>",
- "NAME": "H08014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01999929640256,
- 38.88473430286074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08015'>Report Problem</a>",
- "NAME": "H08015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02168144139392,
- 38.88477146858051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08016'>Report Problem</a>",
- "NAME": "H08016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05519164557496,
- 38.93557896454594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08017'>Report Problem</a>",
- "NAME": "H08017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05277851006446,
- 38.93975067751088,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 12/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08018'>Report Problem</a>",
- "NAME": "H08018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02689915226902,
- 38.89498288997653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08019'>Report Problem</a>",
- "NAME": "H08019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02717595467065,
- 38.89627192306822,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08020'>Report Problem</a>",
- "NAME": "H08020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0268979164257,
- 38.89671917164068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08021'>Report Problem</a>",
- "NAME": "H08021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02717398004032,
- 38.89792741751862,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08022'>Report Problem</a>",
- "NAME": "H08022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064727977103,
- 38.83907849676125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08023'>Report Problem</a>",
- "NAME": "H08023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93706715383539,
- 38.90589805818562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08024'>Report Problem</a>",
- "NAME": "H08024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93492345314412,
- 38.90600499302884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08025'>Report Problem</a>",
- "NAME": "H08025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99671624772927,
- 38.91148551447028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08026'>Report Problem</a>",
- "NAME": "H08026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03900244302665,
- 38.93061589459772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08027'>Report Problem</a>",
- "NAME": "H08027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01491852520418,
- 38.97491360650356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06561'>Report Problem</a>",
- "NAME": "H06561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00344260351017,
- 38.92227122043882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06562'>Report Problem</a>",
- "NAME": "H06562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95584083351743,
- 38.873967638179536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06563'>Report Problem</a>",
- "NAME": "H06563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02500979369948,
- 38.907287662368866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06564'>Report Problem</a>",
- "NAME": "H06564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99166774099328,
- 38.953675197168735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06565'>Report Problem</a>",
- "NAME": "H06565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99369467023858,
- 38.95336507029002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "null<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06566'>Report Problem</a>",
- "NAME": "H06566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01043193031353,
- 38.9700369446018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06567'>Report Problem</a>",
- "NAME": "H06567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04612016548695,
- 38.91511561067109,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06568'>Report Problem</a>",
- "NAME": "H06568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95179666950737,
- 38.8913246156313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06569'>Report Problem</a>",
- "NAME": "H06569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98459677096885,
- 38.85788192097813,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06570'>Report Problem</a>",
- "NAME": "H06570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9864348592707,
- 38.85909315133343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06571'>Report Problem</a>",
- "NAME": "H06571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00718033428346,
- 38.967393856222486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06572'>Report Problem</a>",
- "NAME": "H06572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98532798835325,
- 38.89352560192876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06573'>Report Problem</a>",
- "NAME": "H06573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08749680169771,
- 38.91920223137802,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06574'>Report Problem</a>",
- "NAME": "H06574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08592632972002,
- 38.91928763363257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06575'>Report Problem</a>",
- "NAME": "H06575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09216532999889,
- 38.919094983644875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06576'>Report Problem</a>",
- "NAME": "H06576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08703413110254,
- 38.919778470457295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06577'>Report Problem</a>",
- "NAME": "H06577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93285831224202,
- 38.901426355074165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06578'>Report Problem</a>",
- "NAME": "H06578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03567482798069,
- 38.90571386368658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06579'>Report Problem</a>",
- "NAME": "H06579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93383976683819,
- 38.901557617279686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06580'>Report Problem</a>",
- "NAME": "H06580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00121670836077,
- 38.95575070399314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06581'>Report Problem</a>",
- "NAME": "H06581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0026173590169,
- 38.95603202712855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06582'>Report Problem</a>",
- "NAME": "H06582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06687123167069,
- 38.95739354845349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06583'>Report Problem</a>",
- "NAME": "H06583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06125153783827,
- 38.92744542529373,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06584'>Report Problem</a>",
- "NAME": "H06584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05952402780379,
- 38.92582610915013,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06585'>Report Problem</a>",
- "NAME": "H06585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98460092005485,
- 38.84292248698842,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06586'>Report Problem</a>",
- "NAME": "H06586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05991700085701,
- 38.92727618424961,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06587'>Report Problem</a>",
- "NAME": "H06587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92995856087197,
- 38.89193418536432,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06588'>Report Problem</a>",
- "NAME": "H06588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99324700956572,
- 38.834238555708986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06589'>Report Problem</a>",
- "NAME": "H06589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9502192445542,
- 38.88997921987883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06590'>Report Problem</a>",
- "NAME": "H06590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09119421828863,
- 38.94041813575338,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06591'>Report Problem</a>",
- "NAME": "H06591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9243012568637,
- 38.883110162498085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06592'>Report Problem</a>",
- "NAME": "H06592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09791486051004,
- 38.91590115870607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06593'>Report Problem</a>",
- "NAME": "H06593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00065244676593,
- 38.88771589542851,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06594'>Report Problem</a>",
- "NAME": "H06594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0046406079933,
- 38.89358002195662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06595'>Report Problem</a>",
- "NAME": "H06595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02301795273003,
- 38.912134857543776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07094'>Report Problem</a>",
- "NAME": "H07094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01032131941619,
- 38.916224624481316,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07095'>Report Problem</a>",
- "NAME": "H07095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00504139007937,
- 38.91796925459802,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07096'>Report Problem</a>",
- "NAME": "H07096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00337813100796,
- 38.918656704030155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07097'>Report Problem</a>",
- "NAME": "H07097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00224194976178,
- 38.91903234257876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07098'>Report Problem</a>",
- "NAME": "H07098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0018242978553,
- 38.91944954348136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07099'>Report Problem</a>",
- "NAME": "H07099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00616187620341,
- 38.91767737605771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07100'>Report Problem</a>",
- "NAME": "H07100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01333431209173,
- 38.91518744237037,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07101'>Report Problem</a>",
- "NAME": "H07101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00698698429436,
- 38.91771597536882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07102'>Report Problem</a>",
- "NAME": "H07102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02738555977575,
- 38.91029261969574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07103'>Report Problem</a>",
- "NAME": "H07103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0231449567532,
- 38.91174207787035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07104'>Report Problem</a>",
- "NAME": "H07104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05902787350435,
- 38.90085007566496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07105'>Report Problem</a>",
- "NAME": "H07105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02620148126415,
- 38.91070936487943,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07106'>Report Problem</a>",
- "NAME": "H07106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04671266854976,
- 38.90385056699683,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07107'>Report Problem</a>",
- "NAME": "H07107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04498156447787,
- 38.90391395347246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07108'>Report Problem</a>",
- "NAME": "H07108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04181806676706,
- 38.897425822597334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07109'>Report Problem</a>",
- "NAME": "H07109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04361461555273,
- 38.89729744508892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07110'>Report Problem</a>",
- "NAME": "H07110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04508950778649,
- 38.897291687300175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 05/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07111'>Report Problem</a>",
- "NAME": "H07111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95946352246295,
- 38.86498689414682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07112'>Report Problem</a>",
- "NAME": "H07112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96730648682933,
- 38.92734499314091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07113'>Report Problem</a>",
- "NAME": "H07113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02527102941058,
- 38.979343253396436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07114'>Report Problem</a>",
- "NAME": "H07114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00086278833724,
- 38.83527636908451,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07115'>Report Problem</a>",
- "NAME": "H07115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00049058237661,
- 38.840510273641996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07116'>Report Problem</a>",
- "NAME": "H07116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94470346601513,
- 38.88113165978272,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07117'>Report Problem</a>",
- "NAME": "H07117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93894171745632,
- 38.88907043708943,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07118'>Report Problem</a>",
- "NAME": "H07118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02254306169178,
- 38.93895171758112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07119'>Report Problem</a>",
- "NAME": "H07119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00919378704138,
- 38.912443722210924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07120'>Report Problem</a>",
- "NAME": "H07120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00916967518945,
- 38.913233791343764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07121'>Report Problem</a>",
- "NAME": "H07121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0028783514896,
- 38.94652178093002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07122'>Report Problem</a>",
- "NAME": "H07122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01759336468929,
- 38.87639200254709,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07123'>Report Problem</a>",
- "NAME": "H07123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00470654071628,
- 38.945783691167875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07124'>Report Problem</a>",
- "NAME": "H07124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05528808199452,
- 38.97288418536045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07125'>Report Problem</a>",
- "NAME": "H07125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05434479963125,
- 38.97287902438951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07126'>Report Problem</a>",
- "NAME": "H07126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99330682114955,
- 38.8569601473773,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07127'>Report Problem</a>",
- "NAME": "H07127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9613489145072,
- 38.88446667414974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07558'>Report Problem</a>",
- "NAME": "H07558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96642625185427,
- 38.85571694332729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07559'>Report Problem</a>",
- "NAME": "H07559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02506112475884,
- 38.917204057777056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07560'>Report Problem</a>",
- "NAME": "H07560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02546920080194,
- 38.92012791073526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07561'>Report Problem</a>",
- "NAME": "H07561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02408996017506,
- 38.91808311468866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07562'>Report Problem</a>",
- "NAME": "H07562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98343414891414,
- 38.835238748441846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07563'>Report Problem</a>",
- "NAME": "H07563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97180833578197,
- 38.86010562279842,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07564'>Report Problem</a>",
- "NAME": "H07564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97512507622825,
- 38.85654261710817,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07565'>Report Problem</a>",
- "NAME": "H07565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95857104014284,
- 38.87293396071503,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07566'>Report Problem</a>",
- "NAME": "H07566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0073771987624,
- 38.88598009187593,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07567'>Report Problem</a>",
- "NAME": "H07567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01418540078254,
- 38.87292582725981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07568'>Report Problem</a>",
- "NAME": "H07568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05780509312685,
- 38.94109063453305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07569'>Report Problem</a>",
- "NAME": "H07569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91769226838073,
- 38.89702529358061,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07570'>Report Problem</a>",
- "NAME": "H07570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91769668604739,
- 38.89590399812653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07571'>Report Problem</a>",
- "NAME": "H07571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91769615567357,
- 38.89801235200351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07572'>Report Problem</a>",
- "NAME": "H07572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94266104686866,
- 38.86937337156766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07573'>Report Problem</a>",
- "NAME": "H07573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01015689619669,
- 38.870198727819705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07574'>Report Problem</a>",
- "NAME": "H07574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96871102885841,
- 38.880701264817496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07575'>Report Problem</a>",
- "NAME": "H07575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01161961828427,
- 38.878349949483336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07576'>Report Problem</a>",
- "NAME": "H07576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01343896715305,
- 38.877692015466565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07577'>Report Problem</a>",
- "NAME": "H07577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00867559132615,
- 38.87922381212902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07578'>Report Problem</a>",
- "NAME": "H07578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03508706809166,
- 38.90010108918067,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07579'>Report Problem</a>",
- "NAME": "H07579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03504792919787,
- 38.898973560557216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07580'>Report Problem</a>",
- "NAME": "H07580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0614335473731,
- 38.94306875201849,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07581'>Report Problem</a>",
- "NAME": "H07581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.046572469912,
- 38.90613345635938,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07582'>Report Problem</a>",
- "NAME": "H07582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01774156611317,
- 38.88398536830302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07583'>Report Problem</a>",
- "NAME": "H07583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99826988931275,
- 38.8790798071112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07584'>Report Problem</a>",
- "NAME": "H07584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00077573692529,
- 38.87977207617051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07585'>Report Problem</a>",
- "NAME": "H07585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0019719352658,
- 38.88114426502534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07586'>Report Problem</a>",
- "NAME": "H07586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99944621624009,
- 38.87897787965274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07587'>Report Problem</a>",
- "NAME": "H07587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10280517669854,
- 38.9279407959665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07588'>Report Problem</a>",
- "NAME": "H07588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98880241043584,
- 38.86788367020796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07589'>Report Problem</a>",
- "NAME": "H07589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02071616384112,
- 38.89410896918894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07590'>Report Problem</a>",
- "NAME": "H07590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99010701528914,
- 38.8747485519491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07591'>Report Problem</a>",
- "NAME": "H07591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96362948185926,
- 38.92029800417654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07592'>Report Problem</a>",
- "NAME": "H07592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02497076695869,
- 38.91107545410497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08028'>Report Problem</a>",
- "NAME": "H08028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02486678288673,
- 38.90970039793379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08029'>Report Problem</a>",
- "NAME": "H08029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04827491715417,
- 38.92109239790387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08030'>Report Problem</a>",
- "NAME": "H08030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01358275659491,
- 38.89953358286828,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08031'>Report Problem</a>",
- "NAME": "H08031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95222153156632,
- 38.888628295060684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08032'>Report Problem</a>",
- "NAME": "H08032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98084305571352,
- 38.8829522433112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08033'>Report Problem</a>",
- "NAME": "H08033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07724526905416,
- 38.96104291448911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08034'>Report Problem</a>",
- "NAME": "H08034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00927733798935,
- 38.95492659946666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08035'>Report Problem</a>",
- "NAME": "H08035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06858634131976,
- 38.941464775594355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08036'>Report Problem</a>",
- "NAME": "H08036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04866314323063,
- 38.90394445765287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08037'>Report Problem</a>",
- "NAME": "H08037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03288520547382,
- 38.8983308662706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08038'>Report Problem</a>",
- "NAME": "H08038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03352449764643,
- 38.89830554222256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08039'>Report Problem</a>",
- "NAME": "H08039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03386925079425,
- 38.898230970651376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08040'>Report Problem</a>",
- "NAME": "H08040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98164580705942,
- 38.942614707856166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08041'>Report Problem</a>",
- "NAME": "H08041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96119611565318,
- 38.92795932874704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08042'>Report Problem</a>",
- "NAME": "H08042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02619983353765,
- 38.884283549218985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08043'>Report Problem</a>",
- "NAME": "H08043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00798478678746,
- 38.83540010956732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08044'>Report Problem</a>",
- "NAME": "H08044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07000926265907,
- 38.96406369591698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08045'>Report Problem</a>",
- "NAME": "H08045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0392754850297,
- 38.898968900674156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08046'>Report Problem</a>",
- "NAME": "H08046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98083713495747,
- 38.905770275462906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08047'>Report Problem</a>",
- "NAME": "H08047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95536103646518,
- 38.902681570863045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08049'>Report Problem</a>",
- "NAME": "H08049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9551937740285,
- 38.90175366418639,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08050'>Report Problem</a>",
- "NAME": "H08050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95474629179459,
- 38.90633995051261,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08052'>Report Problem</a>",
- "NAME": "H08052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.954824609946,
- 38.90426446576569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08053'>Report Problem</a>",
- "NAME": "H08053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97250305723863,
- 38.85494587078137,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08055'>Report Problem</a>",
- "NAME": "H08055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9734551472341,
- 38.85419851762248,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08056'>Report Problem</a>",
- "NAME": "H08056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92649802766421,
- 38.896430452092666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08057'>Report Problem</a>",
- "NAME": "H08057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02525545528835,
- 38.92986772309871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08058'>Report Problem</a>",
- "NAME": "H08058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03824380764105,
- 38.911075782210325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08059'>Report Problem</a>",
- "NAME": "H08059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03744850554799,
- 38.911078859425935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08061'>Report Problem</a>",
- "NAME": "H08061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94123545574868,
- 38.90059929859189,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08062'>Report Problem</a>",
- "NAME": "H08062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9424387281317,
- 38.900576457907114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08063'>Report Problem</a>",
- "NAME": "H08063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07359707689794,
- 38.961049888945915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08064'>Report Problem</a>",
- "NAME": "H08064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97058466083409,
- 38.89800548161571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08065'>Report Problem</a>",
- "NAME": "H08065"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99344666688556,
- 38.9499362382747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08066'>Report Problem</a>",
- "NAME": "H08066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09820919198437,
- 38.931641220192134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06632'>Report Problem</a>",
- "NAME": "H06632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92585924081189,
- 38.88541171461339,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06633'>Report Problem</a>",
- "NAME": "H06633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97427168948785,
- 38.85082620459908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06634'>Report Problem</a>",
- "NAME": "H06634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9725631524919,
- 38.85610922429121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06635'>Report Problem</a>",
- "NAME": "H06635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94411832876546,
- 38.90047573117055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06636'>Report Problem</a>",
- "NAME": "H06636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0332593761117,
- 38.90378941050947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06637'>Report Problem</a>",
- "NAME": "H06637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96690054191585,
- 38.85980920974811,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06638'>Report Problem</a>",
- "NAME": "H06638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99044017445156,
- 38.89206120904355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06639'>Report Problem</a>",
- "NAME": "H06639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98811365200389,
- 38.892061662091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06640'>Report Problem</a>",
- "NAME": "H06640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0998159947323,
- 38.94224751335224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06641'>Report Problem</a>",
- "NAME": "H06641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1009400873196,
- 38.9420709494172,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06642'>Report Problem</a>",
- "NAME": "H06642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10073907055914,
- 38.94075931692487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06643'>Report Problem</a>",
- "NAME": "H06643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94682562434733,
- 38.900341590154255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06644'>Report Problem</a>",
- "NAME": "H06644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98207306702139,
- 38.887657399416554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06645'>Report Problem</a>",
- "NAME": "H06645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9788557932541,
- 38.88765900531611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06646'>Report Problem</a>",
- "NAME": "H06646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98708911737081,
- 38.88753820509799,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06647'>Report Problem</a>",
- "NAME": "H06647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98059526918205,
- 38.88766049635629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06648'>Report Problem</a>",
- "NAME": "H06648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98347934558751,
- 38.88770010831467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06649'>Report Problem</a>",
- "NAME": "H06649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98534867500489,
- 38.8879911391867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06650'>Report Problem</a>",
- "NAME": "H06650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03214896432846,
- 38.9036541816669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06651'>Report Problem</a>",
- "NAME": "H06651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02893315387732,
- 38.90380989392949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06652'>Report Problem</a>",
- "NAME": "H06652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02976146839815,
- 38.90340540898938,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06653'>Report Problem</a>",
- "NAME": "H06653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93764917306679,
- 38.88948522066144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06654'>Report Problem</a>",
- "NAME": "H06654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0305117647332,
- 38.90379603384022,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06655'>Report Problem</a>",
- "NAME": "H06655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97290886150944,
- 38.8631946268882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06656'>Report Problem</a>",
- "NAME": "H06656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97170238850582,
- 38.86395378622063,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06657'>Report Problem</a>",
- "NAME": "H06657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93492963482089,
- 38.88714683758573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06658'>Report Problem</a>",
- "NAME": "H06658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95720583480187,
- 38.918537114523915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06659'>Report Problem</a>",
- "NAME": "H06659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95934829814477,
- 38.918491864945544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06660'>Report Problem</a>",
- "NAME": "H06660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98537348571622,
- 38.89206517066875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06661'>Report Problem</a>",
- "NAME": "H06661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00753802672362,
- 38.95575475525598,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06662'>Report Problem</a>",
- "NAME": "H06662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9956397540779,
- 38.89209414717504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06663'>Report Problem</a>",
- "NAME": "H06663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98691214500934,
- 38.88872879563235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06664'>Report Problem</a>",
- "NAME": "H06664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00266920873362,
- 38.965617241930524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06665'>Report Problem</a>",
- "NAME": "H06665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04271065725995,
- 38.99143433946698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06666'>Report Problem</a>",
- "NAME": "H06666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94706931146355,
- 38.89755654960666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07128'>Report Problem</a>",
- "NAME": "H07128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02338641580138,
- 38.92913561933068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07129'>Report Problem</a>",
- "NAME": "H07129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03634185868984,
- 38.92952303531884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07130'>Report Problem</a>",
- "NAME": "H07130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95744290126926,
- 38.89548949588824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07131'>Report Problem</a>",
- "NAME": "H07131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98378858812869,
- 38.86058538316426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07133'>Report Problem</a>",
- "NAME": "H07133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02799274007583,
- 38.89926321820379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07134'>Report Problem</a>",
- "NAME": "H07134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06230158840661,
- 38.922606177634776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 01/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07135'>Report Problem</a>",
- "NAME": "H07135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1086710335078,
- 38.93741853746335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07136'>Report Problem</a>",
- "NAME": "H07136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9821590809367,
- 38.89763813749226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07137'>Report Problem</a>",
- "NAME": "H07137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0105660754126,
- 38.877640449398264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07138'>Report Problem</a>",
- "NAME": "H07138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05395292919954,
- 38.968327450628394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07139'>Report Problem</a>",
- "NAME": "H07139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9908981704769,
- 38.91774198095922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07140'>Report Problem</a>",
- "NAME": "H07140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96327169912612,
- 38.87828526981169,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07141'>Report Problem</a>",
- "NAME": "H07141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99597249402497,
- 38.90978730178437,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07142'>Report Problem</a>",
- "NAME": "H07142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02882732476392,
- 38.89746160417395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07143'>Report Problem</a>",
- "NAME": "H07143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9823782253395,
- 38.92624222371151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07144'>Report Problem</a>",
- "NAME": "H07144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05638708627936,
- 38.96971155368072,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07145'>Report Problem</a>",
- "NAME": "H07145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05831805738657,
- 38.96971400275113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07146'>Report Problem</a>",
- "NAME": "H07146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95073291147202,
- 38.89527545031412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07147'>Report Problem</a>",
- "NAME": "H07147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9498398849183,
- 38.89515566435593,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07148'>Report Problem</a>",
- "NAME": "H07148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0333905257536,
- 38.93784614656226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07149'>Report Problem</a>",
- "NAME": "H07149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02344620965623,
- 38.98061124328168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07150'>Report Problem</a>",
- "NAME": "H07150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03240518879792,
- 38.92874628945823,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07151'>Report Problem</a>",
- "NAME": "H07151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05467317078839,
- 38.90138902988212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07152'>Report Problem</a>",
- "NAME": "H07152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97267792893813,
- 38.91942871632992,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07153'>Report Problem</a>",
- "NAME": "H07153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9614169665006,
- 38.86892063725262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07154'>Report Problem</a>",
- "NAME": "H07154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9402415941209,
- 38.90352574477204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07155'>Report Problem</a>",
- "NAME": "H07155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9757437988873,
- 38.9187857659611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07156'>Report Problem</a>",
- "NAME": "H07156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07826058967379,
- 38.92695993121221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07157'>Report Problem</a>",
- "NAME": "H07157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97389587223684,
- 38.88999451381324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/14/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07158'>Report Problem</a>",
- "NAME": "H07158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97518032980332,
- 38.88931737298493,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 04/26/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07159'>Report Problem</a>",
- "NAME": "H07159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03510638698909,
- 38.90782642144883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07160'>Report Problem</a>",
- "NAME": "H07160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9974140417839,
- 38.88267151699444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07161'>Report Problem</a>",
- "NAME": "H07161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99187516363632,
- 38.83514128692742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07162'>Report Problem</a>",
- "NAME": "H07162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01530654822344,
- 38.87671737460202,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07593'>Report Problem</a>",
- "NAME": "H07593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04478054194414,
- 38.94333234222084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07594'>Report Problem</a>",
- "NAME": "H07594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08091640501084,
- 38.93419123810554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07595'>Report Problem</a>",
- "NAME": "H07595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93891851512589,
- 38.87580859089552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07597'>Report Problem</a>",
- "NAME": "H07597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02800513525747,
- 38.885174563874195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07598'>Report Problem</a>",
- "NAME": "H07598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02285517021659,
- 38.89518831317675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07599'>Report Problem</a>",
- "NAME": "H07599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93839238188482,
- 38.870393111297375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07600'>Report Problem</a>",
- "NAME": "H07600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02304737963892,
- 38.894335966770136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07601'>Report Problem</a>",
- "NAME": "H07601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92621410380156,
- 38.88095949844807,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07602'>Report Problem</a>",
- "NAME": "H07602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92927041832074,
- 38.88058494667498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07603'>Report Problem</a>",
- "NAME": "H07603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92771985214326,
- 38.88847710905287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07604'>Report Problem</a>",
- "NAME": "H07604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9388785602111,
- 38.87872847954836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07605'>Report Problem</a>",
- "NAME": "H07605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93892747115012,
- 38.87751675888302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07606'>Report Problem</a>",
- "NAME": "H07606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06499242149373,
- 38.923937727632065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07607'>Report Problem</a>",
- "NAME": "H07607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97964319006199,
- 38.84582105940526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07608'>Report Problem</a>",
- "NAME": "H07608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96081324553018,
- 38.87200348200796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07609'>Report Problem</a>",
- "NAME": "H07609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.987837512811,
- 38.86468084022014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07610'>Report Problem</a>",
- "NAME": "H07610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02042258229375,
- 38.894370686948115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07611'>Report Problem</a>",
- "NAME": "H07611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03165828973412,
- 38.91339968756192,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07612'>Report Problem</a>",
- "NAME": "H07612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04897052266529,
- 38.89962534458021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07613'>Report Problem</a>",
- "NAME": "H07613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01072739818773,
- 38.87665515053187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07614'>Report Problem</a>",
- "NAME": "H07614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0139860492789,
- 38.87668408302811,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07615'>Report Problem</a>",
- "NAME": "H07615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01954994639182,
- 38.87633410973487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07616'>Report Problem</a>",
- "NAME": "H07616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01782363110506,
- 38.87633704344056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07617'>Report Problem</a>",
- "NAME": "H07617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03183929255972,
- 38.892347817003085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07618'>Report Problem</a>",
- "NAME": "H07618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93785580982951,
- 38.892712653120334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07619'>Report Problem</a>",
- "NAME": "H07619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05491383122406,
- 38.94055577394254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07620'>Report Problem</a>",
- "NAME": "H07620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93681738612061,
- 38.89318208084086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07621'>Report Problem</a>",
- "NAME": "H07621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06421128315144,
- 38.94957473474059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07623'>Report Problem</a>",
- "NAME": "H07623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98518276662838,
- 38.86934057516383,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07624'>Report Problem</a>",
- "NAME": "H07624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07443286907956,
- 38.94785579430204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07625'>Report Problem</a>",
- "NAME": "H07625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00717926943237,
- 38.90367416704998,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07626'>Report Problem</a>",
- "NAME": "H07626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94059498805436,
- 38.89745915516139,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07627'>Report Problem</a>",
- "NAME": "H07627"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00688885907205,
- 38.91560935591307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07628'>Report Problem</a>",
- "NAME": "H07628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98077160350076,
- 38.91911350555358,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07629'>Report Problem</a>",
- "NAME": "H07629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05430585808163,
- 38.91472255461596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08067'>Report Problem</a>",
- "NAME": "H08067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0973401834681,
- 38.932657733251496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08068'>Report Problem</a>",
- "NAME": "H08068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02567644903262,
- 38.94073572209535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08069'>Report Problem</a>",
- "NAME": "H08069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0226263006244,
- 38.87871035600972,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08070'>Report Problem</a>",
- "NAME": "H08070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05422237529272,
- 38.985183225136325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08071'>Report Problem</a>",
- "NAME": "H08071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.976030747485,
- 38.944535347896895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08072'>Report Problem</a>",
- "NAME": "H08072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99807352173826,
- 38.95065653649802,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08073'>Report Problem</a>",
- "NAME": "H08073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99830472107227,
- 38.88765253803316,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08074'>Report Problem</a>",
- "NAME": "H08074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0454619136274,
- 38.93206122256313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08075'>Report Problem</a>",
- "NAME": "H08075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06204489273402,
- 38.90347086306426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08076'>Report Problem</a>",
- "NAME": "H08076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92525895122802,
- 38.89922099786704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08077'>Report Problem</a>",
- "NAME": "H08077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09358690214279,
- 38.91536564625184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08078'>Report Problem</a>",
- "NAME": "H08078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05826488919057,
- 38.91062544736217,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08079'>Report Problem</a>",
- "NAME": "H08079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00030260667727,
- 38.91025256159615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08080'>Report Problem</a>",
- "NAME": "H08080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00607083603087,
- 38.82783680987573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08081'>Report Problem</a>",
- "NAME": "H08081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05710567996493,
- 38.90537943213029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08083'>Report Problem</a>",
- "NAME": "H08083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01770545989216,
- 38.91265707784783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08084'>Report Problem</a>",
- "NAME": "H08084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00151273583373,
- 38.82120253332884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08085'>Report Problem</a>",
- "NAME": "H08085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05584047114564,
- 38.9061775529845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08086'>Report Problem</a>",
- "NAME": "H08086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93719410570526,
- 38.9047931800685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08087'>Report Problem</a>",
- "NAME": "H08087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95640859409542,
- 38.862540675271426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08088'>Report Problem</a>",
- "NAME": "H08088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05309169771132,
- 38.95128963360767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08089'>Report Problem</a>",
- "NAME": "H08089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98492219736976,
- 38.92456337532836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08090'>Report Problem</a>",
- "NAME": "H08090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01932205595843,
- 38.94104091193039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08091'>Report Problem</a>",
- "NAME": "H08091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02407486879943,
- 38.89892872806242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08092'>Report Problem</a>",
- "NAME": "H08092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0241303785301,
- 38.92187126057276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08093'>Report Problem</a>",
- "NAME": "H08093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08275308013201,
- 38.950387968192736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08094'>Report Problem</a>",
- "NAME": "H08094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02451009759346,
- 38.887453749216625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08095'>Report Problem</a>",
- "NAME": "H08095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97587556476205,
- 38.87208924423228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08096'>Report Problem</a>",
- "NAME": "H08096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02392745914513,
- 38.88768752934951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08097'>Report Problem</a>",
- "NAME": "H08097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00075636549767,
- 38.94736743915042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08098'>Report Problem</a>",
- "NAME": "H08098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00369973493692,
- 38.91551630019421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08100'>Report Problem</a>",
- "NAME": "H08100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0058747438556,
- 38.91560602416622,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08101'>Report Problem</a>",
- "NAME": "H08101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00785282832473,
- 38.91551729300077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08102'>Report Problem</a>",
- "NAME": "H08102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07097240657087,
- 38.96680710923335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08104'>Report Problem</a>",
- "NAME": "H08104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04256273614506,
- 38.99248150648874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06667'>Report Problem</a>",
- "NAME": "H06667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03069775897414,
- 38.98654627542858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06668'>Report Problem</a>",
- "NAME": "H06668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04126605188107,
- 38.995319877069214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06669'>Report Problem</a>",
- "NAME": "H06669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99950174070769,
- 38.95683618697209,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06670'>Report Problem</a>",
- "NAME": "H06670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0002093400514,
- 38.9568235762791,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06671'>Report Problem</a>",
- "NAME": "H06671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93671217061106,
- 38.909771077680766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06672'>Report Problem</a>",
- "NAME": "H06672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93454780422805,
- 38.91204196054723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06673'>Report Problem</a>",
- "NAME": "H06673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93470767518134,
- 38.91083939127652,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06674'>Report Problem</a>",
- "NAME": "H06674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.933813118248,
- 38.91190189037436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06675'>Report Problem</a>",
- "NAME": "H06675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9336261110621,
- 38.89977247158318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06676'>Report Problem</a>",
- "NAME": "H06676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9732578324894,
- 38.85413185525328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06677'>Report Problem</a>",
- "NAME": "H06677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97431179441004,
- 38.853123039577405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06678'>Report Problem</a>",
- "NAME": "H06678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10161957426138,
- 38.928536480910076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, Metropolitan<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06679'>Report Problem</a>",
- "NAME": "H06679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9820851584149,
- 38.856303304506994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06680'>Report Problem</a>",
- "NAME": "H06680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9895455724907,
- 38.94837209078545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06682'>Report Problem</a>",
- "NAME": "H06682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95306309704921,
- 38.860205134593336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06683'>Report Problem</a>",
- "NAME": "H06683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95251682530085,
- 38.86095246853403,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06684'>Report Problem</a>",
- "NAME": "H06684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98822712544568,
- 38.892814656261,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06685'>Report Problem</a>",
- "NAME": "H06685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94680672070382,
- 38.8976325149737,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06686'>Report Problem</a>",
- "NAME": "H06686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02647244234389,
- 38.984322252894245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06687'>Report Problem</a>",
- "NAME": "H06687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04492804856763,
- 38.99188325222858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06688'>Report Problem</a>",
- "NAME": "H06688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05361088106761,
- 38.897319400531686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06689'>Report Problem</a>",
- "NAME": "H06689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95879074026675,
- 38.8755308719135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06690'>Report Problem</a>",
- "NAME": "H06690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97247587999698,
- 38.84385955934146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06691'>Report Problem</a>",
- "NAME": "H06691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94984160555939,
- 38.897807349541374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06692'>Report Problem</a>",
- "NAME": "H06692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99488331466053,
- 38.89189332890175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06693'>Report Problem</a>",
- "NAME": "H06693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99964764645884,
- 38.893016739201016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06694'>Report Problem</a>",
- "NAME": "H06694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9982079259249,
- 38.894002863118665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06695'>Report Problem</a>",
- "NAME": "H06695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99834932366409,
- 38.89329666314996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06696'>Report Problem</a>",
- "NAME": "H06696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0006388926788,
- 38.894233633470144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06697'>Report Problem</a>",
- "NAME": "H06697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99937165549699,
- 38.894150531334496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06698'>Report Problem</a>",
- "NAME": "H06698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99176743824871,
- 38.88988321166382,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06699'>Report Problem</a>",
- "NAME": "H06699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9980643425351,
- 38.8243380799068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06700'>Report Problem</a>",
- "NAME": "H06700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99947874869262,
- 38.9534082356228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06701'>Report Problem</a>",
- "NAME": "H06701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98824195576937,
- 38.84185812111377,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07163'>Report Problem</a>",
- "NAME": "H07163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03117368358609,
- 38.89196042936237,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07164'>Report Problem</a>",
- "NAME": "H07164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05220405256068,
- 38.90235545879882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07165'>Report Problem</a>",
- "NAME": "H07165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0294925574771,
- 38.89196592861865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07166'>Report Problem</a>",
- "NAME": "H07166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02887995670005,
- 38.89195621751582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07167'>Report Problem</a>",
- "NAME": "H07167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01326188841345,
- 38.879223795774905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07168'>Report Problem</a>",
- "NAME": "H07168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03055504938841,
- 38.89196672752274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07169'>Report Problem</a>",
- "NAME": "H07169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03009180552627,
- 38.89196437948461,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07170'>Report Problem</a>",
- "NAME": "H07170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97941198861014,
- 38.90643729943215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07171'>Report Problem</a>",
- "NAME": "H07171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98251418665494,
- 38.90176447908287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07172'>Report Problem</a>",
- "NAME": "H07172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9817361142532,
- 38.90240999786607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07173'>Report Problem</a>",
- "NAME": "H07173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98240197969302,
- 38.90139178654355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07174'>Report Problem</a>",
- "NAME": "H07174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97983925922148,
- 38.90534581426163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07175'>Report Problem</a>",
- "NAME": "H07175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98259188025827,
- 38.90109005306457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07176'>Report Problem</a>",
- "NAME": "H07176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98164912901785,
- 38.90300065301632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07177'>Report Problem</a>",
- "NAME": "H07177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98106407892175,
- 38.904015602851935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07178'>Report Problem</a>",
- "NAME": "H07178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98050995546866,
- 38.90473724283739,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07179'>Report Problem</a>",
- "NAME": "H07179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93080110020489,
- 38.906012443251086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07180'>Report Problem</a>",
- "NAME": "H07180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98856826208481,
- 38.83630882114836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07181'>Report Problem</a>",
- "NAME": "H07181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91769787001495,
- 38.89467790579543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 04/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07182'>Report Problem</a>",
- "NAME": "H07182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98859846682389,
- 38.84089506326246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07183'>Report Problem</a>",
- "NAME": "H07183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00879516794764,
- 38.87656455244934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07184'>Report Problem</a>",
- "NAME": "H07184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96960369738015,
- 38.93236298038443,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07185'>Report Problem</a>",
- "NAME": "H07185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97615042813459,
- 38.92884378257927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07186'>Report Problem</a>",
- "NAME": "H07186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96643436049604,
- 38.933876760413824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07187'>Report Problem</a>",
- "NAME": "H07187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98060953858959,
- 38.926593403050674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07188'>Report Problem</a>",
- "NAME": "H07188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97894303555384,
- 38.92757048971088,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07189'>Report Problem</a>",
- "NAME": "H07189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96423259071118,
- 38.9349643913268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07190'>Report Problem</a>",
- "NAME": "H07190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9818455978275,
- 38.926204685610536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07191'>Report Problem</a>",
- "NAME": "H07191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97368697090285,
- 38.93013727963233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07192'>Report Problem</a>",
- "NAME": "H07192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96826674125221,
- 38.9327289027193,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07193'>Report Problem</a>",
- "NAME": "H07193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9776634250936,
- 38.928470768105825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07194'>Report Problem</a>",
- "NAME": "H07194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06207591869202,
- 38.96091468411529,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07195'>Report Problem</a>",
- "NAME": "H07195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02147380143175,
- 38.931977377941415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07196'>Report Problem</a>",
- "NAME": "H07196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99545236633146,
- 38.938484542889505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07630'>Report Problem</a>",
- "NAME": "H07630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95210402276778,
- 38.871180226678014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07631'>Report Problem</a>",
- "NAME": "H07631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95199232173123,
- 38.87207599455846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07632'>Report Problem</a>",
- "NAME": "H07632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01999003423212,
- 38.88038972183923,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07633'>Report Problem</a>",
- "NAME": "H07633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04354145595775,
- 38.901841883806725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07634'>Report Problem</a>",
- "NAME": "H07634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04337663811954,
- 38.90145199136814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07635'>Report Problem</a>",
- "NAME": "H07635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98884456597,
- 38.91356105365554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07636'>Report Problem</a>",
- "NAME": "H07636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98132186798092,
- 38.91284935351559,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07637'>Report Problem</a>",
- "NAME": "H07637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03292540093577,
- 38.931968830501816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07638'>Report Problem</a>",
- "NAME": "H07638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03255540866178,
- 38.93524824479915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07639'>Report Problem</a>",
- "NAME": "H07639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95483598818235,
- 38.88520158341418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07640'>Report Problem</a>",
- "NAME": "H07640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99725802551747,
- 38.89099160767032,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07641'>Report Problem</a>",
- "NAME": "H07641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9213090572142,
- 38.88810889235209,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07642'>Report Problem</a>",
- "NAME": "H07642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08977166508976,
- 38.9164012202743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07643'>Report Problem</a>",
- "NAME": "H07643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02758904737483,
- 38.97353620626832,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07644'>Report Problem</a>",
- "NAME": "H07644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05131506689666,
- 38.89614560562933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07645'>Report Problem</a>",
- "NAME": "H07645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9561597373276,
- 38.87588020542816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07646'>Report Problem</a>",
- "NAME": "H07646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0656941045554,
- 38.954835210649364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07647'>Report Problem</a>",
- "NAME": "H07647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05589223170068,
- 38.934258104621634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07648'>Report Problem</a>",
- "NAME": "H07648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98358187957423,
- 38.89793182054272,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07649'>Report Problem</a>",
- "NAME": "H07649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99505211363423,
- 38.8860862576991,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07650'>Report Problem</a>",
- "NAME": "H07650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0676130006429,
- 38.91744067858635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07651'>Report Problem</a>",
- "NAME": "H07651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03384151094251,
- 38.902670117519804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07652'>Report Problem</a>",
- "NAME": "H07652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03329161592923,
- 38.90355369776755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07653'>Report Problem</a>",
- "NAME": "H07653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0366204468569,
- 38.992171131374356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07654'>Report Problem</a>",
- "NAME": "H07654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09547664180998,
- 38.934339797263775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07655'>Report Problem</a>",
- "NAME": "H07655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94248106853148,
- 38.90388283391777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07656'>Report Problem</a>",
- "NAME": "H07656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99161384287906,
- 38.948361564624236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07658'>Report Problem</a>",
- "NAME": "H07658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05538455131251,
- 38.899825267045095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07659'>Report Problem</a>",
- "NAME": "H07659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9602227189676,
- 38.89066513289886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07660'>Report Problem</a>",
- "NAME": "H07660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96156016250936,
- 38.92044061922615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07661'>Report Problem</a>",
- "NAME": "H07661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98383091381878,
- 38.887006124984175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07662'>Report Problem</a>",
- "NAME": "H07662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97378534478037,
- 38.904140079088634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07665'>Report Problem</a>",
- "NAME": "H07665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99959286638867,
- 38.91988141617034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H07666'>Report Problem</a>",
- "NAME": "H07666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08501170602099,
- 38.94560412106222,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04505'>Report Problem</a>",
- "NAME": "H04505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95654305223472,
- 38.89365977221223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04506'>Report Problem</a>",
- "NAME": "H04506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97518279915471,
- 38.94067135426789,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04507'>Report Problem</a>",
- "NAME": "H04507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9367036997258,
- 38.87498690843462,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04508'>Report Problem</a>",
- "NAME": "H04508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97506636774665,
- 38.868307444657106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04509'>Report Problem</a>",
- "NAME": "H04509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01529486536687,
- 38.89915188524489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04510'>Report Problem</a>",
- "NAME": "H04510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01529637967154,
- 38.89847224027998,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04511'>Report Problem</a>",
- "NAME": "H04511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01533375102812,
- 38.89620930760246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04512'>Report Problem</a>",
- "NAME": "H04512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93521919567424,
- 38.899001646517085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04513'>Report Problem</a>",
- "NAME": "H04513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96913510535339,
- 38.93414917719809,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04514'>Report Problem</a>",
- "NAME": "H04514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00958756264887,
- 38.90795428427942,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04515'>Report Problem</a>",
- "NAME": "H04515"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03780815859407,
- 38.93221727942994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04516'>Report Problem</a>",
- "NAME": "H04516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91927519665964,
- 38.89085197009494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04517'>Report Problem</a>",
- "NAME": "H04517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01610729068243,
- 38.89490146805752,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04518'>Report Problem</a>",
- "NAME": "H04518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05741847698862,
- 38.977393409005366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04519'>Report Problem</a>",
- "NAME": "H04519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08284602282293,
- 38.9599718717732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04520'>Report Problem</a>",
- "NAME": "H04520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03661770740952,
- 38.988907523757774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04521'>Report Problem</a>",
- "NAME": "H04521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02007001701885,
- 38.894850614774384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04522'>Report Problem</a>",
- "NAME": "H04522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01971429770033,
- 38.894571334891296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04523'>Report Problem</a>",
- "NAME": "H04523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03228839827646,
- 38.94395695096938,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04524'>Report Problem</a>",
- "NAME": "H04524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00268269482102,
- 38.96278459765307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04525'>Report Problem</a>",
- "NAME": "H04525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01688847768335,
- 38.89470774990744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04526'>Report Problem</a>",
- "NAME": "H04526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01602508217665,
- 38.8934854720268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04527'>Report Problem</a>",
- "NAME": "H04527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01714532668765,
- 38.89493451614574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04528'>Report Problem</a>",
- "NAME": "H04528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0153305961584,
- 38.89316888502167,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04529'>Report Problem</a>",
- "NAME": "H04529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06203172561044,
- 38.97597182469591,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04530'>Report Problem</a>",
- "NAME": "H04530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97509509310142,
- 38.90027565512053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04531'>Report Problem</a>",
- "NAME": "H04531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99860603254884,
- 38.92455568268532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04532'>Report Problem</a>",
- "NAME": "H04532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10201453566845,
- 38.93539452440193,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04533'>Report Problem</a>",
- "NAME": "H04533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10368454157613,
- 38.93367181967864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04534'>Report Problem</a>",
- "NAME": "H04534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02951211090763,
- 38.91928297852966,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04535'>Report Problem</a>",
- "NAME": "H04535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01528268522242,
- 38.89686144779281,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04536'>Report Problem</a>",
- "NAME": "H04536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01868698817158,
- 38.89467790157425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04537'>Report Problem</a>",
- "NAME": "H04537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94924765535072,
- 38.86582359293103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04538'>Report Problem</a>",
- "NAME": "H04538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.037769935006,
- 38.91690745588892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04954'>Report Problem</a>",
- "NAME": "H04954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97142885019181,
- 38.86907023603545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04955'>Report Problem</a>",
- "NAME": "H04955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95763838837377,
- 38.860577733899596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04956'>Report Problem</a>",
- "NAME": "H04956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95882258005365,
- 38.89204997336262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04957'>Report Problem</a>",
- "NAME": "H04957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95746593202843,
- 38.862081852095365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04958'>Report Problem</a>",
- "NAME": "H04958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02851565609653,
- 38.969030451248095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04959'>Report Problem</a>",
- "NAME": "H04959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97742027557022,
- 38.901312638286754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04960'>Report Problem</a>",
- "NAME": "H04960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9775592473854,
- 38.899270362145124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04961'>Report Problem</a>",
- "NAME": "H04961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95159432322585,
- 38.893370603485906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04962'>Report Problem</a>",
- "NAME": "H04962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08072525467323,
- 38.921537190691474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04963'>Report Problem</a>",
- "NAME": "H04963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0798723336545,
- 38.92196653705908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04964'>Report Problem</a>",
- "NAME": "H04964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99158874868232,
- 38.899603587189674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04965'>Report Problem</a>",
- "NAME": "H04965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97687584368056,
- 38.89772988919319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04966'>Report Problem</a>",
- "NAME": "H04966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04321089564364,
- 38.9869617983455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04967'>Report Problem</a>",
- "NAME": "H04967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9765791968336,
- 38.89875208095324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04968'>Report Problem</a>",
- "NAME": "H04968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95249863594898,
- 38.886915518824274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04969'>Report Problem</a>",
- "NAME": "H04969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95294440748845,
- 38.885778967641656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04970'>Report Problem</a>",
- "NAME": "H04970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94687304428274,
- 38.86573991150237,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04971'>Report Problem</a>",
- "NAME": "H04971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94895799947581,
- 38.86653095138741,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04972'>Report Problem</a>",
- "NAME": "H04972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98523261120602,
- 38.90962671104989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04973'>Report Problem</a>",
- "NAME": "H04973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0065189663599,
- 38.94476188473148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04974'>Report Problem</a>",
- "NAME": "H04974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9605324786096,
- 38.86280134124152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04975'>Report Problem</a>",
- "NAME": "H04975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99870068629718,
- 38.83100646300914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04976'>Report Problem</a>",
- "NAME": "H04976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99670644890912,
- 38.83104835816591,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04977'>Report Problem</a>",
- "NAME": "H04977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99455718617257,
- 38.83294639666921,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04978'>Report Problem</a>",
- "NAME": "H04978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99478811531402,
- 38.83207610879017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04979'>Report Problem</a>",
- "NAME": "H04979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99482915720249,
- 38.831038867237936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04980'>Report Problem</a>",
- "NAME": "H04980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99065977055142,
- 38.8441879237521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04981'>Report Problem</a>",
- "NAME": "H04981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00041010664916,
- 38.829286411332376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04982'>Report Problem</a>",
- "NAME": "H04982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00047078157007,
- 38.82997545058975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04983'>Report Problem</a>",
- "NAME": "H04983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95945206901574,
- 38.89346184133429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04984'>Report Problem</a>",
- "NAME": "H04984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9600857698224,
- 38.89206721243867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04985'>Report Problem</a>",
- "NAME": "H04985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95962051959977,
- 38.892863239427655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04986'>Report Problem</a>",
- "NAME": "H04986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99811232082406,
- 38.91092906415695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04987'>Report Problem</a>",
- "NAME": "H04987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94442245963786,
- 38.88039215372748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05415'>Report Problem</a>",
- "NAME": "H05415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94419433211398,
- 38.879583118379465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05416'>Report Problem</a>",
- "NAME": "H05416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97239877531072,
- 38.87283836966293,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. PIPE<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05417'>Report Problem</a>",
- "NAME": "H05417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97141137090834,
- 38.8740431408423,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05418'>Report Problem</a>",
- "NAME": "H05418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97030914383717,
- 38.87357841971728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05419'>Report Problem</a>",
- "NAME": "H05419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98384123932715,
- 38.90986512187603,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05420'>Report Problem</a>",
- "NAME": "H05420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98513876257802,
- 38.91010779869182,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05421'>Report Problem</a>",
- "NAME": "H05421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96988474780036,
- 38.85963495694311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05423'>Report Problem</a>",
- "NAME": "H05423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95747243560545,
- 38.87568663192944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05424'>Report Problem</a>",
- "NAME": "H05424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0888109638939,
- 38.94014533488393,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05425'>Report Problem</a>",
- "NAME": "H05425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07896421783846,
- 38.925390875417,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05426'>Report Problem</a>",
- "NAME": "H05426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08549318436802,
- 38.93247978876778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05427'>Report Problem</a>",
- "NAME": "H05427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95128025010533,
- 38.890441085234784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05428'>Report Problem</a>",
- "NAME": "H05428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96591582953405,
- 38.8694331020444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05429'>Report Problem</a>",
- "NAME": "H05429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98787525218218,
- 38.94951067469486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05430'>Report Problem</a>",
- "NAME": "H05430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98715846608076,
- 38.91112853005006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05431'>Report Problem</a>",
- "NAME": "H05431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97514720745615,
- 38.850887039050214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05432'>Report Problem</a>",
- "NAME": "H05432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03295369554044,
- 38.89736340288634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05433'>Report Problem</a>",
- "NAME": "H05433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96964959960575,
- 38.85706639625015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05434'>Report Problem</a>",
- "NAME": "H05434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97884871222637,
- 38.9056736962068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05435'>Report Problem</a>",
- "NAME": "H05435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94709887099509,
- 38.89194168300198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05436'>Report Problem</a>",
- "NAME": "H05436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96590448522879,
- 38.8564440694794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05437'>Report Problem</a>",
- "NAME": "H05437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0562741295463,
- 38.963957924133425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05438'>Report Problem</a>",
- "NAME": "H05438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.033395806089,
- 38.98770536102443,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05439'>Report Problem</a>",
- "NAME": "H05439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0362772955056,
- 38.98811779035975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05440'>Report Problem</a>",
- "NAME": "H05440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0343469233192,
- 38.98794814504181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05441'>Report Problem</a>",
- "NAME": "H05441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99161243571504,
- 38.95228137975813,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05442'>Report Problem</a>",
- "NAME": "H05442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99161369383835,
- 38.95139350662461,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05443'>Report Problem</a>",
- "NAME": "H05443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97901411267132,
- 38.90722812553003,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05444'>Report Problem</a>",
- "NAME": "H05444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93057299692924,
- 38.90933952346587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05445'>Report Problem</a>",
- "NAME": "H05445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97016135366849,
- 38.90190040853298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05446'>Report Problem</a>",
- "NAME": "H05446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94569905425418,
- 38.866017416139044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05447'>Report Problem</a>",
- "NAME": "H05447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9664628907411,
- 38.86022461631165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05448'>Report Problem</a>",
- "NAME": "H05448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98149892483617,
- 38.91436822324133,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05449'>Report Problem</a>",
- "NAME": "H05449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05738066633528,
- 38.96204035802617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05877'>Report Problem</a>",
- "NAME": "H05877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02672198812148,
- 38.87525681603104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05878'>Report Problem</a>",
- "NAME": "H05878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00893086017508,
- 38.88027864840328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05879'>Report Problem</a>",
- "NAME": "H05879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05886760957021,
- 38.980647648259456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05880'>Report Problem</a>",
- "NAME": "H05880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04400764865369,
- 38.91025665179926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05881'>Report Problem</a>",
- "NAME": "H05881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06622108215157,
- 38.95582770549212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05882'>Report Problem</a>",
- "NAME": "H05882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05771878541042,
- 38.937210291055656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/18/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05883'>Report Problem</a>",
- "NAME": "H05883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05663030077615,
- 38.936047221472194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 12/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05884'>Report Problem</a>",
- "NAME": "H05884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05454077473271,
- 38.93686234924214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/18/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05885'>Report Problem</a>",
- "NAME": "H05885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99864019741487,
- 38.82926123447792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05886'>Report Problem</a>",
- "NAME": "H05886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99745641046236,
- 38.82928810495151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05887'>Report Problem</a>",
- "NAME": "H05887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98368090457289,
- 38.8470321579273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05888'>Report Problem</a>",
- "NAME": "H05888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94269384953485,
- 38.88113131260068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05889'>Report Problem</a>",
- "NAME": "H05889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94045486329308,
- 38.88107126866343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05890'>Report Problem</a>",
- "NAME": "H05890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98840546659665,
- 38.84447382078344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05891'>Report Problem</a>",
- "NAME": "H05891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98336470998109,
- 38.90033808492792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05893'>Report Problem</a>",
- "NAME": "H05893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05574712210667,
- 38.981325253199344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05894'>Report Problem</a>",
- "NAME": "H05894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98582011756288,
- 38.9143420367465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05895'>Report Problem</a>",
- "NAME": "H05895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92949724953007,
- 38.89490204921306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05896'>Report Problem</a>",
- "NAME": "H05896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05236333188468,
- 38.98061296067537,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05897'>Report Problem</a>",
- "NAME": "H05897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98191136399151,
- 38.9480850649206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05898'>Report Problem</a>",
- "NAME": "H05898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98309125741666,
- 38.948789166333206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05899'>Report Problem</a>",
- "NAME": "H05899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98499112236297,
- 38.845402463460985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05900'>Report Problem</a>",
- "NAME": "H05900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95878047871143,
- 38.876417330625166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05901'>Report Problem</a>",
- "NAME": "H05901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98716607804504,
- 38.841079993145634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05902'>Report Problem</a>",
- "NAME": "H05902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96120563588212,
- 38.89072530611001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05903'>Report Problem</a>",
- "NAME": "H05903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00890315790349,
- 38.9691662714932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05904'>Report Problem</a>",
- "NAME": "H05904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00448081866452,
- 38.94221659941282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05905'>Report Problem</a>",
- "NAME": "H05905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00898844723822,
- 38.969820695570306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05906'>Report Problem</a>",
- "NAME": "H05906"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00592802149238,
- 38.942171142216594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05907'>Report Problem</a>",
- "NAME": "H05907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92343376407493,
- 38.887454359169745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05908'>Report Problem</a>",
- "NAME": "H05908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10866537092956,
- 38.937139015092185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05909'>Report Problem</a>",
- "NAME": "H05909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0318620165613,
- 38.96689655251302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05910'>Report Problem</a>",
- "NAME": "H05910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04499151384205,
- 38.91190145248213,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05911'>Report Problem</a>",
- "NAME": "H05911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95231636309134,
- 38.86204558560375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04468'>Report Problem</a>",
- "NAME": "H04468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95625781226883,
- 38.86059043119061,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04469'>Report Problem</a>",
- "NAME": "H04469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95443400600354,
- 38.86075983068309,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04470'>Report Problem</a>",
- "NAME": "H04470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06302317020764,
- 38.93634546611562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/30/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04471'>Report Problem</a>",
- "NAME": "H04471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03364771156913,
- 38.96997144820077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04472'>Report Problem</a>",
- "NAME": "H04472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91519527312151,
- 38.8898684452779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04473'>Report Problem</a>",
- "NAME": "H04473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03369950263738,
- 38.9064308841637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04474'>Report Problem</a>",
- "NAME": "H04474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03346881822355,
- 38.906046293973915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04475'>Report Problem</a>",
- "NAME": "H04475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98455836066543,
- 38.91144827267494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04476'>Report Problem</a>",
- "NAME": "H04476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05762266448413,
- 38.97592050825982,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/10/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04477'>Report Problem</a>",
- "NAME": "H04477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06484990255025,
- 38.97386868439315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04478'>Report Problem</a>",
- "NAME": "H04478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09459919171896,
- 38.94439128461937,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04479'>Report Problem</a>",
- "NAME": "H04479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03442754185579,
- 38.906317130673486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04480'>Report Problem</a>",
- "NAME": "H04480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08176831929555,
- 38.94975852306526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04481'>Report Problem</a>",
- "NAME": "H04481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03461015845141,
- 38.96679860848505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04482'>Report Problem</a>",
- "NAME": "H04482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0162968995522,
- 38.96138773597636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04483'>Report Problem</a>",
- "NAME": "H04483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02799037079716,
- 38.90271471681653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04484'>Report Problem</a>",
- "NAME": "H04484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02851545987697,
- 38.96903032518056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04485'>Report Problem</a>",
- "NAME": "H04485"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06992437653813,
- 38.94616720989705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04486'>Report Problem</a>",
- "NAME": "H04486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03469240711132,
- 38.966179582504225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04487'>Report Problem</a>",
- "NAME": "H04487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97632962235454,
- 38.90502070216662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04491'>Report Problem</a>",
- "NAME": "H04491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0061758185045,
- 38.837663683795775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04492'>Report Problem</a>",
- "NAME": "H04492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03972495423868,
- 38.938451513701864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04493'>Report Problem</a>",
- "NAME": "H04493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05844219050198,
- 38.97607782669315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04494'>Report Problem</a>",
- "NAME": "H04494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02015825537079,
- 38.978263448788546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04495'>Report Problem</a>",
- "NAME": "H04495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01261704659235,
- 38.93355893336584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04496'>Report Problem</a>",
- "NAME": "H04496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00595518369728,
- 38.92639592030899,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04497'>Report Problem</a>",
- "NAME": "H04497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03139045830304,
- 38.96832632434839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04498'>Report Problem</a>",
- "NAME": "H04498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06795762031446,
- 38.962133518683494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04499'>Report Problem</a>",
- "NAME": "H04499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97682805764099,
- 38.92009805781247,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04500'>Report Problem</a>",
- "NAME": "H04500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97774151389005,
- 38.91927053232404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04501'>Report Problem</a>",
- "NAME": "H04501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97089137062612,
- 38.925524117337886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04502'>Report Problem</a>",
- "NAME": "H04502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09248884383969,
- 38.944055928231755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04503'>Report Problem</a>",
- "NAME": "H04503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96808343928033,
- 38.87488510456729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04504'>Report Problem</a>",
- "NAME": "H04504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9501976712504,
- 38.89185527670701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04988'>Report Problem</a>",
- "NAME": "H04988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05740504133091,
- 38.96879537961942,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04989'>Report Problem</a>",
- "NAME": "H04989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05690530712651,
- 38.967334919084706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04990'>Report Problem</a>",
- "NAME": "H04990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06706735726398,
- 38.914759905473645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04991'>Report Problem</a>",
- "NAME": "H04991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03573820275865,
- 38.898602017775055,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04992'>Report Problem</a>",
- "NAME": "H04992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05717434172206,
- 38.98284093566841,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04993'>Report Problem</a>",
- "NAME": "H04993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00746630807164,
- 38.827846881484916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04994'>Report Problem</a>",
- "NAME": "H04994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00675272397862,
- 38.82691515204219,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04995'>Report Problem</a>",
- "NAME": "H04995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96789522660588,
- 38.86451209794541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04996'>Report Problem</a>",
- "NAME": "H04996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04408173399972,
- 38.93802545390631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04997'>Report Problem</a>",
- "NAME": "H04997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00101105172736,
- 38.8479719285518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04998'>Report Problem</a>",
- "NAME": "H04998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0080961753302,
- 38.91391932397774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04999'>Report Problem</a>",
- "NAME": "H04999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03234902990685,
- 38.943631068478105,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05000'>Report Problem</a>",
- "NAME": "H05000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02606052471145,
- 38.94301346401148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05001'>Report Problem</a>",
- "NAME": "H05001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05611670776105,
- 38.96759030558905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05002'>Report Problem</a>",
- "NAME": "H05002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01774736621778,
- 38.88612783101672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05003'>Report Problem</a>",
- "NAME": "H05003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94628259926158,
- 38.867838367166144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05004'>Report Problem</a>",
- "NAME": "H05004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95872952250073,
- 38.894223326987415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05005'>Report Problem</a>",
- "NAME": "H05005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08199239046205,
- 38.92010320964475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05006'>Report Problem</a>",
- "NAME": "H05006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98665072304348,
- 38.875997474552044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05007'>Report Problem</a>",
- "NAME": "H05007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0007649709477,
- 38.8989641137893,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05008'>Report Problem</a>",
- "NAME": "H05008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08035598957918,
- 38.94329651808345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05009'>Report Problem</a>",
- "NAME": "H05009"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00778057749709,
- 38.95663694563501,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05010'>Report Problem</a>",
- "NAME": "H05010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95737387281919,
- 38.89634168917012,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05011'>Report Problem</a>",
- "NAME": "H05011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94935583323286,
- 38.86279905532669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05012'>Report Problem</a>",
- "NAME": "H05012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9493118132755,
- 38.861995188010155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05013'>Report Problem</a>",
- "NAME": "H05013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94810462469599,
- 38.862929749567634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05014'>Report Problem</a>",
- "NAME": "H05014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92573217709304,
- 38.888725268143325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05015'>Report Problem</a>",
- "NAME": "H05015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00378935518785,
- 38.94444814746786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05016'>Report Problem</a>",
- "NAME": "H05016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95873679521195,
- 38.85544184778508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05017'>Report Problem</a>",
- "NAME": "H05017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95632262760772,
- 38.88539765774176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05018'>Report Problem</a>",
- "NAME": "H05018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.013751640455,
- 38.86740455536052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05019'>Report Problem</a>",
- "NAME": "H05019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01374002562615,
- 38.86962053501322,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05020'>Report Problem</a>",
- "NAME": "H05020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01373952713539,
- 38.8708619383729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05021'>Report Problem</a>",
- "NAME": "H05021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94572859198435,
- 38.867374547179196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05450'>Report Problem</a>",
- "NAME": "H05450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0080843981899,
- 38.96575684595789,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05451'>Report Problem</a>",
- "NAME": "H05451"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92908147085333,
- 38.87853815209767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05452'>Report Problem</a>",
- "NAME": "H05452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08676262875414,
- 38.90773519732001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05453'>Report Problem</a>",
- "NAME": "H05453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00304861681786,
- 38.942972044474814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05454'>Report Problem</a>",
- "NAME": "H05454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9710168513011,
- 38.86208656965696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05455'>Report Problem</a>",
- "NAME": "H05455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0525950951507,
- 38.9783977166296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05456'>Report Problem</a>",
- "NAME": "H05456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92039992813483,
- 38.88443601769575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05457'>Report Problem</a>",
- "NAME": "H05457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00774987251386,
- 38.88624695002779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05458'>Report Problem</a>",
- "NAME": "H05458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96296106266753,
- 38.880172655067256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05459'>Report Problem</a>",
- "NAME": "H05459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96010702524387,
- 38.85652863230421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05460'>Report Problem</a>",
- "NAME": "H05460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9662578523234,
- 38.87374476757092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05461'>Report Problem</a>",
- "NAME": "H05461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94943102200209,
- 38.886418860120045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05462'>Report Problem</a>",
- "NAME": "H05462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0581065194399,
- 38.9649632765295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05463'>Report Problem</a>",
- "NAME": "H05463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97100178978974,
- 38.873151964906526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05464'>Report Problem</a>",
- "NAME": "H05464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04250687819595,
- 38.898263820177455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05465'>Report Problem</a>",
- "NAME": "H05465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97872822433058,
- 38.90025184338745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05466'>Report Problem</a>",
- "NAME": "H05466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96231879528543,
- 38.87465626705615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05467'>Report Problem</a>",
- "NAME": "H05467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96337657050077,
- 38.874653991134956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05468'>Report Problem</a>",
- "NAME": "H05468"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01972369086437,
- 38.90970046948859,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05469'>Report Problem</a>",
- "NAME": "H05469"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98213572489016,
- 38.91204948628484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05470'>Report Problem</a>",
- "NAME": "H05470"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99489040500387,
- 38.8402116498363,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05471'>Report Problem</a>",
- "NAME": "H05471"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97087082647637,
- 38.86955353433788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05472'>Report Problem</a>",
- "NAME": "H05472"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96469986458378,
- 38.86956562380608,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05473'>Report Problem</a>",
- "NAME": "H05473"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9775595192457,
- 38.869528823835125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05474'>Report Problem</a>",
- "NAME": "H05474"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96092748084953,
- 38.87334836665557,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05475'>Report Problem</a>",
- "NAME": "H05475"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.922639640045,
- 38.8915201999504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05476'>Report Problem</a>",
- "NAME": "H05476"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02007291248464,
- 38.912556504387986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05477'>Report Problem</a>",
- "NAME": "H05477"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.020000900572,
- 38.90871248631782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05478'>Report Problem</a>",
- "NAME": "H05478"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02009328912031,
- 38.911174684688625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05479'>Report Problem</a>",
- "NAME": "H05479"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01972444321378,
- 38.90729285407107,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05480'>Report Problem</a>",
- "NAME": "H05480"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02000025945296,
- 38.90650833325808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05481'>Report Problem</a>",
- "NAME": "H05481"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95877757076808,
- 38.87466835813162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05482'>Report Problem</a>",
- "NAME": "H05482"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01039973341926,
- 38.96915598667947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05483'>Report Problem</a>",
- "NAME": "H05483"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0322345569651,
- 38.97218473781162,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05912'>Report Problem</a>",
- "NAME": "H05912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03217924586829,
- 38.97128920824938,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05913'>Report Problem</a>",
- "NAME": "H05913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99951068047747,
- 38.824315312506684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05914'>Report Problem</a>",
- "NAME": "H05914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00172940827434,
- 38.84724488502374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05915'>Report Problem</a>",
- "NAME": "H05915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99843658986222,
- 38.82674694162075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05916'>Report Problem</a>",
- "NAME": "H05916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99978832639101,
- 38.82574446233457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05917'>Report Problem</a>",
- "NAME": "H05917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99884286278379,
- 38.8254161250497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05918'>Report Problem</a>",
- "NAME": "H05918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.035035526915,
- 38.97221003807122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05919'>Report Problem</a>",
- "NAME": "H05919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03360726182474,
- 38.972214673101284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05920'>Report Problem</a>",
- "NAME": "H05920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03608325922893,
- 38.97221785392148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05921'>Report Problem</a>",
- "NAME": "H05921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03786074088279,
- 38.8977929927947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05922'>Report Problem</a>",
- "NAME": "H05922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05418359015695,
- 38.94222665722753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05923'>Report Problem</a>",
- "NAME": "H05923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00508365485885,
- 38.83955913286491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05924'>Report Problem</a>",
- "NAME": "H05924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04228618323036,
- 38.9510751853388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05925'>Report Problem</a>",
- "NAME": "H05925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04183480223777,
- 38.949728808862076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05926'>Report Problem</a>",
- "NAME": "H05926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05402398637719,
- 38.98167506726326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05927'>Report Problem</a>",
- "NAME": "H05927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0582721154005,
- 38.98195930008615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05928'>Report Problem</a>",
- "NAME": "H05928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04672468460491,
- 38.8997015652967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05929'>Report Problem</a>",
- "NAME": "H05929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06758056741153,
- 38.95661478150731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05930'>Report Problem</a>",
- "NAME": "H05930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04660115537602,
- 38.89724079135494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05931'>Report Problem</a>",
- "NAME": "H05931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99602759486328,
- 38.85989501773551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05933'>Report Problem</a>",
- "NAME": "H05933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98407197411996,
- 38.90376975429171,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05934'>Report Problem</a>",
- "NAME": "H05934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99734390812782,
- 38.83410601724103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05935'>Report Problem</a>",
- "NAME": "H05935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9248936665511,
- 38.89502238752707,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05936'>Report Problem</a>",
- "NAME": "H05936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05571137420573,
- 38.95077943808594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05937'>Report Problem</a>",
- "NAME": "H05937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02420977546612,
- 38.90560348594483,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05938'>Report Problem</a>",
- "NAME": "H05938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01910040045848,
- 38.905598874818324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05939'>Report Problem</a>",
- "NAME": "H05939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02727092529912,
- 38.90560644188606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05940'>Report Problem</a>",
- "NAME": "H05940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9336161211522,
- 38.87855889753185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05941'>Report Problem</a>",
- "NAME": "H05941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00344143825373,
- 38.920826177353554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05942'>Report Problem</a>",
- "NAME": "H05942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05581898379164,
- 38.92016268468825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05943'>Report Problem</a>",
- "NAME": "H05943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01811280752959,
- 38.92948476283356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05944'>Report Problem</a>",
- "NAME": "H05944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98916273353832,
- 38.86258019025154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05945'>Report Problem</a>",
- "NAME": "H05945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00210325452981,
- 38.90192618952126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05946'>Report Problem</a>",
- "NAME": "H05946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06133971936323,
- 38.918426300346006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05947'>Report Problem</a>",
- "NAME": "H05947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09667756841523,
- 38.92180859230028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04539'>Report Problem</a>",
- "NAME": "H04539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9781831422131,
- 38.89472447271752,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04540'>Report Problem</a>",
- "NAME": "H04540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0272135623196,
- 38.914143364447746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04541'>Report Problem</a>",
- "NAME": "H04541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95899006206633,
- 38.85654342450508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04542'>Report Problem</a>",
- "NAME": "H04542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02663345176936,
- 38.97944592406447,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04543'>Report Problem</a>",
- "NAME": "H04543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97109502279811,
- 38.937750493672844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04544'>Report Problem</a>",
- "NAME": "H04544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9710962653787,
- 38.936250270157906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04545'>Report Problem</a>",
- "NAME": "H04545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98363959153033,
- 38.92420523925874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04546'>Report Problem</a>",
- "NAME": "H04546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98236143859955,
- 38.92319361722307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04547'>Report Problem</a>",
- "NAME": "H04547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95344548516675,
- 38.86904937116085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04548'>Report Problem</a>",
- "NAME": "H04548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01294550710134,
- 38.966053410712604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04549'>Report Problem</a>",
- "NAME": "H04549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00421993728946,
- 38.84020610015136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04550'>Report Problem</a>",
- "NAME": "H04550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00558960508017,
- 38.83842083779641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04551'>Report Problem</a>",
- "NAME": "H04551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06152500263343,
- 38.95189563901555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04552'>Report Problem</a>",
- "NAME": "H04552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00356182364052,
- 38.84108978791524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04553'>Report Problem</a>",
- "NAME": "H04553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07191214253295,
- 38.916307376897855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04554'>Report Problem</a>",
- "NAME": "H04554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0289008638822,
- 38.904668956389905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04555'>Report Problem</a>",
- "NAME": "H04555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95759948747545,
- 38.89210020789515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04556'>Report Problem</a>",
- "NAME": "H04556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06172900303278,
- 38.974461736861244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04557'>Report Problem</a>",
- "NAME": "H04557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10182195815486,
- 38.938127424066955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04558'>Report Problem</a>",
- "NAME": "H04558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10050397805239,
- 38.93916239323292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04559'>Report Problem</a>",
- "NAME": "H04559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09413634421344,
- 38.94486148554946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04560'>Report Problem</a>",
- "NAME": "H04560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09415609997177,
- 38.945600482518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04561'>Report Problem</a>",
- "NAME": "H04561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09926084706531,
- 38.94025000932464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04562'>Report Problem</a>",
- "NAME": "H04562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09842231626308,
- 38.94692327645336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04563'>Report Problem</a>",
- "NAME": "H04563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08143300808412,
- 38.92465467877779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04564'>Report Problem</a>",
- "NAME": "H04564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08040314915684,
- 38.92458274875631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04565'>Report Problem</a>",
- "NAME": "H04565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08172610155317,
- 38.923711464988465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04566'>Report Problem</a>",
- "NAME": "H04566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00852332895758,
- 38.94824079874554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04567'>Report Problem</a>",
- "NAME": "H04567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97017022565078,
- 38.86124873563855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04568'>Report Problem</a>",
- "NAME": "H04568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97117841507207,
- 38.860742274255394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04569'>Report Problem</a>",
- "NAME": "H04569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97242170260776,
- 38.86062560921024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04570'>Report Problem</a>",
- "NAME": "H04570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9717152970167,
- 38.86132835820676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04571'>Report Problem</a>",
- "NAME": "H04571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9789100728303,
- 38.86659355041834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04572'>Report Problem</a>",
- "NAME": "H04572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95326669240247,
- 38.871229676459286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06054'>Report Problem</a>",
- "NAME": "H06054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03608648730275,
- 38.96546641908029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06055'>Report Problem</a>",
- "NAME": "H06055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99791451439145,
- 38.910481742611296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06056'>Report Problem</a>",
- "NAME": "H06056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9255236979852,
- 38.89258039620722,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06057'>Report Problem</a>",
- "NAME": "H06057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00453927684698,
- 38.94292090109212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06058'>Report Problem</a>",
- "NAME": "H06058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09427323290882,
- 38.9215427300685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06059'>Report Problem</a>",
- "NAME": "H06059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91723851288903,
- 38.88728880266766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06060'>Report Problem</a>",
- "NAME": "H06060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96257705068113,
- 38.87105177316388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06061'>Report Problem</a>",
- "NAME": "H06061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05446446347828,
- 38.980964393689995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06063'>Report Problem</a>",
- "NAME": "H06063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04814285097343,
- 38.98891368947569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06064'>Report Problem</a>",
- "NAME": "H06064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99161978324591,
- 38.94885800217803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06065'>Report Problem</a>",
- "NAME": "H06065"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01627270761252,
- 38.89848595421249,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06066'>Report Problem</a>",
- "NAME": "H06066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0645614985153,
- 38.95750909848299,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06067'>Report Problem</a>",
- "NAME": "H06067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02332911250363,
- 38.96319848238286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06068'>Report Problem</a>",
- "NAME": "H06068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.921110169987,
- 38.88732829004167,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06069'>Report Problem</a>",
- "NAME": "H06069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97416249509429,
- 38.8539286035758,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06070'>Report Problem</a>",
- "NAME": "H06070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05419077303019,
- 38.97900655669684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06071'>Report Problem</a>",
- "NAME": "H06071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97126260637947,
- 38.85412903898753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06072'>Report Problem</a>",
- "NAME": "H06072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0752315624423,
- 38.90566486565189,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06073'>Report Problem</a>",
- "NAME": "H06073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95950074013167,
- 38.921375690427816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06074'>Report Problem</a>",
- "NAME": "H06074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03079930585041,
- 38.9331692262455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06075'>Report Problem</a>",
- "NAME": "H06075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98853013540462,
- 38.83259545879112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06076'>Report Problem</a>",
- "NAME": "H06076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95490457174867,
- 38.89471281504109,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06077'>Report Problem</a>",
- "NAME": "H06077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99849754775217,
- 38.95693152182779,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06078'>Report Problem</a>",
- "NAME": "H06078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99733925205196,
- 38.95719635311464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06079'>Report Problem</a>",
- "NAME": "H06079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99586160890748,
- 38.95733626250208,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06080'>Report Problem</a>",
- "NAME": "H06080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99793840925834,
- 38.95777908260535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06081'>Report Problem</a>",
- "NAME": "H06081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96809799755391,
- 38.85987505231541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06082'>Report Problem</a>",
- "NAME": "H06082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05976869507656,
- 38.981008871324924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06083'>Report Problem</a>",
- "NAME": "H06083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02608698963667,
- 38.90273529100587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06084'>Report Problem</a>",
- "NAME": "H06084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08769689462318,
- 38.942346703998936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06085'>Report Problem</a>",
- "NAME": "H06085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03472261644147,
- 38.96547009301509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06086'>Report Problem</a>",
- "NAME": "H06086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94485381033545,
- 38.886486783862864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06087'>Report Problem</a>",
- "NAME": "H06087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94220207343118,
- 38.88646454828485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06088'>Report Problem</a>",
- "NAME": "H06088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94356073568663,
- 38.88646521270205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06089'>Report Problem</a>",
- "NAME": "H06089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98747781304758,
- 38.842167959259015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05948'>Report Problem</a>",
- "NAME": "H05948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94099601528771,
- 38.883244645922076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05949'>Report Problem</a>",
- "NAME": "H05949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10215977787801,
- 38.92727730470362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05950'>Report Problem</a>",
- "NAME": "H05950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03837335547803,
- 38.98224010102738,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05951'>Report Problem</a>",
- "NAME": "H05951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01802050851096,
- 38.8637222724142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05952'>Report Problem</a>",
- "NAME": "H05952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01609600496734,
- 38.8631720312659,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05953'>Report Problem</a>",
- "NAME": "H05953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01802035566848,
- 38.86311692491142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05954'>Report Problem</a>",
- "NAME": "H05954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01599134806169,
- 38.86389038571573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05955'>Report Problem</a>",
- "NAME": "H05955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01820848591795,
- 38.871453359366775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05956'>Report Problem</a>",
- "NAME": "H05956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02456242290125,
- 38.888849802552556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05957'>Report Problem</a>",
- "NAME": "H05957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06539118410345,
- 38.95645391376966,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05958'>Report Problem</a>",
- "NAME": "H05958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94038040174146,
- 38.907151875444924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05959'>Report Problem</a>",
- "NAME": "H05959"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95681652686993,
- 38.85847977659861,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05960'>Report Problem</a>",
- "NAME": "H05960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95611290911444,
- 38.89284632671675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05961'>Report Problem</a>",
- "NAME": "H05961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02202192001616,
- 38.90074432644311,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05962'>Report Problem</a>",
- "NAME": "H05962"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9717285935308,
- 38.91807873666925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05963'>Report Problem</a>",
- "NAME": "H05963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98282966520019,
- 38.94984280819875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05964'>Report Problem</a>",
- "NAME": "H05964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04659681880526,
- 38.89900236038672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05965'>Report Problem</a>",
- "NAME": "H05965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04659545148175,
- 38.8978973862243,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05966'>Report Problem</a>",
- "NAME": "H05966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04156943785787,
- 38.9163617204276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05967'>Report Problem</a>",
- "NAME": "H05967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06351862614333,
- 38.93552794684563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05968'>Report Problem</a>",
- "NAME": "H05968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07204188430285,
- 38.96586789486272,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05969'>Report Problem</a>",
- "NAME": "H05969"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99865951636669,
- 38.9584219405531,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05970'>Report Problem</a>",
- "NAME": "H05970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97242537636323,
- 38.93107214126279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05971'>Report Problem</a>",
- "NAME": "H05971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97524397992515,
- 38.88313590768739,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05972'>Report Problem</a>",
- "NAME": "H05972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97487754891152,
- 38.886512612792615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05973'>Report Problem</a>",
- "NAME": "H05973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97451783087179,
- 38.881905178881524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05974'>Report Problem</a>",
- "NAME": "H05974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97360028344937,
- 38.88361208229724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05975'>Report Problem</a>",
- "NAME": "H05975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97413080218112,
- 38.88266427561052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05976'>Report Problem</a>",
- "NAME": "H05976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96241389265245,
- 38.8827944708599,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05977'>Report Problem</a>",
- "NAME": "H05977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09588426819892,
- 38.923062051888984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05979'>Report Problem</a>",
- "NAME": "H05979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9411022380476,
- 38.88397998205178,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05980'>Report Problem</a>",
- "NAME": "H05980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01552695181967,
- 38.97072159974498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05981'>Report Problem</a>",
- "NAME": "H05981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06683192526043,
- 38.9561772750103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05982'>Report Problem</a>",
- "NAME": "H05982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98823338104727,
- 38.95168280418546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05983'>Report Problem</a>",
- "NAME": "H05983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05509903031954,
- 38.968148291757686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05984'>Report Problem</a>",
- "NAME": "H05984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01790540310722,
- 38.920408302321555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/02/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05985'>Report Problem</a>",
- "NAME": "H05985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98764593793524,
- 38.950961649418005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05986'>Report Problem</a>",
- "NAME": "H05986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01613912936068,
- 38.97072151686046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05987'>Report Problem</a>",
- "NAME": "H05987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08483002694584,
- 38.91203847116491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05988'>Report Problem</a>",
- "NAME": "H05988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04474705822429,
- 38.90862127541762,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05989'>Report Problem</a>",
- "NAME": "H05989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04481270414615,
- 38.90951482401254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05990'>Report Problem</a>",
- "NAME": "H05990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08686283829391,
- 38.914500695811604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05991'>Report Problem</a>",
- "NAME": "H05991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00049191615116,
- 38.91539354712342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05992'>Report Problem</a>",
- "NAME": "H05992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02999478653459,
- 38.91020337294831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05994'>Report Problem</a>",
- "NAME": "H05994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.944219965088,
- 38.88578784680498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05995'>Report Problem</a>",
- "NAME": "H05995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03025368005234,
- 38.90923054927279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05996'>Report Problem</a>",
- "NAME": "H05996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93141264742363,
- 38.87852562644527,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05997'>Report Problem</a>",
- "NAME": "H05997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93119704708621,
- 38.877684547874196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05998'>Report Problem</a>",
- "NAME": "H05998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93174383663276,
- 38.875606685377754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05999'>Report Problem</a>",
- "NAME": "H05999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08859089824388,
- 38.91637633057543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06000'>Report Problem</a>",
- "NAME": "H06000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00113383280268,
- 38.960589987119796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06001'>Report Problem</a>",
- "NAME": "H06001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98149197052334,
- 38.94880871526207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06002'>Report Problem</a>",
- "NAME": "H06002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98273343178656,
- 38.92135356986621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06003'>Report Problem</a>",
- "NAME": "H06003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08905254249221,
- 38.908255436197464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06004'>Report Problem</a>",
- "NAME": "H06004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08642463903071,
- 38.911785465336784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06005'>Report Problem</a>",
- "NAME": "H06005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98066441841266,
- 38.94719041532141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06006'>Report Problem</a>",
- "NAME": "H06006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92411977843128,
- 38.902247901349874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06007'>Report Problem</a>",
- "NAME": "H06007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98153274088584,
- 38.920302186893004,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06008'>Report Problem</a>",
- "NAME": "H06008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99781064518963,
- 38.95919601642933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06009'>Report Problem</a>",
- "NAME": "H06009"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09300732693742,
- 38.92526199349452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06010'>Report Problem</a>",
- "NAME": "H06010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99850861227173,
- 38.960232643607384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06011'>Report Problem</a>",
- "NAME": "H06011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06405404571017,
- 38.93764910925721,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06012'>Report Problem</a>",
- "NAME": "H06012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98842342578274,
- 38.94519929584205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06013'>Report Problem</a>",
- "NAME": "H06013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97411088595291,
- 38.935172178844155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06015'>Report Problem</a>",
- "NAME": "H06015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92867480510196,
- 38.9071245336008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06016'>Report Problem</a>",
- "NAME": "H06016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96472925627012,
- 38.91872350554345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06017'>Report Problem</a>",
- "NAME": "H06017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96592860396558,
- 38.918778055495416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06018'>Report Problem</a>",
- "NAME": "H06018"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00914256544131,
- 38.95702328350516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06019'>Report Problem</a>",
- "NAME": "H06019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92728840762776,
- 38.89352356757334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06020'>Report Problem</a>",
- "NAME": "H06020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92721286145478,
- 38.8944360054471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06021'>Report Problem</a>",
- "NAME": "H06021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92787943208923,
- 38.89086238290757,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06022'>Report Problem</a>",
- "NAME": "H06022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93911714344618,
- 38.901571990398054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06023'>Report Problem</a>",
- "NAME": "H06023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09339662574216,
- 38.924525072520275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06024'>Report Problem</a>",
- "NAME": "H06024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04023501742162,
- 38.92222307759083,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06025'>Report Problem</a>",
- "NAME": "H06025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94808340216768,
- 38.884660454119654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06026'>Report Problem</a>",
- "NAME": "H06026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94078687736402,
- 38.885615204732666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06027'>Report Problem</a>",
- "NAME": "H06027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93287718357305,
- 38.87726696848328,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06028'>Report Problem</a>",
- "NAME": "H06028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98823019091473,
- 38.95227836768254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darily<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06029'>Report Problem</a>",
- "NAME": "H06029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9178475664839,
- 38.88642737359512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06030'>Report Problem</a>",
- "NAME": "H06030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9572727160884,
- 38.86470335691979,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06031'>Report Problem</a>",
- "NAME": "H06031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02547835911794,
- 38.98158889462725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06032'>Report Problem</a>",
- "NAME": "H06032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97488577636561,
- 38.894901311216735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06033'>Report Problem</a>",
- "NAME": "H06033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09692314508263,
- 38.94121920977975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06034'>Report Problem</a>",
- "NAME": "H06034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99784274890723,
- 38.82406187624248,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06035'>Report Problem</a>",
- "NAME": "H06035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99940687597602,
- 38.82286928083087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06036'>Report Problem</a>",
- "NAME": "H06036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99898173788768,
- 38.823672941894145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06037'>Report Problem</a>",
- "NAME": "H06037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97939728263239,
- 38.947171984129106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06038'>Report Problem</a>",
- "NAME": "H06038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9901443534295,
- 38.91246358569445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06039'>Report Problem</a>",
- "NAME": "H06039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98895811107158,
- 38.911962165571076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06040'>Report Problem</a>",
- "NAME": "H06040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0062725280622,
- 38.94743688028898,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06041'>Report Problem</a>",
- "NAME": "H06041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98839846497783,
- 38.922078935114584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06042'>Report Problem</a>",
- "NAME": "H06042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05625078616974,
- 38.96293341782501,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06043'>Report Problem</a>",
- "NAME": "H06043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98102245181586,
- 38.94066209768925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06044'>Report Problem</a>",
- "NAME": "H06044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05473525151494,
- 38.97802773066404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06045'>Report Problem</a>",
- "NAME": "H06045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93272102105684,
- 38.87855594404109,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06046'>Report Problem</a>",
- "NAME": "H06046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99892992714582,
- 38.9620604321043,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06047'>Report Problem</a>",
- "NAME": "H06047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97468490040116,
- 38.929627710810465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06048'>Report Problem</a>",
- "NAME": "H06048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97387654143601,
- 38.91952447869471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06049'>Report Problem</a>",
- "NAME": "H06049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9816834075737,
- 38.916724318803766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06050'>Report Problem</a>",
- "NAME": "H06050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93191486500743,
- 38.90291925058489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06051'>Report Problem</a>",
- "NAME": "H06051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.940176118171,
- 38.90634862262025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06052'>Report Problem</a>",
- "NAME": "H06052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02553748370023,
- 38.94158888264981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06053'>Report Problem</a>",
- "NAME": "H06053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00097602102483,
- 38.96431731509948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06090'>Report Problem</a>",
- "NAME": "H06090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0577599003193,
- 38.93637889482694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06091'>Report Problem</a>",
- "NAME": "H06091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00260174349097,
- 38.96441213808114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06092'>Report Problem</a>",
- "NAME": "H06092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94900843706566,
- 38.89549251459384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06093'>Report Problem</a>",
- "NAME": "H06093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96222774679589,
- 38.86504851074198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06094'>Report Problem</a>",
- "NAME": "H06094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05471040593682,
- 38.982734754230385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06095'>Report Problem</a>",
- "NAME": "H06095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92486980613421,
- 38.88597992579633,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06096'>Report Problem</a>",
- "NAME": "H06096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93861073776398,
- 38.874721458004274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06097'>Report Problem</a>",
- "NAME": "H06097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09245548379204,
- 38.95474728762475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06098'>Report Problem</a>",
- "NAME": "H06098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9501536570703,
- 38.86125808516608,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06099'>Report Problem</a>",
- "NAME": "H06099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96343393682282,
- 38.9186451132847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06100'>Report Problem</a>",
- "NAME": "H06100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9619882486635,
- 38.918575666177475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06101'>Report Problem</a>",
- "NAME": "H06101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05489042359085,
- 38.96963052499907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06102'>Report Problem</a>",
- "NAME": "H06102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05673447072746,
- 38.970610453077406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06103'>Report Problem</a>",
- "NAME": "H06103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00406035059625,
- 38.83296137096221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06104'>Report Problem</a>",
- "NAME": "H06104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04650463091485,
- 38.905760159341455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06105'>Report Problem</a>",
- "NAME": "H06105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98518230763166,
- 38.91356362838349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06106'>Report Problem</a>",
- "NAME": "H06106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00242326872942,
- 38.938074260395545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06107'>Report Problem</a>",
- "NAME": "H06107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00288284917531,
- 38.94050063367342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06108'>Report Problem</a>",
- "NAME": "H06108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00165039664131,
- 38.93402393565909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06109'>Report Problem</a>",
- "NAME": "H06109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0022579435767,
- 38.93724085221533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06110'>Report Problem</a>",
- "NAME": "H06110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00496828811649,
- 38.940720185764945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06111'>Report Problem</a>",
- "NAME": "H06111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00136856635177,
- 38.93258892560665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06112'>Report Problem</a>",
- "NAME": "H06112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00554621031077,
- 38.94095562747284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06113'>Report Problem</a>",
- "NAME": "H06113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00258860043944,
- 38.93898181547361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06114'>Report Problem</a>",
- "NAME": "H06114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00200521433875,
- 38.93590150313327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06115'>Report Problem</a>",
- "NAME": "H06115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00291715284176,
- 38.939920805139906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/28/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06116'>Report Problem</a>",
- "NAME": "H06116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00702127244165,
- 38.94214178670973,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06117'>Report Problem</a>",
- "NAME": "H06117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0017748967706,
- 38.93470564605151,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06118'>Report Problem</a>",
- "NAME": "H06118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00348971845982,
- 38.94080676388743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06119'>Report Problem</a>",
- "NAME": "H06119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95670952665942,
- 38.85625743941417,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06120'>Report Problem</a>",
- "NAME": "H06120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91358531172793,
- 38.892999802024995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06121'>Report Problem</a>",
- "NAME": "H06121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98608126307448,
- 38.91326577017279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06122'>Report Problem</a>",
- "NAME": "H06122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96469978438265,
- 38.86558102386654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06123'>Report Problem</a>",
- "NAME": "H06123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9852286268318,
- 38.91166283889424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06124'>Report Problem</a>",
- "NAME": "H06124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99867448733681,
- 38.94999921111817,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06125'>Report Problem</a>",
- "NAME": "H06125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98027490100323,
- 38.90666245882123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06126'>Report Problem</a>",
- "NAME": "H06126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09420823086555,
- 38.92029601175147,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06127'>Report Problem</a>",
- "NAME": "H06127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98034693181015,
- 38.90784886123743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06128'>Report Problem</a>",
- "NAME": "H06128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04176581824595,
- 38.905786064837585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06129'>Report Problem</a>",
- "NAME": "H06129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98640305577776,
- 38.891955140684495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06130'>Report Problem</a>",
- "NAME": "H06130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99274741699661,
- 38.95131693106683,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06131'>Report Problem</a>",
- "NAME": "H06131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99295755905642,
- 38.952318708713214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06132'>Report Problem</a>",
- "NAME": "H06132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99802855821795,
- 38.96214426019148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06133'>Report Problem</a>",
- "NAME": "H06133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98808983547468,
- 38.93826546532368,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06134'>Report Problem</a>",
- "NAME": "H06134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96605687639418,
- 38.8652612942667,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06135'>Report Problem</a>",
- "NAME": "H06135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03870982584631,
- 38.906570744624176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06136'>Report Problem</a>",
- "NAME": "H06136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03867829737317,
- 38.90719478135571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06137'>Report Problem</a>",
- "NAME": "H06137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99363677130809,
- 38.838683349531685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06139'>Report Problem</a>",
- "NAME": "H06139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99684001492463,
- 38.85701257235884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06140'>Report Problem</a>",
- "NAME": "H06140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99661807443468,
- 38.858125620041555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06141'>Report Problem</a>",
- "NAME": "H06141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05235896186663,
- 38.98151379365338,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06142'>Report Problem</a>",
- "NAME": "H06142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06644973067202,
- 38.97271197567534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06143'>Report Problem</a>",
- "NAME": "H06143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06646379467917,
- 38.97410667667713,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, Metropolitan<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06144'>Report Problem</a>",
- "NAME": "H06144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93723731837102,
- 38.888360033807224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06145'>Report Problem</a>",
- "NAME": "H06145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99919591303542,
- 38.94715852783032,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06146'>Report Problem</a>",
- "NAME": "H06146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00581997092837,
- 38.83292053319816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06147'>Report Problem</a>",
- "NAME": "H06147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9407515068607,
- 38.88645899298755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06148'>Report Problem</a>",
- "NAME": "H06148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97916501147942,
- 38.8671966822501,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06149'>Report Problem</a>",
- "NAME": "H06149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09505145979456,
- 38.924103499999696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06150'>Report Problem</a>",
- "NAME": "H06150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96973994628644,
- 38.91966094780212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06151'>Report Problem</a>",
- "NAME": "H06151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94241885041961,
- 38.8857699108868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06152'>Report Problem</a>",
- "NAME": "H06152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10045663680148,
- 38.948500283782636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06153'>Report Problem</a>",
- "NAME": "H06153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95529213580222,
- 38.8713837024314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06154'>Report Problem</a>",
- "NAME": "H06154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09212590931568,
- 38.92023234351756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06155'>Report Problem</a>",
- "NAME": "H06155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99666803228124,
- 38.83934810097682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06156'>Report Problem</a>",
- "NAME": "H06156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0089091285063,
- 38.955727796172376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06157'>Report Problem</a>",
- "NAME": "H06157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9529222497127,
- 38.86814368115873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06158'>Report Problem</a>",
- "NAME": "H06158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03709180498784,
- 38.92866528056472,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06159'>Report Problem</a>",
- "NAME": "H06159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99621184832708,
- 38.9582694220759,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06160'>Report Problem</a>",
- "NAME": "H06160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98836708642243,
- 38.94081620030147,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06161'>Report Problem</a>",
- "NAME": "H06161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99518611881898,
- 38.95896328154054,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06162'>Report Problem</a>",
- "NAME": "H06162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09416615912777,
- 38.94119042068433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06163'>Report Problem</a>",
- "NAME": "H06163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09225954766166,
- 38.921239684561534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06164'>Report Problem</a>",
- "NAME": "H06164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92345936281907,
- 38.893063604169335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06165'>Report Problem</a>",
- "NAME": "H06165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92307132049972,
- 38.89379641455867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06166'>Report Problem</a>",
- "NAME": "H06166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92288369832943,
- 38.89470798302518,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06167'>Report Problem</a>",
- "NAME": "H06167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99381391780702,
- 38.84060029433971,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06168'>Report Problem</a>",
- "NAME": "H06168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99390928457731,
- 38.84244053613268,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06170'>Report Problem</a>",
- "NAME": "H06170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99522614225198,
- 38.8428721920872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06171'>Report Problem</a>",
- "NAME": "H06171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00864943260682,
- 38.96462427964531,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06172'>Report Problem</a>",
- "NAME": "H06172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98970179647013,
- 38.833358665734416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06173'>Report Problem</a>",
- "NAME": "H06173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06744837922692,
- 38.94625850431112,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 01/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06174'>Report Problem</a>",
- "NAME": "H06174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91631320690418,
- 38.89705537463737,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06175'>Report Problem</a>",
- "NAME": "H06175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0359271720447,
- 38.96679543672169,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06176'>Report Problem</a>",
- "NAME": "H06176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94113667628936,
- 38.86822133839423,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06177'>Report Problem</a>",
- "NAME": "H06177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07329495737362,
- 38.95274079191687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06178'>Report Problem</a>",
- "NAME": "H06178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00931592319759,
- 38.8730479486731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06179'>Report Problem</a>",
- "NAME": "H06179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08186968487222,
- 38.921479804219885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06180'>Report Problem</a>",
- "NAME": "H06180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99728308502863,
- 38.85889714578509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06181'>Report Problem</a>",
- "NAME": "H06181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94276031089639,
- 38.87804759224004,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06182'>Report Problem</a>",
- "NAME": "H06182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94343806433534,
- 38.87852689879248,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06183'>Report Problem</a>",
- "NAME": "H06183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00161160664943,
- 38.82523898608754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06184'>Report Problem</a>",
- "NAME": "H06184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02138445218266,
- 38.920593523172116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/29/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06185'>Report Problem</a>",
- "NAME": "H06185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94141218446286,
- 38.8788288703742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06186'>Report Problem</a>",
- "NAME": "H06186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9408989893484,
- 38.878240705966995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06187'>Report Problem</a>",
- "NAME": "H06187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98724337294172,
- 38.91286907656138,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06188'>Report Problem</a>",
- "NAME": "H06188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11141066065733,
- 38.931218377369206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06189'>Report Problem</a>",
- "NAME": "H06189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96551518143657,
- 38.85742972918487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06190'>Report Problem</a>",
- "NAME": "H06190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97782969378237,
- 38.844973421971964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06191'>Report Problem</a>",
- "NAME": "H06191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97892558862489,
- 38.8447595573216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06192'>Report Problem</a>",
- "NAME": "H06192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03022941080225,
- 38.987334138199124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06193'>Report Problem</a>",
- "NAME": "H06193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99661944495496,
- 38.959820017084816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06194'>Report Problem</a>",
- "NAME": "H06194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02038668311893,
- 38.95543100422687,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06195'>Report Problem</a>",
- "NAME": "H06195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07629460210578,
- 38.93100359485396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06196'>Report Problem</a>",
- "NAME": "H06196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98264504478333,
- 38.84936345547199,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06197'>Report Problem</a>",
- "NAME": "H06197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97339395910024,
- 38.9204393004522,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06199'>Report Problem</a>",
- "NAME": "H06199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9774492876573,
- 38.84374630891142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06200'>Report Problem</a>",
- "NAME": "H06200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97619209644365,
- 38.84390586007711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06201'>Report Problem</a>",
- "NAME": "H06201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98239542370581,
- 38.850693234384096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06202'>Report Problem</a>",
- "NAME": "H06202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98436858810177,
- 38.850261389634944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06203'>Report Problem</a>",
- "NAME": "H06203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03776977908477,
- 38.93577314821084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06205'>Report Problem</a>",
- "NAME": "H06205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05953436352812,
- 38.95364893159056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06206'>Report Problem</a>",
- "NAME": "H06206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02977432924227,
- 38.90052041671877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06207'>Report Problem</a>",
- "NAME": "H06207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02940476343012,
- 38.90126625818928,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06208'>Report Problem</a>",
- "NAME": "H06208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.094258520684,
- 38.91929347910597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06209'>Report Problem</a>",
- "NAME": "H06209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09428319469734,
- 38.91812243001221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06210'>Report Problem</a>",
- "NAME": "H06210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02602616166911,
- 38.9626041252422,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06211'>Report Problem</a>",
- "NAME": "H06211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01565576904014,
- 38.81413806822103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06212'>Report Problem</a>",
- "NAME": "H06212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00581539077301,
- 38.83013838688788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06213'>Report Problem</a>",
- "NAME": "H06213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97233486109403,
- 38.92153696207284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06214'>Report Problem</a>",
- "NAME": "H06214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98696677769223,
- 38.9257163885513,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06215'>Report Problem</a>",
- "NAME": "H06215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98064085409298,
- 38.856315199295395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06216'>Report Problem</a>",
- "NAME": "H06216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9839633760717,
- 38.92590815338525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06217'>Report Problem</a>",
- "NAME": "H06217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97476262795232,
- 38.883891878424166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06218'>Report Problem</a>",
- "NAME": "H06218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97325298149521,
- 38.88669385200874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06219'>Report Problem</a>",
- "NAME": "H06219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03259305120088,
- 38.9422787396782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06220'>Report Problem</a>",
- "NAME": "H06220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99507144966911,
- 38.947387471208174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06221'>Report Problem</a>",
- "NAME": "H06221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99572572291981,
- 38.94883266792357,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06222'>Report Problem</a>",
- "NAME": "H06222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99649820472746,
- 38.949493432630554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06223'>Report Problem</a>",
- "NAME": "H06223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99687157170628,
- 38.9555856730984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06224'>Report Problem</a>",
- "NAME": "H06224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99700678466596,
- 38.9487844684223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06225'>Report Problem</a>",
- "NAME": "H06225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99976600062061,
- 38.95802367481772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06226'>Report Problem</a>",
- "NAME": "H06226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06368184951641,
- 38.95697165243259,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06227'>Report Problem</a>",
- "NAME": "H06227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0306197951636,
- 38.94226810293982,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06228'>Report Problem</a>",
- "NAME": "H06228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99505617968411,
- 38.949166902620284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06229'>Report Problem</a>",
- "NAME": "H06229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9423743879173,
- 38.880398647126576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06230'>Report Problem</a>",
- "NAME": "H06230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93935168822561,
- 38.89562116997079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06231'>Report Problem</a>",
- "NAME": "H06231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96427747305485,
- 38.93221666532227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06232'>Report Problem</a>",
- "NAME": "H06232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94240438029138,
- 38.894600184110566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06233'>Report Problem</a>",
- "NAME": "H06233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94239217796873,
- 38.89529333600655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06234'>Report Problem</a>",
- "NAME": "H06234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9743369601892,
- 38.88605178866275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06235'>Report Problem</a>",
- "NAME": "H06235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04901240427685,
- 38.892242610504674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06236'>Report Problem</a>",
- "NAME": "H06236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96796990930274,
- 38.92563082237489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06237'>Report Problem</a>",
- "NAME": "H06237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98433653142877,
- 38.91245824011285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06238'>Report Problem</a>",
- "NAME": "H06238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92428916671932,
- 38.882295453971835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06239'>Report Problem</a>",
- "NAME": "H06239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97628602285232,
- 38.921413876135965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06240'>Report Problem</a>",
- "NAME": "H06240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97438081236051,
- 38.8493411338829,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06241'>Report Problem</a>",
- "NAME": "H06241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97048134432265,
- 38.87494720860754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06242'>Report Problem</a>",
- "NAME": "H06242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97840582822322,
- 38.84620436247066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06243'>Report Problem</a>",
- "NAME": "H06243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02973124928668,
- 38.918889394187204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06244'>Report Problem</a>",
- "NAME": "H06244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99402330572703,
- 38.958210245509385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06245'>Report Problem</a>",
- "NAME": "H06245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02891101827966,
- 38.89621451062037,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06246'>Report Problem</a>",
- "NAME": "H06246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9944033682652,
- 38.959210784624524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06247'>Report Problem</a>",
- "NAME": "H06247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99512996259504,
- 38.95814962621087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06248'>Report Problem</a>",
- "NAME": "H06248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04770241675219,
- 38.89224740476481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06249'>Report Problem</a>",
- "NAME": "H06249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93783640181822,
- 38.897391706500734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06250'>Report Problem</a>",
- "NAME": "H06250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03622686328043,
- 38.93930640229491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06251'>Report Problem</a>",
- "NAME": "H06251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01819944491953,
- 38.920364269245525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06252'>Report Problem</a>",
- "NAME": "H06252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02564083274441,
- 38.95203371777778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06253'>Report Problem</a>",
- "NAME": "H06253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99303127674953,
- 38.836687176739176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06254'>Report Problem</a>",
- "NAME": "H06254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00344501590587,
- 38.88889845719042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06255'>Report Problem</a>",
- "NAME": "H06255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01059001621702,
- 38.83092087782062,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06256'>Report Problem</a>",
- "NAME": "H06256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95319244257158,
- 38.871902817757814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06257'>Report Problem</a>",
- "NAME": "H06257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95508242451481,
- 38.869305031318554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06258'>Report Problem</a>",
- "NAME": "H06258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98113301212183,
- 38.85069970343017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06259'>Report Problem</a>",
- "NAME": "H06259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9294998001535,
- 38.90469723853815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06260'>Report Problem</a>",
- "NAME": "H06260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94765038391822,
- 38.864187581226396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06261'>Report Problem</a>",
- "NAME": "H06261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97428118517571,
- 38.884679610619116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/10/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06262'>Report Problem</a>",
- "NAME": "H06262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92864490045704,
- 38.90454047864754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06263'>Report Problem</a>",
- "NAME": "H06263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92957791443911,
- 38.905929376041406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06264'>Report Problem</a>",
- "NAME": "H06264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93277449939283,
- 38.90458369062743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06265'>Report Problem</a>",
- "NAME": "H06265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00638355957874,
- 38.9483255138871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06266'>Report Problem</a>",
- "NAME": "H06266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09315298852276,
- 38.91863010022487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06267'>Report Problem</a>",
- "NAME": "H06267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94243997268384,
- 38.88480422256583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06268'>Report Problem</a>",
- "NAME": "H06268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97007377156672,
- 38.85570729630734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06269'>Report Problem</a>",
- "NAME": "H06269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9722663752238,
- 38.86739029765275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06270'>Report Problem</a>",
- "NAME": "H06270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00356677372471,
- 38.88460711372881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06271'>Report Problem</a>",
- "NAME": "H06271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97198984969701,
- 38.903615619519506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06272'>Report Problem</a>",
- "NAME": "H06272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03827222194552,
- 38.935256926276104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06273'>Report Problem</a>",
- "NAME": "H06273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07035115169673,
- 38.927454508024304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06274'>Report Problem</a>",
- "NAME": "H06274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03752924335878,
- 38.91880127357638,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06275'>Report Problem</a>",
- "NAME": "H06275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99488631992267,
- 38.884702013610074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06276'>Report Problem</a>",
- "NAME": "H06276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06994602229719,
- 38.93161702385608,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06277'>Report Problem</a>",
- "NAME": "H06277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93912840534068,
- 38.89472418970253,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06278'>Report Problem</a>",
- "NAME": "H06278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98254085343383,
- 38.84801518308433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06279'>Report Problem</a>",
- "NAME": "H06279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98692561990302,
- 38.86815780822454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06280'>Report Problem</a>",
- "NAME": "H06280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93937412872188,
- 38.89841960325725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06282'>Report Problem</a>",
- "NAME": "H06282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93499296813131,
- 38.87638436050374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06283'>Report Problem</a>",
- "NAME": "H06283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08612362235728,
- 38.92073224430046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06285'>Report Problem</a>",
- "NAME": "H06285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.995857574278,
- 38.960452624411296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06286'>Report Problem</a>",
- "NAME": "H06286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93477383823897,
- 38.874801588678174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06287'>Report Problem</a>",
- "NAME": "H06287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99712425449216,
- 38.94883649416743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06288'>Report Problem</a>",
- "NAME": "H06288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00092780262983,
- 38.96265213137823,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "null<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06289'>Report Problem</a>",
- "NAME": "H06289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96619350160297,
- 38.87301705032258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06290'>Report Problem</a>",
- "NAME": "H06290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09550369065241,
- 38.942237450514476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06291'>Report Problem</a>",
- "NAME": "H06291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98251585590089,
- 38.9132035929625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06292'>Report Problem</a>",
- "NAME": "H06292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00456077768119,
- 38.960220385006615,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06293'>Report Problem</a>",
- "NAME": "H06293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96573375267165,
- 38.87062868046402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06294'>Report Problem</a>",
- "NAME": "H06294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09423838564805,
- 38.942076895686746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Super Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06295'>Report Problem</a>",
- "NAME": "H06295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99539474346301,
- 38.95540096383598,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06296'>Report Problem</a>",
- "NAME": "H06296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9940175433231,
- 38.830156908855116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06297'>Report Problem</a>",
- "NAME": "H06297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99062657159399,
- 38.94920961886874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06298'>Report Problem</a>",
- "NAME": "H06298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99904156565336,
- 38.947876927884714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06299'>Report Problem</a>",
- "NAME": "H06299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99862706836099,
- 38.944262314878884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06300'>Report Problem</a>",
- "NAME": "H06300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08258487213782,
- 38.94429687555969,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06301'>Report Problem</a>",
- "NAME": "H06301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93925477538414,
- 38.899156019925314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06302'>Report Problem</a>",
- "NAME": "H06302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0885594590181,
- 38.94328195208756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H06303'>Report Problem</a>",
- "NAME": "H06303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01053249848282,
- 38.91562512813556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03781'>Report Problem</a>",
- "NAME": "H03781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03149860060336,
- 38.952862722731545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03782'>Report Problem</a>",
- "NAME": "H03782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02978952208173,
- 38.98523809475416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03783'>Report Problem</a>",
- "NAME": "H03783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00214318600925,
- 38.892608703969614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03784'>Report Problem</a>",
- "NAME": "H03784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9761558275395,
- 38.93821864366102,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03785'>Report Problem</a>",
- "NAME": "H03785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02220534254324,
- 38.8932120025607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03786'>Report Problem</a>",
- "NAME": "H03786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02111058852749,
- 38.89195656479307,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03787'>Report Problem</a>",
- "NAME": "H03787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00675234093197,
- 38.90957841675109,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03788'>Report Problem</a>",
- "NAME": "H03788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08362394544916,
- 38.95807643903714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03789'>Report Problem</a>",
- "NAME": "H03789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94246674009094,
- 38.893803478602955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03790'>Report Problem</a>",
- "NAME": "H03790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01611616484657,
- 38.90387376595241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03791'>Report Problem</a>",
- "NAME": "H03791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06974704261751,
- 38.94702002188165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03792'>Report Problem</a>",
- "NAME": "H03792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04287549192607,
- 38.94308301345826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03793'>Report Problem</a>",
- "NAME": "H03793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02988559150447,
- 38.949782298964884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03794'>Report Problem</a>",
- "NAME": "H03794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02730913986697,
- 38.949800585428775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03795'>Report Problem</a>",
- "NAME": "H03795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03304522449442,
- 38.949794447490724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03796'>Report Problem</a>",
- "NAME": "H03796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96539942674859,
- 38.929515807648194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03797'>Report Problem</a>",
- "NAME": "H03797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96223814712577,
- 38.863772192872155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03798'>Report Problem</a>",
- "NAME": "H03798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02965254445662,
- 38.888705919570135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03800'>Report Problem</a>",
- "NAME": "H03800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97243633867602,
- 38.926373192424016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03801'>Report Problem</a>",
- "NAME": "H03801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97207397152667,
- 38.923561069928915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03802'>Report Problem</a>",
- "NAME": "H03802"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01428659595271,
- 38.91623474670085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03803'>Report Problem</a>",
- "NAME": "H03803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00579832133425,
- 38.88415803742989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03804'>Report Problem</a>",
- "NAME": "H03804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0150172330628,
- 38.910422521203124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03805'>Report Problem</a>",
- "NAME": "H03805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00571479737653,
- 38.89109405137284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03806'>Report Problem</a>",
- "NAME": "H03806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08614522626061,
- 38.95215297766018,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03807'>Report Problem</a>",
- "NAME": "H03807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01103439773551,
- 38.90863036801653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03808'>Report Problem</a>",
- "NAME": "H03808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0779268603956,
- 38.947865048048385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03809'>Report Problem</a>",
- "NAME": "H03809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03740162191232,
- 38.933698483600004,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03810'>Report Problem</a>",
- "NAME": "H03810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10274984945097,
- 38.931402965317936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03811'>Report Problem</a>",
- "NAME": "H03811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0299062475637,
- 38.95191435380435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03812'>Report Problem</a>",
- "NAME": "H03812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01661686463513,
- 38.9096776570696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03813'>Report Problem</a>",
- "NAME": "H03813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01782972779178,
- 38.909592907958555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03814'>Report Problem</a>",
- "NAME": "H03814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99926917484655,
- 38.90911252690702,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03815'>Report Problem</a>",
- "NAME": "H03815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04401075380775,
- 38.941242810660405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04573'>Report Problem</a>",
- "NAME": "H04573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98247566907497,
- 38.86455527497024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04574'>Report Problem</a>",
- "NAME": "H04574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97915190076975,
- 38.92825000615917,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04575'>Report Problem</a>",
- "NAME": "H04575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00848617036823,
- 38.947455883147875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04576'>Report Problem</a>",
- "NAME": "H04576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08865688967799,
- 38.926663430018685,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04577'>Report Problem</a>",
- "NAME": "H04577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03840922395163,
- 38.90295310786932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04578'>Report Problem</a>",
- "NAME": "H04578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97231945655625,
- 38.925513357060346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04579'>Report Problem</a>",
- "NAME": "H04579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97319377949559,
- 38.92563539836224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04580'>Report Problem</a>",
- "NAME": "H04580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97514742034268,
- 38.942727686927896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04581'>Report Problem</a>",
- "NAME": "H04581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95870943408765,
- 38.88206807182069,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04582'>Report Problem</a>",
- "NAME": "H04582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08618690709217,
- 38.912793332138605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04583'>Report Problem</a>",
- "NAME": "H04583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96519669330054,
- 38.8764126446771,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04584'>Report Problem</a>",
- "NAME": "H04584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02675807121229,
- 38.98448400242735,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04585'>Report Problem</a>",
- "NAME": "H04585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99626579690941,
- 38.92570171447717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04586'>Report Problem</a>",
- "NAME": "H04586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9751156022107,
- 38.90090247904665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04587'>Report Problem</a>",
- "NAME": "H04587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99626030430434,
- 38.927302167533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04588'>Report Problem</a>",
- "NAME": "H04588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9962482645452,
- 38.92642002798468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04589'>Report Problem</a>",
- "NAME": "H04589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9962433206097,
- 38.92854280077351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04590'>Report Problem</a>",
- "NAME": "H04590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0220432668738,
- 38.89021227240611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04591'>Report Problem</a>",
- "NAME": "H04591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93185908319334,
- 38.87966959348911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04592'>Report Problem</a>",
- "NAME": "H04592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.074497746621,
- 38.948771462686175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04593'>Report Problem</a>",
- "NAME": "H04593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95448218729926,
- 38.872255231877396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04594'>Report Problem</a>",
- "NAME": "H04594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00334698427989,
- 38.8473831294017,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04595'>Report Problem</a>",
- "NAME": "H04595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00214347673958,
- 38.846654690195734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04596'>Report Problem</a>",
- "NAME": "H04596"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95750475810465,
- 38.85932006460698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04597'>Report Problem</a>",
- "NAME": "H04597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98458713840753,
- 38.9236190345875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04598'>Report Problem</a>",
- "NAME": "H04598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98323534717085,
- 38.922626663047446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04599'>Report Problem</a>",
- "NAME": "H04599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01623885023443,
- 38.97141012872568,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04600'>Report Problem</a>",
- "NAME": "H04600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01978796767985,
- 38.892988155693764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04601'>Report Problem</a>",
- "NAME": "H04601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02647210699517,
- 38.93182104052187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04602'>Report Problem</a>",
- "NAME": "H04602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1036934056998,
- 38.93561914648893,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/19/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04603'>Report Problem</a>",
- "NAME": "H04603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07574784782663,
- 38.95474720801586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04604'>Report Problem</a>",
- "NAME": "H04604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00462868518309,
- 38.961212875890844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04605'>Report Problem</a>",
- "NAME": "H04605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93778117916608,
- 38.87734643562837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04606'>Report Problem</a>",
- "NAME": "H04606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01375841765004,
- 38.86520188988051,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05022'>Report Problem</a>",
- "NAME": "H05022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0137522976389,
- 38.866090948835264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05023'>Report Problem</a>",
- "NAME": "H05023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98356280950657,
- 38.92075862660752,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05024'>Report Problem</a>",
- "NAME": "H05024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0034120908475,
- 38.904445930173985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05025'>Report Problem</a>",
- "NAME": "H05025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0928556023799,
- 38.93770057371047,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05026'>Report Problem</a>",
- "NAME": "H05026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01533724253665,
- 38.88896453238649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05027'>Report Problem</a>",
- "NAME": "H05027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05861441732024,
- 38.9682167026899,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05028'>Report Problem</a>",
- "NAME": "H05028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06556747156624,
- 38.97497536009743,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy, K81D<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05029'>Report Problem</a>",
- "NAME": "H05029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98606535106647,
- 38.9279612915883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05030'>Report Problem</a>",
- "NAME": "H05030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03162297791978,
- 38.885040892859934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05031'>Report Problem</a>",
- "NAME": "H05031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0323420800206,
- 38.88373832686895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05032'>Report Problem</a>",
- "NAME": "H05032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0321542074068,
- 38.887229117817036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05033'>Report Problem</a>",
- "NAME": "H05033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03354985746132,
- 38.886070833104874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05034'>Report Problem</a>",
- "NAME": "H05034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03140953148022,
- 38.8858773877474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05035'>Report Problem</a>",
- "NAME": "H05035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03551169828295,
- 38.92332814579259,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/28/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05036'>Report Problem</a>",
- "NAME": "H05036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99046609877054,
- 38.94795288820776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05037'>Report Problem</a>",
- "NAME": "H05037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00594353330762,
- 38.943659814858094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05038'>Report Problem</a>",
- "NAME": "H05038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00161618402952,
- 38.943020627720564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05039'>Report Problem</a>",
- "NAME": "H05039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01238923987928,
- 38.82705428501907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05040'>Report Problem</a>",
- "NAME": "H05040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01182993991338,
- 38.83022063892504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05041'>Report Problem</a>",
- "NAME": "H05041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00884112192549,
- 38.82694375854108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05042'>Report Problem</a>",
- "NAME": "H05042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01298400896576,
- 38.83068515480144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05043'>Report Problem</a>",
- "NAME": "H05043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09808788545327,
- 38.92801164701411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05044'>Report Problem</a>",
- "NAME": "H05044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98863224263212,
- 38.92218740927983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05045'>Report Problem</a>",
- "NAME": "H05045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96052632262699,
- 38.86557783185515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05046'>Report Problem</a>",
- "NAME": "H05046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98921066185777,
- 38.92091357011748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05048'>Report Problem</a>",
- "NAME": "H05048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98215085199892,
- 38.86957207251508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05049'>Report Problem</a>",
- "NAME": "H05049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98522718555996,
- 38.86891050142056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/25/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05050'>Report Problem</a>",
- "NAME": "H05050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0499546101124,
- 38.89358347676023,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05051'>Report Problem</a>",
- "NAME": "H05051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0497332798997,
- 38.89744016121968,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05052'>Report Problem</a>",
- "NAME": "H05052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9864209424278,
- 38.86889759315796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05053'>Report Problem</a>",
- "NAME": "H05053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08101779113183,
- 38.91924394523919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05054'>Report Problem</a>",
- "NAME": "H05054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97601310001137,
- 38.87061481305235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05055'>Report Problem</a>",
- "NAME": "H05055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98626301435364,
- 38.93482434738986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05057'>Report Problem</a>",
- "NAME": "H05057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99391835311438,
- 38.92353555683909,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05484'>Report Problem</a>",
- "NAME": "H05484"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97895384996356,
- 38.8562319667927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05486'>Report Problem</a>",
- "NAME": "H05486"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06662986094076,
- 38.93897199708627,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05487'>Report Problem</a>",
- "NAME": "H05487"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08500477656486,
- 38.94636157876048,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05488'>Report Problem</a>",
- "NAME": "H05488"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09570676145275,
- 38.916981727412946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05489'>Report Problem</a>",
- "NAME": "H05489"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93569810511126,
- 38.90205788907862,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05490'>Report Problem</a>",
- "NAME": "H05490"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03172492017777,
- 38.92002771165384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05491'>Report Problem</a>",
- "NAME": "H05491"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03175860433724,
- 38.91912332954183,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05492'>Report Problem</a>",
- "NAME": "H05492"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03174318824335,
- 38.918167559090534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05493'>Report Problem</a>",
- "NAME": "H05493"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93593440790247,
- 38.87345590750142,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05494'>Report Problem</a>",
- "NAME": "H05494"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99273157234356,
- 38.950348189420104,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05495'>Report Problem</a>",
- "NAME": "H05495"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99161632767127,
- 38.95018658740326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05496'>Report Problem</a>",
- "NAME": "H05496"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05781221320706,
- 38.96775119564866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05497'>Report Problem</a>",
- "NAME": "H05497"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97100982029177,
- 38.8450158706856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05498'>Report Problem</a>",
- "NAME": "H05498"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95646963919498,
- 38.87472456184263,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05499'>Report Problem</a>",
- "NAME": "H05499"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99414263553922,
- 38.950813852234106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05500'>Report Problem</a>",
- "NAME": "H05500"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9384791468379,
- 38.873314528676836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05501'>Report Problem</a>",
- "NAME": "H05501"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99404448807678,
- 38.95228106051506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05502'>Report Problem</a>",
- "NAME": "H05502"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0457231216707,
- 38.9408742818191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05503'>Report Problem</a>",
- "NAME": "H05503"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04657929348775,
- 38.94069928202046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05504'>Report Problem</a>",
- "NAME": "H05504"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00709849638515,
- 38.94292329601782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05505'>Report Problem</a>",
- "NAME": "H05505"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94576109396932,
- 38.89259422153347,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05506'>Report Problem</a>",
- "NAME": "H05506"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94558188396927,
- 38.891913870936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05507'>Report Problem</a>",
- "NAME": "H05507"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92254397289948,
- 38.88875466375766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05508'>Report Problem</a>",
- "NAME": "H05508"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02826356909192,
- 38.94075401556329,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05509'>Report Problem</a>",
- "NAME": "H05509"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97538502013988,
- 38.90551103866676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05510'>Report Problem</a>",
- "NAME": "H05510"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08693398269055,
- 38.9388125000543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05511'>Report Problem</a>",
- "NAME": "H05511"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05325094029833,
- 38.94873202157929,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05512'>Report Problem</a>",
- "NAME": "H05512"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00633307475219,
- 38.955560482437505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05513'>Report Problem</a>",
- "NAME": "H05513"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00719671740485,
- 38.95525781782415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05514'>Report Problem</a>",
- "NAME": "H05514"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06103596832862,
- 38.97783349362207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05516'>Report Problem</a>",
- "NAME": "H05516"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92157449404803,
- 38.88469210093975,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05517'>Report Problem</a>",
- "NAME": "H05517"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91953182301285,
- 38.88511250215564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05518'>Report Problem</a>",
- "NAME": "H05518"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98966503465766,
- 38.84440642080874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05519'>Report Problem</a>",
- "NAME": "H05519"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97972079459664,
- 38.932163036297226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03816'>Report Problem</a>",
- "NAME": "H03816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07583127121498,
- 38.95837914262287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03817'>Report Problem</a>",
- "NAME": "H03817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99837109929354,
- 38.88214955232073,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03818'>Report Problem</a>",
- "NAME": "H03818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02003675885621,
- 38.97483586626943,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03819'>Report Problem</a>",
- "NAME": "H03819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0091949277422,
- 38.91029113423856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03820'>Report Problem</a>",
- "NAME": "H03820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.019984888335,
- 38.976081470009355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03821'>Report Problem</a>",
- "NAME": "H03821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03283127617412,
- 38.93309383213818,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03822'>Report Problem</a>",
- "NAME": "H03822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01836975361316,
- 38.93061661674601,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/02/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03823'>Report Problem</a>",
- "NAME": "H03823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02592774909643,
- 38.880608926839926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03824'>Report Problem</a>",
- "NAME": "H03824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02482457111897,
- 38.87955117612572,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03825'>Report Problem</a>",
- "NAME": "H03825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02458352960875,
- 38.88045888551386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03826'>Report Problem</a>",
- "NAME": "H03826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06137111328788,
- 38.97298340375881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03827'>Report Problem</a>",
- "NAME": "H03827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05998389447528,
- 38.97390770177412,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03828'>Report Problem</a>",
- "NAME": "H03828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99104257244016,
- 38.841369859504724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H03829'>Report Problem</a>",
- "NAME": "H03829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02968995198691,
- 38.96228283779921,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04106'>Report Problem</a>",
- "NAME": "H04106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02662046021695,
- 38.98075318200874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04107'>Report Problem</a>",
- "NAME": "H04107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08394924988205,
- 38.946342793546954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04108'>Report Problem</a>",
- "NAME": "H04108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01583246259305,
- 38.95321295549329,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04109'>Report Problem</a>",
- "NAME": "H04109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0361461916634,
- 38.981397163890676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04110'>Report Problem</a>",
- "NAME": "H04110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01152132910175,
- 38.955324880489755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04111'>Report Problem</a>",
- "NAME": "H04111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97843316131892,
- 38.93970995865392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04112'>Report Problem</a>",
- "NAME": "H04112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05994899536816,
- 38.96250647173729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04113'>Report Problem</a>",
- "NAME": "H04113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0280115590136,
- 38.915452420212716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04114'>Report Problem</a>",
- "NAME": "H04114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01041469430427,
- 38.959483864368494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04115'>Report Problem</a>",
- "NAME": "H04115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98606520204657,
- 38.90653434741664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04116'>Report Problem</a>",
- "NAME": "H04116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04370504333374,
- 38.987865345200035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04117'>Report Problem</a>",
- "NAME": "H04117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07970651270003,
- 38.91924776570916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04118'>Report Problem</a>",
- "NAME": "H04118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92068931982136,
- 38.89586850335346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04119'>Report Problem</a>",
- "NAME": "H04119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07970415217241,
- 38.92059208929606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04120'>Report Problem</a>",
- "NAME": "H04120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07927422833039,
- 38.94633428348339,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04121'>Report Problem</a>",
- "NAME": "H04121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97721557555866,
- 38.938385229237035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04122'>Report Problem</a>",
- "NAME": "H04122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97861261895501,
- 38.87306796392008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04123'>Report Problem</a>",
- "NAME": "H04123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93571146523806,
- 38.87753775199594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04124'>Report Problem</a>",
- "NAME": "H04124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06768601573768,
- 38.94033119237723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04125'>Report Problem</a>",
- "NAME": "H04125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03841979231008,
- 38.98871415213123,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04607'>Report Problem</a>",
- "NAME": "H04607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00897091413475,
- 38.95080860113652,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04608'>Report Problem</a>",
- "NAME": "H04608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95566920917643,
- 38.8936459042767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04609'>Report Problem</a>",
- "NAME": "H04609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03065180386986,
- 38.90534913608487,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04610'>Report Problem</a>",
- "NAME": "H04610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00429123856172,
- 38.836207020085304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04611'>Report Problem</a>",
- "NAME": "H04611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98069374773931,
- 38.935798078047505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04612'>Report Problem</a>",
- "NAME": "H04612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00369633955648,
- 38.966582870900986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04613'>Report Problem</a>",
- "NAME": "H04613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08691668956509,
- 38.922583751131285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04614'>Report Problem</a>",
- "NAME": "H04614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00268272882413,
- 38.96368794505766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04615'>Report Problem</a>",
- "NAME": "H04615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96319606119214,
- 38.87902539358634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04616'>Report Problem</a>",
- "NAME": "H04616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04282914906338,
- 38.93500849084072,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04617'>Report Problem</a>",
- "NAME": "H04617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09660518402474,
- 38.939429722714515,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04618'>Report Problem</a>",
- "NAME": "H04618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92651601450959,
- 38.88274017910485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04619'>Report Problem</a>",
- "NAME": "H04619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98902701740278,
- 38.946346369571366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04620'>Report Problem</a>",
- "NAME": "H04620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96752281405584,
- 38.8767567778405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04621'>Report Problem</a>",
- "NAME": "H04621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95022879417982,
- 38.89097905448548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04622'>Report Problem</a>",
- "NAME": "H04622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94830174370891,
- 38.891979894580444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04623'>Report Problem</a>",
- "NAME": "H04623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98812795640582,
- 38.939028588822886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04624'>Report Problem</a>",
- "NAME": "H04624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10462350669324,
- 38.93353791221197,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04625'>Report Problem</a>",
- "NAME": "H04625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10449779057846,
- 38.93469499767204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04626'>Report Problem</a>",
- "NAME": "H04626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03139073260229,
- 38.968320324785346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04627'>Report Problem</a>",
- "NAME": "H04627"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03330130136223,
- 38.96889766601351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04628'>Report Problem</a>",
- "NAME": "H04628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09758800028382,
- 38.91667825707182,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/20/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04629'>Report Problem</a>",
- "NAME": "H04629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97609021828806,
- 38.942729442004406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04630'>Report Problem</a>",
- "NAME": "H04630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94707593891499,
- 38.86494256079356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04631'>Report Problem</a>",
- "NAME": "H04631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97719521721187,
- 38.94191957448436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04632'>Report Problem</a>",
- "NAME": "H04632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97736728403088,
- 38.94275638779594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04633'>Report Problem</a>",
- "NAME": "H04633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02127003650206,
- 38.9250013426471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04634'>Report Problem</a>",
- "NAME": "H04634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0213887826405,
- 38.92584291396384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04635'>Report Problem</a>",
- "NAME": "H04635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0291020981162,
- 38.91028352972541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04636'>Report Problem</a>",
- "NAME": "H04636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00210563764855,
- 38.9076732829993,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04637'>Report Problem</a>",
- "NAME": "H04637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08760381600996,
- 38.91255918756391,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04638'>Report Problem</a>",
- "NAME": "H04638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99567095227769,
- 38.94061964263085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04639'>Report Problem</a>",
- "NAME": "H04639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10586745140442,
- 38.93273603444349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04640'>Report Problem</a>",
- "NAME": "H04640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01143281127955,
- 38.87430176593557,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05058'>Report Problem</a>",
- "NAME": "H05058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01133249622085,
- 38.87329667250693,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05059'>Report Problem</a>",
- "NAME": "H05059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0107995114957,
- 38.81858688196527,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/05/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05060'>Report Problem</a>",
- "NAME": "H05060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01077875586667,
- 38.81794002988944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05061'>Report Problem</a>",
- "NAME": "H05061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09842693223656,
- 38.92688925880241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05062'>Report Problem</a>",
- "NAME": "H05062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.963026527041,
- 38.86144021089745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05063'>Report Problem</a>",
- "NAME": "H05063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98480458702745,
- 38.92004243464827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05064'>Report Problem</a>",
- "NAME": "H05064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97979974702947,
- 38.89468716253029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05065'>Report Problem</a>",
- "NAME": "H05065"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00469927325149,
- 38.90378396981618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05066'>Report Problem</a>",
- "NAME": "H05066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01893886607361,
- 38.9626540244274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05067'>Report Problem</a>",
- "NAME": "H05067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02104207062123,
- 38.95432370915695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05068'>Report Problem</a>",
- "NAME": "H05068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09251123400333,
- 38.941344793063415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/10/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05069'>Report Problem</a>",
- "NAME": "H05069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9856761222235,
- 38.94225555225456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05070'>Report Problem</a>",
- "NAME": "H05070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92562213261203,
- 38.887688045282744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05071'>Report Problem</a>",
- "NAME": "H05071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00750636305683,
- 38.8302613460032,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05072'>Report Problem</a>",
- "NAME": "H05072"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00037855145172,
- 38.844638493800275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05074'>Report Problem</a>",
- "NAME": "H05074"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99917196697692,
- 38.84466602128081,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05075'>Report Problem</a>",
- "NAME": "H05075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00154609699699,
- 38.84464487116169,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05076'>Report Problem</a>",
- "NAME": "H05076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00787209540599,
- 38.95353583511847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05077'>Report Problem</a>",
- "NAME": "H05077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97995455193995,
- 38.86956450942505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05078'>Report Problem</a>",
- "NAME": "H05078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9576014048161,
- 38.88683738905643,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05079'>Report Problem</a>",
- "NAME": "H05079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95913925166877,
- 38.88682973953758,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05080'>Report Problem</a>",
- "NAME": "H05080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00537921060618,
- 38.84680100912937,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05081'>Report Problem</a>",
- "NAME": "H05081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00799973529547,
- 38.825209139206294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05082'>Report Problem</a>",
- "NAME": "H05082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96196872270433,
- 38.93118879172168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05083'>Report Problem</a>",
- "NAME": "H05083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95767189735734,
- 38.884352064981464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05084'>Report Problem</a>",
- "NAME": "H05084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00826167700262,
- 38.820695830109045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05085'>Report Problem</a>",
- "NAME": "H05085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94894867187764,
- 38.86454140307832,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05086'>Report Problem</a>",
- "NAME": "H05086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01064260327846,
- 38.819177330202,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05087'>Report Problem</a>",
- "NAME": "H05087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00323280558295,
- 38.84621122460502,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05088'>Report Problem</a>",
- "NAME": "H05088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98667557492709,
- 38.94175972814463,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05089'>Report Problem</a>",
- "NAME": "H05089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98023005942686,
- 38.94290812913477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05090'>Report Problem</a>",
- "NAME": "H05090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0001940108123,
- 38.860781675858895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05092'>Report Problem</a>",
- "NAME": "H05092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99958320474774,
- 38.860402600966225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05093'>Report Problem</a>",
- "NAME": "H05093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96306732961972,
- 38.86279209913632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05520'>Report Problem</a>",
- "NAME": "H05520"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93401829364757,
- 38.873929042896556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05521'>Report Problem</a>",
- "NAME": "H05521"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00800020844989,
- 38.95771740875306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05522'>Report Problem</a>",
- "NAME": "H05522"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0424771027105,
- 38.90827484198636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05523'>Report Problem</a>",
- "NAME": "H05523"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04322636584824,
- 38.91028066242064,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05524'>Report Problem</a>",
- "NAME": "H05524"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04240195724333,
- 38.907292491047265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05525'>Report Problem</a>",
- "NAME": "H05525"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04469769490164,
- 38.91266065297972,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05526'>Report Problem</a>",
- "NAME": "H05526"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04451561389328,
- 38.911836639587335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05527'>Report Problem</a>",
- "NAME": "H05527"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96160296571458,
- 38.855463680111455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05528'>Report Problem</a>",
- "NAME": "H05528"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01024481073367,
- 38.96814746468498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05529'>Report Problem</a>",
- "NAME": "H05529"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00896588098301,
- 38.968301061173875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05530'>Report Problem</a>",
- "NAME": "H05530"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96627164321573,
- 38.874653836202945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05531'>Report Problem</a>",
- "NAME": "H05531"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0091197293331,
- 38.96655373830583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05532'>Report Problem</a>",
- "NAME": "H05532"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01145911397474,
- 38.96827144053048,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05533'>Report Problem</a>",
- "NAME": "H05533"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01024054727272,
- 38.96738652977421,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05534'>Report Problem</a>",
- "NAME": "H05534"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9614409126438,
- 38.85718874049464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/17/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05535'>Report Problem</a>",
- "NAME": "H05535"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97955204381321,
- 38.85713757304962,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05536'>Report Problem</a>",
- "NAME": "H05536"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97911540950061,
- 38.85718106951473,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05537'>Report Problem</a>",
- "NAME": "H05537"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97808529519855,
- 38.85593256506634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05538'>Report Problem</a>",
- "NAME": "H05538"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97808407054877,
- 38.85718197049466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05539'>Report Problem</a>",
- "NAME": "H05539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00621642346994,
- 38.96827299882037,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05541'>Report Problem</a>",
- "NAME": "H05541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95840951134817,
- 38.87186517340588,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05542'>Report Problem</a>",
- "NAME": "H05542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95790517974162,
- 38.87092592959299,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05543'>Report Problem</a>",
- "NAME": "H05543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03464866168709,
- 38.91714202713414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05544'>Report Problem</a>",
- "NAME": "H05544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0346678328603,
- 38.914926052631984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05545'>Report Problem</a>",
- "NAME": "H05545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03469011507521,
- 38.91865831492271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05546'>Report Problem</a>",
- "NAME": "H05546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03466536158568,
- 38.91423042971323,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05547'>Report Problem</a>",
- "NAME": "H05547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92607490962675,
- 38.90363582020827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05548'>Report Problem</a>",
- "NAME": "H05548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93264106063309,
- 38.90304841896356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05549'>Report Problem</a>",
- "NAME": "H05549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93362120518705,
- 38.902963301490914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05550'>Report Problem</a>",
- "NAME": "H05550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93064480504816,
- 38.9032437772404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05551'>Report Problem</a>",
- "NAME": "H05551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92955130241519,
- 38.903609186507865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05552'>Report Problem</a>",
- "NAME": "H05552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93925617891294,
- 38.90265226387361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05553'>Report Problem</a>",
- "NAME": "H05553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93459673696846,
- 38.90278903552854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05554'>Report Problem</a>",
- "NAME": "H05554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03444388068098,
- 38.90472147679435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04126'>Report Problem</a>",
- "NAME": "H04126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03444419634658,
- 38.90554230861681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04127'>Report Problem</a>",
- "NAME": "H04127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05965348159785,
- 38.964043007414226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04128'>Report Problem</a>",
- "NAME": "H04128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97826183480795,
- 38.94191356198563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04129'>Report Problem</a>",
- "NAME": "H04129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06124494758235,
- 38.975321061401495,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04130'>Report Problem</a>",
- "NAME": "H04130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06039680541126,
- 38.975982373304525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04131'>Report Problem</a>",
- "NAME": "H04131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01462480695498,
- 38.953237083802165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04132'>Report Problem</a>",
- "NAME": "H04132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07784865034364,
- 38.921501847940014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04133'>Report Problem</a>",
- "NAME": "H04133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9738844456461,
- 38.89520050273513,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04134'>Report Problem</a>",
- "NAME": "H04134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09912209734335,
- 38.91800002002581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04135'>Report Problem</a>",
- "NAME": "H04135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07410363446063,
- 38.91816021090756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04136'>Report Problem</a>",
- "NAME": "H04136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0133816496918,
- 38.95214409718589,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04137'>Report Problem</a>",
- "NAME": "H04137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97911517308313,
- 38.86409238340526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04138'>Report Problem</a>",
- "NAME": "H04138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0965817045513,
- 38.9463557131952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04139'>Report Problem</a>",
- "NAME": "H04139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01162206136723,
- 38.95441416186452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Am. Darling<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04140'>Report Problem</a>",
- "NAME": "H04140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07278076615214,
- 38.951453353418316,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04141'>Report Problem</a>",
- "NAME": "H04141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01216566909041,
- 38.952363608455315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04142'>Report Problem</a>",
- "NAME": "H04142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01715222858077,
- 38.96122928455193,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04143'>Report Problem</a>",
- "NAME": "H04143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96827071763546,
- 38.93403079284673,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04144'>Report Problem</a>",
- "NAME": "H04144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9761338999655,
- 38.94080510023721,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04145'>Report Problem</a>",
- "NAME": "H04145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0114410067199,
- 38.95222911607406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04146'>Report Problem</a>",
- "NAME": "H04146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01342776104484,
- 38.9531823490413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04147'>Report Problem</a>",
- "NAME": "H04147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09077952107053,
- 38.9479546939858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04148'>Report Problem</a>",
- "NAME": "H04148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0924601142271,
- 38.947857483699394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04149'>Report Problem</a>",
- "NAME": "H04149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93584317933272,
- 38.87483335010564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04150'>Report Problem</a>",
- "NAME": "H04150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9312273930607,
- 38.89011876072355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04151'>Report Problem</a>",
- "NAME": "H04151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08395563715916,
- 38.94485097178136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04152'>Report Problem</a>",
- "NAME": "H04152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.023881629564,
- 38.897531732988455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04153'>Report Problem</a>",
- "NAME": "H04153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0863855825512,
- 38.945605248842256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04154'>Report Problem</a>",
- "NAME": "H04154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05069929959917,
- 38.89363286410995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04155'>Report Problem</a>",
- "NAME": "H04155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07870592821183,
- 38.92161838194337,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04156'>Report Problem</a>",
- "NAME": "H04156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93664978072373,
- 38.87759329704105,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04157'>Report Problem</a>",
- "NAME": "H04157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99793004310953,
- 38.84460272154863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04158'>Report Problem</a>",
- "NAME": "H04158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96825037280703,
- 38.93498776623604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04159'>Report Problem</a>",
- "NAME": "H04159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07420000848023,
- 38.95152788755235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04641'>Report Problem</a>",
- "NAME": "H04641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99468330923014,
- 38.9047647096094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04642'>Report Problem</a>",
- "NAME": "H04642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99487608617089,
- 38.90458818157047,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04643'>Report Problem</a>",
- "NAME": "H04643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99630852290727,
- 38.905455577598765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04644'>Report Problem</a>",
- "NAME": "H04644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96905745347226,
- 38.93772639733008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04645'>Report Problem</a>",
- "NAME": "H04645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03586691548374,
- 38.93666840682188,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04646'>Report Problem</a>",
- "NAME": "H04646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06282027044647,
- 38.97360980561795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04647'>Report Problem</a>",
- "NAME": "H04647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97980878550244,
- 38.89818613894851,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04648'>Report Problem</a>",
- "NAME": "H04648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97949250667071,
- 38.89930675095255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04649'>Report Problem</a>",
- "NAME": "H04649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05904905542043,
- 38.90273546012486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04650'>Report Problem</a>",
- "NAME": "H04650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03325891291323,
- 38.90729610909179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04651'>Report Problem</a>",
- "NAME": "H04651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09242135373977,
- 38.945588732806186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04652'>Report Problem</a>",
- "NAME": "H04652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98666491183164,
- 38.904845937446964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 12/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04653'>Report Problem</a>",
- "NAME": "H04653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09813772020284,
- 38.91702730210631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04654'>Report Problem</a>",
- "NAME": "H04654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9800504526319,
- 38.89725149981552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04655'>Report Problem</a>",
- "NAME": "H04655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01939644026498,
- 38.94433388803896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04656'>Report Problem</a>",
- "NAME": "H04656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06917715330414,
- 38.94225542747022,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04657'>Report Problem</a>",
- "NAME": "H04657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0309787170839,
- 38.90977135535689,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04658'>Report Problem</a>",
- "NAME": "H04658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0057168927409,
- 38.909475245400714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04659'>Report Problem</a>",
- "NAME": "H04659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01088024513119,
- 38.96008872644179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04660'>Report Problem</a>",
- "NAME": "H04660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01139043684941,
- 38.9594910700732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04661'>Report Problem</a>",
- "NAME": "H04661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02949613735709,
- 38.96982295120882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04662'>Report Problem</a>",
- "NAME": "H04662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9938803508378,
- 38.90423548372707,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04663'>Report Problem</a>",
- "NAME": "H04663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07070448196514,
- 38.927447853852385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04664'>Report Problem</a>",
- "NAME": "H04664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98596086268006,
- 38.9235782648783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04665'>Report Problem</a>",
- "NAME": "H04665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08626376844042,
- 38.950439750351464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04666'>Report Problem</a>",
- "NAME": "H04666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02601997387785,
- 38.96148905798413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04667'>Report Problem</a>",
- "NAME": "H04667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99354740559181,
- 38.94058844807709,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04668'>Report Problem</a>",
- "NAME": "H04668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01573418003876,
- 38.948036139246746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04669'>Report Problem</a>",
- "NAME": "H04669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97223546063009,
- 38.93956825659346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04670'>Report Problem</a>",
- "NAME": "H04670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08636939461488,
- 38.94714479467891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04671'>Report Problem</a>",
- "NAME": "H04671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98198782552936,
- 38.90562092893928,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04672'>Report Problem</a>",
- "NAME": "H04672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.962745100922,
- 38.877293368879705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04673'>Report Problem</a>",
- "NAME": "H04673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96596344337678,
- 38.92816919467666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04674'>Report Problem</a>",
- "NAME": "H04674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00793752908118,
- 38.96407328653882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05094'>Report Problem</a>",
- "NAME": "H05094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05706186163043,
- 38.931310580293584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05095'>Report Problem</a>",
- "NAME": "H05095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01115767264281,
- 38.82048398900144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05096'>Report Problem</a>",
- "NAME": "H05096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00080082980088,
- 38.931393726925926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05097'>Report Problem</a>",
- "NAME": "H05097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00140140107794,
- 38.86035805567028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05099'>Report Problem</a>",
- "NAME": "H05099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00579112172366,
- 38.8766800024697,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05100'>Report Problem</a>",
- "NAME": "H05100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00568714004498,
- 38.878455507983176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05101'>Report Problem</a>",
- "NAME": "H05101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99118158164589,
- 38.86075710134952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05103'>Report Problem</a>",
- "NAME": "H05103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97124438330663,
- 38.895875654275656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05104'>Report Problem</a>",
- "NAME": "H05104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96734037632208,
- 38.85526601549889,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05105'>Report Problem</a>",
- "NAME": "H05105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03660727158277,
- 38.941910031317505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05106'>Report Problem</a>",
- "NAME": "H05106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95796514889975,
- 38.89134906879623,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05107'>Report Problem</a>",
- "NAME": "H05107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96014188545806,
- 38.891340382047275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05108'>Report Problem</a>",
- "NAME": "H05108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00550992983898,
- 38.847927517413034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05109'>Report Problem</a>",
- "NAME": "H05109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0027490084969,
- 38.847984305182536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05110'>Report Problem</a>",
- "NAME": "H05110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00459417437982,
- 38.84897402224414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05111'>Report Problem</a>",
- "NAME": "H05111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01890025915684,
- 38.93272030496153,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05112'>Report Problem</a>",
- "NAME": "H05112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00122265650533,
- 38.84582209829062,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05113'>Report Problem</a>",
- "NAME": "H05113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93426325574934,
- 38.87934935379497,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05114'>Report Problem</a>",
- "NAME": "H05114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93578712039782,
- 38.879616480677775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05115'>Report Problem</a>",
- "NAME": "H05115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93547493419248,
- 38.88055920802927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05116'>Report Problem</a>",
- "NAME": "H05116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99112066636087,
- 38.86343684875891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05117'>Report Problem</a>",
- "NAME": "H05117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07072592528898,
- 38.94117230757642,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05118'>Report Problem</a>",
- "NAME": "H05118"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10008038390623,
- 38.934232242301135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05119'>Report Problem</a>",
- "NAME": "H05119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00543642575657,
- 38.944333587181326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05120'>Report Problem</a>",
- "NAME": "H05120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97205519821854,
- 38.90557859098065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05121'>Report Problem</a>",
- "NAME": "H05121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97400418415732,
- 38.90556770838965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05122'>Report Problem</a>",
- "NAME": "H05122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97029875684811,
- 38.89684560955335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 04/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05123'>Report Problem</a>",
- "NAME": "H05123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99494100183634,
- 38.855549825340795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05124'>Report Problem</a>",
- "NAME": "H05124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96458497288435,
- 38.857082157904834,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05125'>Report Problem</a>",
- "NAME": "H05125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96537773988202,
- 38.8551334674857,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05126'>Report Problem</a>",
- "NAME": "H05126"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96275655477618,
- 38.85631954815287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05127'>Report Problem</a>",
- "NAME": "H05127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96404030432578,
- 38.85573465505948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05129'>Report Problem</a>",
- "NAME": "H05129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96238711494429,
- 38.855013378809616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05130'>Report Problem</a>",
- "NAME": "H05130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9319147355934,
- 38.90305483527768,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05555'>Report Problem</a>",
- "NAME": "H05555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03253594381103,
- 38.986995981806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05556'>Report Problem</a>",
- "NAME": "H05556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03185964113344,
- 38.98760103308529,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05557'>Report Problem</a>",
- "NAME": "H05557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04689553390442,
- 38.93270750655063,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 01/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05558'>Report Problem</a>",
- "NAME": "H05558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05241885645074,
- 38.93411307681662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05559'>Report Problem</a>",
- "NAME": "H05559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00616467837328,
- 38.824165925353434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05560'>Report Problem</a>",
- "NAME": "H05560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94679255764767,
- 38.869914120035084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05561'>Report Problem</a>",
- "NAME": "H05561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01020743214772,
- 38.823673355724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05562'>Report Problem</a>",
- "NAME": "H05562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01161555115145,
- 38.823558384037995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05563'>Report Problem</a>",
- "NAME": "H05563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94043824416006,
- 38.87132346189441,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05564'>Report Problem</a>",
- "NAME": "H05564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94936568570252,
- 38.86739391851876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05565'>Report Problem</a>",
- "NAME": "H05565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93756086953839,
- 38.872467674792226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05566'>Report Problem</a>",
- "NAME": "H05566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00770574768796,
- 38.82378353218324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05567'>Report Problem</a>",
- "NAME": "H05567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00873811461366,
- 38.82361186604235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05568'>Report Problem</a>",
- "NAME": "H05568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93807556038735,
- 38.872089262565886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05569'>Report Problem</a>",
- "NAME": "H05569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01054065974114,
- 38.86739317842726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05570'>Report Problem</a>",
- "NAME": "H05570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98650805910393,
- 38.84524003724452,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05571'>Report Problem</a>",
- "NAME": "H05571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98289487281518,
- 38.84636191650105,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05574'>Report Problem</a>",
- "NAME": "H05574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99653065523252,
- 38.94998428548498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05575'>Report Problem</a>",
- "NAME": "H05575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99798412214963,
- 38.94998705809843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05576'>Report Problem</a>",
- "NAME": "H05576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98489755271059,
- 38.8775732527253,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05577'>Report Problem</a>",
- "NAME": "H05577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96657403496258,
- 38.872071872173485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05578'>Report Problem</a>",
- "NAME": "H05578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00285028184724,
- 38.96115491960757,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05579'>Report Problem</a>",
- "NAME": "H05579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96759612651366,
- 38.87466361599137,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05580'>Report Problem</a>",
- "NAME": "H05580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96623290382512,
- 38.87469275930876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05581'>Report Problem</a>",
- "NAME": "H05581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00261994094924,
- 38.8316679052314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05582'>Report Problem</a>",
- "NAME": "H05582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95932028643148,
- 38.89482390591427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05583'>Report Problem</a>",
- "NAME": "H05583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02542357594496,
- 38.98347566844439,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05584'>Report Problem</a>",
- "NAME": "H05584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0254029306618,
- 38.982771383640156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05585'>Report Problem</a>",
- "NAME": "H05585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02640616073933,
- 38.98268025052983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05586'>Report Problem</a>",
- "NAME": "H05586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08500227559601,
- 38.94714712095462,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05587'>Report Problem</a>",
- "NAME": "H05587"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08362220401071,
- 38.94715135026438,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05588'>Report Problem</a>",
- "NAME": "H05588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02440190090958,
- 38.98258836965726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05589'>Report Problem</a>",
- "NAME": "H05589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02456104844556,
- 38.98151992575786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05590'>Report Problem</a>",
- "NAME": "H05590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06777648822873,
- 38.905320327622675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04160'>Report Problem</a>",
- "NAME": "H04160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04300366269197,
- 38.98494873782209,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04161'>Report Problem</a>",
- "NAME": "H04161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0512314150634,
- 38.939490719849296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04162'>Report Problem</a>",
- "NAME": "H04162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01468092237296,
- 38.95228681242221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04163'>Report Problem</a>",
- "NAME": "H04163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05798077538691,
- 38.93095781308936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04164'>Report Problem</a>",
- "NAME": "H04164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97928430455137,
- 38.9397357051547,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04165'>Report Problem</a>",
- "NAME": "H04165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09876483038914,
- 38.94134825244927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04166'>Report Problem</a>",
- "NAME": "H04166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09692235319008,
- 38.94119670771613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04167'>Report Problem</a>",
- "NAME": "H04167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05863785500263,
- 38.9588363347859,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04168'>Report Problem</a>",
- "NAME": "H04168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0575501814373,
- 38.958462374780034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04169'>Report Problem</a>",
- "NAME": "H04169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0751152219859,
- 38.919940818204296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04170'>Report Problem</a>",
- "NAME": "H04170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09012352660744,
- 38.95590037430198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04171'>Report Problem</a>",
- "NAME": "H04171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9372235000234,
- 38.87853321850827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04172'>Report Problem</a>",
- "NAME": "H04172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09449979552335,
- 38.947953601576536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04173'>Report Problem</a>",
- "NAME": "H04173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0289106558102,
- 38.88744086085086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04174'>Report Problem</a>",
- "NAME": "H04174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03163435944765,
- 38.88744510954168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04175'>Report Problem</a>",
- "NAME": "H04175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.030350692949,
- 38.88745095426933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04176'>Report Problem</a>",
- "NAME": "H04176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01898416963326,
- 38.914889764368034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04177'>Report Problem</a>",
- "NAME": "H04177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00537196189624,
- 38.84079241280309,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04178'>Report Problem</a>",
- "NAME": "H04178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01501065894607,
- 38.9673886361425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04179'>Report Problem</a>",
- "NAME": "H04179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98316393234396,
- 38.905425073642945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04180'>Report Problem</a>",
- "NAME": "H04180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0649515439531,
- 38.976978665773245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04181'>Report Problem</a>",
- "NAME": "H04181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97588851739661,
- 38.86959941394611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04182'>Report Problem</a>",
- "NAME": "H04182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9828103479725,
- 38.915086027457555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04183'>Report Problem</a>",
- "NAME": "H04183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93618149557425,
- 38.87850321432359,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04184'>Report Problem</a>",
- "NAME": "H04184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02990746133075,
- 38.962781254029906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04185'>Report Problem</a>",
- "NAME": "H04185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03216845575406,
- 38.96244307860228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04186'>Report Problem</a>",
- "NAME": "H04186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03110172300877,
- 38.96295824288548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04187'>Report Problem</a>",
- "NAME": "H04187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98208432681712,
- 38.89344620013549,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04188'>Report Problem</a>",
- "NAME": "H04188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08503009544293,
- 38.95708539854154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04189'>Report Problem</a>",
- "NAME": "H04189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03113282203469,
- 38.88768421857263,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04190'>Report Problem</a>",
- "NAME": "H04190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0297787030391,
- 38.88769007576988,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04191'>Report Problem</a>",
- "NAME": "H04191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00798063343545,
- 38.88315079834074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04192'>Report Problem</a>",
- "NAME": "H04192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98069360191194,
- 38.87069748600254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04193'>Report Problem</a>",
- "NAME": "H04193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02989833110495,
- 38.92679666687976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04675'>Report Problem</a>",
- "NAME": "H04675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99812129879997,
- 38.92420748637869,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04676'>Report Problem</a>",
- "NAME": "H04676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05527318635855,
- 38.976562226456686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04677'>Report Problem</a>",
- "NAME": "H04677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98630702966962,
- 38.92009875123552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04678'>Report Problem</a>",
- "NAME": "H04678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98569287661115,
- 38.92090340033059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04679'>Report Problem</a>",
- "NAME": "H04679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06309926998024,
- 38.97162257362873,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04680'>Report Problem</a>",
- "NAME": "H04680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97730234557034,
- 38.865136399541704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04681'>Report Problem</a>",
- "NAME": "H04681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08118012218975,
- 38.94324616884795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04682'>Report Problem</a>",
- "NAME": "H04682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02719994531716,
- 38.968686136398794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04683'>Report Problem</a>",
- "NAME": "H04683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03523902646883,
- 38.949794716634905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04684'>Report Problem</a>",
- "NAME": "H04684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99032450482852,
- 38.94720062224963,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04685'>Report Problem</a>",
- "NAME": "H04685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98772160763963,
- 38.92114451368463,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04686'>Report Problem</a>",
- "NAME": "H04686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96687002701309,
- 38.875558297545695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04687'>Report Problem</a>",
- "NAME": "H04687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9808680110604,
- 38.87941724764165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04688'>Report Problem</a>",
- "NAME": "H04688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96818994498747,
- 38.87623023152657,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04689'>Report Problem</a>",
- "NAME": "H04689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08065713955396,
- 38.907550882824715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04690'>Report Problem</a>",
- "NAME": "H04690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09930180858414,
- 38.931646945111886,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04691'>Report Problem</a>",
- "NAME": "H04691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07589448492523,
- 38.928894856373844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04692'>Report Problem</a>",
- "NAME": "H04692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07575830384523,
- 38.916280434923756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04693'>Report Problem</a>",
- "NAME": "H04693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0331880811468,
- 38.96315717507701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04694'>Report Problem</a>",
- "NAME": "H04694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02987274199552,
- 38.936270241141855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04695'>Report Problem</a>",
- "NAME": "H04695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02988145523875,
- 38.93452092612295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04696'>Report Problem</a>",
- "NAME": "H04696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02989826064129,
- 38.9323771798217,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04697'>Report Problem</a>",
- "NAME": "H04697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03333335447687,
- 38.962205195674784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04698'>Report Problem</a>",
- "NAME": "H04698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93299608995788,
- 38.892710714341405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04699'>Report Problem</a>",
- "NAME": "H04699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93301445960975,
- 38.893280144078766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04700'>Report Problem</a>",
- "NAME": "H04700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0199662573189,
- 38.876432897439585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04701'>Report Problem</a>",
- "NAME": "H04701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98064403346592,
- 38.936998047201634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04702'>Report Problem</a>",
- "NAME": "H04702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93299950532439,
- 38.89390997378927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04703'>Report Problem</a>",
- "NAME": "H04703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93283044578831,
- 38.89465833712803,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04704'>Report Problem</a>",
- "NAME": "H04704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98075349844044,
- 38.93821621211042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04705'>Report Problem</a>",
- "NAME": "H04705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10406574419125,
- 38.93425941711597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04706'>Report Problem</a>",
- "NAME": "H04706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03452426481338,
- 38.90103818916806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04707'>Report Problem</a>",
- "NAME": "H04707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9333621478716,
- 38.89609807080331,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04708'>Report Problem</a>",
- "NAME": "H04708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96512410125285,
- 38.85611041006233,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05131'>Report Problem</a>",
- "NAME": "H05131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96364460045582,
- 38.85413268968141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05132'>Report Problem</a>",
- "NAME": "H05132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96251722355318,
- 38.85360396168428,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05133'>Report Problem</a>",
- "NAME": "H05133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9815354452883,
- 38.90602699974392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05134'>Report Problem</a>",
- "NAME": "H05134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00407436409346,
- 38.943917171576096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05135'>Report Problem</a>",
- "NAME": "H05135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0088687767568,
- 38.827717439751744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05137'>Report Problem</a>",
- "NAME": "H05137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01068152153015,
- 38.82785752273561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05138'>Report Problem</a>",
- "NAME": "H05138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01239308754744,
- 38.82785739857395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05139'>Report Problem</a>",
- "NAME": "H05139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05714803537302,
- 38.935408262936825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05140'>Report Problem</a>",
- "NAME": "H05140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03371761321357,
- 38.901939287456976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05141'>Report Problem</a>",
- "NAME": "H05141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97633159818267,
- 38.904312637153666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05142'>Report Problem</a>",
- "NAME": "H05142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95224654475162,
- 38.90080203386351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 12/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05143'>Report Problem</a>",
- "NAME": "H05143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94819158266684,
- 38.9000889428839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05144'>Report Problem</a>",
- "NAME": "H05144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95210412245261,
- 38.89944768581777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05145'>Report Problem</a>",
- "NAME": "H05145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95150198813921,
- 38.89897043567499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05146'>Report Problem</a>",
- "NAME": "H05146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95071680042268,
- 38.898356214229885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05147'>Report Problem</a>",
- "NAME": "H05147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95291451015491,
- 38.90008174437581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05148'>Report Problem</a>",
- "NAME": "H05148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94990694953434,
- 38.89890131708448,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05149'>Report Problem</a>",
- "NAME": "H05149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01371069294511,
- 38.907136924276266,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05150'>Report Problem</a>",
- "NAME": "H05150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95963606137366,
- 38.88434117550581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05151'>Report Problem</a>",
- "NAME": "H05151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99825647893331,
- 38.85814210538549,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05152'>Report Problem</a>",
- "NAME": "H05152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02512393129236,
- 38.89058524570999,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05153'>Report Problem</a>",
- "NAME": "H05153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98104509333896,
- 38.906783136022824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05154'>Report Problem</a>",
- "NAME": "H05154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01775104137337,
- 38.82811897913732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05155'>Report Problem</a>",
- "NAME": "H05155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9680406117287,
- 38.85616116054887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05156'>Report Problem</a>",
- "NAME": "H05156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92752935991726,
- 38.90188639872883,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05157'>Report Problem</a>",
- "NAME": "H05157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00199254427396,
- 38.82632557292641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05158'>Report Problem</a>",
- "NAME": "H05158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9986751048196,
- 38.86153416877256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05159'>Report Problem</a>",
- "NAME": "H05159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03418298666743,
- 38.91924125815276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05160'>Report Problem</a>",
- "NAME": "H05160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99833992814591,
- 38.85965066603583,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05161'>Report Problem</a>",
- "NAME": "H05161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99921147541397,
- 38.96275150242715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05162'>Report Problem</a>",
- "NAME": "H05162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99994562487444,
- 38.96364876290705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05163'>Report Problem</a>",
- "NAME": "H05163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96883425006706,
- 38.87079106080068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05164'>Report Problem</a>",
- "NAME": "H05164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01589818458916,
- 38.86614307831664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05166'>Report Problem</a>",
- "NAME": "H05166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05708556800568,
- 38.98054136982565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05591'>Report Problem</a>",
- "NAME": "H05591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93971156487623,
- 38.87087736207481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05592'>Report Problem</a>",
- "NAME": "H05592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05618503406097,
- 38.977034759957895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05593'>Report Problem</a>",
- "NAME": "H05593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97628607751274,
- 38.91497274077745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05594'>Report Problem</a>",
- "NAME": "H05594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96048624294018,
- 38.874721503771006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05595'>Report Problem</a>",
- "NAME": "H05595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00219860309011,
- 38.900310079572584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05596'>Report Problem</a>",
- "NAME": "H05596"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94911346950808,
- 38.879081426798805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05597'>Report Problem</a>",
- "NAME": "H05597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95107549047403,
- 38.87600265517927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05598'>Report Problem</a>",
- "NAME": "H05598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98845195982535,
- 38.90029425132657,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05599'>Report Problem</a>",
- "NAME": "H05599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9996735259519,
- 38.900303938088115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05600'>Report Problem</a>",
- "NAME": "H05600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99635052167638,
- 38.90030508866122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05601'>Report Problem</a>",
- "NAME": "H05601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99720495639907,
- 38.90011297295777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05602'>Report Problem</a>",
- "NAME": "H05602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9927105245132,
- 38.90031304378298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05603'>Report Problem</a>",
- "NAME": "H05603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03474882473755,
- 38.9890721963417,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05604'>Report Problem</a>",
- "NAME": "H05604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99255911239196,
- 38.948058689247034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05605'>Report Problem</a>",
- "NAME": "H05605"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96298741200495,
- 38.86919054202265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05606'>Report Problem</a>",
- "NAME": "H05606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03471160689664,
- 38.91265962322301,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05607'>Report Problem</a>",
- "NAME": "H05607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0346970408595,
- 38.91625531367251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05608'>Report Problem</a>",
- "NAME": "H05608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03471321035195,
- 38.90875230859182,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05609'>Report Problem</a>",
- "NAME": "H05609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03444403905178,
- 38.913334138646334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05610'>Report Problem</a>",
- "NAME": "H05610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99324805600712,
- 38.91756487445713,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05611'>Report Problem</a>",
- "NAME": "H05611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00664287998222,
- 38.96729266235581,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05612'>Report Problem</a>",
- "NAME": "H05612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0074549398061,
- 38.966604005192,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05613'>Report Problem</a>",
- "NAME": "H05613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00488726270738,
- 38.967399307423335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05614'>Report Problem</a>",
- "NAME": "H05614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10012517921214,
- 38.93033792938389,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05615'>Report Problem</a>",
- "NAME": "H05615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04590469946832,
- 38.91466072053511,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05616'>Report Problem</a>",
- "NAME": "H05616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98685992576867,
- 38.951714087742744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05617'>Report Problem</a>",
- "NAME": "H05617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98686241843231,
- 38.95039542104574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05618'>Report Problem</a>",
- "NAME": "H05618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98686494046967,
- 38.94954291426279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05619'>Report Problem</a>",
- "NAME": "H05619"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00936030198125,
- 38.9710107447314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05620'>Report Problem</a>",
- "NAME": "H05620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00729484274315,
- 38.96936912233537,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05621'>Report Problem</a>",
- "NAME": "H05621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04611798105695,
- 38.91394860864541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05622'>Report Problem</a>",
- "NAME": "H05622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00841420127617,
- 38.97025479127584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05623'>Report Problem</a>",
- "NAME": "H05623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9447146996884,
- 38.90459361734108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05624'>Report Problem</a>",
- "NAME": "H05624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98193228117958,
- 38.91352929969213,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05625'>Report Problem</a>",
- "NAME": "H05625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02321859114396,
- 38.95928284122714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04228'>Report Problem</a>",
- "NAME": "H04228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97225039976014,
- 38.91265508812598,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04229'>Report Problem</a>",
- "NAME": "H04229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9630260630159,
- 38.86818553118676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04230'>Report Problem</a>",
- "NAME": "H04230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08849188887804,
- 38.953357982336556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04231'>Report Problem</a>",
- "NAME": "H04231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08062217065265,
- 38.92248373061374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04232'>Report Problem</a>",
- "NAME": "H04232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09051348448547,
- 38.95042123226649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04233'>Report Problem</a>",
- "NAME": "H04233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93181748004211,
- 38.89557642372513,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04234'>Report Problem</a>",
- "NAME": "H04234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0332685364397,
- 38.95519343707847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04235'>Report Problem</a>",
- "NAME": "H04235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99380791140494,
- 38.93933695820181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04236'>Report Problem</a>",
- "NAME": "H04236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99438984117685,
- 38.938164143748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04237'>Report Problem</a>",
- "NAME": "H04237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0843160409656,
- 38.908053406809444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04238'>Report Problem</a>",
- "NAME": "H04238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08879115252536,
- 38.94483593138371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04239'>Report Problem</a>",
- "NAME": "H04239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02822301624234,
- 38.91404340270892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04240'>Report Problem</a>",
- "NAME": "H04240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03361960626368,
- 38.97076466773854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04241'>Report Problem</a>",
- "NAME": "H04241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9848039514883,
- 38.91474516712138,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04242'>Report Problem</a>",
- "NAME": "H04242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99257605546647,
- 38.895473842403405,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04243'>Report Problem</a>",
- "NAME": "H04243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9821151010816,
- 38.870698397005036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04244'>Report Problem</a>",
- "NAME": "H04244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98710591197033,
- 38.92784057352039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04245'>Report Problem</a>",
- "NAME": "H04245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97733590183157,
- 38.89484559105761,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04246'>Report Problem</a>",
- "NAME": "H04246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97908384523127,
- 38.894833116220404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04247'>Report Problem</a>",
- "NAME": "H04247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02639767901154,
- 38.981095067400275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04248'>Report Problem</a>",
- "NAME": "H04248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0288833903384,
- 38.937763678146176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04249'>Report Problem</a>",
- "NAME": "H04249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98083288837465,
- 38.921401936560116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04250'>Report Problem</a>",
- "NAME": "H04250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98067174174777,
- 38.92239272642099,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04251'>Report Problem</a>",
- "NAME": "H04251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98542161778325,
- 38.906978389429945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Am. Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04252'>Report Problem</a>",
- "NAME": "H04252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03113644506006,
- 38.93969699133028,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04253'>Report Problem</a>",
- "NAME": "H04253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98611566896587,
- 38.939033663996085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04254'>Report Problem</a>",
- "NAME": "H04254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03331433997035,
- 38.96766163233815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04255'>Report Problem</a>",
- "NAME": "H04255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99519716346217,
- 38.93922768088011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04256'>Report Problem</a>",
- "NAME": "H04256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1008668349851,
- 38.93514558504254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04257'>Report Problem</a>",
- "NAME": "H04257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07812042015287,
- 38.929999574504286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04258'>Report Problem</a>",
- "NAME": "H04258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99253501156616,
- 38.93970739491439,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04259'>Report Problem</a>",
- "NAME": "H04259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09474792286065,
- 38.925101147987306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04260'>Report Problem</a>",
- "NAME": "H04260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08847356192025,
- 38.94557294195461,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04261'>Report Problem</a>",
- "NAME": "H04261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02960783569715,
- 38.96906362741682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04709'>Report Problem</a>",
- "NAME": "H04709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98133325793626,
- 38.935765202546136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04710'>Report Problem</a>",
- "NAME": "H04710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02951095390996,
- 38.941928766648175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04711'>Report Problem</a>",
- "NAME": "H04711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03168001493522,
- 38.96986307919653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04712'>Report Problem</a>",
- "NAME": "H04712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08620570575218,
- 38.94402908447132,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04713'>Report Problem</a>",
- "NAME": "H04713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96334800127977,
- 38.87703422596476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04714'>Report Problem</a>",
- "NAME": "H04714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94666960303068,
- 38.886399110692196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04715'>Report Problem</a>",
- "NAME": "H04715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9479229391661,
- 38.88625808248532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04716'>Report Problem</a>",
- "NAME": "H04716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94908377507225,
- 38.88723079678369,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04717'>Report Problem</a>",
- "NAME": "H04717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08894004824909,
- 38.958221251441046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04718'>Report Problem</a>",
- "NAME": "H04718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94781466845942,
- 38.89458843909273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04719'>Report Problem</a>",
- "NAME": "H04719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96462987363175,
- 38.87549153693379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04720'>Report Problem</a>",
- "NAME": "H04720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04345474868755,
- 38.93968831360353,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04721'>Report Problem</a>",
- "NAME": "H04721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03660890013306,
- 38.9896931680321,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04722'>Report Problem</a>",
- "NAME": "H04722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04905193541292,
- 38.90517613320066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04723'>Report Problem</a>",
- "NAME": "H04723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0145878530758,
- 38.91117582605001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04724'>Report Problem</a>",
- "NAME": "H04724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96222175423597,
- 38.877784473568504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04725'>Report Problem</a>",
- "NAME": "H04725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0417586777392,
- 38.93890300322702,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04726'>Report Problem</a>",
- "NAME": "H04726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0754331077656,
- 38.923581184166196,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04728'>Report Problem</a>",
- "NAME": "H04728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06248503815512,
- 38.97893554241053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04729'>Report Problem</a>",
- "NAME": "H04729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10591932400739,
- 38.93483667092647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04730'>Report Problem</a>",
- "NAME": "H04730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98575793368119,
- 38.908047388316206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04731'>Report Problem</a>",
- "NAME": "H04731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9788424771193,
- 38.9245564782839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04732'>Report Problem</a>",
- "NAME": "H04732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96485052057069,
- 38.87925030228958,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04733'>Report Problem</a>",
- "NAME": "H04733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95965525867965,
- 38.88194380735753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04734'>Report Problem</a>",
- "NAME": "H04734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0513405725282,
- 38.90514078304257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04735'>Report Problem</a>",
- "NAME": "H04735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9332467064806,
- 38.88151653860521,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04736'>Report Problem</a>",
- "NAME": "H04736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0522189469308,
- 38.90534688318145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04737'>Report Problem</a>",
- "NAME": "H04737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02538520316195,
- 38.94710572440684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04738'>Report Problem</a>",
- "NAME": "H04738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08849601566848,
- 38.947844778236124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04739'>Report Problem</a>",
- "NAME": "H04739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08753390764316,
- 38.94797673524905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04740'>Report Problem</a>",
- "NAME": "H04740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02799126448157,
- 38.88436796558133,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04741'>Report Problem</a>",
- "NAME": "H04741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06343872983717,
- 38.95972896131136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04742'>Report Problem</a>",
- "NAME": "H04742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09418338977535,
- 38.948854748169815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04743'>Report Problem</a>",
- "NAME": "H04743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9822535555375,
- 38.908835436045294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05167'>Report Problem</a>",
- "NAME": "H05167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00712929976308,
- 38.82611988897079,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05168'>Report Problem</a>",
- "NAME": "H05168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00573025749678,
- 38.82611690317241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05169'>Report Problem</a>",
- "NAME": "H05169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03306643291387,
- 38.95634551635734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05170'>Report Problem</a>",
- "NAME": "H05170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04223666641778,
- 38.92745394324563,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05171'>Report Problem</a>",
- "NAME": "H05171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00916853256301,
- 38.82891256091074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05172'>Report Problem</a>",
- "NAME": "H05172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98861263263892,
- 38.93731801588514,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05173'>Report Problem</a>",
- "NAME": "H05173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00364475189643,
- 38.826978376800824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05174'>Report Problem</a>",
- "NAME": "H05174"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00557020066834,
- 38.825182696460594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05175'>Report Problem</a>",
- "NAME": "H05175"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00693997461075,
- 38.82507662936434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05176'>Report Problem</a>",
- "NAME": "H05176"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00264292287537,
- 38.83523089468394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05177'>Report Problem</a>",
- "NAME": "H05177"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00265926655396,
- 38.836158963522614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05178'>Report Problem</a>",
- "NAME": "H05178"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9654493029774,
- 38.85909494392035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05179'>Report Problem</a>",
- "NAME": "H05179"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99541947917167,
- 38.93942175545744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05180'>Report Problem</a>",
- "NAME": "H05180"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00518394457792,
- 38.856198399578375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05181'>Report Problem</a>",
- "NAME": "H05181"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00849092153655,
- 38.846232382640956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05182'>Report Problem</a>",
- "NAME": "H05182"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0138335624993,
- 38.83331050135897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05183'>Report Problem</a>",
- "NAME": "H05183"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95878071299619,
- 38.8905559469081,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05184'>Report Problem</a>",
- "NAME": "H05184"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00446434855682,
- 38.83485467306831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05185'>Report Problem</a>",
- "NAME": "H05185"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98070064473738,
- 38.87090317606907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05186'>Report Problem</a>",
- "NAME": "H05186"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96434739419013,
- 38.859063335397366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05187'>Report Problem</a>",
- "NAME": "H05187"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97911665830593,
- 38.870830169684666,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05188'>Report Problem</a>",
- "NAME": "H05188"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99268594143285,
- 38.86359398299059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05189'>Report Problem</a>",
- "NAME": "H05189"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99297689691656,
- 38.863420255542984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05190'>Report Problem</a>",
- "NAME": "H05190"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96458762409094,
- 38.857683290936436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05191'>Report Problem</a>",
- "NAME": "H05191"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00303715935394,
- 38.833781108862624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05192'>Report Problem</a>",
- "NAME": "H05192"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96578769586216,
- 38.85377464869698,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05193'>Report Problem</a>",
- "NAME": "H05193"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9681256048483,
- 38.858788599077045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05194'>Report Problem</a>",
- "NAME": "H05194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0645403305936,
- 38.919376919038314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05195'>Report Problem</a>",
- "NAME": "H05195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0020455299901,
- 38.823886321128626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05196'>Report Problem</a>",
- "NAME": "H05196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93195920995375,
- 38.89071822830916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05197'>Report Problem</a>",
- "NAME": "H05197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02916650532477,
- 38.941922060850416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05198'>Report Problem</a>",
- "NAME": "H05198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98254432863565,
- 38.853448476908326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05199'>Report Problem</a>",
- "NAME": "H05199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02011186226316,
- 38.94416618602358,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05200'>Report Problem</a>",
- "NAME": "H05200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96456620820008,
- 38.925934456168676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05626'>Report Problem</a>",
- "NAME": "H05626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9345339221914,
- 38.90458009550121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05627'>Report Problem</a>",
- "NAME": "H05627"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99327537698036,
- 38.92547176950791,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05628'>Report Problem</a>",
- "NAME": "H05628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9403490305565,
- 38.907592818087466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05629'>Report Problem</a>",
- "NAME": "H05629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96988385465852,
- 38.87231929660813,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05630'>Report Problem</a>",
- "NAME": "H05630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05849582904557,
- 38.963620132377606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05631'>Report Problem</a>",
- "NAME": "H05631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05683875629394,
- 38.94889635481614,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05632'>Report Problem</a>",
- "NAME": "H05632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07470631454774,
- 38.95631854170552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05633'>Report Problem</a>",
- "NAME": "H05633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96571956533501,
- 38.86770608765082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05634'>Report Problem</a>",
- "NAME": "H05634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02823882639538,
- 38.98571573443198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05635'>Report Problem</a>",
- "NAME": "H05635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06990348187958,
- 38.94781054026824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05636'>Report Problem</a>",
- "NAME": "H05636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05965423415002,
- 38.96302593930838,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05637'>Report Problem</a>",
- "NAME": "H05637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9500171134719,
- 38.87048406531074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05638'>Report Problem</a>",
- "NAME": "H05638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07297220918346,
- 38.95523451003682,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05639'>Report Problem</a>",
- "NAME": "H05639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02317546488578,
- 38.98171452478699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05640'>Report Problem</a>",
- "NAME": "H05640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05647123721442,
- 38.98334825067811,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05641'>Report Problem</a>",
- "NAME": "H05641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05475400391595,
- 38.984664239522836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05642'>Report Problem</a>",
- "NAME": "H05642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02761001035984,
- 38.985227639521696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05643'>Report Problem</a>",
- "NAME": "H05643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05221476577873,
- 38.979799782857256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05644'>Report Problem</a>",
- "NAME": "H05644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99389121916485,
- 38.947353193040755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05645'>Report Problem</a>",
- "NAME": "H05645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9288845265452,
- 38.879415206737704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05646'>Report Problem</a>",
- "NAME": "H05646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99650758195034,
- 38.95070557727821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05647'>Report Problem</a>",
- "NAME": "H05647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03503116124297,
- 38.977390636854935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05648'>Report Problem</a>",
- "NAME": "H05648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95799787260297,
- 38.882794506682636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05649'>Report Problem</a>",
- "NAME": "H05649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00388711500801,
- 38.96196109243133,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05650'>Report Problem</a>",
- "NAME": "H05650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05901852522831,
- 38.978825181671596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05651'>Report Problem</a>",
- "NAME": "H05651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98977080822395,
- 38.860456420343795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05652'>Report Problem</a>",
- "NAME": "H05652"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95594061282378,
- 38.88605500004995,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05653'>Report Problem</a>",
- "NAME": "H05653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98900499961782,
- 38.8343547305701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05656'>Report Problem</a>",
- "NAME": "H05656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94108255821662,
- 38.89910314008226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05657'>Report Problem</a>",
- "NAME": "H05657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95674945753103,
- 38.884552451859854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05658'>Report Problem</a>",
- "NAME": "H05658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93686261509959,
- 38.89106278639865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05659'>Report Problem</a>",
- "NAME": "H05659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97477228059029,
- 38.91914614560129,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05660'>Report Problem</a>",
- "NAME": "H05660"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00315371290615,
- 38.96512307346234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05661'>Report Problem</a>",
- "NAME": "H05661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98070467320836,
- 38.86959953434901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04194'>Report Problem</a>",
- "NAME": "H04194"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06164374887241,
- 38.920185593100506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04195'>Report Problem</a>",
- "NAME": "H04195"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09668519029186,
- 38.95204514070214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04196'>Report Problem</a>",
- "NAME": "H04196"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06910828643798,
- 38.97119206931057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04197'>Report Problem</a>",
- "NAME": "H04197"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95830060500094,
- 38.86539034084077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04198'>Report Problem</a>",
- "NAME": "H04198"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95781712760093,
- 38.86357808847158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04199'>Report Problem</a>",
- "NAME": "H04199"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95721164437941,
- 38.86541863867322,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04200'>Report Problem</a>",
- "NAME": "H04200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96770634890431,
- 38.87085628146997,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04201'>Report Problem</a>",
- "NAME": "H04201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07826486773908,
- 38.946334963606006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04202'>Report Problem</a>",
- "NAME": "H04202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09681384237601,
- 38.94044746961238,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04203'>Report Problem</a>",
- "NAME": "H04203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06887535899614,
- 38.94018639195672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04204'>Report Problem</a>",
- "NAME": "H04204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0997265062579,
- 38.92452685981922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04205'>Report Problem</a>",
- "NAME": "H04205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08802840957976,
- 38.92419351726891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04206'>Report Problem</a>",
- "NAME": "H04206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04538189131213,
- 38.98851935102793,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04207'>Report Problem</a>",
- "NAME": "H04207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04576058800095,
- 38.98928933297763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04208'>Report Problem</a>",
- "NAME": "H04208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04667269670925,
- 38.98981420494747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04209'>Report Problem</a>",
- "NAME": "H04209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9347988590341,
- 38.891965363777366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04210'>Report Problem</a>",
- "NAME": "H04210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0901687791002,
- 38.95708871003681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04211'>Report Problem</a>",
- "NAME": "H04211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0945298178113,
- 38.95336894868246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04212'>Report Problem</a>",
- "NAME": "H04212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07044800531021,
- 38.93990072956905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04213'>Report Problem</a>",
- "NAME": "H04213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97778103266928,
- 38.90501793337816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04214'>Report Problem</a>",
- "NAME": "H04214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07264211889718,
- 38.948825617158754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04215'>Report Problem</a>",
- "NAME": "H04215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05602234223862,
- 38.975944491008065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04216'>Report Problem</a>",
- "NAME": "H04216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96767995175357,
- 38.87397897382935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04217'>Report Problem</a>",
- "NAME": "H04217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00866162303225,
- 38.95726502079673,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04218'>Report Problem</a>",
- "NAME": "H04218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09268059118425,
- 38.94715814020929,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04219'>Report Problem</a>",
- "NAME": "H04219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09048643430907,
- 38.94632451192847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04220'>Report Problem</a>",
- "NAME": "H04220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05338198606725,
- 38.972773837283206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04221'>Report Problem</a>",
- "NAME": "H04221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99366632364934,
- 38.93792124314612,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04222'>Report Problem</a>",
- "NAME": "H04222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93367273725826,
- 38.89841423521351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04223'>Report Problem</a>",
- "NAME": "H04223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0675251092381,
- 38.97119434542624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04224'>Report Problem</a>",
- "NAME": "H04224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.035255624967,
- 38.94904393487972,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04225'>Report Problem</a>",
- "NAME": "H04225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0512314150634,
- 38.939490719849296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04226'>Report Problem</a>",
- "NAME": "H04226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01992436891082,
- 38.97566503894667,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04227'>Report Problem</a>",
- "NAME": "H04227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97914701395872,
- 38.92350717194224,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04744'>Report Problem</a>",
- "NAME": "H04744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9499122658942,
- 38.88806240322035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04745'>Report Problem</a>",
- "NAME": "H04745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02728413167864,
- 38.960777901397876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04746'>Report Problem</a>",
- "NAME": "H04746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09399904656539,
- 38.92685496105866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04747'>Report Problem</a>",
- "NAME": "H04747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07658090367256,
- 38.966355320287825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04748'>Report Problem</a>",
- "NAME": "H04748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95357024028502,
- 38.864578239839595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04749'>Report Problem</a>",
- "NAME": "H04749"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95230956964433,
- 38.86478051116998,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04750'>Report Problem</a>",
- "NAME": "H04750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9559998876629,
- 38.89538628390953,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04751'>Report Problem</a>",
- "NAME": "H04751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9658262175837,
- 38.87584902205443,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04752'>Report Problem</a>",
- "NAME": "H04752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97037939894082,
- 38.86731902813283,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04753'>Report Problem</a>",
- "NAME": "H04753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07824447684018,
- 38.956008018560574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04754'>Report Problem</a>",
- "NAME": "H04754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94992039160039,
- 38.89399085378731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04755'>Report Problem</a>",
- "NAME": "H04755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06081324158107,
- 38.97879231907476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04756'>Report Problem</a>",
- "NAME": "H04756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97369548375778,
- 38.868201223022595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04757'>Report Problem</a>",
- "NAME": "H04757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10843436087899,
- 38.9336863909948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04758'>Report Problem</a>",
- "NAME": "H04758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10699318206748,
- 38.934437336503365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04759'>Report Problem</a>",
- "NAME": "H04759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01967668924941,
- 38.88685829074186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04760'>Report Problem</a>",
- "NAME": "H04760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96762577053877,
- 38.86741520062983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04761'>Report Problem</a>",
- "NAME": "H04761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99750901976692,
- 38.88077037995249,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04764'>Report Problem</a>",
- "NAME": "H04764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95502384391406,
- 38.88685246889917,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04766'>Report Problem</a>",
- "NAME": "H04766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95486526557892,
- 38.88743972708472,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04767'>Report Problem</a>",
- "NAME": "H04767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00872859395193,
- 38.94969523285129,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04768'>Report Problem</a>",
- "NAME": "H04768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96469104600503,
- 38.87758416985688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04769'>Report Problem</a>",
- "NAME": "H04769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02855205962594,
- 38.97003064527849,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04770'>Report Problem</a>",
- "NAME": "H04770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99505654372098,
- 38.92728226849169,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04771'>Report Problem</a>",
- "NAME": "H04771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9772417886766,
- 38.86941859853848,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04772'>Report Problem</a>",
- "NAME": "H04772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02962440022894,
- 38.97088130575179,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04773'>Report Problem</a>",
- "NAME": "H04773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05903720133935,
- 38.96599972284117,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04774'>Report Problem</a>",
- "NAME": "H04774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97998940789428,
- 38.93713361993313,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04775'>Report Problem</a>",
- "NAME": "H04775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09919507306482,
- 38.939543112010114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04776'>Report Problem</a>",
- "NAME": "H04776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09449979472652,
- 38.93943357875536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04777'>Report Problem</a>",
- "NAME": "H04777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02732498134701,
- 38.93460823862935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04778'>Report Problem</a>",
- "NAME": "H04778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9535358853864,
- 38.89080012318996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04779'>Report Problem</a>",
- "NAME": "H04779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03780987553274,
- 38.989459356416575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04780'>Report Problem</a>",
- "NAME": "H04780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00579923830666,
- 38.835739803389906,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05201'>Report Problem</a>",
- "NAME": "H05201"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00371946252882,
- 38.834567131188045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05202'>Report Problem</a>",
- "NAME": "H05202"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01283407284744,
- 38.92336057324921,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05203'>Report Problem</a>",
- "NAME": "H05203"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03653525833982,
- 38.959240711942556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05204'>Report Problem</a>",
- "NAME": "H05204"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93828125126588,
- 38.88836631040014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05205'>Report Problem</a>",
- "NAME": "H05205"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94560764270386,
- 38.88071570756369,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05206'>Report Problem</a>",
- "NAME": "H05206"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0348088871785,
- 38.92990507593924,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05207'>Report Problem</a>",
- "NAME": "H05207"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96577227535872,
- 38.852200943189345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05208'>Report Problem</a>",
- "NAME": "H05208"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01241513610991,
- 38.82444685246901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05209'>Report Problem</a>",
- "NAME": "H05209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96849001615604,
- 38.9318196197282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05210'>Report Problem</a>",
- "NAME": "H05210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00199450898634,
- 38.837294330382896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05211'>Report Problem</a>",
- "NAME": "H05211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93505722563116,
- 38.89569791888897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05212'>Report Problem</a>",
- "NAME": "H05212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9362105201997,
- 38.895836679653705,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05213'>Report Problem</a>",
- "NAME": "H05213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96550478615704,
- 38.85052243999966,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05214'>Report Problem</a>",
- "NAME": "H05214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96503674379574,
- 38.85402611276057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05215'>Report Problem</a>",
- "NAME": "H05215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96423542673692,
- 38.85324732539318,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05216'>Report Problem</a>",
- "NAME": "H05216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01770081346389,
- 38.90378448904728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05217'>Report Problem</a>",
- "NAME": "H05217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98642395410391,
- 38.93623448035742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05218'>Report Problem</a>",
- "NAME": "H05218"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96052825924822,
- 38.864347129993874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05219'>Report Problem</a>",
- "NAME": "H05219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92564951238235,
- 38.90195138388131,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05220'>Report Problem</a>",
- "NAME": "H05220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92456229178582,
- 38.90175630453846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05221'>Report Problem</a>",
- "NAME": "H05221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9254613149737,
- 38.90274042311545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05222'>Report Problem</a>",
- "NAME": "H05222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92509054856161,
- 38.903601817241025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05223'>Report Problem</a>",
- "NAME": "H05223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04085137133464,
- 38.90584208678454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05224'>Report Problem</a>",
- "NAME": "H05224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93750850862496,
- 38.882491865774114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05225'>Report Problem</a>",
- "NAME": "H05225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93068863045525,
- 38.89556242700819,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05226'>Report Problem</a>",
- "NAME": "H05226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00141409943355,
- 38.83600082378851,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05228'>Report Problem</a>",
- "NAME": "H05228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94640778739509,
- 38.90305166260014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05229'>Report Problem</a>",
- "NAME": "H05229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94869554404856,
- 38.905146149868784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05230'>Report Problem</a>",
- "NAME": "H05230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94537330103947,
- 38.90171921693423,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05231'>Report Problem</a>",
- "NAME": "H05231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94712564157969,
- 38.90384841830326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05232'>Report Problem</a>",
- "NAME": "H05232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.946607499322,
- 38.90155703351813,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05233'>Report Problem</a>",
- "NAME": "H05233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00600288044966,
- 38.84130445832689,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05234'>Report Problem</a>",
- "NAME": "H05234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98114646464356,
- 38.91605190556484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05235'>Report Problem</a>",
- "NAME": "H05235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94287490400488,
- 38.90712267350573,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05662'>Report Problem</a>",
- "NAME": "H05662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01034760222493,
- 38.95877074056332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05663'>Report Problem</a>",
- "NAME": "H05663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01230036121824,
- 38.960061326685185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05664'>Report Problem</a>",
- "NAME": "H05664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98814953415919,
- 38.95022091519498,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05665'>Report Problem</a>",
- "NAME": "H05665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95244149542405,
- 38.87016857649753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05666'>Report Problem</a>",
- "NAME": "H05666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96218175081448,
- 38.88028802801066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05667'>Report Problem</a>",
- "NAME": "H05667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94305607932144,
- 38.88356448428447,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05669'>Report Problem</a>",
- "NAME": "H05669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94272313419559,
- 38.88259671260365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05670'>Report Problem</a>",
- "NAME": "H05670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97617057208338,
- 38.86880775897308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05671'>Report Problem</a>",
- "NAME": "H05671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96980100108885,
- 38.874002945408684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05672'>Report Problem</a>",
- "NAME": "H05672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05361170579698,
- 38.970433797478094,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05673'>Report Problem</a>",
- "NAME": "H05673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01063281968676,
- 38.82694035699557,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05674'>Report Problem</a>",
- "NAME": "H05674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02836162436662,
- 38.97217998495807,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05675'>Report Problem</a>",
- "NAME": "H05675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99566510427299,
- 38.93473681092047,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05676'>Report Problem</a>",
- "NAME": "H05676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99500715481591,
- 38.95026638750952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05677'>Report Problem</a>",
- "NAME": "H05677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96376926850891,
- 38.87507972443926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05678'>Report Problem</a>",
- "NAME": "H05678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08275870237559,
- 38.9280337317338,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05679'>Report Problem</a>",
- "NAME": "H05679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07132502981375,
- 38.94719806432574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05680'>Report Problem</a>",
- "NAME": "H05680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92356977747968,
- 38.888590585229444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05681'>Report Problem</a>",
- "NAME": "H05681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9239844800327,
- 38.88958973194141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05682'>Report Problem</a>",
- "NAME": "H05682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93152743481679,
- 38.9072525643163,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05683'>Report Problem</a>",
- "NAME": "H05683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93156072379776,
- 38.90477344051688,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05684'>Report Problem</a>",
- "NAME": "H05684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9316114662494,
- 38.90617672826469,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05685'>Report Problem</a>",
- "NAME": "H05685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95504665549971,
- 38.888734346080106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05686'>Report Problem</a>",
- "NAME": "H05686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01583536907275,
- 38.922206302223074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05687'>Report Problem</a>",
- "NAME": "H05687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9484549342919,
- 38.86537084314752,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05688'>Report Problem</a>",
- "NAME": "H05688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08386979272295,
- 38.94883387487236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05689'>Report Problem</a>",
- "NAME": "H05689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01979012898339,
- 38.90165210156631,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05690'>Report Problem</a>",
- "NAME": "H05690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96492961009135,
- 38.870679114009285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05692'>Report Problem</a>",
- "NAME": "H05692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94558037241048,
- 38.868583722155954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05693'>Report Problem</a>",
- "NAME": "H05693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93695746773983,
- 38.87642792110413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05694'>Report Problem</a>",
- "NAME": "H05694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99488631513977,
- 38.94812984447875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05695'>Report Problem</a>",
- "NAME": "H05695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98212065187695,
- 38.856913847015655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05696'>Report Problem</a>",
- "NAME": "H05696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9806719167034,
- 38.85716015875724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/17/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05697'>Report Problem</a>",
- "NAME": "H05697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97629867199124,
- 38.89483945770751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04262'>Report Problem</a>",
- "NAME": "H04262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0904854345653,
- 38.94557323067019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04263'>Report Problem</a>",
- "NAME": "H04263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9788463345116,
- 38.925509315744556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04264'>Report Problem</a>",
- "NAME": "H04264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02233949754955,
- 38.96327319189262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04265'>Report Problem</a>",
- "NAME": "H04265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0110243299574,
- 38.9544901684508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04266'>Report Problem</a>",
- "NAME": "H04266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93653834821622,
- 38.89527011476603,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04267'>Report Problem</a>",
- "NAME": "H04267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98374999306267,
- 38.94417422749809,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/30/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04268'>Report Problem</a>",
- "NAME": "H04268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98428258754907,
- 38.91389620669501,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04269'>Report Problem</a>",
- "NAME": "H04269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98375946413988,
- 38.91297998731711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04270'>Report Problem</a>",
- "NAME": "H04270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02003355633056,
- 38.963280365897624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04271'>Report Problem</a>",
- "NAME": "H04271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03356650983973,
- 38.93516200159843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04272'>Report Problem</a>",
- "NAME": "H04272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08886788354216,
- 38.95042290013256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04273'>Report Problem</a>",
- "NAME": "H04273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97316242368191,
- 38.92456130244601,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04274'>Report Problem</a>",
- "NAME": "H04274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01428853437034,
- 38.87209712278843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04275'>Report Problem</a>",
- "NAME": "H04275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9800113302975,
- 38.90258971143001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/13/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04276'>Report Problem</a>",
- "NAME": "H04276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09569559804243,
- 38.95295278191371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04277'>Report Problem</a>",
- "NAME": "H04277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97891824649129,
- 38.872158206939616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04278'>Report Problem</a>",
- "NAME": "H04278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03618701845232,
- 38.96159082217777,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04279'>Report Problem</a>",
- "NAME": "H04279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08458923913511,
- 38.95599695218664,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04280'>Report Problem</a>",
- "NAME": "H04280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03955123466933,
- 38.899050675625894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04281'>Report Problem</a>",
- "NAME": "H04281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09806031173513,
- 38.94030658579882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04282'>Report Problem</a>",
- "NAME": "H04282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95884187487074,
- 38.858464752401,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04283'>Report Problem</a>",
- "NAME": "H04283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08790548220217,
- 38.92493654414663,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04284'>Report Problem</a>",
- "NAME": "H04284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0793235956426,
- 38.94784298423143,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04285'>Report Problem</a>",
- "NAME": "H04285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95742892119048,
- 38.89469289888812,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04286'>Report Problem</a>",
- "NAME": "H04286"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02277592797219,
- 38.90969439226076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04287'>Report Problem</a>",
- "NAME": "H04287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99513038726887,
- 38.92947343528527,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04288'>Report Problem</a>",
- "NAME": "H04288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03461038972091,
- 38.96865291030881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04289'>Report Problem</a>",
- "NAME": "H04289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98358587383679,
- 38.8776666459264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 11/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04290'>Report Problem</a>",
- "NAME": "H04290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9771435514052,
- 38.8920544725174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 04/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04291'>Report Problem</a>",
- "NAME": "H04291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06649009396924,
- 38.9753302589748,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04292'>Report Problem</a>",
- "NAME": "H04292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0637492159216,
- 38.97594659690241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04293'>Report Problem</a>",
- "NAME": "H04293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05934972355695,
- 38.95076222548684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04294'>Report Problem</a>",
- "NAME": "H04294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00659859114509,
- 38.84027830074792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04295'>Report Problem</a>",
- "NAME": "H04295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05686011552427,
- 38.96608544323306,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04781'>Report Problem</a>",
- "NAME": "H04781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96585600154377,
- 38.86863671429712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04782'>Report Problem</a>",
- "NAME": "H04782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0125357042885,
- 38.887465764552516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04783'>Report Problem</a>",
- "NAME": "H04783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01538318188119,
- 38.88632222485084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04784'>Report Problem</a>",
- "NAME": "H04784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0161663973331,
- 38.88744951777013,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04785'>Report Problem</a>",
- "NAME": "H04785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01494850837497,
- 38.8874505988401,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04786'>Report Problem</a>",
- "NAME": "H04786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09845736050742,
- 38.93294031600649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04787'>Report Problem</a>",
- "NAME": "H04787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97502968442616,
- 38.8674006683606,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04788'>Report Problem</a>",
- "NAME": "H04788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01608979094676,
- 38.896276183107496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04789'>Report Problem</a>",
- "NAME": "H04789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98177643958206,
- 38.944293377338155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04790'>Report Problem</a>",
- "NAME": "H04790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93498335865014,
- 38.89421668576057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04791'>Report Problem</a>",
- "NAME": "H04791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98288708280418,
- 38.93498700615731,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04792'>Report Problem</a>",
- "NAME": "H04792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08607993527309,
- 38.943273615885936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04793'>Report Problem</a>",
- "NAME": "H04793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07873995641353,
- 38.950003321020475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04794'>Report Problem</a>",
- "NAME": "H04794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02149414163907,
- 38.958590498905714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04795'>Report Problem</a>",
- "NAME": "H04795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99236681735826,
- 38.925453552930406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04796'>Report Problem</a>",
- "NAME": "H04796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95490660185635,
- 38.89080808329124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04797'>Report Problem</a>",
- "NAME": "H04797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95397626395426,
- 38.8919068681121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04798'>Report Problem</a>",
- "NAME": "H04798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96483366750157,
- 38.868664526134815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04799'>Report Problem</a>",
- "NAME": "H04799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01356702678221,
- 38.88513919904141,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04800'>Report Problem</a>",
- "NAME": "H04800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09432638422177,
- 38.92619960331468,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04801'>Report Problem</a>",
- "NAME": "H04801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04477042354836,
- 38.990204598322485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04802'>Report Problem</a>",
- "NAME": "H04802"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04402642731336,
- 38.98881321227033,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04803'>Report Problem</a>",
- "NAME": "H04803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98188930205934,
- 38.921950883086794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04804'>Report Problem</a>",
- "NAME": "H04804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1075264479778,
- 38.93253440034168,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04805'>Report Problem</a>",
- "NAME": "H04805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10600435734776,
- 38.93401833324635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04806'>Report Problem</a>",
- "NAME": "H04806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10682858019072,
- 38.933180269511496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04807'>Report Problem</a>",
- "NAME": "H04807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01882920423077,
- 38.88613034612367,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04808'>Report Problem</a>",
- "NAME": "H04808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04371450679095,
- 38.93889600935824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04809'>Report Problem</a>",
- "NAME": "H04809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97723976230432,
- 38.86890736202704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04810'>Report Problem</a>",
- "NAME": "H04810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09638027028329,
- 38.93233851756908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04811'>Report Problem</a>",
- "NAME": "H04811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97925664619731,
- 38.91614165067249,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04812'>Report Problem</a>",
- "NAME": "H04812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09118233938017,
- 38.91522106278821,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04813'>Report Problem</a>",
- "NAME": "H04813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10116194205156,
- 38.93060223234202,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04814'>Report Problem</a>",
- "NAME": "H04814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9303940267273,
- 38.90172544067324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05236'>Report Problem</a>",
- "NAME": "H05236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92951698417788,
- 38.90189109201884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05237'>Report Problem</a>",
- "NAME": "H05237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06288884747777,
- 38.904678035720075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05238'>Report Problem</a>",
- "NAME": "H05238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9364149049863,
- 38.88347047825336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05239'>Report Problem</a>",
- "NAME": "H05239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93947277033521,
- 38.88324683923172,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05240'>Report Problem</a>",
- "NAME": "H05240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93647852547285,
- 38.88211158853302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05241'>Report Problem</a>",
- "NAME": "H05241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93935861335437,
- 38.8819007826926,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05242'>Report Problem</a>",
- "NAME": "H05242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93443518869493,
- 38.883031377885494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05243'>Report Problem</a>",
- "NAME": "H05243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92865174745543,
- 38.9025822465212,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05244'>Report Problem</a>",
- "NAME": "H05244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92747818794447,
- 38.902586451492354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05245'>Report Problem</a>",
- "NAME": "H05245"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9309017060856,
- 38.9021063812049,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05246'>Report Problem</a>",
- "NAME": "H05246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93003672678589,
- 38.902546104828836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05247'>Report Problem</a>",
- "NAME": "H05247"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92170897094678,
- 38.89140887595691,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05248'>Report Problem</a>",
- "NAME": "H05248"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96802578021132,
- 38.85061429603089,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05249'>Report Problem</a>",
- "NAME": "H05249"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92387292178395,
- 38.891581735669874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05250'>Report Problem</a>",
- "NAME": "H05250"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92635607441318,
- 38.902663545716806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05251'>Report Problem</a>",
- "NAME": "H05251"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9578530667068,
- 38.869293335316804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05252'>Report Problem</a>",
- "NAME": "H05252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93359707132907,
- 38.88880021537058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05253'>Report Problem</a>",
- "NAME": "H05253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9324124946202,
- 38.88867692289541,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05254'>Report Problem</a>",
- "NAME": "H05254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95725594448804,
- 38.87023566789262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05255'>Report Problem</a>",
- "NAME": "H05255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03838650996451,
- 38.962697226149494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05256'>Report Problem</a>",
- "NAME": "H05256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98644082862975,
- 38.85799525046285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05258'>Report Problem</a>",
- "NAME": "H05258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98582125384355,
- 38.857586788961164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05259'>Report Problem</a>",
- "NAME": "H05259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98430953085037,
- 38.8448852982181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05260'>Report Problem</a>",
- "NAME": "H05260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98337802145222,
- 38.843656030133,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05261'>Report Problem</a>",
- "NAME": "H05261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99198662394896,
- 38.8400376054999,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05264'>Report Problem</a>",
- "NAME": "H05264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98337984701934,
- 38.84452283193394,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05265'>Report Problem</a>",
- "NAME": "H05265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9914789427159,
- 38.839289597868145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05266'>Report Problem</a>",
- "NAME": "H05266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93306402106003,
- 38.88822386130041,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05267'>Report Problem</a>",
- "NAME": "H05267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93242678527895,
- 38.88774198746146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05268'>Report Problem</a>",
- "NAME": "H05268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92035748611644,
- 38.89724381926335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05269'>Report Problem</a>",
- "NAME": "H05269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0088456648001,
- 38.83144995497134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05270'>Report Problem</a>",
- "NAME": "H05270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9410254124569,
- 38.870184043356524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05271'>Report Problem</a>",
- "NAME": "H05271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98345012991754,
- 38.91272970130136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05273'>Report Problem</a>",
- "NAME": "H05273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9611430508945,
- 38.89188019478629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05698'>Report Problem</a>",
- "NAME": "H05698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03233738400814,
- 38.98895822241572,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05699'>Report Problem</a>",
- "NAME": "H05699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03097565893982,
- 38.98792329589722,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05700'>Report Problem</a>",
- "NAME": "H05700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03376492782296,
- 38.99005990971443,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05701'>Report Problem</a>",
- "NAME": "H05701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98943312180798,
- 38.95014586421363,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05702'>Report Problem</a>",
- "NAME": "H05702"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08219976296907,
- 38.948887858583475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05704'>Report Problem</a>",
- "NAME": "H05704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0319358274213,
- 38.98635414115788,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05705'>Report Problem</a>",
- "NAME": "H05705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0335241596069,
- 38.97159383131471,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05707'>Report Problem</a>",
- "NAME": "H05707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03476667517141,
- 38.971438229577046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05708'>Report Problem</a>",
- "NAME": "H05708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99503072862606,
- 38.94638695587887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05709'>Report Problem</a>",
- "NAME": "H05709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99370432607566,
- 38.94631697870379,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05710'>Report Problem</a>",
- "NAME": "H05710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08629893217942,
- 38.93336432591368,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05712'>Report Problem</a>",
- "NAME": "H05712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00012675472678,
- 38.83314198908348,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05713'>Report Problem</a>",
- "NAME": "H05713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9901220467203,
- 38.946316343537376,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05716'>Report Problem</a>",
- "NAME": "H05716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00049214456863,
- 38.828184351260866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05717'>Report Problem</a>",
- "NAME": "H05717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0658859245943,
- 38.946340541976284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 11/10/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05718'>Report Problem</a>",
- "NAME": "H05718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851523626316,
- 38.88595656932109,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05719'>Report Problem</a>",
- "NAME": "H05719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94043409618848,
- 38.88181536008358,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05720'>Report Problem</a>",
- "NAME": "H05720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94192741713624,
- 38.88169605734088,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05721'>Report Problem</a>",
- "NAME": "H05721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96077971341751,
- 38.870469609705395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05722'>Report Problem</a>",
- "NAME": "H05722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00884101931524,
- 38.82611497934236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05723'>Report Problem</a>",
- "NAME": "H05723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93932168730257,
- 38.894205651412484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05724'>Report Problem</a>",
- "NAME": "H05724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98572787577514,
- 38.95051566560656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05725'>Report Problem</a>",
- "NAME": "H05725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94550149027835,
- 38.882776336084426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05726'>Report Problem</a>",
- "NAME": "H05726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02000699786812,
- 38.95852309279095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05727'>Report Problem</a>",
- "NAME": "H05727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02948826363551,
- 38.972212099908646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05728'>Report Problem</a>",
- "NAME": "H05728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95110307371986,
- 38.87083133069295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05729'>Report Problem</a>",
- "NAME": "H05729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93396656142461,
- 38.87653301777632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05730'>Report Problem</a>",
- "NAME": "H05730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92220923662668,
- 38.89278116759077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05731'>Report Problem</a>",
- "NAME": "H05731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9328585698703,
- 38.87560290845916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05732'>Report Problem</a>",
- "NAME": "H05732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09061089296013,
- 38.93438101911093,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05733'>Report Problem</a>",
- "NAME": "H05733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09212141324365,
- 38.93386459924006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP. Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05734'>Report Problem</a>",
- "NAME": "H05734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07126218221987,
- 38.948917098772036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05735'>Report Problem</a>",
- "NAME": "H05735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03289550087862,
- 38.98840417027071,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05736'>Report Problem</a>",
- "NAME": "H05736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01027710768506,
- 38.95229484042292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04296'>Report Problem</a>",
- "NAME": "H04296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98122810421337,
- 38.901151152765806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04297'>Report Problem</a>",
- "NAME": "H04297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98171557244987,
- 38.900737575326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04298'>Report Problem</a>",
- "NAME": "H04298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9761287016126,
- 38.92070956431243,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04300'>Report Problem</a>",
- "NAME": "H04300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05954573933394,
- 38.918957593692156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04301'>Report Problem</a>",
- "NAME": "H04301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02176840872563,
- 38.89261007344565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04302'>Report Problem</a>",
- "NAME": "H04302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03131990863113,
- 38.96751528610002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04303'>Report Problem</a>",
- "NAME": "H04303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08611182143484,
- 38.957963615336816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04304'>Report Problem</a>",
- "NAME": "H04304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08608986765046,
- 38.95888246537479,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04305'>Report Problem</a>",
- "NAME": "H04305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0465833849777,
- 38.89193533793445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04306'>Report Problem</a>",
- "NAME": "H04306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02815146221539,
- 38.916273712339546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04307'>Report Problem</a>",
- "NAME": "H04307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08747813340375,
- 38.94473522676658,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04308'>Report Problem</a>",
- "NAME": "H04308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9672181997991,
- 38.856638451212675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04309'>Report Problem</a>",
- "NAME": "H04309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96587863380492,
- 38.854824986176325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04310'>Report Problem</a>",
- "NAME": "H04310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97228764298929,
- 38.89912194388076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04311'>Report Problem</a>",
- "NAME": "H04311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97319135223879,
- 38.898962607690265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04312'>Report Problem</a>",
- "NAME": "H04312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95705040163853,
- 38.86812983209164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04313'>Report Problem</a>",
- "NAME": "H04313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97633078373637,
- 38.892139917208574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04314'>Report Problem</a>",
- "NAME": "H04314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97229124573204,
- 38.899581380099804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04315'>Report Problem</a>",
- "NAME": "H04315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97391305318305,
- 38.90025392122386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04316'>Report Problem</a>",
- "NAME": "H04316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97305286307991,
- 38.9002522486052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04317'>Report Problem</a>",
- "NAME": "H04317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97387747425165,
- 38.898970852636126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04318'>Report Problem</a>",
- "NAME": "H04318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97249705180883,
- 38.90025359644827,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04319'>Report Problem</a>",
- "NAME": "H04319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97425567826107,
- 38.899598558041674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04320'>Report Problem</a>",
- "NAME": "H04320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95579798736269,
- 38.86762338936386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04321'>Report Problem</a>",
- "NAME": "H04321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95468059783182,
- 38.86816171800891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04322'>Report Problem</a>",
- "NAME": "H04322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95332267355158,
- 38.86753025207011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04323'>Report Problem</a>",
- "NAME": "H04323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9568332769575,
- 38.863627086006616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04324'>Report Problem</a>",
- "NAME": "H04324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97523601674682,
- 38.89209940481035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/30/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04325'>Report Problem</a>",
- "NAME": "H04325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96382012456583,
- 38.86814730499983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04326'>Report Problem</a>",
- "NAME": "H04326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97766991656334,
- 38.9043168192467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04327'>Report Problem</a>",
- "NAME": "H04327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98289673383327,
- 38.90413014745225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04328'>Report Problem</a>",
- "NAME": "H04328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03352424401162,
- 38.960930995563075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04329'>Report Problem</a>",
- "NAME": "H04329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93504453813388,
- 38.87850040747153,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04330'>Report Problem</a>",
- "NAME": "H04330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01048054324256,
- 38.962561889119925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04815'>Report Problem</a>",
- "NAME": "H04815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04230630246788,
- 38.93797335741091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04816'>Report Problem</a>",
- "NAME": "H04816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98235356028253,
- 38.90507356534147,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04817'>Report Problem</a>",
- "NAME": "H04817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95399246174316,
- 38.88882855960629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04818'>Report Problem</a>",
- "NAME": "H04818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97982852386657,
- 38.944285868830015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04819'>Report Problem</a>",
- "NAME": "H04819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95591473597428,
- 38.88883622838039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04820'>Report Problem</a>",
- "NAME": "H04820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0629606529764,
- 38.968891466935894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04821'>Report Problem</a>",
- "NAME": "H04821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06162612771428,
- 38.9688507128994,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04822'>Report Problem</a>",
- "NAME": "H04822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06290777956663,
- 38.96832918281929,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04823'>Report Problem</a>",
- "NAME": "H04823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96486785207344,
- 38.87494706010085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04824'>Report Problem</a>",
- "NAME": "H04824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95206526528843,
- 38.86434070138106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04825'>Report Problem</a>",
- "NAME": "H04825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95050417296946,
- 38.86435488694021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04826'>Report Problem</a>",
- "NAME": "H04826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06127772997033,
- 38.97392092168366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04827'>Report Problem</a>",
- "NAME": "H04827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96557648871925,
- 38.87859105014223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04828'>Report Problem</a>",
- "NAME": "H04828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09244340732056,
- 38.94037395071902,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04829'>Report Problem</a>",
- "NAME": "H04829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09253964154384,
- 38.939485296207536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04830'>Report Problem</a>",
- "NAME": "H04830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00639208759462,
- 38.945527586772194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04831'>Report Problem</a>",
- "NAME": "H04831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9772997499416,
- 38.850872496423754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04832'>Report Problem</a>",
- "NAME": "H04832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00510200670918,
- 38.94485390271116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04833'>Report Problem</a>",
- "NAME": "H04833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97778767040835,
- 38.85019668738738,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04835'>Report Problem</a>",
- "NAME": "H04835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98226160034953,
- 38.943478012981686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04836'>Report Problem</a>",
- "NAME": "H04836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9775940856554,
- 38.851591876752565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04837'>Report Problem</a>",
- "NAME": "H04837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97685288199948,
- 38.85150299907287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04838'>Report Problem</a>",
- "NAME": "H04838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04679212788085,
- 38.89519037494254,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04839'>Report Problem</a>",
- "NAME": "H04839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9609489954562,
- 38.87581313498984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04840'>Report Problem</a>",
- "NAME": "H04840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0550539948318,
- 38.920829924994095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04841'>Report Problem</a>",
- "NAME": "H04841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9484752575433,
- 38.890959214420675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04842'>Report Problem</a>",
- "NAME": "H04842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11029411056718,
- 38.934413936461496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04843'>Report Problem</a>",
- "NAME": "H04843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06095431839367,
- 38.97993945193936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04844'>Report Problem</a>",
- "NAME": "H04844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05909324581968,
- 38.90391971215852,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04845'>Report Problem</a>",
- "NAME": "H04845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10833393295695,
- 38.93513332643349,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04846'>Report Problem</a>",
- "NAME": "H04846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9481476171759,
- 38.896103911862824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04847'>Report Problem</a>",
- "NAME": "H04847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98908278252829,
- 38.94739041641569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04848'>Report Problem</a>",
- "NAME": "H04848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05725204536952,
- 38.91690411086289,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/15/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04849'>Report Problem</a>",
- "NAME": "H04849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0086347806207,
- 38.94873698448273,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05274'>Report Problem</a>",
- "NAME": "H05274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9151970773889,
- 38.89576895849258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05275'>Report Problem</a>",
- "NAME": "H05275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92836901623804,
- 38.899910770701474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05276'>Report Problem</a>",
- "NAME": "H05276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9266768909645,
- 38.89965980193343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05277'>Report Problem</a>",
- "NAME": "H05277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92655942098412,
- 38.9018863965856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05278'>Report Problem</a>",
- "NAME": "H05278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92706772927086,
- 38.90074253628703,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05279'>Report Problem</a>",
- "NAME": "H05279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92758054670871,
- 38.89967183325459,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05280'>Report Problem</a>",
- "NAME": "H05280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92534275675774,
- 38.89979717225478,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05281'>Report Problem</a>",
- "NAME": "H05281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9285483519885,
- 38.90188702639059,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05282'>Report Problem</a>",
- "NAME": "H05282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92595020926296,
- 38.90049781482274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05283'>Report Problem</a>",
- "NAME": "H05283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93480902357527,
- 38.890390921721355,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05284'>Report Problem</a>",
- "NAME": "H05284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91351965296808,
- 38.89191623514586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05285'>Report Problem</a>",
- "NAME": "H05285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93598596323984,
- 38.889517075465626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05287'>Report Problem</a>",
- "NAME": "H05287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93392335669337,
- 38.907273266806925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05288'>Report Problem</a>",
- "NAME": "H05288"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9367220178332,
- 38.88830081395822,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05289'>Report Problem</a>",
- "NAME": "H05289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92867621961119,
- 38.903623032888554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05290'>Report Problem</a>",
- "NAME": "H05290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09552477576537,
- 38.94024813160729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05291'>Report Problem</a>",
- "NAME": "H05291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09426367753699,
- 38.940075799739446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER<p align=center>In Service</p><hr />Last Inspection Date: 01/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05292'>Report Problem</a>",
- "NAME": "H05292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97287133756159,
- 38.89558910897122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05294'>Report Problem</a>",
- "NAME": "H05294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96902163373117,
- 38.854331272649816,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05295'>Report Problem</a>",
- "NAME": "H05295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.967088970468,
- 38.934040960738464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05296'>Report Problem</a>",
- "NAME": "H05296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92846888637392,
- 38.88496376952767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05297'>Report Problem</a>",
- "NAME": "H05297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97519429396318,
- 38.90242945718334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05298'>Report Problem</a>",
- "NAME": "H05298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05440870726223,
- 38.96566845570264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05299'>Report Problem</a>",
- "NAME": "H05299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97487775240677,
- 38.88760413114976,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05300'>Report Problem</a>",
- "NAME": "H05300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93415839450266,
- 38.887576528550326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05301'>Report Problem</a>",
- "NAME": "H05301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9336593931824,
- 38.88658273883309,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05302'>Report Problem</a>",
- "NAME": "H05302"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93436797381392,
- 38.88854282226661,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05303'>Report Problem</a>",
- "NAME": "H05303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93613901588651,
- 38.88890764338561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05304'>Report Problem</a>",
- "NAME": "H05304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99592603498617,
- 38.93572255352629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05305'>Report Problem</a>",
- "NAME": "H05305"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93462983507179,
- 38.90155689094681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05306'>Report Problem</a>",
- "NAME": "H05306"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93299997139876,
- 38.890308372267484,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05307'>Report Problem</a>",
- "NAME": "H05307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0088390651903,
- 38.8728493324782,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05309'>Report Problem</a>",
- "NAME": "H05309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0295248923983,
- 38.93628486892012,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05310'>Report Problem</a>",
- "NAME": "H05310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07035971154083,
- 38.90509822197174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05737'>Report Problem</a>",
- "NAME": "H05737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97436366308231,
- 38.94280496191465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05738'>Report Problem</a>",
- "NAME": "H05738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97864195455291,
- 38.94531412479575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05739'>Report Problem</a>",
- "NAME": "H05739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98166022114894,
- 38.9462204200308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05740'>Report Problem</a>",
- "NAME": "H05740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97989561748804,
- 38.94611237281481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05741'>Report Problem</a>",
- "NAME": "H05741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99381000078833,
- 38.924438752237336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05742'>Report Problem</a>",
- "NAME": "H05742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06449466562998,
- 38.95418540939227,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05743'>Report Problem</a>",
- "NAME": "H05743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08564797152272,
- 38.91071987267789,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05744'>Report Problem</a>",
- "NAME": "H05744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98796625713597,
- 38.911334501654174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05745'>Report Problem</a>",
- "NAME": "H05745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01724901856186,
- 38.91439918725036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05746'>Report Problem</a>",
- "NAME": "H05746"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97702753567869,
- 38.94531302595674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05747'>Report Problem</a>",
- "NAME": "H05747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97313451138933,
- 38.849455386990826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05748'>Report Problem</a>",
- "NAME": "H05748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97260941626118,
- 38.8501174841393,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05749'>Report Problem</a>",
- "NAME": "H05749"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0179778651603,
- 38.92131584384434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05750'>Report Problem</a>",
- "NAME": "H05750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00198003624556,
- 38.848705500282136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05751'>Report Problem</a>",
- "NAME": "H05751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0780977113417,
- 38.90609660195239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05752'>Report Problem</a>",
- "NAME": "H05752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07951067926409,
- 38.90606327289221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05753'>Report Problem</a>",
- "NAME": "H05753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03508935807288,
- 38.9898523943052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05754'>Report Problem</a>",
- "NAME": "H05754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99791166927842,
- 38.95173467076874,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05755'>Report Problem</a>",
- "NAME": "H05755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9965218224642,
- 38.95132050040647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05756'>Report Problem</a>",
- "NAME": "H05756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97826170270852,
- 38.946091928872214,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05757'>Report Problem</a>",
- "NAME": "H05757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94164428733507,
- 38.88262713136998,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05758'>Report Problem</a>",
- "NAME": "H05758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97608265535031,
- 38.88931999349269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 04/14/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05759'>Report Problem</a>",
- "NAME": "H05759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97914778326177,
- 38.94063437507967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05760'>Report Problem</a>",
- "NAME": "H05760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00924258351668,
- 38.91912185663241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05761'>Report Problem</a>",
- "NAME": "H05761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05901463357367,
- 38.967103298526446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05762'>Report Problem</a>",
- "NAME": "H05762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98275298093917,
- 38.86173944750236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05763'>Report Problem</a>",
- "NAME": "H05763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06130203909844,
- 38.967488332270186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05764'>Report Problem</a>",
- "NAME": "H05764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06262930649754,
- 38.97774780274344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, Metropolitan M94<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05765'>Report Problem</a>",
- "NAME": "H05765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94176091398215,
- 38.88391056942392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05767'>Report Problem</a>",
- "NAME": "H05767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0025980426277,
- 38.96196307396218,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05768'>Report Problem</a>",
- "NAME": "H05768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00614357416043,
- 38.964232903626396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05769'>Report Problem</a>",
- "NAME": "H05769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98190085126755,
- 38.94700821364279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05770'>Report Problem</a>",
- "NAME": "H05770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.040165588548,
- 38.991800892890765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05771'>Report Problem</a>",
- "NAME": "H05771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02386224128482,
- 38.90101687322729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04365'>Report Problem</a>",
- "NAME": "H04365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0238571062221,
- 38.90158808516398,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04366'>Report Problem</a>",
- "NAME": "H04366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02123570865538,
- 38.96439680742797,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04367'>Report Problem</a>",
- "NAME": "H04367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07221776230718,
- 38.918431902807164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04368'>Report Problem</a>",
- "NAME": "H04368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95351893723814,
- 38.86244512545276,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04369'>Report Problem</a>",
- "NAME": "H04369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95463284581349,
- 38.86292382948282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04370'>Report Problem</a>",
- "NAME": "H04370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95372497712366,
- 38.86162581952653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04371'>Report Problem</a>",
- "NAME": "H04371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00735747981291,
- 38.959767784758185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04372'>Report Problem</a>",
- "NAME": "H04372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02441928182391,
- 38.97511031579954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04373'>Report Problem</a>",
- "NAME": "H04373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97613620327186,
- 38.94167751755087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04374'>Report Problem</a>",
- "NAME": "H04374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97322822777984,
- 38.93825700669867,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04375'>Report Problem</a>",
- "NAME": "H04375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96285676230137,
- 38.86735187524944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04376'>Report Problem</a>",
- "NAME": "H04376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00217722399313,
- 38.88765774589491,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04377'>Report Problem</a>",
- "NAME": "H04377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00339064057852,
- 38.88781671484649,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04378'>Report Problem</a>",
- "NAME": "H04378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97149250447177,
- 38.918687011754336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04379'>Report Problem</a>",
- "NAME": "H04379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0825464276259,
- 38.94542507355292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04380'>Report Problem</a>",
- "NAME": "H04380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09236264564747,
- 38.9267015749324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04381'>Report Problem</a>",
- "NAME": "H04381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09030910561266,
- 38.92658108107922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04382'>Report Problem</a>",
- "NAME": "H04382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98365764013333,
- 38.90714281958733,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04383'>Report Problem</a>",
- "NAME": "H04383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02004747216087,
- 38.95651376614207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04384'>Report Problem</a>",
- "NAME": "H04384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98020881351526,
- 38.904424836640914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04385'>Report Problem</a>",
- "NAME": "H04385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08459157191788,
- 38.9133799320576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04386'>Report Problem</a>",
- "NAME": "H04386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09076131242598,
- 38.94711726209218,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04387'>Report Problem</a>",
- "NAME": "H04387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05986733497306,
- 38.97765295124391,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04388'>Report Problem</a>",
- "NAME": "H04388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97231363763498,
- 38.93836192945532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04389'>Report Problem</a>",
- "NAME": "H04389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02691046330943,
- 38.90476890201847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04390'>Report Problem</a>",
- "NAME": "H04390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02714731890651,
- 38.90787070991565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04391'>Report Problem</a>",
- "NAME": "H04391"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02691275462516,
- 38.909161218613555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04392'>Report Problem</a>",
- "NAME": "H04392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99464600354275,
- 38.937453680503125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04393'>Report Problem</a>",
- "NAME": "H04393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96296153660478,
- 38.870422838808324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04394'>Report Problem</a>",
- "NAME": "H04394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01524085879905,
- 38.972382918269226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04395'>Report Problem</a>",
- "NAME": "H04395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01440727061679,
- 38.97225233246718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04396'>Report Problem</a>",
- "NAME": "H04396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9624059419235,
- 38.92319363081205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04397'>Report Problem</a>",
- "NAME": "H04397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97229847213681,
- 38.91413216952943,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04398'>Report Problem</a>",
- "NAME": "H04398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05931863197713,
- 38.91826539202323,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04850'>Report Problem</a>",
- "NAME": "H04850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95448704807538,
- 38.887707516551636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04851'>Report Problem</a>",
- "NAME": "H04851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04861636578171,
- 38.90728637703005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04852'>Report Problem</a>",
- "NAME": "H04852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08363180478528,
- 38.94785202562629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04853'>Report Problem</a>",
- "NAME": "H04853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9525854579913,
- 38.88936693210724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04854'>Report Problem</a>",
- "NAME": "H04854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98084271778794,
- 38.87184791076097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04855'>Report Problem</a>",
- "NAME": "H04855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0642135618758,
- 38.9729661401513,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04856'>Report Problem</a>",
- "NAME": "H04856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98683426395263,
- 38.919508298035446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04857'>Report Problem</a>",
- "NAME": "H04857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94251619274606,
- 38.89763623886089,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04858'>Report Problem</a>",
- "NAME": "H04858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10153543582629,
- 38.922603258865564,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04860'>Report Problem</a>",
- "NAME": "H04860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97620680310852,
- 38.84941120959343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04861'>Report Problem</a>",
- "NAME": "H04861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97969958896098,
- 38.84910341132716,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04862'>Report Problem</a>",
- "NAME": "H04862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97975239460152,
- 38.84963817932627,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04863'>Report Problem</a>",
- "NAME": "H04863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97826355906706,
- 38.85117125540655,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04864'>Report Problem</a>",
- "NAME": "H04864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97879500907135,
- 38.84955865403297,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04865'>Report Problem</a>",
- "NAME": "H04865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97866550086144,
- 38.84805480688819,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04866'>Report Problem</a>",
- "NAME": "H04866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0436009035287,
- 38.9422341734002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04867'>Report Problem</a>",
- "NAME": "H04867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97911079445437,
- 38.85074704975445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04868'>Report Problem</a>",
- "NAME": "H04868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94471477686481,
- 38.8666374447389,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04869'>Report Problem</a>",
- "NAME": "H04869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02827668839237,
- 38.932767075462706,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04870'>Report Problem</a>",
- "NAME": "H04870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98043312064672,
- 38.94518942137881,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04871'>Report Problem</a>",
- "NAME": "H04871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9816084484277,
- 38.94514979558932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04872'>Report Problem</a>",
- "NAME": "H04872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97710609557588,
- 38.90575544280286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04873'>Report Problem</a>",
- "NAME": "H04873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0118262027984,
- 38.83095155904082,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04874'>Report Problem</a>",
- "NAME": "H04874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97746325873652,
- 38.92552507400033,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04875'>Report Problem</a>",
- "NAME": "H04875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99016027324167,
- 38.94533323694629,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04876'>Report Problem</a>",
- "NAME": "H04876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98514814923617,
- 38.87997940840418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 03/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04877'>Report Problem</a>",
- "NAME": "H04877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93139114543416,
- 38.876532632192315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04878'>Report Problem</a>",
- "NAME": "H04878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0153283638076,
- 38.90037609882181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04879'>Report Problem</a>",
- "NAME": "H04879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01509757805228,
- 38.901239850171095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04880'>Report Problem</a>",
- "NAME": "H04880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95217036320625,
- 38.89255269150732,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04881'>Report Problem</a>",
- "NAME": "H04881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01106464885362,
- 38.97238290152446,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04882'>Report Problem</a>",
- "NAME": "H04882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95298829788665,
- 38.89291631315321,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04883'>Report Problem</a>",
- "NAME": "H04883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10579397560643,
- 38.93571591403128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04884'>Report Problem</a>",
- "NAME": "H04884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97423145903142,
- 38.90135000271714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05311'>Report Problem</a>",
- "NAME": "H05311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96991943770166,
- 38.85821775178569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05312'>Report Problem</a>",
- "NAME": "H05312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0063048064685,
- 38.908188490305065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05313'>Report Problem</a>",
- "NAME": "H05313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97432974842071,
- 38.93316629444106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05314'>Report Problem</a>",
- "NAME": "H05314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94177214756726,
- 38.90970416449285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05315'>Report Problem</a>",
- "NAME": "H05315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9490782045424,
- 38.89497117674824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05316'>Report Problem</a>",
- "NAME": "H05316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93009665441133,
- 38.893556261630565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05317'>Report Problem</a>",
- "NAME": "H05317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92839610634294,
- 38.89589219188854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05318'>Report Problem</a>",
- "NAME": "H05318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92755893154089,
- 38.89602770208981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05319'>Report Problem</a>",
- "NAME": "H05319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9288997421302,
- 38.893731427693766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05320'>Report Problem</a>",
- "NAME": "H05320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93010694342054,
- 38.89291397086683,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05321'>Report Problem</a>",
- "NAME": "H05321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92900280425049,
- 38.89294622159397,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05322'>Report Problem</a>",
- "NAME": "H05322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9279548618616,
- 38.89685607711352,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05323'>Report Problem</a>",
- "NAME": "H05323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00476611472676,
- 38.83369324561206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05324'>Report Problem</a>",
- "NAME": "H05324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99191676134575,
- 38.832941027768875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05325'>Report Problem</a>",
- "NAME": "H05325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97747003444422,
- 38.88969819771228,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/01/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05326'>Report Problem</a>",
- "NAME": "H05326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0205995511198,
- 38.87397770175878,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05327'>Report Problem</a>",
- "NAME": "H05327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0161056881362,
- 38.89883203353696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05328'>Report Problem</a>",
- "NAME": "H05328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94696630937725,
- 38.883633419712204,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05329'>Report Problem</a>",
- "NAME": "H05329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94679439594358,
- 38.88483676268073,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05330'>Report Problem</a>",
- "NAME": "H05330"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9452629422241,
- 38.88370139485717,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05331'>Report Problem</a>",
- "NAME": "H05331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9803102195726,
- 38.847088184039535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05332'>Report Problem</a>",
- "NAME": "H05332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99851284750505,
- 38.889966153157346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05333'>Report Problem</a>",
- "NAME": "H05333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05816191390761,
- 38.90294589892776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05334'>Report Problem</a>",
- "NAME": "H05334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0874610737096,
- 38.948873311928736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05335'>Report Problem</a>",
- "NAME": "H05335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05614455808113,
- 38.90168653569009,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05336'>Report Problem</a>",
- "NAME": "H05336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97601597100676,
- 38.903046214579554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05337'>Report Problem</a>",
- "NAME": "H05337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97305968877532,
- 38.90318007400636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05338'>Report Problem</a>",
- "NAME": "H05338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97407695757303,
- 38.90296151826522,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05339'>Report Problem</a>",
- "NAME": "H05339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06405084205406,
- 38.9028839671798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05340'>Report Problem</a>",
- "NAME": "H05340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9800871536211,
- 38.940791427270284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05341'>Report Problem</a>",
- "NAME": "H05341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00670052175994,
- 38.94352657740833,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05342'>Report Problem</a>",
- "NAME": "H05342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9962431356938,
- 38.87667208617181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 11/16/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05343'>Report Problem</a>",
- "NAME": "H05343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09535810201993,
- 38.91645696159477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05344'>Report Problem</a>",
- "NAME": "H05344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98322197200405,
- 38.9470769637264,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05772'>Report Problem</a>",
- "NAME": "H05772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9444277021068,
- 38.86966536842158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05773'>Report Problem</a>",
- "NAME": "H05773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98308202550764,
- 38.94627435983034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05774'>Report Problem</a>",
- "NAME": "H05774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05273431036878,
- 38.94075003242173,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/18/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05775'>Report Problem</a>",
- "NAME": "H05775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08209134976842,
- 38.949611813063065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05776'>Report Problem</a>",
- "NAME": "H05776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03501679279307,
- 38.99094057082654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05777'>Report Problem</a>",
- "NAME": "H05777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00452760675826,
- 38.94333874189808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05778'>Report Problem</a>",
- "NAME": "H05778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97408502324092,
- 38.85023320107571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05779'>Report Problem</a>",
- "NAME": "H05779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99698976744763,
- 38.94636125004855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05780'>Report Problem</a>",
- "NAME": "H05780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99713676371535,
- 38.947298340058076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05781'>Report Problem</a>",
- "NAME": "H05781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94630245638086,
- 38.90553917184205,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 09/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05782'>Report Problem</a>",
- "NAME": "H05782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09898332968342,
- 38.93083426915807,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05783'>Report Problem</a>",
- "NAME": "H05783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97106736384829,
- 38.92112225421891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05784'>Report Problem</a>",
- "NAME": "H05784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99619621948037,
- 38.95191316246679,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/17/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05785'>Report Problem</a>",
- "NAME": "H05785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0699158929287,
- 38.95838294662499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05786'>Report Problem</a>",
- "NAME": "H05786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97123180688277,
- 38.852939441074504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05787'>Report Problem</a>",
- "NAME": "H05787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97021993443934,
- 38.852956762797184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, ASECOND<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05788'>Report Problem</a>",
- "NAME": "H05788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97221823730892,
- 38.85308055383485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05789'>Report Problem</a>",
- "NAME": "H05789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93751544091515,
- 38.90156901873582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05790'>Report Problem</a>",
- "NAME": "H05790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02643630313452,
- 38.940985794020946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05791'>Report Problem</a>",
- "NAME": "H05791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9486886236881,
- 38.893194213513155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05792'>Report Problem</a>",
- "NAME": "H05792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01196468484497,
- 38.81611175080019,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05793'>Report Problem</a>",
- "NAME": "H05793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01229113167126,
- 38.81695207326778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05794'>Report Problem</a>",
- "NAME": "H05794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01609466839653,
- 38.81595966846284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05796'>Report Problem</a>",
- "NAME": "H05796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01258370061352,
- 38.81774323007814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05797'>Report Problem</a>",
- "NAME": "H05797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97737109913541,
- 38.90024694909009,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05798'>Report Problem</a>",
- "NAME": "H05798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0182686576767,
- 38.922573045286946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05799'>Report Problem</a>",
- "NAME": "H05799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9630785749578,
- 38.873773470346734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05800'>Report Problem</a>",
- "NAME": "H05800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94177209820324,
- 38.9071659817418,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05801'>Report Problem</a>",
- "NAME": "H05801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9396499317961,
- 38.86937125964632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05802'>Report Problem</a>",
- "NAME": "H05802"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91998507261452,
- 38.901034419180235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05803'>Report Problem</a>",
- "NAME": "H05803"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93676555665591,
- 38.87566850844981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05804'>Report Problem</a>",
- "NAME": "H05804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99699130726087,
- 38.9383029133492,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05805'>Report Problem</a>",
- "NAME": "H05805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98947972607715,
- 38.86706854419742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05806'>Report Problem</a>",
- "NAME": "H05806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0309611201911,
- 38.885037349718445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04331'>Report Problem</a>",
- "NAME": "H04331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03047903121914,
- 38.88503654865234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04332'>Report Problem</a>",
- "NAME": "H04332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9574374066653,
- 38.893647282596596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, USP<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04333'>Report Problem</a>",
- "NAME": "H04333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98357835851769,
- 38.878723887905146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04334'>Report Problem</a>",
- "NAME": "H04334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98434653911396,
- 38.942615794350445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04335'>Report Problem</a>",
- "NAME": "H04335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98831041513479,
- 38.92302299842862,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04336'>Report Problem</a>",
- "NAME": "H04336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98498477435501,
- 38.921753751284506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04337'>Report Problem</a>",
- "NAME": "H04337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98661194285748,
- 38.922992106824246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04338'>Report Problem</a>",
- "NAME": "H04338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9846218213071,
- 38.92359055484959,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04339'>Report Problem</a>",
- "NAME": "H04339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98576120888207,
- 38.922308671042686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04340'>Report Problem</a>",
- "NAME": "H04340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9860849098168,
- 38.922291621248704,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04341'>Report Problem</a>",
- "NAME": "H04341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0051566762043,
- 38.96530814879601,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04342'>Report Problem</a>",
- "NAME": "H04342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94080412483069,
- 38.89683436005604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04343'>Report Problem</a>",
- "NAME": "H04343"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98592404782501,
- 38.940661475493464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04344'>Report Problem</a>",
- "NAME": "H04344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05624142405397,
- 38.95292641422097,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04345'>Report Problem</a>",
- "NAME": "H04345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09416858043568,
- 38.947031880036064,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04346'>Report Problem</a>",
- "NAME": "H04346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07376141114568,
- 38.94223943650632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04347'>Report Problem</a>",
- "NAME": "H04347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07891053737639,
- 38.92465313021852,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04348'>Report Problem</a>",
- "NAME": "H04348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08037814241008,
- 38.92355520464714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04349'>Report Problem</a>",
- "NAME": "H04349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07890915879342,
- 38.92356363764547,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04350'>Report Problem</a>",
- "NAME": "H04350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08749212856794,
- 38.95041450615786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04351'>Report Problem</a>",
- "NAME": "H04351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97990377268994,
- 38.86414929282362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04352'>Report Problem</a>",
- "NAME": "H04352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97408323423807,
- 38.91414852377485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04353'>Report Problem</a>",
- "NAME": "H04353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97426356969697,
- 38.89817544599551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04354'>Report Problem</a>",
- "NAME": "H04354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03405383232327,
- 38.941957330896415,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04355'>Report Problem</a>",
- "NAME": "H04355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97616749101634,
- 38.926721625727005,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04356'>Report Problem</a>",
- "NAME": "H04356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04497583457153,
- 38.93137702251578,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 12/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04357'>Report Problem</a>",
- "NAME": "H04357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05915305751323,
- 38.976822630001095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04358'>Report Problem</a>",
- "NAME": "H04358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9740456833249,
- 38.92456220459464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04359'>Report Problem</a>",
- "NAME": "H04359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9587956842141,
- 38.86054217742242,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04360'>Report Problem</a>",
- "NAME": "H04360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95884183504249,
- 38.85933304729061,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04361'>Report Problem</a>",
- "NAME": "H04361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00058788315079,
- 38.846502889142755,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04362'>Report Problem</a>",
- "NAME": "H04362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91214730248898,
- 38.89293112152528,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04363'>Report Problem</a>",
- "NAME": "H04363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92862122237243,
- 38.89961864877854,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04364'>Report Problem</a>",
- "NAME": "H04364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03840727415464,
- 38.91671801912763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04885'>Report Problem</a>",
- "NAME": "H04885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9473117957653,
- 38.89095836211015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04886'>Report Problem</a>",
- "NAME": "H04886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97885248960094,
- 38.87072844428013,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04887'>Report Problem</a>",
- "NAME": "H04887"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93613071799646,
- 38.893786277214275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04888'>Report Problem</a>",
- "NAME": "H04888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98448314505494,
- 38.921488444689565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04889'>Report Problem</a>",
- "NAME": "H04889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98801214318598,
- 38.92013571958857,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04890'>Report Problem</a>",
- "NAME": "H04890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07056514361017,
- 38.94227044340879,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04891'>Report Problem</a>",
- "NAME": "H04891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00299066434559,
- 38.837933116584274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04892'>Report Problem</a>",
- "NAME": "H04892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03559190455715,
- 38.939989849360686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04893'>Report Problem</a>",
- "NAME": "H04893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00075038632602,
- 38.91634001521385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04894'>Report Problem</a>",
- "NAME": "H04894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03145707447457,
- 38.96903239044914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04895'>Report Problem</a>",
- "NAME": "H04895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97639695820709,
- 38.90179577036829,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04896'>Report Problem</a>",
- "NAME": "H04896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.976398620421,
- 38.900918293715435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04897'>Report Problem</a>",
- "NAME": "H04897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99254332655114,
- 38.946338512270465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04898'>Report Problem</a>",
- "NAME": "H04898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03811370522907,
- 38.93988385545386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04899'>Report Problem</a>",
- "NAME": "H04899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03297633060127,
- 38.943087450299835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04900'>Report Problem</a>",
- "NAME": "H04900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92434839294593,
- 38.890841907425056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04901'>Report Problem</a>",
- "NAME": "H04901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93156657096162,
- 38.89988049165386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04902'>Report Problem</a>",
- "NAME": "H04902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96949114713723,
- 38.86121884139694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04903'>Report Problem</a>",
- "NAME": "H04903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01234482122938,
- 38.82518999581628,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04904'>Report Problem</a>",
- "NAME": "H04904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97698528805732,
- 38.89691055514364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04905'>Report Problem</a>",
- "NAME": "H04905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06114871389445,
- 38.926249688224246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/20/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04906'>Report Problem</a>",
- "NAME": "H04906"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98150025790616,
- 38.938211873579334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04907'>Report Problem</a>",
- "NAME": "H04907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01237917558967,
- 38.8304484060221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04908'>Report Problem</a>",
- "NAME": "H04908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06231079797175,
- 38.95512007551095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04909'>Report Problem</a>",
- "NAME": "H04909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98696883526245,
- 38.90145697512101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04910'>Report Problem</a>",
- "NAME": "H04910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97441014735803,
- 38.897081610737494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04911'>Report Problem</a>",
- "NAME": "H04911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97453502596304,
- 38.89621305154919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04912'>Report Problem</a>",
- "NAME": "H04912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09454369663428,
- 38.93818203834453,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04913'>Report Problem</a>",
- "NAME": "H04913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94796489846615,
- 38.866243694209345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04914'>Report Problem</a>",
- "NAME": "H04914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94738967034276,
- 38.8668550986476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04915'>Report Problem</a>",
- "NAME": "H04915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95598577737442,
- 38.88770828910662,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04916'>Report Problem</a>",
- "NAME": "H04916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01016811902291,
- 38.83153291428178,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04917'>Report Problem</a>",
- "NAME": "H04917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98278215240266,
- 38.92551126808792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04918'>Report Problem</a>",
- "NAME": "H04918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0577719928952,
- 38.924541798572356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05345'>Report Problem</a>",
- "NAME": "H05345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96954064114924,
- 38.86103968586152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05346'>Report Problem</a>",
- "NAME": "H05346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05740648369145,
- 38.92609225625718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/14/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05347'>Report Problem</a>",
- "NAME": "H05347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97914189542227,
- 38.92669498932551,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05348'>Report Problem</a>",
- "NAME": "H05348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08634685875595,
- 38.955396662533744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05349'>Report Problem</a>",
- "NAME": "H05349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08757434872217,
- 38.955391848961035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05350'>Report Problem</a>",
- "NAME": "H05350"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96712309472149,
- 38.93502505523588,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/09/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05351'>Report Problem</a>",
- "NAME": "H05351"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92186662069173,
- 38.88554860682302,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05352'>Report Problem</a>",
- "NAME": "H05352"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92386005341119,
- 38.88513788880113,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05353'>Report Problem</a>",
- "NAME": "H05353"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9225453130617,
- 38.884281912300864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05354'>Report Problem</a>",
- "NAME": "H05354"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92066654003027,
- 38.88545204773908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05355'>Report Problem</a>",
- "NAME": "H05355"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91974921498726,
- 38.885938972864516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05356'>Report Problem</a>",
- "NAME": "H05356"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92357400635332,
- 38.886407469780586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05357'>Report Problem</a>",
- "NAME": "H05357"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9210566474298,
- 38.88621966425954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05358'>Report Problem</a>",
- "NAME": "H05358"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00098222088296,
- 38.96206913484772,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05359'>Report Problem</a>",
- "NAME": "H05359"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9919239798893,
- 38.91870514578134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05360'>Report Problem</a>",
- "NAME": "H05360"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99993764162818,
- 38.96206290524546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05361'>Report Problem</a>",
- "NAME": "H05361"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98739055205115,
- 38.85863509008467,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05362'>Report Problem</a>",
- "NAME": "H05362"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98323137150355,
- 38.84517784164617,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05363'>Report Problem</a>",
- "NAME": "H05363"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02552618625118,
- 38.949887314626295,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05364'>Report Problem</a>",
- "NAME": "H05364"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93675533019515,
- 38.896725146781314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05365'>Report Problem</a>",
- "NAME": "H05365"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0850027940398,
- 38.94784311851121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05366'>Report Problem</a>",
- "NAME": "H05366"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94564186751613,
- 38.88541170555154,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05367'>Report Problem</a>",
- "NAME": "H05367"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92092086297211,
- 38.88406431617301,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05368'>Report Problem</a>",
- "NAME": "H05368"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98960940359626,
- 38.84317286248802,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05369'>Report Problem</a>",
- "NAME": "H05369"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98864008467258,
- 38.84392943653786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05370'>Report Problem</a>",
- "NAME": "H05370"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98861860163672,
- 38.84313363739907,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05371'>Report Problem</a>",
- "NAME": "H05371"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97068665118475,
- 38.846013015585534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05372'>Report Problem</a>",
- "NAME": "H05372"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97167229974202,
- 38.84561624787174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05373'>Report Problem</a>",
- "NAME": "H05373"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96913184562084,
- 38.84758237166778,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05374'>Report Problem</a>",
- "NAME": "H05374"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97075567496486,
- 38.84798369233439,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05375'>Report Problem</a>",
- "NAME": "H05375"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9767221824855,
- 38.940356182585624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05376'>Report Problem</a>",
- "NAME": "H05376"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9691593493674,
- 38.848208087115324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05377'>Report Problem</a>",
- "NAME": "H05377"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96973286725274,
- 38.8466519121057,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05378'>Report Problem</a>",
- "NAME": "H05378"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99659571186065,
- 38.93734830243366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05807'>Report Problem</a>",
- "NAME": "H05807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05351941905525,
- 38.96411241174244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05808'>Report Problem</a>",
- "NAME": "H05808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9959949192952,
- 38.92395748803602,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05809'>Report Problem</a>",
- "NAME": "H05809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0871016481261,
- 38.91057372766045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05810'>Report Problem</a>",
- "NAME": "H05810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08675180379811,
- 38.90985009527403,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05811'>Report Problem</a>",
- "NAME": "H05811"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00847076962663,
- 38.95133610883429,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05812'>Report Problem</a>",
- "NAME": "H05812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97228215091027,
- 38.85225696410726,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05813'>Report Problem</a>",
- "NAME": "H05813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03425324628465,
- 38.940871260223894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05814'>Report Problem</a>",
- "NAME": "H05814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98318373089532,
- 38.88140054879152,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05815'>Report Problem</a>",
- "NAME": "H05815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03334164924286,
- 38.961437951302145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05816'>Report Problem</a>",
- "NAME": "H05816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0004982191329,
- 38.89001893261946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05817'>Report Problem</a>",
- "NAME": "H05817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99273663493335,
- 38.88277421355622,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/07/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05818'>Report Problem</a>",
- "NAME": "H05818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00894081891772,
- 38.96573501067958,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05819'>Report Problem</a>",
- "NAME": "H05819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05596680396104,
- 38.98036025073512,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05820'>Report Problem</a>",
- "NAME": "H05820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07892673383769,
- 38.94968483351879,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05821'>Report Problem</a>",
- "NAME": "H05821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06711790133738,
- 38.90598078578831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05822'>Report Problem</a>",
- "NAME": "H05822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98517476886573,
- 38.91033622779275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05823'>Report Problem</a>",
- "NAME": "H05823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98129246261607,
- 38.908597474827275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05824'>Report Problem</a>",
- "NAME": "H05824"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9875644529908,
- 38.909119560540795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05825'>Report Problem</a>",
- "NAME": "H05825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93712208021883,
- 38.873932007474636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05826'>Report Problem</a>",
- "NAME": "H05826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97906720321647,
- 38.91658547541989,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05827'>Report Problem</a>",
- "NAME": "H05827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98026894614443,
- 38.91547739838723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05828'>Report Problem</a>",
- "NAME": "H05828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0186679307301,
- 38.892596908355785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05829'>Report Problem</a>",
- "NAME": "H05829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10064765578079,
- 38.92938469821102,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05830'>Report Problem</a>",
- "NAME": "H05830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0236986182379,
- 38.96205190077656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05831'>Report Problem</a>",
- "NAME": "H05831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.1007062161376,
- 38.92835298836681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05832'>Report Problem</a>",
- "NAME": "H05832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95786983807483,
- 38.89670973468568,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05833'>Report Problem</a>",
- "NAME": "H05833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0335914887838,
- 38.98666253285324,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05834'>Report Problem</a>",
- "NAME": "H05834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03471781215059,
- 38.9869926971265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05835'>Report Problem</a>",
- "NAME": "H05835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0217395748448,
- 38.90969228354792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05836'>Report Problem</a>",
- "NAME": "H05836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97135059646807,
- 38.923492755895694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05837'>Report Problem</a>",
- "NAME": "H05837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03067991802416,
- 38.94712500264623,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05838'>Report Problem</a>",
- "NAME": "H05838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0120939886857,
- 38.900055447565144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05839'>Report Problem</a>",
- "NAME": "H05839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0055739769854,
- 38.82266215248173,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05840'>Report Problem</a>",
- "NAME": "H05840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02407027214022,
- 38.91185201786605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04399'>Report Problem</a>",
- "NAME": "H04399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08374470896311,
- 38.94331697552041,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04400'>Report Problem</a>",
- "NAME": "H04400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09453904984362,
- 38.946333763235046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04401'>Report Problem</a>",
- "NAME": "H04401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03533219868035,
- 38.967611017276596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04402'>Report Problem</a>",
- "NAME": "H04402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06620260835496,
- 38.92438530238908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04403'>Report Problem</a>",
- "NAME": "H04403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91859154435178,
- 38.89277355859029,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04404'>Report Problem</a>",
- "NAME": "H04404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06095871131957,
- 38.95453232319597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04405'>Report Problem</a>",
- "NAME": "H04405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07389642351586,
- 38.91948788178545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 11/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04406'>Report Problem</a>",
- "NAME": "H04406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08859736665035,
- 38.91367495927595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04407'>Report Problem</a>",
- "NAME": "H04407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0871231148422,
- 38.91333775057115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04408'>Report Problem</a>",
- "NAME": "H04408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01905079226289,
- 38.89196386434339,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04409'>Report Problem</a>",
- "NAME": "H04409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03168970613166,
- 38.90267357666231,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04410'>Report Problem</a>",
- "NAME": "H04410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03479404406004,
- 38.902677332668766,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04411'>Report Problem</a>",
- "NAME": "H04411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99564140493116,
- 38.90563778451744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04412'>Report Problem</a>",
- "NAME": "H04412"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9949250983879,
- 38.9055222595509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04413'>Report Problem</a>",
- "NAME": "H04413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08884018472197,
- 38.95108008402275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04414'>Report Problem</a>",
- "NAME": "H04414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95502807202708,
- 38.87048948077753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04415'>Report Problem</a>",
- "NAME": "H04415"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02377866844559,
- 38.91117320907044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04416'>Report Problem</a>",
- "NAME": "H04416"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9903194852121,
- 38.86574497494948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04417'>Report Problem</a>",
- "NAME": "H04417"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99363369104861,
- 38.936910222274584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04418'>Report Problem</a>",
- "NAME": "H04418"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06290405827463,
- 38.97689870189981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04419'>Report Problem</a>",
- "NAME": "H04419"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03484495968459,
- 38.98042754470442,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04420'>Report Problem</a>",
- "NAME": "H04420"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98079828008791,
- 38.8608934140115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04421'>Report Problem</a>",
- "NAME": "H04421"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07185859100335,
- 38.91741512859899,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04422'>Report Problem</a>",
- "NAME": "H04422"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02224439440603,
- 38.956275109245084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04423'>Report Problem</a>",
- "NAME": "H04423"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98350147003177,
- 38.904373540988374,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04424'>Report Problem</a>",
- "NAME": "H04424"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0647939005297,
- 38.94649504084284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04425'>Report Problem</a>",
- "NAME": "H04425"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09009388374997,
- 38.933534511848876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04426'>Report Problem</a>",
- "NAME": "H04426"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09275545468826,
- 38.94632167961499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 12/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04427'>Report Problem</a>",
- "NAME": "H04427"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06467210033686,
- 38.957932434728,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04428'>Report Problem</a>",
- "NAME": "H04428"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06340072761463,
- 38.955270954553875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04429'>Report Problem</a>",
- "NAME": "H04429"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0924177019822,
- 38.94483625543618,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04430'>Report Problem</a>",
- "NAME": "H04430"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95852894111589,
- 38.876824916550774,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04431'>Report Problem</a>",
- "NAME": "H04431"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95747343705025,
- 38.89287971951555,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04432'>Report Problem</a>",
- "NAME": "H04432"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95701109105642,
- 38.8888371955463,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04919'>Report Problem</a>",
- "NAME": "H04919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04675340907951,
- 38.89287132091371,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04920'>Report Problem</a>",
- "NAME": "H04920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01997645054664,
- 38.88616846818783,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04921'>Report Problem</a>",
- "NAME": "H04921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96487808535504,
- 38.92734886480327,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04922'>Report Problem</a>",
- "NAME": "H04922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95054040186743,
- 38.86322085076671,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04923'>Report Problem</a>",
- "NAME": "H04923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9691513800051,
- 38.87542052644,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04924'>Report Problem</a>",
- "NAME": "H04924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95208064969906,
- 38.86311931957265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04925'>Report Problem</a>",
- "NAME": "H04925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08016157894583,
- 38.94403834902647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04926'>Report Problem</a>",
- "NAME": "H04926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05771436921889,
- 38.96656424545901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04927'>Report Problem</a>",
- "NAME": "H04927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06487812403492,
- 38.90327332026708,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04928'>Report Problem</a>",
- "NAME": "H04928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06342198075382,
- 38.90275895898322,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04929'>Report Problem</a>",
- "NAME": "H04929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0198025472746,
- 38.895596724314856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04930'>Report Problem</a>",
- "NAME": "H04930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0061156075087,
- 38.94692006560282,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04931'>Report Problem</a>",
- "NAME": "H04931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0200057987405,
- 38.90130658536127,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04932'>Report Problem</a>",
- "NAME": "H04932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0199969625686,
- 38.90272661898074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04933'>Report Problem</a>",
- "NAME": "H04933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02001930809196,
- 38.89850635272143,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04934'>Report Problem</a>",
- "NAME": "H04934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0200059632849,
- 38.90098895967974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04935'>Report Problem</a>",
- "NAME": "H04935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02001053326973,
- 38.89997850940823,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04936'>Report Problem</a>",
- "NAME": "H04936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02002984357406,
- 38.896737117527046,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04938'>Report Problem</a>",
- "NAME": "H04938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0197983043954,
- 38.900329168894444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04939'>Report Problem</a>",
- "NAME": "H04939"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01979705027189,
- 38.904907358966696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/29/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04940'>Report Problem</a>",
- "NAME": "H04940"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97699565626603,
- 38.91587780576576,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04941'>Report Problem</a>",
- "NAME": "H04941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95001122417332,
- 38.8651386792982,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04942'>Report Problem</a>",
- "NAME": "H04942"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08868236238992,
- 38.912835209308696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04943'>Report Problem</a>",
- "NAME": "H04943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06699749599495,
- 38.94776848859413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04944'>Report Problem</a>",
- "NAME": "H04944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.072321281086,
- 38.94723763818863,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04945'>Report Problem</a>",
- "NAME": "H04945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03674744010685,
- 38.90875873103022,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04946'>Report Problem</a>",
- "NAME": "H04946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03619945891404,
- 38.90696027763341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04947'>Report Problem</a>",
- "NAME": "H04947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03633731965108,
- 38.908757318872496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04948'>Report Problem</a>",
- "NAME": "H04948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03620206502912,
- 38.90752913594826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04949'>Report Problem</a>",
- "NAME": "H04949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08773012893722,
- 38.908452908738305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04950'>Report Problem</a>",
- "NAME": "H04950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97632078092181,
- 38.89345193026794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04951'>Report Problem</a>",
- "NAME": "H04951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05300149389484,
- 38.97462508524917,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04952'>Report Problem</a>",
- "NAME": "H04952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98262115476261,
- 38.90310847850502,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04953'>Report Problem</a>",
- "NAME": "H04953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97156925417775,
- 38.84643727924792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05379'>Report Problem</a>",
- "NAME": "H05379"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97292328554563,
- 38.938976212740535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05380'>Report Problem</a>",
- "NAME": "H05380"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96978849698085,
- 38.84594020557552,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05381'>Report Problem</a>",
- "NAME": "H05381"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94888721729193,
- 38.892720910674086,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05382'>Report Problem</a>",
- "NAME": "H05382"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99047698797429,
- 38.95227606798671,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05383'>Report Problem</a>",
- "NAME": "H05383"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99048863527987,
- 38.950149855436,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05384'>Report Problem</a>",
- "NAME": "H05384"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98947129501609,
- 38.95225754181235,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05385'>Report Problem</a>",
- "NAME": "H05385"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9894406355584,
- 38.95128962731958,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05386'>Report Problem</a>",
- "NAME": "H05386"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9906397665663,
- 38.95133632026012,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05387'>Report Problem</a>",
- "NAME": "H05387"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94708987675162,
- 38.892723218281056,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05388'>Report Problem</a>",
- "NAME": "H05388"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97080226062072,
- 38.852096793767714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05389'>Report Problem</a>",
- "NAME": "H05389"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97006697045208,
- 38.85513917804312,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05390'>Report Problem</a>",
- "NAME": "H05390"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99559621592604,
- 38.83926269236657,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05392'>Report Problem</a>",
- "NAME": "H05392"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97312552141948,
- 38.90549578509796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "KENNEDY<p align=center>In Service</p><hr />Last Inspection Date: 08/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05393'>Report Problem</a>",
- "NAME": "H05393"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97407912173732,
- 38.904747037286725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05394'>Report Problem</a>",
- "NAME": "H05394"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94944326633335,
- 38.884900862851964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05395'>Report Problem</a>",
- "NAME": "H05395"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95032242214741,
- 38.88406482960428,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05396'>Report Problem</a>",
- "NAME": "H05396"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95167151454748,
- 38.88345882499014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05397'>Report Problem</a>",
- "NAME": "H05397"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95098258789362,
- 38.88454948036674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05398'>Report Problem</a>",
- "NAME": "H05398"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94806133795164,
- 38.88292427614895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05399'>Report Problem</a>",
- "NAME": "H05399"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95116367549177,
- 38.88541437006546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05400'>Report Problem</a>",
- "NAME": "H05400"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94952149876084,
- 38.88303357551387,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05401'>Report Problem</a>",
- "NAME": "H05401"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01903284951779,
- 38.89859195289846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05402'>Report Problem</a>",
- "NAME": "H05402"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.044987779945,
- 38.901448472355526,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05403'>Report Problem</a>",
- "NAME": "H05403"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04478620615964,
- 38.90712354169392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05404'>Report Problem</a>",
- "NAME": "H05404"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04479326656674,
- 38.904835751434106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05405'>Report Problem</a>",
- "NAME": "H05405"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04480854421615,
- 38.90581124188021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05406'>Report Problem</a>",
- "NAME": "H05406"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04499584077479,
- 38.90094063209819,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05407'>Report Problem</a>",
- "NAME": "H05407"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9721139091053,
- 38.87395319068186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05408'>Report Problem</a>",
- "NAME": "H05408"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97187262494673,
- 38.87335563264001,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05409'>Report Problem</a>",
- "NAME": "H05409"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97011235209557,
- 38.87310510416403,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05410'>Report Problem</a>",
- "NAME": "H05410"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94640947391078,
- 38.88277614366396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05411'>Report Problem</a>",
- "NAME": "H05411"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05896514412423,
- 38.93661831916949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05413'>Report Problem</a>",
- "NAME": "H05413"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05896200911285,
- 38.9369278999598,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05414'>Report Problem</a>",
- "NAME": "H05414"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9593402986791,
- 38.87233184822074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05841'>Report Problem</a>",
- "NAME": "H05841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0715093733097,
- 38.906558120097145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "null<p align=center>In Service</p><hr />Last Inspection Date: 10/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05842'>Report Problem</a>",
- "NAME": "H05842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94046086131658,
- 38.88036091505042,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05843'>Report Problem</a>",
- "NAME": "H05843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96636314112835,
- 38.8583540967899,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05844'>Report Problem</a>",
- "NAME": "H05844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03993575949565,
- 38.98880269949869,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05845'>Report Problem</a>",
- "NAME": "H05845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02789790037157,
- 38.90065316761824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05846'>Report Problem</a>",
- "NAME": "H05846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02878617012215,
- 38.90034583016884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05847'>Report Problem</a>",
- "NAME": "H05847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05735394944952,
- 38.964456195335785,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05848'>Report Problem</a>",
- "NAME": "H05848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96701714797383,
- 38.84825124649828,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05849'>Report Problem</a>",
- "NAME": "H05849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00502834788763,
- 38.87920177538388,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05850'>Report Problem</a>",
- "NAME": "H05850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93070057931699,
- 38.885421614853634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05851'>Report Problem</a>",
- "NAME": "H05851"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94101338676967,
- 38.884928457104344,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05852'>Report Problem</a>",
- "NAME": "H05852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00235142256035,
- 38.82724917757216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05853'>Report Problem</a>",
- "NAME": "H05853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196949291082,
- 38.8298207235464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05854'>Report Problem</a>",
- "NAME": "H05854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00212175253381,
- 38.828108247496445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05855'>Report Problem</a>",
- "NAME": "H05855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196756870618,
- 38.828952550728346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05856'>Report Problem</a>",
- "NAME": "H05856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00309651012144,
- 38.82238616177905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05857'>Report Problem</a>",
- "NAME": "H05857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00415673828145,
- 38.823049143578494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05858'>Report Problem</a>",
- "NAME": "H05858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95460465958541,
- 38.86702253898066,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05859'>Report Problem</a>",
- "NAME": "H05859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95343992910297,
- 38.86654419313684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05860'>Report Problem</a>",
- "NAME": "H05860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95748144390447,
- 38.87447430291672,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05861'>Report Problem</a>",
- "NAME": "H05861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0539154226598,
- 38.98323917815843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05862'>Report Problem</a>",
- "NAME": "H05862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02841592057085,
- 38.971140952802195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05863'>Report Problem</a>",
- "NAME": "H05863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07868874133604,
- 38.92623339312654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05864'>Report Problem</a>",
- "NAME": "H05864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08208331363964,
- 38.92706412044146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05865'>Report Problem</a>",
- "NAME": "H05865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05791124199031,
- 38.934153201906014,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05866'>Report Problem</a>",
- "NAME": "H05866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06393519471922,
- 38.944682848661124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05867'>Report Problem</a>",
- "NAME": "H05867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0662173522871,
- 38.94896883593362,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05868'>Report Problem</a>",
- "NAME": "H05868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09226496121309,
- 38.93857944972431,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05869'>Report Problem</a>",
- "NAME": "H05869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08217763775764,
- 38.93527920992108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05870'>Report Problem</a>",
- "NAME": "H05870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00951568229651,
- 38.83929344870545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05871'>Report Problem</a>",
- "NAME": "H05871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04524595509936,
- 38.93966471688504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05872'>Report Problem</a>",
- "NAME": "H05872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00101695228176,
- 38.961352942351006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05873'>Report Problem</a>",
- "NAME": "H05873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99735478276324,
- 38.961513344850474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05874'>Report Problem</a>",
- "NAME": "H05874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99895309516779,
- 38.961325710133806,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H05875'>Report Problem</a>",
- "NAME": "H05875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9622451010904,
- 38.86297672492007,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04433'>Report Problem</a>",
- "NAME": "H04433"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10522851420588,
- 38.927012286670944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Super Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04434'>Report Problem</a>",
- "NAME": "H04434"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93472844454767,
- 38.87373084274489,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04435'>Report Problem</a>",
- "NAME": "H04435"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0774261063245,
- 38.92367876508404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04436'>Report Problem</a>",
- "NAME": "H04436"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05477358203676,
- 38.94103864816232,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04437'>Report Problem</a>",
- "NAME": "H04437"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97733272743392,
- 38.89351700929176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04438'>Report Problem</a>",
- "NAME": "H04438"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08875912058254,
- 38.95199010758078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04439'>Report Problem</a>",
- "NAME": "H04439"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0620741852276,
- 38.935210603716584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04440'>Report Problem</a>",
- "NAME": "H04440"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95899519231484,
- 38.85735990502317,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04441'>Report Problem</a>",
- "NAME": "H04441"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05836513551615,
- 38.97760067913016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04442'>Report Problem</a>",
- "NAME": "H04442"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97744795798937,
- 38.86830315444358,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04443'>Report Problem</a>",
- "NAME": "H04443"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98089608157682,
- 38.86892898901475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04444'>Report Problem</a>",
- "NAME": "H04444"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05627995660726,
- 38.96563840133289,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04445'>Report Problem</a>",
- "NAME": "H04445"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09050464417739,
- 38.94874662697343,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04446'>Report Problem</a>",
- "NAME": "H04446"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00188149899884,
- 38.9170436161969,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04447'>Report Problem</a>",
- "NAME": "H04447"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95357294660701,
- 38.87019551653525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04448'>Report Problem</a>",
- "NAME": "H04448"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93458187159659,
- 38.8774767504435,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04449'>Report Problem</a>",
- "NAME": "H04449"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95821390067368,
- 38.868494257030754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04450'>Report Problem</a>",
- "NAME": "H04450"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95612736666627,
- 38.86954284516876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04452'>Report Problem</a>",
- "NAME": "H04452"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97513531630638,
- 38.94191150643074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04453'>Report Problem</a>",
- "NAME": "H04453"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03945203741759,
- 38.939658474334315,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04454'>Report Problem</a>",
- "NAME": "H04454"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04079710909922,
- 38.939655211034236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04455'>Report Problem</a>",
- "NAME": "H04455"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98531342176409,
- 38.85123187388481,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04456'>Report Problem</a>",
- "NAME": "H04456"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02961562668881,
- 38.98608963101715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04457'>Report Problem</a>",
- "NAME": "H04457"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06703735187567,
- 38.94700715787207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04458'>Report Problem</a>",
- "NAME": "H04458"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06832477460605,
- 38.94713234829342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04459'>Report Problem</a>",
- "NAME": "H04459"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00130771202248,
- 38.96382498400293,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04460'>Report Problem</a>",
- "NAME": "H04460"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08114619500478,
- 38.96301606225877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04461'>Report Problem</a>",
- "NAME": "H04461"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0416333193583,
- 38.93959158788519,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04462'>Report Problem</a>",
- "NAME": "H04462"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00188651893774,
- 38.91632212085611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04463'>Report Problem</a>",
- "NAME": "H04463"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97611415105615,
- 38.86754483160119,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04464'>Report Problem</a>",
- "NAME": "H04464"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97645379624538,
- 38.866548065917556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04465'>Report Problem</a>",
- "NAME": "H04465"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05970039225984,
- 38.96107537631399,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04466'>Report Problem</a>",
- "NAME": "H04466"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96693509495171,
- 38.87722023900156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H04467'>Report Problem</a>",
- "NAME": "H04467"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00357748301012,
- 38.884185358911424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09004'>Report Problem</a>",
- "NAME": "H09004"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98996182489935,
- 38.84163770984148,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09005'>Report Problem</a>",
- "NAME": "H09005"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9190838851327,
- 38.89825298901213,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09006'>Report Problem</a>",
- "NAME": "H09006"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00562726118709,
- 38.883615344703756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09007'>Report Problem</a>",
- "NAME": "H09007"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00480563902512,
- 38.883948781701825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/24/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09008'>Report Problem</a>",
- "NAME": "H09008"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08849333449118,
- 38.94622392877475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09009'>Report Problem</a>",
- "NAME": "H09009"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03360299392004,
- 38.88732290161533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09010'>Report Problem</a>",
- "NAME": "H09010"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00924643451117,
- 38.92232010879566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09011'>Report Problem</a>",
- "NAME": "H09011"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92989443682231,
- 38.87703660095473,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09012'>Report Problem</a>",
- "NAME": "H09012"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07867231526322,
- 38.95771398704769,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09013'>Report Problem</a>",
- "NAME": "H09013"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08011657973411,
- 38.95772090656625,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09014'>Report Problem</a>",
- "NAME": "H09014"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07440646518339,
- 38.95772714812114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09015'>Report Problem</a>",
- "NAME": "H09015"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07724774939429,
- 38.9577211616338,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09016'>Report Problem</a>",
- "NAME": "H09016"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07325571214197,
- 38.9577276675949,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09017'>Report Problem</a>",
- "NAME": "H09017"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04620715619693,
- 38.99074082937913,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09019'>Report Problem</a>",
- "NAME": "H09019"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08022957173232,
- 38.959047539045855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09020'>Report Problem</a>",
- "NAME": "H09020"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08041293006447,
- 38.95694125399052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09021'>Report Problem</a>",
- "NAME": "H09021"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08018625770872,
- 38.9583797592369,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling, B84B<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09022'>Report Problem</a>",
- "NAME": "H09022"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02716711359766,
- 38.90314485287352,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09023'>Report Problem</a>",
- "NAME": "H09023"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11008689052852,
- 38.936017141943914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09024'>Report Problem</a>",
- "NAME": "H09024"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07161428737155,
- 38.95773617937794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09025'>Report Problem</a>",
- "NAME": "H09025"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11185197135288,
- 38.9366973137694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09026'>Report Problem</a>",
- "NAME": "H09026"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11090362040375,
- 38.9373850915702,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09027'>Report Problem</a>",
- "NAME": "H09027"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02425178916825,
- 38.898385721520825,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09028'>Report Problem</a>",
- "NAME": "H09028"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02474664235955,
- 38.898234457436175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09029'>Report Problem</a>",
- "NAME": "H09029"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08383015424543,
- 38.93018513542305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09030'>Report Problem</a>",
- "NAME": "H09030"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0827398142461,
- 38.930212522959145,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09031'>Report Problem</a>",
- "NAME": "H09031"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07472136855726,
- 38.928978569847466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09032'>Report Problem</a>",
- "NAME": "H09032"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07823662247331,
- 38.92925954495621,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09033'>Report Problem</a>",
- "NAME": "H09033"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07698472173966,
- 38.92890569196667,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09034'>Report Problem</a>",
- "NAME": "H09034"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98649847197449,
- 38.834048756474225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09035'>Report Problem</a>",
- "NAME": "H09035"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95743914350457,
- 38.887702413760245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09036'>Report Problem</a>",
- "NAME": "H09036"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07902849186996,
- 38.929609300438386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09037'>Report Problem</a>",
- "NAME": "H09037"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9368312059512,
- 38.887520350988865,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09038'>Report Problem</a>",
- "NAME": "H09038"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05605405669904,
- 38.923102195678936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08970'>Report Problem</a>",
- "NAME": "H08970"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05158834990114,
- 38.923354926939524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08971'>Report Problem</a>",
- "NAME": "H08971"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05248187934549,
- 38.92357129631647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08972'>Report Problem</a>",
- "NAME": "H08972"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06838706302851,
- 38.97276431368139,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08973'>Report Problem</a>",
- "NAME": "H08973"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05172957515671,
- 38.895318715983656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08974'>Report Problem</a>",
- "NAME": "H08974"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05112613962501,
- 38.8946953143176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08975'>Report Problem</a>",
- "NAME": "H08975"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01659394493691,
- 38.88886964654522,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08976'>Report Problem</a>",
- "NAME": "H08976"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01039286728023,
- 38.89604137722768,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08977'>Report Problem</a>",
- "NAME": "H08977"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00916793081885,
- 38.89625498703594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08978'>Report Problem</a>",
- "NAME": "H08978"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00976508856019,
- 38.896211995770386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08979'>Report Problem</a>",
- "NAME": "H08979"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00890521939598,
- 38.92333068874144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08980'>Report Problem</a>",
- "NAME": "H08980"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00887923597604,
- 38.92526032659052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08981'>Report Problem</a>",
- "NAME": "H08981"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00883074380967,
- 38.92126451866896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08982'>Report Problem</a>",
- "NAME": "H08982"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00889758063224,
- 38.92144530164201,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08983'>Report Problem</a>",
- "NAME": "H08983"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93054727831746,
- 38.8764421124646,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08984'>Report Problem</a>",
- "NAME": "H08984"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93249502606915,
- 38.874956895698226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, UNKNOWN<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08985'>Report Problem</a>",
- "NAME": "H08985"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04685069061479,
- 38.90151463618884,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 05/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08986'>Report Problem</a>",
- "NAME": "H08986"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98360661757303,
- 38.94077524544294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08987'>Report Problem</a>",
- "NAME": "H08987"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03094247456977,
- 38.930996105813065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - JUMBO<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08988'>Report Problem</a>",
- "NAME": "H08988"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02578610924981,
- 38.934131616701535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08989'>Report Problem</a>",
- "NAME": "H08989"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02733403213745,
- 38.932283229446604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08990'>Report Problem</a>",
- "NAME": "H08990"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02863194469406,
- 38.9316224567308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08991'>Report Problem</a>",
- "NAME": "H08991"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02962749395054,
- 38.931442132553876,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08992'>Report Problem</a>",
- "NAME": "H08992"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02525756382916,
- 38.93484355909263,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08993'>Report Problem</a>",
- "NAME": "H08993"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02617054106372,
- 38.93347626731597,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08994'>Report Problem</a>",
- "NAME": "H08994"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03122477460342,
- 38.930736798657925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08995'>Report Problem</a>",
- "NAME": "H08995"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02010410346386,
- 38.957557904088844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08996'>Report Problem</a>",
- "NAME": "H08996"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97721721870975,
- 38.84011618368776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08997'>Report Problem</a>",
- "NAME": "H08997"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97614963212195,
- 38.840954891331414,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08998'>Report Problem</a>",
- "NAME": "H08998"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99388153161837,
- 38.949339346515366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08999'>Report Problem</a>",
- "NAME": "H08999"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97295582131991,
- 38.92937535205477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09000'>Report Problem</a>",
- "NAME": "H09000"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0335954158444,
- 38.886626042554695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09001'>Report Problem</a>",
- "NAME": "H09001"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99033427481527,
- 38.84255851269548,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09002'>Report Problem</a>",
- "NAME": "H09002"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9190791514341,
- 38.89723296849213,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09003'>Report Problem</a>",
- "NAME": "H09003"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93958261646672,
- 38.88752469827424,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09039'>Report Problem</a>",
- "NAME": "H09039"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.938523327564,
- 38.88750947990186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09040'>Report Problem</a>",
- "NAME": "H09040"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03127870290466,
- 38.90659966212444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09041'>Report Problem</a>",
- "NAME": "H09041"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10971776704318,
- 38.93652675550647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09042'>Report Problem</a>",
- "NAME": "H09042"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92861676514879,
- 38.87799075308454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09043'>Report Problem</a>",
- "NAME": "H09043"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02301952543257,
- 38.89907398439239,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09044'>Report Problem</a>",
- "NAME": "H09044"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03251424432464,
- 38.930417724084485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09045'>Report Problem</a>",
- "NAME": "H09045"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98868584439664,
- 38.84454760042522,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09046'>Report Problem</a>",
- "NAME": "H09046"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98725939623742,
- 38.845051791157864,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09047'>Report Problem</a>",
- "NAME": "H09047"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98732571223994,
- 38.84362839214157,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09048'>Report Problem</a>",
- "NAME": "H09048"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98580910873986,
- 38.84293345025701,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09049'>Report Problem</a>",
- "NAME": "H09049"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02940215543835,
- 38.89916231165648,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09050'>Report Problem</a>",
- "NAME": "H09050"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99160683377616,
- 38.940776481011675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09051'>Report Problem</a>",
- "NAME": "H09051"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08871662276252,
- 38.91792731727288,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/19/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09052'>Report Problem</a>",
- "NAME": "H09052"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06746405218475,
- 38.959528589351265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09053'>Report Problem</a>",
- "NAME": "H09053"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06796380033117,
- 38.95895866257383,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09054'>Report Problem</a>",
- "NAME": "H09054"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06931031679339,
- 38.95733877204453,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09055'>Report Problem</a>",
- "NAME": "H09055"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02513373945062,
- 38.88770298662333,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09056'>Report Problem</a>",
- "NAME": "H09056"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06881553284747,
- 38.953933470949494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09057'>Report Problem</a>",
- "NAME": "H09057"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02817215483672,
- 38.898833818600494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09058'>Report Problem</a>",
- "NAME": "H09058"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00891120123002,
- 38.95228154820823,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09059'>Report Problem</a>",
- "NAME": "H09059"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0092064164634,
- 38.95338395734715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09060'>Report Problem</a>",
- "NAME": "H09060"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.009980735443,
- 38.96353114862895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09061'>Report Problem</a>",
- "NAME": "H09061"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05276349967937,
- 38.915618842913894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09062'>Report Problem</a>",
- "NAME": "H09062"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0143577754417,
- 38.88387244475433,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09063'>Report Problem</a>",
- "NAME": "H09063"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00457511249418,
- 38.88264351200035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09064'>Report Problem</a>",
- "NAME": "H09064"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00050737183291,
- 38.90469006917829,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09065'>Report Problem</a>",
- "NAME": "H09065"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05458488194304,
- 38.89968110427733,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 05/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09066'>Report Problem</a>",
- "NAME": "H09066"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04265684650899,
- 38.917043862824684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09067'>Report Problem</a>",
- "NAME": "H09067"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0773012092924,
- 38.94401442173012,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09068'>Report Problem</a>",
- "NAME": "H09068"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00336697371237,
- 38.91265474042744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09069'>Report Problem</a>",
- "NAME": "H09069"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99957394083697,
- 38.899070441190595,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09070'>Report Problem</a>",
- "NAME": "H09070"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0718922072102,
- 38.96773723434008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09071'>Report Problem</a>",
- "NAME": "H09071"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08747186075786,
- 38.95216442402454,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 07/29/05<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09073'>Report Problem</a>",
- "NAME": "H09073"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98847895501503,
- 38.85906155318294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08539'>Report Problem</a>",
- "NAME": "H08539"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92810667045268,
- 38.88571439599207,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08540'>Report Problem</a>",
- "NAME": "H08540"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02720715557734,
- 38.92071337546067,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08541'>Report Problem</a>",
- "NAME": "H08541"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93789165580496,
- 38.90010448716796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08542'>Report Problem</a>",
- "NAME": "H08542"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93789396160324,
- 38.90010430822659,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08543'>Report Problem</a>",
- "NAME": "H08543"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98208247464486,
- 38.88278337063967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08544'>Report Problem</a>",
- "NAME": "H08544"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06387838038624,
- 38.903921815110316,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08545'>Report Problem</a>",
- "NAME": "H08545"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02549690318271,
- 38.97877464139044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08546'>Report Problem</a>",
- "NAME": "H08546"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93395193642357,
- 38.875662023478846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08547'>Report Problem</a>",
- "NAME": "H08547"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9565272301833,
- 38.91951101565036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08548'>Report Problem</a>",
- "NAME": "H08548"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95524269388355,
- 38.91835629358651,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08549'>Report Problem</a>",
- "NAME": "H08549"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95734343310873,
- 38.92004651015837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08550'>Report Problem</a>",
- "NAME": "H08550"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99247925413083,
- 38.91105061211053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08551'>Report Problem</a>",
- "NAME": "H08551"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99133037406304,
- 38.912175448917964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08552'>Report Problem</a>",
- "NAME": "H08552"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92845323810772,
- 38.884431328320815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08553'>Report Problem</a>",
- "NAME": "H08553"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98233697261593,
- 38.8553387565206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08554'>Report Problem</a>",
- "NAME": "H08554"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04863070654336,
- 38.905355998875166,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08555'>Report Problem</a>",
- "NAME": "H08555"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98106392750358,
- 38.89985231024399,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08556'>Report Problem</a>",
- "NAME": "H08556"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98862596823128,
- 38.864714629169406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 12/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08557'>Report Problem</a>",
- "NAME": "H08557"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06905955237025,
- 38.90512515798623,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08558'>Report Problem</a>",
- "NAME": "H08558"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04874893378806,
- 38.900796514971326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08559'>Report Problem</a>",
- "NAME": "H08559"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05023201934696,
- 38.90081481325534,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08560'>Report Problem</a>",
- "NAME": "H08560"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.051486002836,
- 38.90057705923955,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08561'>Report Problem</a>",
- "NAME": "H08561"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05003038640514,
- 38.900531794088835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08562'>Report Problem</a>",
- "NAME": "H08562"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00066339192198,
- 38.87852852246565,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08563'>Report Problem</a>",
- "NAME": "H08563"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99520649659708,
- 38.94263358063965,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08564'>Report Problem</a>",
- "NAME": "H08564"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0124059474504,
- 38.89345901346585,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08565'>Report Problem</a>",
- "NAME": "H08565"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98558821633338,
- 38.881415436809974,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/17/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08566'>Report Problem</a>",
- "NAME": "H08566"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06514298878535,
- 38.943168915701406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08567'>Report Problem</a>",
- "NAME": "H08567"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00973556235982,
- 38.898969701189074,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08568'>Report Problem</a>",
- "NAME": "H08568"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99960440153339,
- 38.931680148096184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08569'>Report Problem</a>",
- "NAME": "H08569"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02882084751378,
- 38.89538203379702,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08570'>Report Problem</a>",
- "NAME": "H08570"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95577398551826,
- 38.921453657739285,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-62-B<p align=center>In Service</p><hr />Last Inspection Date: 09/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08571'>Report Problem</a>",
- "NAME": "H08571"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99433799153933,
- 38.93442153569604,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08572'>Report Problem</a>",
- "NAME": "H08572"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07024814783125,
- 38.96035520520068,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/06/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09075'>Report Problem</a>",
- "NAME": "H09075"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02157434211952,
- 38.93081015312525,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09076'>Report Problem</a>",
- "NAME": "H09076"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06044338306467,
- 38.95086729619458,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller, Centurion<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09077'>Report Problem</a>",
- "NAME": "H09077"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04138955855865,
- 38.92204724629831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09078'>Report Problem</a>",
- "NAME": "H09078"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96813349799348,
- 38.84830912049457,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09079'>Report Problem</a>",
- "NAME": "H09079"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05149556832315,
- 38.90622612199416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09080'>Report Problem</a>",
- "NAME": "H09080"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01886129175715,
- 38.90487578637114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09081'>Report Problem</a>",
- "NAME": "H09081"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0575355775474,
- 38.93343887577325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 01/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09082'>Report Problem</a>",
- "NAME": "H09082"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02412985795266,
- 38.915629660431776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09083'>Report Problem</a>",
- "NAME": "H09083"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04786743972032,
- 38.903814381451866,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09084'>Report Problem</a>",
- "NAME": "H09084"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9726642394464,
- 38.94079268360396,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09085'>Report Problem</a>",
- "NAME": "H09085"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99687070831642,
- 38.84043856150093,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09086'>Report Problem</a>",
- "NAME": "H09086"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99670148941775,
- 38.8414251711826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09087'>Report Problem</a>",
- "NAME": "H09087"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99616376450973,
- 38.841347438865114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09088'>Report Problem</a>",
- "NAME": "H09088"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99626546942768,
- 38.84012938271303,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09089'>Report Problem</a>",
- "NAME": "H09089"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99558086774195,
- 38.84047124749271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09090'>Report Problem</a>",
- "NAME": "H09090"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96462619801888,
- 38.867748767698956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09091'>Report Problem</a>",
- "NAME": "H09091"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05147823614823,
- 38.90459143820292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/13/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09092'>Report Problem</a>",
- "NAME": "H09092"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02645801336642,
- 38.91481973063547,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 12/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09093'>Report Problem</a>",
- "NAME": "H09093"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10470015106651,
- 38.92956594364366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09094'>Report Problem</a>",
- "NAME": "H09094"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07824829363948,
- 38.94508677770197,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09095'>Report Problem</a>",
- "NAME": "H09095"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97340828201314,
- 38.933240226765925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09096'>Report Problem</a>",
- "NAME": "H09096"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94317102933596,
- 38.86839174932191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09097'>Report Problem</a>",
- "NAME": "H09097"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08272133244417,
- 38.90687530869195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09098'>Report Problem</a>",
- "NAME": "H09098"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99685468394523,
- 38.87996472586356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09099'>Report Problem</a>",
- "NAME": "H09099"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99811487378193,
- 38.88064576924839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09100'>Report Problem</a>",
- "NAME": "H09100"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02726999628489,
- 38.90368911361274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09101'>Report Problem</a>",
- "NAME": "H09101"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0019692494539,
- 38.92414068820509,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09102'>Report Problem</a>",
- "NAME": "H09102"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01801354766188,
- 38.91786057760934,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 04/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09103'>Report Problem</a>",
- "NAME": "H09103"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99122699292546,
- 38.86560177687061,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09104'>Report Problem</a>",
- "NAME": "H09104"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00582934571723,
- 38.836443164116645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09105'>Report Problem</a>",
- "NAME": "H09105"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00705729089124,
- 38.94511711313671,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09106'>Report Problem</a>",
- "NAME": "H09106"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.017932382195,
- 38.95840675440536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09107'>Report Problem</a>",
- "NAME": "H09107"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99387661280471,
- 38.82838777400342,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09108'>Report Problem</a>",
- "NAME": "H09108"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00277619794527,
- 38.840649169966404,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08573'>Report Problem</a>",
- "NAME": "H08573"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97893477015928,
- 38.922249347046964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08574'>Report Problem</a>",
- "NAME": "H08574"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98281480852543,
- 38.900163450372936,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08575'>Report Problem</a>",
- "NAME": "H08575"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92387367558487,
- 38.88513912282087,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08576'>Report Problem</a>",
- "NAME": "H08576"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92372227500937,
- 38.885729956071486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08577'>Report Problem</a>",
- "NAME": "H08577"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94976052046304,
- 38.897346563918575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08578'>Report Problem</a>",
- "NAME": "H08578"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9780028653113,
- 38.92134510906843,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08579'>Report Problem</a>",
- "NAME": "H08579"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97710272923885,
- 38.92134207151667,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08580'>Report Problem</a>",
- "NAME": "H08580"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95547082433256,
- 38.916845215248195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08581'>Report Problem</a>",
- "NAME": "H08581"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0163829945223,
- 38.885129586393255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08582'>Report Problem</a>",
- "NAME": "H08582"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.066732816111,
- 38.943233905541746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 05/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08583'>Report Problem</a>",
- "NAME": "H08583"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0188403268678,
- 38.89752307892184,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08584'>Report Problem</a>",
- "NAME": "H08584"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01078834197283,
- 38.82034062677432,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08585'>Report Problem</a>",
- "NAME": "H08585"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95616480637626,
- 38.9173618352077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08586'>Report Problem</a>",
- "NAME": "H08586"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08778468943332,
- 38.912005453128366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08588'>Report Problem</a>",
- "NAME": "H08588"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0190235699886,
- 38.89491934354903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08589'>Report Problem</a>",
- "NAME": "H08589"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04871429874123,
- 38.9027658192885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08590'>Report Problem</a>",
- "NAME": "H08590"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01785694742098,
- 38.8949398055434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08591'>Report Problem</a>",
- "NAME": "H08591"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08531548338183,
- 38.96025498219793,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08592'>Report Problem</a>",
- "NAME": "H08592"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93091026436544,
- 38.88471216661913,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08593'>Report Problem</a>",
- "NAME": "H08593"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0292329918798,
- 38.895165640505745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08594'>Report Problem</a>",
- "NAME": "H08594"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02817718438348,
- 38.89528165745904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08595'>Report Problem</a>",
- "NAME": "H08595"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02636842694048,
- 38.894377792826916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08596'>Report Problem</a>",
- "NAME": "H08596"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02763771690492,
- 38.89472860054361,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08597'>Report Problem</a>",
- "NAME": "H08597"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03624882205068,
- 38.91255320036532,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08598'>Report Problem</a>",
- "NAME": "H08598"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95315223039381,
- 38.89604881395341,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08599'>Report Problem</a>",
- "NAME": "H08599"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9542234507704,
- 38.89574466577712,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08600'>Report Problem</a>",
- "NAME": "H08600"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05146632364985,
- 38.90712772648776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08601'>Report Problem</a>",
- "NAME": "H08601"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01505682147155,
- 38.89810909931428,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08602'>Report Problem</a>",
- "NAME": "H08602"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0328013762658,
- 38.89542667433872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08603'>Report Problem</a>",
- "NAME": "H08603"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03339296921185,
- 38.89543517277314,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08604'>Report Problem</a>",
- "NAME": "H08604"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03228069099289,
- 38.895422963803064,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08606'>Report Problem</a>",
- "NAME": "H08606"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03021130752691,
- 38.89540046491191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08607'>Report Problem</a>",
- "NAME": "H08607"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03350770572573,
- 38.89625304547842,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08608'>Report Problem</a>",
- "NAME": "H08608"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02960799630996,
- 38.961090066635336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09109'>Report Problem</a>",
- "NAME": "H09109"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05019193509814,
- 38.90756477139692,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09110'>Report Problem</a>",
- "NAME": "H09110"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96648470400932,
- 38.92013823949831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09111'>Report Problem</a>",
- "NAME": "H09111"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9297498272209,
- 38.87967084813571,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09112'>Report Problem</a>",
- "NAME": "H09112"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94619741559671,
- 38.87003159623627,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09113'>Report Problem</a>",
- "NAME": "H09113"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10102767277525,
- 38.947858528055356,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09114'>Report Problem</a>",
- "NAME": "H09114"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05554828483594,
- 38.94853023909844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09115'>Report Problem</a>",
- "NAME": "H09115"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94185638025759,
- 38.910048226097835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09116'>Report Problem</a>",
- "NAME": "H09116"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94165583304925,
- 38.91062310166634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/23/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09117'>Report Problem</a>",
- "NAME": "H09117"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92841214462342,
- 38.88896179884377,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09119'>Report Problem</a>",
- "NAME": "H09119"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0080803275818,
- 38.922323032865336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09120'>Report Problem</a>",
- "NAME": "H09120"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08707243694516,
- 38.9197300581798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09121'>Report Problem</a>",
- "NAME": "H09121"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09876766725233,
- 38.924753710956594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09122'>Report Problem</a>",
- "NAME": "H09122"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06290905606541,
- 38.95142208519586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09123'>Report Problem</a>",
- "NAME": "H09123"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04212265248194,
- 38.927215723489915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09124'>Report Problem</a>",
- "NAME": "H09124"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07375563903265,
- 38.917683295757456,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09125'>Report Problem</a>",
- "NAME": "H09125"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05579576042543,
- 38.966428494542434,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09127'>Report Problem</a>",
- "NAME": "H09127"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08904881612418,
- 38.91084858186611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09128'>Report Problem</a>",
- "NAME": "H09128"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09570717923661,
- 38.94523554935284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09129'>Report Problem</a>",
- "NAME": "H09129"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06305312075824,
- 38.921629911800125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09130'>Report Problem</a>",
- "NAME": "H09130"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06395864164293,
- 38.92326983546393,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09131'>Report Problem</a>",
- "NAME": "H09131"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06339716970705,
- 38.92246111292508,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09132'>Report Problem</a>",
- "NAME": "H09132"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05880662632796,
- 38.91826584899397,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09133'>Report Problem</a>",
- "NAME": "H09133"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10355354396799,
- 38.93630939668897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09134'>Report Problem</a>",
- "NAME": "H09134"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98861879462714,
- 38.86280517775928,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09135'>Report Problem</a>",
- "NAME": "H09135"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03408750048177,
- 38.937826883828016,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09136'>Report Problem</a>",
- "NAME": "H09136"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06367368575731,
- 38.91837362332335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09137'>Report Problem</a>",
- "NAME": "H09137"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0741708440765,
- 38.93495234787948,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09138'>Report Problem</a>",
- "NAME": "H09138"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92506018847027,
- 38.88393071247643,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09139'>Report Problem</a>",
- "NAME": "H09139"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92493181329877,
- 38.884481339738386,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09140'>Report Problem</a>",
- "NAME": "H09140"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92204363869698,
- 38.89948032821506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09141'>Report Problem</a>",
- "NAME": "H09141"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91640749423819,
- 38.89241017670246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09142'>Report Problem</a>",
- "NAME": "H09142"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91496586742983,
- 38.89214454216605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09143'>Report Problem</a>",
- "NAME": "H09143"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00089124142046,
- 38.947265932911634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09144'>Report Problem</a>",
- "NAME": "H09144"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02974063992806,
- 38.895949150130065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08609'>Report Problem</a>",
- "NAME": "H08609"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03350426658844,
- 38.895802898442945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08610'>Report Problem</a>",
- "NAME": "H08610"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04157587307783,
- 38.903605552933925,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08611'>Report Problem</a>",
- "NAME": "H08611"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01158647754188,
- 38.89739787047814,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08612'>Report Problem</a>",
- "NAME": "H08612"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03210752067322,
- 38.88534626194587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08613'>Report Problem</a>",
- "NAME": "H08613"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97312984969142,
- 38.866308436257476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08614'>Report Problem</a>",
- "NAME": "H08614"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03906963220658,
- 38.93623050470729,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08615'>Report Problem</a>",
- "NAME": "H08615"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03918911488095,
- 38.935645546810676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08616'>Report Problem</a>",
- "NAME": "H08616"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04289804909273,
- 38.917865163142665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08617'>Report Problem</a>",
- "NAME": "H08617"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03763703123715,
- 38.903822692349024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08618'>Report Problem</a>",
- "NAME": "H08618"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03642533723821,
- 38.9520148834351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08620'>Report Problem</a>",
- "NAME": "H08620"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03830565562527,
- 38.90558203132135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08621'>Report Problem</a>",
- "NAME": "H08621"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99725103922168,
- 38.8332830923234,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08622'>Report Problem</a>",
- "NAME": "H08622"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99630317677882,
- 38.83843283127437,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08623'>Report Problem</a>",
- "NAME": "H08623"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.066625503076,
- 38.941529310018225,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08624'>Report Problem</a>",
- "NAME": "H08624"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99993013762492,
- 38.83681705245397,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08625'>Report Problem</a>",
- "NAME": "H08625"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07331721140595,
- 38.924396693909536,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08626'>Report Problem</a>",
- "NAME": "H08626"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07331252436354,
- 38.92413384303951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08627'>Report Problem</a>",
- "NAME": "H08627"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96411210838446,
- 38.87183401332887,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08628'>Report Problem</a>",
- "NAME": "H08628"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99312976410624,
- 38.93558784763175,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08629'>Report Problem</a>",
- "NAME": "H08629"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97231364336412,
- 38.90457533844903,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 05/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08630'>Report Problem</a>",
- "NAME": "H08630"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04356876428044,
- 38.89942150787223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08631'>Report Problem</a>",
- "NAME": "H08631"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04480016525211,
- 38.90660488068256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08632'>Report Problem</a>",
- "NAME": "H08632"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99136845088773,
- 38.856691028575334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08633'>Report Problem</a>",
- "NAME": "H08633"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98984033585377,
- 38.856454659628795,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08634'>Report Problem</a>",
- "NAME": "H08634"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00610322556301,
- 38.96182890973894,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08635'>Report Problem</a>",
- "NAME": "H08635"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04327724804261,
- 38.907184871679476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08636'>Report Problem</a>",
- "NAME": "H08636"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04277072775197,
- 38.908086676633566,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08637'>Report Problem</a>",
- "NAME": "H08637"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93632382533126,
- 38.886498083628815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08638'>Report Problem</a>",
- "NAME": "H08638"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.937772868302,
- 38.88658598467158,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08639'>Report Problem</a>",
- "NAME": "H08639"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92000330174575,
- 38.887215707149984,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08640'>Report Problem</a>",
- "NAME": "H08640"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01129797638228,
- 38.86416133074623,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08641'>Report Problem</a>",
- "NAME": "H08641"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03631511351088,
- 38.95069560213885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08642'>Report Problem</a>",
- "NAME": "H08642"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03640989294186,
- 38.96209450356922,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08643'>Report Problem</a>",
- "NAME": "H08643"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09378367864437,
- 38.91851770325485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09145'>Report Problem</a>",
- "NAME": "H09145"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0844194101977,
- 38.927045394571586,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09146'>Report Problem</a>",
- "NAME": "H09146"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06441627664769,
- 38.9243047933927,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09147'>Report Problem</a>",
- "NAME": "H09147"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97771945972165,
- 38.85521600151856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09148'>Report Problem</a>",
- "NAME": "H09148"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03831307100914,
- 38.95946090830021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09149'>Report Problem</a>",
- "NAME": "H09149"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94115878588856,
- 38.899671056590996,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09150'>Report Problem</a>",
- "NAME": "H09150"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9407366966845,
- 38.899668419982824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09151'>Report Problem</a>",
- "NAME": "H09151"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0991376094575,
- 38.93646688920711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09152'>Report Problem</a>",
- "NAME": "H09152"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07280482125975,
- 38.95335239949877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09153'>Report Problem</a>",
- "NAME": "H09153"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10110220180124,
- 38.9212167303206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09154'>Report Problem</a>",
- "NAME": "H09154"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07190949779098,
- 38.92613818312947,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09155'>Report Problem</a>",
- "NAME": "H09155"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02128453702582,
- 38.931120965843505,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09156'>Report Problem</a>",
- "NAME": "H09156"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10296233056515,
- 38.94532665579319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09157'>Report Problem</a>",
- "NAME": "H09157"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10192090967148,
- 38.9448149877885,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09158'>Report Problem</a>",
- "NAME": "H09158"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10206518499017,
- 38.94401836694838,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09159'>Report Problem</a>",
- "NAME": "H09159"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10292406615106,
- 38.94463878952908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09160'>Report Problem</a>",
- "NAME": "H09160"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.11001111691373,
- 38.935728803382325,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09161'>Report Problem</a>",
- "NAME": "H09161"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08012954794336,
- 38.96494590779582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09162'>Report Problem</a>",
- "NAME": "H09162"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06212037615211,
- 38.97220825480305,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09163'>Report Problem</a>",
- "NAME": "H09163"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00911958466912,
- 38.82529102514977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09164'>Report Problem</a>",
- "NAME": "H09164"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00603900133896,
- 38.87314829248499,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09165'>Report Problem</a>",
- "NAME": "H09165"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0184886036488,
- 38.947477979507475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09166'>Report Problem</a>",
- "NAME": "H09166"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0225139425842,
- 38.907191005939524,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09167'>Report Problem</a>",
- "NAME": "H09167"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02408928454868,
- 38.90676327269332,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09168'>Report Problem</a>",
- "NAME": "H09168"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02440045866837,
- 38.90311953742286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, U.S. Pipe<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09169'>Report Problem</a>",
- "NAME": "H09169"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02407891719905,
- 38.90433096633858,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09170'>Report Problem</a>",
- "NAME": "H09170"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02408624206616,
- 38.90499157424918,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09171'>Report Problem</a>",
- "NAME": "H09171"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03463471331794,
- 38.91679430967951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09172'>Report Problem</a>",
- "NAME": "H09172"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02488832410485,
- 38.92748731052724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 09/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09173'>Report Problem</a>",
- "NAME": "H09173"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09506403013819,
- 38.931655693652665,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09200'>Report Problem</a>",
- "NAME": "H09200"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01419335897909,
- 38.90569583721601,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/23/35<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09209'>Report Problem</a>",
- "NAME": "H09209"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97435898380105,
- 38.921337844320796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09210'>Report Problem</a>",
- "NAME": "H09210"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00600777493914,
- 38.875924529424545,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09211'>Report Problem</a>",
- "NAME": "H09211"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96048194541679,
- 38.922145111982026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 09/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09212'>Report Problem</a>",
- "NAME": "H09212"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0365171720218,
- 38.95722354284319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08644'>Report Problem</a>",
- "NAME": "H08644"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03629389177893,
- 38.95627977159117,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08645'>Report Problem</a>",
- "NAME": "H08645"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03630917532455,
- 38.95471040089543,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08646'>Report Problem</a>",
- "NAME": "H08646"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0364698500718,
- 38.960254197407686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08647'>Report Problem</a>",
- "NAME": "H08647"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09957558862641,
- 38.94633227510696,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08648'>Report Problem</a>",
- "NAME": "H08648"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05324307807622,
- 38.90539970535039,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08649'>Report Problem</a>",
- "NAME": "H08649"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00894028788855,
- 38.90318464877102,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 12/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08650'>Report Problem</a>",
- "NAME": "H08650"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99534466044936,
- 38.92166486427478,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08651'>Report Problem</a>",
- "NAME": "H08651"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05645273887436,
- 38.90530147588465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08653'>Report Problem</a>",
- "NAME": "H08653"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03620649184059,
- 38.96337918858392,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08654'>Report Problem</a>",
- "NAME": "H08654"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93865236050358,
- 38.90497913058511,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08655'>Report Problem</a>",
- "NAME": "H08655"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00815716269088,
- 38.876340424827504,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08656'>Report Problem</a>",
- "NAME": "H08656"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98657553738025,
- 38.89817850053494,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08657'>Report Problem</a>",
- "NAME": "H08657"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.931773242978,
- 38.8841441907157,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08658'>Report Problem</a>",
- "NAME": "H08658"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9930423485349,
- 38.9573333541786,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08659'>Report Problem</a>",
- "NAME": "H08659"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92994989815949,
- 38.890836788946245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant,<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08661'>Report Problem</a>",
- "NAME": "H08661"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92997594811217,
- 38.883802573958064,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 08/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08662'>Report Problem</a>",
- "NAME": "H08662"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02697048070101,
- 38.917172418815746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08663'>Report Problem</a>",
- "NAME": "H08663"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08223133785353,
- 38.95203849934632,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08664'>Report Problem</a>",
- "NAME": "H08664"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02606367036198,
- 38.91716313882413,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08665'>Report Problem</a>",
- "NAME": "H08665"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0703015182813,
- 38.92283706239084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08666'>Report Problem</a>",
- "NAME": "H08666"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07106839101364,
- 38.92249210221713,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08667'>Report Problem</a>",
- "NAME": "H08667"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98817930239974,
- 38.88904215198616,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-MET 250 M94<p align=center>In Service</p><hr />Last Inspection Date: 04/12/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08668'>Report Problem</a>",
- "NAME": "H08668"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05670833521232,
- 38.95181880180764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08669'>Report Problem</a>",
- "NAME": "H08669"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02801847312037,
- 38.91717313612248,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08670'>Report Problem</a>",
- "NAME": "H08670"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0985296394079,
- 38.944991079714455,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08671'>Report Problem</a>",
- "NAME": "H08671"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0258221077461,
- 38.91690732883077,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08672'>Report Problem</a>",
- "NAME": "H08672"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05787320457475,
- 38.946203884831085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08673'>Report Problem</a>",
- "NAME": "H08673"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03250940463836,
- 38.897188053460745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08674'>Report Problem</a>",
- "NAME": "H08674"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92615708432245,
- 38.88056312919905,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08675'>Report Problem</a>",
- "NAME": "H08675"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92634950900363,
- 38.87977925928223,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08676'>Report Problem</a>",
- "NAME": "H08676"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9228931109311,
- 38.882415838617035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08677'>Report Problem</a>",
- "NAME": "H08677"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92802269818132,
- 38.878476877868756,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08678'>Report Problem</a>",
- "NAME": "H08678"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92470871810644,
- 38.881252049100986,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08679'>Report Problem</a>",
- "NAME": "H08679"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9878245599078,
- 38.9237225709901,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09213'>Report Problem</a>",
- "NAME": "H09213"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03731597080925,
- 38.90863732553582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant,<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09214'>Report Problem</a>",
- "NAME": "H09214"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08577616013496,
- 38.91399775225103,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09215'>Report Problem</a>",
- "NAME": "H09215"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08117232595204,
- 38.906624008174255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09216'>Report Problem</a>",
- "NAME": "H09216"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03475152340339,
- 38.96119169648588,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09217'>Report Problem</a>",
- "NAME": "H09217"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0059644714094,
- 38.90576332599382,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09219'>Report Problem</a>",
- "NAME": "H09219"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00568250168304,
- 38.907186244644734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09220'>Report Problem</a>",
- "NAME": "H09220"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00432703588632,
- 38.90728189928287,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09221'>Report Problem</a>",
- "NAME": "H09221"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00343405921083,
- 38.9081582067841,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 09/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09222'>Report Problem</a>",
- "NAME": "H09222"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00034088857399,
- 38.83846501346144,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant,<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09223'>Report Problem</a>",
- "NAME": "H09223"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99960080784255,
- 38.83813712361215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant,<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09224'>Report Problem</a>",
- "NAME": "H09224"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99985962331871,
- 38.83740941232444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant,<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09225'>Report Problem</a>",
- "NAME": "H09225"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95688877125403,
- 38.92222182671161,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09226'>Report Problem</a>",
- "NAME": "H09226"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01760034198207,
- 38.90729710297956,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09227'>Report Problem</a>",
- "NAME": "H09227"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06624073525964,
- 38.953201423673065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09228'>Report Problem</a>",
- "NAME": "H09228"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92913156939407,
- 38.882355344568744,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09229'>Report Problem</a>",
- "NAME": "H09229"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93027475983557,
- 38.882423091085336,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09230'>Report Problem</a>",
- "NAME": "H09230"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93130519026096,
- 38.882261289449474,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09231'>Report Problem</a>",
- "NAME": "H09231"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93109090951636,
- 38.88194094199932,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09232'>Report Problem</a>",
- "NAME": "H09232"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92995346739029,
- 38.88168354426477,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09233'>Report Problem</a>",
- "NAME": "H09233"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92926175286132,
- 38.88168796486839,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09234'>Report Problem</a>",
- "NAME": "H09234"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00313297767796,
- 38.84516448239475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09235'>Report Problem</a>",
- "NAME": "H09235"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99692024402691,
- 38.841638380100676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09236'>Report Problem</a>",
- "NAME": "H09236"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95021359767463,
- 38.92198895680593,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09237'>Report Problem</a>",
- "NAME": "H09237"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9579299449329,
- 38.9229395208611,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09238'>Report Problem</a>",
- "NAME": "H09238"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95938626070784,
- 38.92353032431596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09239'>Report Problem</a>",
- "NAME": "H09239"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95847938418572,
- 38.92279785431506,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09240'>Report Problem</a>",
- "NAME": "H09240"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95760369554229,
- 38.92229999224416,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09241'>Report Problem</a>",
- "NAME": "H09241"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95615038327321,
- 38.92200928886095,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09242'>Report Problem</a>",
- "NAME": "H09242"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9543213685154,
- 38.92251046894431,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09243'>Report Problem</a>",
- "NAME": "H09243"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95254171269899,
- 38.922466952213284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 10/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09244'>Report Problem</a>",
- "NAME": "H09244"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02475624239386,
- 38.81511391306391,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Blue Plains # C6FH1<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09246'>Report Problem</a>",
- "NAME": "H09246"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06198194751812,
- 38.93573992641686,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09252'>Report Problem</a>",
- "NAME": "H09252"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05678210789156,
- 38.95360997067364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09253'>Report Problem</a>",
- "NAME": "H09253"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0123858362094,
- 38.828744102767445,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 12/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08716'>Report Problem</a>",
- "NAME": "H08716"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98754090090777,
- 38.833196410884035,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08717'>Report Problem</a>",
- "NAME": "H08717"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9742776640474,
- 38.92162172376561,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 08/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08718'>Report Problem</a>",
- "NAME": "H08718"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93916313099159,
- 38.88659397782849,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 02/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08719'>Report Problem</a>",
- "NAME": "H08719"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02411427793977,
- 38.89621935576537,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08720'>Report Problem</a>",
- "NAME": "H08720"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00894501157781,
- 38.89966655200319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08721'>Report Problem</a>",
- "NAME": "H08721"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95543539481729,
- 38.91702175603697,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08722'>Report Problem</a>",
- "NAME": "H08722"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93673635039156,
- 38.902866577574734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08723'>Report Problem</a>",
- "NAME": "H08723"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09740785062755,
- 38.94627545753691,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08724'>Report Problem</a>",
- "NAME": "H08724"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05951181249839,
- 38.92439979219147,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08725'>Report Problem</a>",
- "NAME": "H08725"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00719253295067,
- 38.89904011461296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08726'>Report Problem</a>",
- "NAME": "H08726"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00703195557956,
- 38.89959103062003,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08727'>Report Problem</a>",
- "NAME": "H08727"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05022256405657,
- 38.90669025481118,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08728'>Report Problem</a>",
- "NAME": "H08728"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99921924360699,
- 38.920356747571944,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08729'>Report Problem</a>",
- "NAME": "H08729"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99480636483248,
- 38.9406118332587,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08730'>Report Problem</a>",
- "NAME": "H08730"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04527402585663,
- 38.98588461797464,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08731'>Report Problem</a>",
- "NAME": "H08731"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01814302217667,
- 38.95880404920544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08732'>Report Problem</a>",
- "NAME": "H08732"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01701177841085,
- 38.95882519049787,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08733'>Report Problem</a>",
- "NAME": "H08733"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95850855229487,
- 38.88765021662725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08734'>Report Problem</a>",
- "NAME": "H08734"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94987427777586,
- 38.90156101218892,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08735'>Report Problem</a>",
- "NAME": "H08735"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95099383531999,
- 38.90076210352137,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08736'>Report Problem</a>",
- "NAME": "H08736"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95160739815256,
- 38.90006137382878,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08737'>Report Problem</a>",
- "NAME": "H08737"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9506869221206,
- 38.89935376957078,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08738'>Report Problem</a>",
- "NAME": "H08738"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94943419635878,
- 38.89937397130198,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08739'>Report Problem</a>",
- "NAME": "H08739"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94990358588407,
- 38.89991547689804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08740'>Report Problem</a>",
- "NAME": "H08740"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94888915521787,
- 38.90071557434845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08741'>Report Problem</a>",
- "NAME": "H08741"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94976507820202,
- 38.90063092438199,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08742'>Report Problem</a>",
- "NAME": "H08742"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94880481857784,
- 38.899890110458124,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08743'>Report Problem</a>",
- "NAME": "H08743"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08502300070731,
- 38.96120636834058,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08744'>Report Problem</a>",
- "NAME": "H08744"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08245619336594,
- 38.96305487221091,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08745'>Report Problem</a>",
- "NAME": "H08745"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98921235707812,
- 38.920913047791174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08747'>Report Problem</a>",
- "NAME": "H08747"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99271458108961,
- 38.91827389700935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08748'>Report Problem</a>",
- "NAME": "H08748"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.000642778057,
- 38.89686912089262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08750'>Report Problem</a>",
- "NAME": "H08750"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99426785972668,
- 38.957170380157024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08751'>Report Problem</a>",
- "NAME": "H08751"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9977977081463,
- 38.956312525984444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08752'>Report Problem</a>",
- "NAME": "H08752"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9910333859845,
- 38.85783473998021,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09254'>Report Problem</a>",
- "NAME": "H09254"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03484254061438,
- 38.924854356532954,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09255'>Report Problem</a>",
- "NAME": "H09255"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92492428778557,
- 38.90493126258286,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09256'>Report Problem</a>",
- "NAME": "H09256"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05359944418875,
- 38.93963261059847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09257'>Report Problem</a>",
- "NAME": "H09257"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05497419264395,
- 38.93358499815553,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09258'>Report Problem</a>",
- "NAME": "H09258"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01963994825064,
- 38.91685340945908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09259'>Report Problem</a>",
- "NAME": "H09259"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9393199621042,
- 38.9095423789871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09260'>Report Problem</a>",
- "NAME": "H09260"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0569848218339,
- 38.915468141927384,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09261'>Report Problem</a>",
- "NAME": "H09261"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05026678134584,
- 38.8969760471546,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09262'>Report Problem</a>",
- "NAME": "H09262"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99579511363885,
- 38.910090264103694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09263'>Report Problem</a>",
- "NAME": "H09263"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02964645346998,
- 38.923367300566554,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09264'>Report Problem</a>",
- "NAME": "H09264"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99652434753408,
- 38.923666977676156,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09265'>Report Problem</a>",
- "NAME": "H09265"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04244517980435,
- 38.921569777825226,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09266'>Report Problem</a>",
- "NAME": "H09266"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02863271827209,
- 38.90959566054185,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09267'>Report Problem</a>",
- "NAME": "H09267"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97879161578743,
- 38.906967690069855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09268'>Report Problem</a>",
- "NAME": "H09268"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08660677716558,
- 38.953353367458945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09269'>Report Problem</a>",
- "NAME": "H09269"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97998503074454,
- 38.86167664955933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09270'>Report Problem</a>",
- "NAME": "H09270"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01582900249406,
- 38.81408747120256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09271'>Report Problem</a>",
- "NAME": "H09271"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04353400002903,
- 38.90876056131167,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09272'>Report Problem</a>",
- "NAME": "H09272"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9834197310972,
- 38.881702759897244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Am. Darling<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09273'>Report Problem</a>",
- "NAME": "H09273"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00472157906025,
- 38.873093230776824,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09274'>Report Problem</a>",
- "NAME": "H09274"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98465617367789,
- 38.95082372991569,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09275'>Report Problem</a>",
- "NAME": "H09275"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98358834951473,
- 38.95033262497695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09276'>Report Problem</a>",
- "NAME": "H09276"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98419270966416,
- 38.95004420025911,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09277'>Report Problem</a>",
- "NAME": "H09277"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91906978186881,
- 38.89471075395269,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09278'>Report Problem</a>",
- "NAME": "H09278"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99739549998577,
- 38.87881243983216,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Am Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/18/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09279'>Report Problem</a>",
- "NAME": "H09279"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97697794278825,
- 38.918670907205694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09280'>Report Problem</a>",
- "NAME": "H09280"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00765329097595,
- 38.87469895781118,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09281'>Report Problem</a>",
- "NAME": "H09281"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00814307381587,
- 38.874570203679475,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09282'>Report Problem</a>",
- "NAME": "H09282"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02698543669445,
- 38.88109182517637,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09283'>Report Problem</a>",
- "NAME": "H09283"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95334734690051,
- 38.922382256060715,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09284'>Report Problem</a>",
- "NAME": "H09284"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01735475465979,
- 38.904358562165754,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 10/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09285'>Report Problem</a>",
- "NAME": "H09285"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94875785077852,
- 38.919135021316265,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/02/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09287'>Report Problem</a>",
- "NAME": "H09287"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01647577934592,
- 38.887834483621496,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Am Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09289'>Report Problem</a>",
- "NAME": "H09289"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92176550434398,
- 38.88329910897763,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08680'>Report Problem</a>",
- "NAME": "H08680"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92708947381672,
- 38.87919746603908,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08681'>Report Problem</a>",
- "NAME": "H08681"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92408481032187,
- 38.88149445740319,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08682'>Report Problem</a>",
- "NAME": "H08682"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92724450655383,
- 38.88085838608868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08683'>Report Problem</a>",
- "NAME": "H08683"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07249169154235,
- 38.94104680332024,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 09/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08684'>Report Problem</a>",
- "NAME": "H08684"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06213333298192,
- 38.910528947731486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08685'>Report Problem</a>",
- "NAME": "H08685"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99943835888241,
- 38.83179842987002,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08686'>Report Problem</a>",
- "NAME": "H08686"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91907201002455,
- 38.893640804205596,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08687'>Report Problem</a>",
- "NAME": "H08687"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02385434134246,
- 38.901869704953135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08688'>Report Problem</a>",
- "NAME": "H08688"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01076323869623,
- 38.82859341691804,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08689'>Report Problem</a>",
- "NAME": "H08689"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0447586788924,
- 38.923942625522734,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/19/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08690'>Report Problem</a>",
- "NAME": "H08690"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92417114762259,
- 38.883791733801765,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08691'>Report Problem</a>",
- "NAME": "H08691"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98462632190741,
- 38.89806074620181,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08692'>Report Problem</a>",
- "NAME": "H08692"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98464381741263,
- 38.89738229270767,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08693'>Report Problem</a>",
- "NAME": "H08693"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07718089395061,
- 38.93598943465808,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08694'>Report Problem</a>",
- "NAME": "H08694"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07757129766513,
- 38.9367000302747,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08695'>Report Problem</a>",
- "NAME": "H08695"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07584002977998,
- 38.937236214401075,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08696'>Report Problem</a>",
- "NAME": "H08696"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07706932574608,
- 38.93905212281427,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08697'>Report Problem</a>",
- "NAME": "H08697"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07544023444585,
- 38.93934356801358,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08698'>Report Problem</a>",
- "NAME": "H08698"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07768494898157,
- 38.93774250334308,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08699'>Report Problem</a>",
- "NAME": "H08699"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07474534176015,
- 38.93553232380206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08700'>Report Problem</a>",
- "NAME": "H08700"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02982851136642,
- 38.908624000642575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08701'>Report Problem</a>",
- "NAME": "H08701"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02096405326786,
- 38.90174500717568,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08703'>Report Problem</a>",
- "NAME": "H08703"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99859094633403,
- 38.89606670313516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08704'>Report Problem</a>",
- "NAME": "H08704"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92814733406689,
- 38.886446604404135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08705'>Report Problem</a>",
- "NAME": "H08705"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93251427921629,
- 38.8869028262654,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08706'>Report Problem</a>",
- "NAME": "H08706"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0034341312402,
- 38.89624412593952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08707'>Report Problem</a>",
- "NAME": "H08707"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00041705038856,
- 38.89617952263983,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08708'>Report Problem</a>",
- "NAME": "H08708"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93046233533161,
- 38.886739300636116,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08709'>Report Problem</a>",
- "NAME": "H08709"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.002188089492,
- 38.89618109737246,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08710'>Report Problem</a>",
- "NAME": "H08710"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01868116301925,
- 38.89351866065366,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08711'>Report Problem</a>",
- "NAME": "H08711"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02970206975802,
- 38.91248058503723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08712'>Report Problem</a>",
- "NAME": "H08712"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02981000497276,
- 38.911903447315964,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08713'>Report Problem</a>",
- "NAME": "H08713"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93246260635284,
- 38.88485872213008,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08714'>Report Problem</a>",
- "NAME": "H08714"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99889835956795,
- 38.94631824204952,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08715'>Report Problem</a>",
- "NAME": "H08715"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00704136408936,
- 38.885008072195916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09290'>Report Problem</a>",
- "NAME": "H09290"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95490844331678,
- 38.92177986069538,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09291'>Report Problem</a>",
- "NAME": "H09291"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9513086707524,
- 38.922063673823594,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09292'>Report Problem</a>",
- "NAME": "H09292"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00297870587309,
- 38.8204773226711,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09293'>Report Problem</a>",
- "NAME": "H09293"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05157131009331,
- 38.93632515399027,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 11/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09294'>Report Problem</a>",
- "NAME": "H09294"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9495104797852,
- 38.92002390334836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 11/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09295'>Report Problem</a>",
- "NAME": "H09295"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00887852285749,
- 38.87368417400741,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09296'>Report Problem</a>",
- "NAME": "H09296"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94949797892636,
- 38.921783647311045,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 11/16/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09297'>Report Problem</a>",
- "NAME": "H09297"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02415624676367,
- 38.93621100856753,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/29/40<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09298'>Report Problem</a>",
- "NAME": "H09298"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02442615867146,
- 38.93595231520718,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/29/40<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09299'>Report Problem</a>",
- "NAME": "H09299"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02609666353408,
- 38.937559737122406,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 12/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09300'>Report Problem</a>",
- "NAME": "H09300"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94939449191173,
- 38.9211680997582,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09301'>Report Problem</a>",
- "NAME": "H09301"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05972008660773,
- 38.937843839182165,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09303'>Report Problem</a>",
- "NAME": "H09303"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9884488395658,
- 38.87414238669879,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 11/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09304'>Report Problem</a>",
- "NAME": "H09304"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01075912714681,
- 38.88484834953486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09307'>Report Problem</a>",
- "NAME": "H09307"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98616535584016,
- 38.93174177554106,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09308'>Report Problem</a>",
- "NAME": "H09308"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0229307459235,
- 38.97470163447889,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09309'>Report Problem</a>",
- "NAME": "H09309"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00602604304966,
- 38.87431165593684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09310'>Report Problem</a>",
- "NAME": "H09310"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00270167910509,
- 38.836865495703044,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09311'>Report Problem</a>",
- "NAME": "H09311"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09789717388706,
- 38.92599935744832,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09312'>Report Problem</a>",
- "NAME": "H09312"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96160666683869,
- 38.92290792427751,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09313'>Report Problem</a>",
- "NAME": "H09313"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95758538479275,
- 38.93051777670375,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/23/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09314'>Report Problem</a>",
- "NAME": "H09314"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01623186735475,
- 38.913344618983736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09315'>Report Problem</a>",
- "NAME": "H09315"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06442779964327,
- 38.938998788117466,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/02/30<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09316'>Report Problem</a>",
- "NAME": "H09316"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04492253938406,
- 38.91340050265108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/17/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09317'>Report Problem</a>",
- "NAME": "H09317"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9631310490341,
- 38.924952655145624,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09318'>Report Problem</a>",
- "NAME": "H09318"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96655507916714,
- 38.91706741053211,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 01/25/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09319'>Report Problem</a>",
- "NAME": "H09319"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99833925795618,
- 38.87756015531194,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Am Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09320'>Report Problem</a>",
- "NAME": "H09320"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91878616593085,
- 38.88958460278862,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 01/24/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09321'>Report Problem</a>",
- "NAME": "H09321"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00933868020185,
- 38.87197153292126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09322'>Report Problem</a>",
- "NAME": "H09322"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00890359683652,
- 38.871819937468985,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09323'>Report Problem</a>",
- "NAME": "H09323"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00756097818527,
- 38.87117409356284,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09324'>Report Problem</a>",
- "NAME": "H09324"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0066963196627,
- 38.87152652806933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09325'>Report Problem</a>",
- "NAME": "H09325"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00849222136488,
- 38.87081333305187,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09326'>Report Problem</a>",
- "NAME": "H09326"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99431464556976,
- 38.95642802955262,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08753'>Report Problem</a>",
- "NAME": "H08753"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9914366175631,
- 38.954583078672904,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08754'>Report Problem</a>",
- "NAME": "H08754"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96700810746621,
- 38.86464720208796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08755'>Report Problem</a>",
- "NAME": "H08755"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9659872441215,
- 38.864224378497006,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08756'>Report Problem</a>",
- "NAME": "H08756"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96460894537778,
- 38.863711128787294,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08757'>Report Problem</a>",
- "NAME": "H08757"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96763373361483,
- 38.86553339070093,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08758'>Report Problem</a>",
- "NAME": "H08758"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96613072149334,
- 38.862597031785256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08759'>Report Problem</a>",
- "NAME": "H08759"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96730990863365,
- 38.86332970713221,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 08/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08760'>Report Problem</a>",
- "NAME": "H08760"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01778644994052,
- 38.91354216170856,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08761'>Report Problem</a>",
- "NAME": "H08761"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07548153425437,
- 38.91275512895882,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08762'>Report Problem</a>",
- "NAME": "H08762"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07523671171474,
- 38.91252506068831,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08763'>Report Problem</a>",
- "NAME": "H08763"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07398417995368,
- 38.91262140294875,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08764'>Report Problem</a>",
- "NAME": "H08764"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07620466046885,
- 38.91256654740798,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08765'>Report Problem</a>",
- "NAME": "H08765"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08259014522528,
- 38.912883571964244,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08766'>Report Problem</a>",
- "NAME": "H08766"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.08164952241454,
- 38.91259664174641,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08767'>Report Problem</a>",
- "NAME": "H08767"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00500905428665,
- 38.90988776990425,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08768'>Report Problem</a>",
- "NAME": "H08768"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00476109283106,
- 38.897079614148794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08769'>Report Problem</a>",
- "NAME": "H08769"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02387038061198,
- 38.894678795089796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08770'>Report Problem</a>",
- "NAME": "H08770"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03086190785439,
- 38.91709656058297,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08771'>Report Problem</a>",
- "NAME": "H08771"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0297118888888,
- 38.916759568717914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08772'>Report Problem</a>",
- "NAME": "H08772"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02816493910211,
- 38.896791975907256,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08773'>Report Problem</a>",
- "NAME": "H08773"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01653222067856,
- 38.9004082026011,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08774'>Report Problem</a>",
- "NAME": "H08774"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01316311014868,
- 38.900283765943584,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08775'>Report Problem</a>",
- "NAME": "H08775"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0092874073791,
- 38.90027519304724,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08776'>Report Problem</a>",
- "NAME": "H08776"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00928195840858,
- 38.90030505618723,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08777'>Report Problem</a>",
- "NAME": "H08777"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00668024480795,
- 38.96545990568684,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08778'>Report Problem</a>",
- "NAME": "H08778"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94550679698732,
- 38.87166270732186,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 08/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08779'>Report Problem</a>",
- "NAME": "H08779"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94864753687541,
- 38.87267007211219,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08780'>Report Problem</a>",
- "NAME": "H08780"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0098480825433,
- 38.90027040873241,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08781'>Report Problem</a>",
- "NAME": "H08781"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01057145694017,
- 38.90027449836676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08782'>Report Problem</a>",
- "NAME": "H08782"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01372806366703,
- 38.90034702967891,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08783'>Report Problem</a>",
- "NAME": "H08783"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92622347641245,
- 38.90457663859126,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08784'>Report Problem</a>",
- "NAME": "H08784"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01270689411403,
- 38.89880922911742,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08785'>Report Problem</a>",
- "NAME": "H08785"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02816231811993,
- 38.89695654133128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08786'>Report Problem</a>",
- "NAME": "H08786"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03184846819468,
- 38.900326910649255,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08787'>Report Problem</a>",
- "NAME": "H08787"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00603296870757,
- 38.87526238391792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09327'>Report Problem</a>",
- "NAME": "H09327"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00579855860819,
- 38.87530645586449,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09328'>Report Problem</a>",
- "NAME": "H09328"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03228881386602,
- 38.90980407028345,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09329'>Report Problem</a>",
- "NAME": "H09329"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0424313981925,
- 38.90970658186085,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09331'>Report Problem</a>",
- "NAME": "H09331"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01980048400594,
- 38.89896138429871,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/04/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09332'>Report Problem</a>",
- "NAME": "H09332"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0197897148647,
- 38.89966073211877,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09333'>Report Problem</a>",
- "NAME": "H09333"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07260007877383,
- 38.922600638857574,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09334'>Report Problem</a>",
- "NAME": "H09334"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91955468659461,
- 38.888397145538676,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09335'>Report Problem</a>",
- "NAME": "H09335"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91882591439352,
- 38.88866839715733,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09336'>Report Problem</a>",
- "NAME": "H09336"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91817019879976,
- 38.888008309955815,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09337'>Report Problem</a>",
- "NAME": "H09337"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9192318088207,
- 38.887564386148846,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/11/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09338'>Report Problem</a>",
- "NAME": "H09338"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00441930506632,
- 38.878433014833476,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/20/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09339'>Report Problem</a>",
- "NAME": "H09339"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00222548091834,
- 38.823995059116136,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/14/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09340'>Report Problem</a>",
- "NAME": "H09340"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00339713525518,
- 38.8259588777402,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09341'>Report Problem</a>",
- "NAME": "H09341"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00366669730415,
- 38.83047224678334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 02/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09342'>Report Problem</a>",
- "NAME": "H09342"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95001355327334,
- 38.91932828938052,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 03/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09344'>Report Problem</a>",
- "NAME": "H09344"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95436733392737,
- 38.91894300981501,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 03/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09345'>Report Problem</a>",
- "NAME": "H09345"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01120709117866,
- 38.82221083722736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 03/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09346'>Report Problem</a>",
- "NAME": "H09346"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98648607661214,
- 38.85718614604409,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Kennedy<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09347'>Report Problem</a>",
- "NAME": "H09347"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.041676246334,
- 38.94714072415591,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 03/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09348'>Report Problem</a>",
- "NAME": "H09348"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04102689629917,
- 38.94680192721034,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 03/03/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H09349'>Report Problem</a>",
- "NAME": "H09349"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99351976995797,
- 38.82914942057292,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08788'>Report Problem</a>",
- "NAME": "H08788"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02306623927376,
- 38.90200428589626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08789'>Report Problem</a>",
- "NAME": "H08789"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02273902097328,
- 38.90094169730195,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08790'>Report Problem</a>",
- "NAME": "H08790"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01354351443048,
- 38.905663898680736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08791'>Report Problem</a>",
- "NAME": "H08791"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01611015837176,
- 38.90520113832982,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/13/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08792'>Report Problem</a>",
- "NAME": "H08792"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99126877216338,
- 38.82926070859868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 10/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08793'>Report Problem</a>",
- "NAME": "H08793"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9962210632459,
- 38.82929124246931,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08794'>Report Problem</a>",
- "NAME": "H08794"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98596243998557,
- 38.95270681195157,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08795'>Report Problem</a>",
- "NAME": "H08795"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05914725121823,
- 38.901338907915296,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08796'>Report Problem</a>",
- "NAME": "H08796"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02816488572094,
- 38.90205840720238,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08797'>Report Problem</a>",
- "NAME": "H08797"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00438123513435,
- 38.8768691951298,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 01/08/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08798'>Report Problem</a>",
- "NAME": "H08798"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00729788668431,
- 38.87638065012211,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08799'>Report Problem</a>",
- "NAME": "H08799"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02953115953406,
- 38.88513969491125,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08800'>Report Problem</a>",
- "NAME": "H08800"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02174856904672,
- 38.90848554213636,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08801'>Report Problem</a>",
- "NAME": "H08801"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94764937578191,
- 38.90081239671709,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 01/15/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08804'>Report Problem</a>",
- "NAME": "H08804"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03456215344579,
- 38.895293410353915,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08805'>Report Problem</a>",
- "NAME": "H08805"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0187164660632,
- 38.91731535508084,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08806'>Report Problem</a>",
- "NAME": "H08806"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00064074063144,
- 38.89720034941164,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08807'>Report Problem</a>",
- "NAME": "H08807"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01764854205611,
- 38.91739140742575,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08808'>Report Problem</a>",
- "NAME": "H08808"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00186229085949,
- 38.897264989345544,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08809'>Report Problem</a>",
- "NAME": "H08809"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99579591702195,
- 38.86301105765919,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/05/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08810'>Report Problem</a>",
- "NAME": "H08810"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04134678878712,
- 38.94826382225088,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08812'>Report Problem</a>",
- "NAME": "H08812"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9947575163789,
- 38.860123304058206,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08813'>Report Problem</a>",
- "NAME": "H08813"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93580729222725,
- 38.88550585180411,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08814'>Report Problem</a>",
- "NAME": "H08814"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.93350421003265,
- 38.88206520635128,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08815'>Report Problem</a>",
- "NAME": "H08815"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07033226944189,
- 38.95585197812847,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, OTHER, SEE FLD NOTES<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08816'>Report Problem</a>",
- "NAME": "H08816"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00053821190153,
- 38.86497991214398,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08817'>Report Problem</a>",
- "NAME": "H08817"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99867121250075,
- 38.86451523383149,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08818'>Report Problem</a>",
- "NAME": "H08818"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0532404472594,
- 38.90606095552444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08819'>Report Problem</a>",
- "NAME": "H08819"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02167392330027,
- 38.91226876229872,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08820'>Report Problem</a>",
- "NAME": "H08820"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0220094395951,
- 38.91607889222257,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08821'>Report Problem</a>",
- "NAME": "H08821"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02174173458414,
- 38.91265460385914,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08822'>Report Problem</a>",
- "NAME": "H08822"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02200785880494,
- 38.91166616810135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08823'>Report Problem</a>",
- "NAME": "H08823"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02174802471912,
- 38.915624200529365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 10/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08825'>Report Problem</a>",
- "NAME": "H08825"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05409560402761,
- 38.910519496075764,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08861'>Report Problem</a>",
- "NAME": "H08861"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05216748407929,
- 38.91064744453669,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08862'>Report Problem</a>",
- "NAME": "H08862"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05607816992051,
- 38.9106080051977,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08863'>Report Problem</a>",
- "NAME": "H08863"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05721275393297,
- 38.91064462356736,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 02/07/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08864'>Report Problem</a>",
- "NAME": "H08864"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02699217347983,
- 38.88744503140304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08865'>Report Problem</a>",
- "NAME": "H08865"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02567433151633,
- 38.88745080560488,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08866'>Report Problem</a>",
- "NAME": "H08866"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0639111800448,
- 38.910509981111844,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08867'>Report Problem</a>",
- "NAME": "H08867"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0019330980894,
- 38.84337726915251,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08868'>Report Problem</a>",
- "NAME": "H08868"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00914338527055,
- 38.83390007124215,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08869'>Report Problem</a>",
- "NAME": "H08869"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10089936078661,
- 38.93233392892799,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08870'>Report Problem</a>",
- "NAME": "H08870"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09919728642942,
- 38.932396137964176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US Pipe, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08871'>Report Problem</a>",
- "NAME": "H08871"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10328700024372,
- 38.93218317915868,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08872'>Report Problem</a>",
- "NAME": "H08872"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10229653912195,
- 38.93413978118592,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08873'>Report Problem</a>",
- "NAME": "H08873"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10061113416536,
- 38.933735347816096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08874'>Report Problem</a>",
- "NAME": "H08874"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.10308342998931,
- 38.932346778645694,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08875'>Report Problem</a>",
- "NAME": "H08875"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05507834449074,
- 38.91062579482191,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08876'>Report Problem</a>",
- "NAME": "H08876"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07589667021534,
- 38.96494866877805,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08877'>Report Problem</a>",
- "NAME": "H08877"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97197844433609,
- 38.891855965227826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 03/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08878'>Report Problem</a>",
- "NAME": "H08878"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07909584259765,
- 38.95073413849933,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08879'>Report Problem</a>",
- "NAME": "H08879"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03735816088506,
- 38.90245803421959,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 08/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08880'>Report Problem</a>",
- "NAME": "H08880"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03980873715406,
- 38.90268759556199,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 10/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08881'>Report Problem</a>",
- "NAME": "H08881"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09359919803424,
- 38.92759885559243,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08882'>Report Problem</a>",
- "NAME": "H08882"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04175348077844,
- 38.902731030627535,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/15/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08883'>Report Problem</a>",
- "NAME": "H08883"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.09197855260298,
- 38.92766514632522,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/25/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08884'>Report Problem</a>",
- "NAME": "H08884"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03811752505584,
- 38.902671782404745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/28/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08885'>Report Problem</a>",
- "NAME": "H08885"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04366221031981,
- 38.902358485978134,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 06/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08886'>Report Problem</a>",
- "NAME": "H08886"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03869502663345,
- 38.90243456471562,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08888'>Report Problem</a>",
- "NAME": "H08888"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04272069933567,
- 38.90236633801674,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08889'>Report Problem</a>",
- "NAME": "H08889"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04479492523886,
- 38.90272215686607,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/06/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08890'>Report Problem</a>",
- "NAME": "H08890"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03926909323233,
- 38.90274976468699,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08891'>Report Problem</a>",
- "NAME": "H08891"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01589502215094,
- 38.97502547718258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08892'>Report Problem</a>",
- "NAME": "H08892"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00731297615674,
- 38.83143909777326,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08893'>Report Problem</a>",
- "NAME": "H08893"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00830265070712,
- 38.83358891883111,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08894'>Report Problem</a>",
- "NAME": "H08894"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00782139634741,
- 38.83130444234121,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08895'>Report Problem</a>",
- "NAME": "H08895"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0230045609527,
- 38.91690870121258,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/04/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08826'>Report Problem</a>",
- "NAME": "H08826"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02181590769047,
- 38.91340550702836,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 11/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08827'>Report Problem</a>",
- "NAME": "H08827"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02492865820847,
- 38.91691082890837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08828'>Report Problem</a>",
- "NAME": "H08828"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02406675489375,
- 38.91718084514725,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 05/21/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08829'>Report Problem</a>",
- "NAME": "H08829"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98709616556368,
- 38.8936885107829,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08830'>Report Problem</a>",
- "NAME": "H08830"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03810995635037,
- 38.939883631468845,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, LORTON - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08831'>Report Problem</a>",
- "NAME": "H08831"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07159875383506,
- 38.954780396611895,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08832'>Report Problem</a>",
- "NAME": "H08832"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03668217965783,
- 38.942963644253346,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 09/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08833'>Report Problem</a>",
- "NAME": "H08833"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03656952824868,
- 38.94620334692981,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, US PIPE-A P SMITH<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08834'>Report Problem</a>",
- "NAME": "H08834"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03663183523125,
- 38.94510889314444,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08835'>Report Problem</a>",
- "NAME": "H08835"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03096571153398,
- 38.90026399937653,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08836'>Report Problem</a>",
- "NAME": "H08836"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03222516801468,
- 38.900282161921794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08837'>Report Problem</a>",
- "NAME": "H08837"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03210463724255,
- 38.90068526508826,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 01/22/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08838'>Report Problem</a>",
- "NAME": "H08838"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94937575343454,
- 38.90599532150236,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08839'>Report Problem</a>",
- "NAME": "H08839"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95131294599805,
- 38.90749146767299,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/16/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08840'>Report Problem</a>",
- "NAME": "H08840"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94842237740023,
- 38.90146015322745,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08841'>Report Problem</a>",
- "NAME": "H08841"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95238859240804,
- 38.907112947779304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 01/17/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08842'>Report Problem</a>",
- "NAME": "H08842"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95154392848963,
- 38.9043143366131,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08843'>Report Problem</a>",
- "NAME": "H08843"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.94898009499613,
- 38.90193432779135,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08844'>Report Problem</a>",
- "NAME": "H08844"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95062673621489,
- 38.90351450627775,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 10/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08845'>Report Problem</a>",
- "NAME": "H08845"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95286968234223,
- 38.905953777320335,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08846'>Report Problem</a>",
- "NAME": "H08846"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9497264341279,
- 38.90257922625323,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08847'>Report Problem</a>",
- "NAME": "H08847"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.95007755170082,
- 38.907171996772334,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 11/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08848'>Report Problem</a>",
- "NAME": "H08848"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00336463139561,
- 38.842961199618784,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/24/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08849'>Report Problem</a>",
- "NAME": "H08849"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02286540829637,
- 38.89670426590485,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08850'>Report Problem</a>",
- "NAME": "H08850"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07275352764715,
- 38.91269357580465,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 11/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08852'>Report Problem</a>",
- "NAME": "H08852"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96716302397698,
- 38.85190698308656,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08853'>Report Problem</a>",
- "NAME": "H08853"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03214122554058,
- 38.88655624045092,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08854'>Report Problem</a>",
- "NAME": "H08854"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96692717290887,
- 38.85139537259351,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08855'>Report Problem</a>",
- "NAME": "H08855"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07264693992603,
- 38.91544224830243,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08856'>Report Problem</a>",
- "NAME": "H08856"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03212633583716,
- 38.884691860814364,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08857'>Report Problem</a>",
- "NAME": "H08857"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.96803996442917,
- 38.85199745492108,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08858'>Report Problem</a>",
- "NAME": "H08858"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07280393808152,
- 38.91366517493101,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08859'>Report Problem</a>",
- "NAME": "H08859"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07260695412066,
- 38.91453874598076,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08860'>Report Problem</a>",
- "NAME": "H08860"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00826482290368,
- 38.83245611662837,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08896'>Report Problem</a>",
- "NAME": "H08896"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01525667252106,
- 38.908744515140945,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/12/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08897'>Report Problem</a>",
- "NAME": "H08897"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99827272276606,
- 38.908666333146115,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08898'>Report Problem</a>",
- "NAME": "H08898"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00019506106203,
- 38.90780101313025,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP SMITH - O'BRIEN<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08899'>Report Problem</a>",
- "NAME": "H08899"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99805374292248,
- 38.906912918249304,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08900'>Report Problem</a>",
- "NAME": "H08900"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99899097407206,
- 38.90758652922681,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08901'>Report Problem</a>",
- "NAME": "H08901"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.06054096499086,
- 38.910546133805695,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08902'>Report Problem</a>",
- "NAME": "H08902"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00196182580596,
- 38.901195632331486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08903'>Report Problem</a>",
- "NAME": "H08903"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02256671912761,
- 38.925323381009946,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08904'>Report Problem</a>",
- "NAME": "H08904"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0224827886553,
- 38.924742946249395,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08905'>Report Problem</a>",
- "NAME": "H08905"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02325215783448,
- 38.92817018034462,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 08/05/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08906'>Report Problem</a>",
- "NAME": "H08906"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0230417930079,
- 38.92704055251279,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08907'>Report Problem</a>",
- "NAME": "H08907"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02292954828596,
- 38.92783495469365,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08908'>Report Problem</a>",
- "NAME": "H08908"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02275504535227,
- 38.9250467260951,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08909'>Report Problem</a>",
- "NAME": "H08909"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02294983457368,
- 38.92618751922533,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/29/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08910'>Report Problem</a>",
- "NAME": "H08910"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0227418074932,
- 38.92653292969026,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08911'>Report Problem</a>",
- "NAME": "H08911"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99387490699182,
- 38.90009920716982,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08912'>Report Problem</a>",
- "NAME": "H08912"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00771007729371,
- 38.95123949370792,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08913'>Report Problem</a>",
- "NAME": "H08913"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00676463176144,
- 38.949939937648274,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 07/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08914'>Report Problem</a>",
- "NAME": "H08914"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03357163121086,
- 38.900060519441354,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08915'>Report Problem</a>",
- "NAME": "H08915"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.031794129773,
- 38.90013284937174,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 05/31/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08916'>Report Problem</a>",
- "NAME": "H08916"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03275012726523,
- 38.90010165057746,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08917'>Report Problem</a>",
- "NAME": "H08917"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03347979444293,
- 38.900274980769176,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Clow Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/01/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08918'>Report Problem</a>",
- "NAME": "H08918"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04018872076269,
- 38.98957042717275,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: Unavailable<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08919'>Report Problem</a>",
- "NAME": "H08919"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04189650696442,
- 38.98827397062993,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 02/05/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08920'>Report Problem</a>",
- "NAME": "H08920"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00527344245755,
- 38.89614490231935,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08921'>Report Problem</a>",
- "NAME": "H08921"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07473909704427,
- 38.943185775947015,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08922'>Report Problem</a>",
- "NAME": "H08922"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01699162514261,
- 38.920507341162114,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 09/22/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08923'>Report Problem</a>",
- "NAME": "H08923"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07070706888001,
- 38.94318747360675,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08924'>Report Problem</a>",
- "NAME": "H08924"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0591929189357,
- 38.91040148390385,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08925'>Report Problem</a>",
- "NAME": "H08925"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.01695629125419,
- 38.92273260929036,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 03/12/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08926'>Report Problem</a>",
- "NAME": "H08926"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0312164383039,
- 38.98469328431794,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08927'>Report Problem</a>",
- "NAME": "H08927"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0333204642323,
- 38.98500518072252,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08928'>Report Problem</a>",
- "NAME": "H08928"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.03514235142791,
- 38.97593048694613,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/22/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08929'>Report Problem</a>",
- "NAME": "H08929"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07252171845182,
- 38.94319165876171,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Eddy<p align=center>In Service</p><hr />Last Inspection Date: 06/06/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08930'>Report Problem</a>",
- "NAME": "H08930"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92587240636306,
- 38.88540878623634,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08931'>Report Problem</a>",
- "NAME": "H08931"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.92915987721392,
- 38.88576672061623,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08932'>Report Problem</a>",
- "NAME": "H08932"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0035278298557,
- 38.82962376179835,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08933'>Report Problem</a>",
- "NAME": "H08933"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.04500846616315,
- 38.94183439252916,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08934'>Report Problem</a>",
- "NAME": "H08934"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98596193046112,
- 38.95271650478861,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08935'>Report Problem</a>",
- "NAME": "H08935"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98720381084333,
- 38.95368736935155,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08936'>Report Problem</a>",
- "NAME": "H08936"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.91083700707229,
- 38.89289697790556,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 09/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08937'>Report Problem</a>",
- "NAME": "H08937"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.90997247965049,
- 38.893215598609096,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/07/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08938'>Report Problem</a>",
- "NAME": "H08938"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97121428165056,
- 38.928365897136516,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 07/27/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08941'>Report Problem</a>",
- "NAME": "H08941"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97825039142175,
- 38.91839795539441,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 08/30/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08943'>Report Problem</a>",
- "NAME": "H08943"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02951468714578,
- 38.88424317575938,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08944'>Report Problem</a>",
- "NAME": "H08944"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02877188262288,
- 38.88421561528062,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08945'>Report Problem</a>",
- "NAME": "H08945"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97900183502773,
- 38.93824158419969,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08946'>Report Problem</a>",
- "NAME": "H08946"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97965106878492,
- 38.93913660999967,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08947'>Report Problem</a>",
- "NAME": "H08947"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98032172098291,
- 38.939761567047796,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08948'>Report Problem</a>",
- "NAME": "H08948"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97540266795704,
- 38.93514176655271,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/20/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08949'>Report Problem</a>",
- "NAME": "H08949"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.97786740676564,
- 38.9371988177896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Lorton<p align=center>In Service</p><hr />Last Inspection Date: 04/02/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08950'>Report Problem</a>",
- "NAME": "H08950"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02992539231113,
- 38.882869724926245,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08951'>Report Problem</a>",
- "NAME": "H08951"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.02862535635137,
- 38.882834728904605,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 06/26/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08952'>Report Problem</a>",
- "NAME": "H08952"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98373163938666,
- 38.943167431929645,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 07/09/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08953'>Report Problem</a>",
- "NAME": "H08953"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98470344318412,
- 38.94375860578053,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08954'>Report Problem</a>",
- "NAME": "H08954"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98584257252891,
- 38.944289166113776,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant<p align=center>In Service</p><hr />Last Inspection Date: 06/21/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08955'>Report Problem</a>",
- "NAME": "H08955"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98955808483929,
- 38.85972219720714,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, Mueller<p align=center>In Service</p><hr />Last Inspection Date: 10/18/06<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08956'>Report Problem</a>",
- "NAME": "H08956"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98234257804742,
- 38.941520236084486,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08957'>Report Problem</a>",
- "NAME": "H08957"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98324549005675,
- 38.94237975070426,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/18/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08958'>Report Problem</a>",
- "NAME": "H08958"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99647808241964,
- 38.862930274733635,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 01/31/08<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08960'>Report Problem</a>",
- "NAME": "H08960"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.9950528034839,
- 38.86234025281626,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 06/04/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08961'>Report Problem</a>",
- "NAME": "H08961"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.99695304153806,
- 38.90794910679896,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, KENNEDY-K81-A/D GUAR<p align=center>In Service</p><hr />Last Inspection Date: 07/10/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08963'>Report Problem</a>",
- "NAME": "H08963"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.07707916040054,
- 38.96499498141065,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AM DARLING - B-84-B<p align=center>In Service</p><hr />Last Inspection Date: 09/14/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08964'>Report Problem</a>",
- "NAME": "H08964"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0093148713099,
- 38.87540698725855,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, CLOW - EDDY<p align=center>In Service</p><hr />Last Inspection Date: 07/03/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08965'>Report Problem</a>",
- "NAME": "H08965"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.00690648325929,
- 38.8324328369647,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, AP Smith<p align=center>In Service</p><hr />Last Inspection Date: 06/19/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08966'>Report Problem</a>",
- "NAME": "H08966"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -76.98819752280579,
- 38.9257094658146,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, MUELLER-SUP CENT 250<p align=center>In Service</p><hr />Last Inspection Date: 07/17/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08967'>Report Problem</a>",
- "NAME": "H08967"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.05389484528261,
- 38.9234737236897,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 09/11/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08968'>Report Problem</a>",
- "NAME": "H08968"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- -77.0533673443786,
- 38.92334425495122,
- 0.0
- ],
- "type": "Point"
- },
- "properties": {
- "DESCRIPTIO": "Hydrant, American Darling<p align=center>In Service</p><hr />Last Inspection Date: 01/08/07<br /><hr /><a href='http://www.dcwasa.com/report_problem/default.cfm?problem_id=8&hydrant=H08969'>Report Problem</a>",
- "NAME": "H08969"
- },
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
-}
diff --git a/platform/ios/app/polyline.geojson b/platform/ios/app/polyline.geojson
deleted file mode 100644
index c104969544..0000000000
--- a/platform/ios/app/polyline.geojson
+++ /dev/null
@@ -1,14187 +0,0 @@
-{
- "features": [
- {
- "geometry": {
- "coordinates": [
- [
- -122.854957,
- 48.65588,
- 109.7
- ],
- [
- -122.854644,
- 48.656217,
- 112
- ],
- [
- -122.855082,
- 48.656155,
- 111.1
- ],
- [
- -122.855053,
- 48.656188,
- 111.4
- ],
- [
- -122.854857,
- 48.656198,
- 111.6
- ],
- [
- -122.854893,
- 48.65629,
- 111.8
- ],
- [
- -122.855026,
- 48.656349,
- 111.9
- ],
- [
- -122.855035,
- 48.656411,
- 112.1
- ],
- [
- -122.855044,
- 48.656437,
- 112.1
- ],
- [
- -122.855006,
- 48.656472,
- 112.6
- ],
- [
- -122.85496,
- 48.656508,
- 112.8
- ],
- [
- -122.854941,
- 48.656534,
- 112.9
- ],
- [
- -122.854921,
- 48.656575,
- 113.5
- ],
- [
- -122.854914,
- 48.656603,
- 114
- ],
- [
- -122.854894,
- 48.656628,
- 114.5
- ],
- [
- -122.854864,
- 48.656659,
- 114.8
- ],
- [
- -122.854851,
- 48.656687,
- 115.2
- ],
- [
- -122.854818,
- 48.656718,
- 115.5
- ],
- [
- -122.8548,
- 48.656757,
- 115.3
- ],
- [
- -122.85479,
- 48.656783,
- 115.3
- ],
- [
- -122.854761,
- 48.65682,
- 115.5
- ],
- [
- -122.854771,
- 48.656851,
- 115.8
- ],
- [
- -122.854781,
- 48.656886,
- 116
- ],
- [
- -122.854793,
- 48.656921,
- 115.9
- ],
- [
- -122.854785,
- 48.656954,
- 115.8
- ],
- [
- -122.854756,
- 48.656977,
- 116
- ],
- [
- -122.854729,
- 48.657002,
- 116.1
- ],
- [
- -122.85476,
- 48.657038,
- 118.3
- ],
- [
- -122.854757,
- 48.657067,
- 118.5
- ],
- [
- -122.854744,
- 48.657097,
- 118.3
- ],
- [
- -122.854728,
- 48.657127,
- 118.6
- ],
- [
- -122.854678,
- 48.657135,
- 117.1
- ],
- [
- -122.85466,
- 48.657169,
- 117.5
- ],
- [
- -122.854659,
- 48.657203,
- 117.8
- ],
- [
- -122.854645,
- 48.65724,
- 118.2
- ],
- [
- -122.854624,
- 48.657282,
- 118.6
- ],
- [
- -122.854608,
- 48.657312,
- 118.8
- ],
- [
- -122.854615,
- 48.65735,
- 119.8
- ],
- [
- -122.854626,
- 48.657377,
- 120.8
- ],
- [
- -122.854614,
- 48.65741,
- 120.9
- ],
- [
- -122.854655,
- 48.657389,
- 122
- ],
- [
- -122.854702,
- 48.657391,
- 123
- ],
- [
- -122.854656,
- 48.65738,
- 121.9
- ],
- [
- -122.854625,
- 48.657402,
- 121.2
- ],
- [
- -122.854599,
- 48.657438,
- 121
- ],
- [
- -122.854575,
- 48.657468,
- 120.9
- ],
- [
- -122.854586,
- 48.6575,
- 121.7
- ],
- [
- -122.854573,
- 48.657532,
- 121.9
- ],
- [
- -122.854553,
- 48.657569,
- 122.1
- ],
- [
- -122.854549,
- 48.657605,
- 122.4
- ],
- [
- -122.854553,
- 48.657636,
- 123.5
- ],
- [
- -122.854566,
- 48.657665,
- 124.7
- ],
- [
- -122.854564,
- 48.657693,
- 125.2
- ],
- [
- -122.854574,
- 48.65772,
- 125.9
- ],
- [
- -122.854596,
- 48.657747,
- 126.8
- ],
- [
- -122.854619,
- 48.657778,
- 127.4
- ],
- [
- -122.854629,
- 48.657807,
- 127.1
- ],
- [
- -122.854644,
- 48.657844,
- 126.7
- ],
- [
- -122.854705,
- 48.657861,
- 128.4
- ],
- [
- -122.854746,
- 48.657866,
- 130.3
- ],
- [
- -122.854782,
- 48.657897,
- 131.8
- ],
- [
- -122.854748,
- 48.657939,
- 130.5
- ],
- [
- -122.854719,
- 48.657958,
- 129.3
- ],
- [
- -122.854663,
- 48.657967,
- 127.8
- ],
- [
- -122.854614,
- 48.657967,
- 128.7
- ],
- [
- -122.854561,
- 48.657965,
- 129.5
- ],
- [
- -122.8545,
- 48.657953,
- 131
- ],
- [
- -122.854442,
- 48.657947,
- 133.6
- ],
- [
- -122.854399,
- 48.657927,
- 133.8
- ],
- [
- -122.854351,
- 48.657929,
- 135.8
- ],
- [
- -122.854319,
- 48.657894,
- 134.8
- ],
- [
- -122.854311,
- 48.657866,
- 133.6
- ],
- [
- -122.85436,
- 48.657873,
- 131.5
- ],
- [
- -122.854398,
- 48.657886,
- 130.6
- ],
- [
- -122.85445,
- 48.657883,
- 128.6
- ],
- [
- -122.854501,
- 48.657883,
- 127.2
- ],
- [
- -122.854549,
- 48.657885,
- 126.7
- ],
- [
- -122.854596,
- 48.657899,
- 127
- ],
- [
- -122.854612,
- 48.657924,
- 127.7
- ],
- [
- -122.854566,
- 48.657937,
- 128.4
- ],
- [
- -122.854518,
- 48.657934,
- 129.2
- ],
- [
- -122.854459,
- 48.657926,
- 131.1
- ],
- [
- -122.854414,
- 48.657951,
- 135.1
- ],
- [
- -122.854391,
- 48.657973,
- 137.1
- ],
- [
- -122.854357,
- 48.657953,
- 137.2
- ],
- [
- -122.854336,
- 48.657927,
- 136.3
- ],
- [
- -122.854322,
- 48.657902,
- 135.1
- ],
- [
- -122.854295,
- 48.657878,
- 135.1
- ],
- [
- -122.854265,
- 48.657854,
- 135.4
- ],
- [
- -122.854233,
- 48.657833,
- 136
- ],
- [
- -122.854211,
- 48.657799,
- 135.6
- ],
- [
- -122.854204,
- 48.657753,
- 133.7
- ],
- [
- -122.854204,
- 48.657721,
- 132.3
- ],
- [
- -122.854213,
- 48.657685,
- 130.6
- ],
- [
- -122.854213,
- 48.657653,
- 128.7
- ],
- [
- -122.854215,
- 48.657618,
- 126.6
- ],
- [
- -122.854211,
- 48.657579,
- 125.5
- ],
- [
- -122.85424,
- 48.657534,
- 124.2
- ],
- [
- -122.854264,
- 48.657511,
- 123.6
- ],
- [
- -122.854329,
- 48.657491,
- 122.6
- ],
- [
- -122.854387,
- 48.657489,
- 121.6
- ],
- [
- -122.854441,
- 48.657494,
- 121.3
- ],
- [
- -122.854483,
- 48.65749,
- 120.8
- ],
- [
- -122.854521,
- 48.657469,
- 120.1
- ],
- [
- -122.854565,
- 48.657463,
- 120.5
- ],
- [
- -122.854604,
- 48.657453,
- 121.5
- ],
- [
- -122.85465,
- 48.657446,
- 122.7
- ],
- [
- -122.854692,
- 48.657445,
- 123.5
- ],
- [
- -122.854738,
- 48.657442,
- 124.3
- ],
- [
- -122.854789,
- 48.657438,
- 125.2
- ],
- [
- -122.854844,
- 48.657429,
- 126.4
- ],
- [
- -122.854892,
- 48.657419,
- 127.5
- ],
- [
- -122.854897,
- 48.657457,
- 128.4
- ],
- [
- -122.854882,
- 48.657491,
- 128.6
- ],
- [
- -122.854876,
- 48.657518,
- 129
- ],
- [
- -122.854868,
- 48.657545,
- 129.7
- ],
- [
- -122.854823,
- 48.657551,
- 129.1
- ],
- [
- -122.854782,
- 48.657556,
- 128.5
- ],
- [
- -122.854742,
- 48.657548,
- 127.5
- ],
- [
- -122.854698,
- 48.657553,
- 126
- ],
- [
- -122.854671,
- 48.657574,
- 125.6
- ],
- [
- -122.854626,
- 48.657578,
- 124.2
- ],
- [
- -122.854576,
- 48.657564,
- 122.5
- ],
- [
- -122.854541,
- 48.657584,
- 122.1
- ],
- [
- -122.854527,
- 48.657612,
- 121.9
- ],
- [
- -122.85453,
- 48.65764,
- 122.8
- ],
- [
- -122.854536,
- 48.657667,
- 123.9
- ],
- [
- -122.85453,
- 48.657695,
- 124.4
- ],
- [
- -122.854524,
- 48.657731,
- 124.8
- ],
- [
- -122.854507,
- 48.657758,
- 124.6
- ],
- [
- -122.854521,
- 48.657784,
- 124.9
- ],
- [
- -122.854567,
- 48.657808,
- 125.6
- ],
- [
- -122.854579,
- 48.657834,
- 125.7
- ],
- [
- -122.854606,
- 48.657856,
- 126.2
- ],
- [
- -122.854639,
- 48.657877,
- 126.7
- ],
- [
- -122.854635,
- 48.657909,
- 127.3
- ],
- [
- -122.854656,
- 48.657935,
- 127.6
- ],
- [
- -122.854642,
- 48.657961,
- 127.8
- ],
- [
- -122.854606,
- 48.657986,
- 129.2
- ],
- [
- -122.854564,
- 48.657977,
- 129.8
- ],
- [
- -122.854521,
- 48.657963,
- 130.7
- ],
- [
- -122.854471,
- 48.657959,
- 132.8
- ],
- [
- -122.854437,
- 48.657939,
- 133.2
- ],
- [
- -122.854391,
- 48.657924,
- 133.9
- ],
- [
- -122.854343,
- 48.657935,
- 136.6
- ],
- [
- -122.854301,
- 48.657928,
- 137.7
- ],
- [
- -122.854273,
- 48.657903,
- 137.6
- ],
- [
- -122.854247,
- 48.657882,
- 137.7
- ],
- [
- -122.854212,
- 48.657865,
- 138.2
- ],
- [
- -122.854175,
- 48.657851,
- 138.7
- ],
- [
- -122.854124,
- 48.657832,
- 139
- ],
- [
- -122.854073,
- 48.657828,
- 139.9
- ],
- [
- -122.854029,
- 48.657824,
- 140.6
- ],
- [
- -122.853978,
- 48.65783,
- 141.8
- ],
- [
- -122.853925,
- 48.65783,
- 142.6
- ],
- [
- -122.853915,
- 48.657795,
- 141.2
- ],
- [
- -122.853873,
- 48.657801,
- 141.7
- ],
- [
- -122.853813,
- 48.657794,
- 142.4
- ],
- [
- -122.853778,
- 48.657774,
- 142.3
- ],
- [
- -122.853747,
- 48.657755,
- 142.3
- ],
- [
- -122.853733,
- 48.65773,
- 142
- ],
- [
- -122.853731,
- 48.657693,
- 141.9
- ],
- [
- -122.853729,
- 48.657662,
- 142.4
- ],
- [
- -122.85373,
- 48.657632,
- 143.2
- ],
- [
- -122.853716,
- 48.6576,
- 144.6
- ],
- [
- -122.853683,
- 48.657583,
- 146.2
- ],
- [
- -122.8537,
- 48.657547,
- 146.3
- ],
- [
- -122.853714,
- 48.657518,
- 146.1
- ],
- [
- -122.853708,
- 48.657476,
- 147
- ],
- [
- -122.853695,
- 48.657446,
- 147.9
- ],
- [
- -122.853696,
- 48.657405,
- 148.1
- ],
- [
- -122.853685,
- 48.657376,
- 148.5
- ],
- [
- -122.853683,
- 48.657345,
- 148.7
- ],
- [
- -122.853689,
- 48.657317,
- 148.8
- ],
- [
- -122.853712,
- 48.657348,
- 147.8
- ],
- [
- -122.853722,
- 48.657383,
- 147.3
- ],
- [
- -122.853741,
- 48.657413,
- 146.5
- ],
- [
- -122.853718,
- 48.657437,
- 147.2
- ],
- [
- -122.853711,
- 48.657465,
- 147.1
- ],
- [
- -122.853694,
- 48.65749,
- 147.2
- ],
- [
- -122.853679,
- 48.657525,
- 147.3
- ],
- [
- -122.853662,
- 48.65755,
- 147.6
- ],
- [
- -122.853641,
- 48.657575,
- 147.7
- ],
- [
- -122.853627,
- 48.657609,
- 147.2
- ],
- [
- -122.853616,
- 48.657638,
- 147.1
- ],
- [
- -122.853609,
- 48.657665,
- 147.1
- ],
- [
- -122.853596,
- 48.657699,
- 147.3
- ],
- [
- -122.853583,
- 48.657727,
- 147.6
- ],
- [
- -122.853581,
- 48.657755,
- 147.6
- ],
- [
- -122.853564,
- 48.657788,
- 148.3
- ],
- [
- -122.853534,
- 48.657817,
- 149.5
- ],
- [
- -122.853507,
- 48.657852,
- 150.8
- ],
- [
- -122.853487,
- 48.657878,
- 151.7
- ],
- [
- -122.853509,
- 48.657905,
- 152.2
- ],
- [
- -122.853491,
- 48.657943,
- 153.5
- ],
- [
- -122.853466,
- 48.657965,
- 154.5
- ],
- [
- -122.853431,
- 48.657998,
- 156.1
- ],
- [
- -122.853394,
- 48.658018,
- 157.2
- ],
- [
- -122.853352,
- 48.658037,
- 158.2
- ],
- [
- -122.853329,
- 48.658071,
- 159.3
- ],
- [
- -122.853281,
- 48.65809,
- 160.5
- ],
- [
- -122.853233,
- 48.658104,
- 161.6
- ],
- [
- -122.853197,
- 48.65812,
- 162.3
- ],
- [
- -122.853156,
- 48.658147,
- 163.4
- ],
- [
- -122.853105,
- 48.658157,
- 164.1
- ],
- [
- -122.853048,
- 48.658166,
- 164.6
- ],
- [
- -122.852982,
- 48.658164,
- 164.7
- ],
- [
- -122.852922,
- 48.658163,
- 164.7
- ],
- [
- -122.852872,
- 48.658166,
- 164.8
- ],
- [
- -122.852826,
- 48.658174,
- 164.9
- ],
- [
- -122.85278,
- 48.658167,
- 165
- ],
- [
- -122.852731,
- 48.658151,
- 165.3
- ],
- [
- -122.852676,
- 48.65815,
- 166
- ],
- [
- -122.852634,
- 48.658148,
- 166.5
- ],
- [
- -122.852583,
- 48.658141,
- 166.8
- ],
- [
- -122.852546,
- 48.658157,
- 167.2
- ],
- [
- -122.852544,
- 48.658188,
- 167.4
- ],
- [
- -122.852546,
- 48.658219,
- 167.4
- ],
- [
- -122.852527,
- 48.658247,
- 168.2
- ],
- [
- -122.852499,
- 48.658271,
- 169.5
- ],
- [
- -122.852473,
- 48.658293,
- 170.6
- ],
- [
- -122.852454,
- 48.658323,
- 172.1
- ],
- [
- -122.852458,
- 48.658351,
- 173.8
- ],
- [
- -122.852474,
- 48.658384,
- 175.8
- ],
- [
- -122.852505,
- 48.658402,
- 177
- ],
- [
- -122.852551,
- 48.658421,
- 178.8
- ],
- [
- -122.852595,
- 48.658431,
- 179.5
- ],
- [
- -122.852638,
- 48.658444,
- 180.1
- ],
- [
- -122.852686,
- 48.658455,
- 180.4
- ],
- [
- -122.852733,
- 48.658475,
- 181.1
- ],
- [
- -122.852794,
- 48.65848,
- 180.7
- ],
- [
- -122.852855,
- 48.658502,
- 180.7
- ],
- [
- -122.852898,
- 48.658525,
- 181
- ],
- [
- -122.852946,
- 48.658553,
- 181.3
- ],
- [
- -122.852983,
- 48.658565,
- 181
- ],
- [
- -122.853026,
- 48.65858,
- 180.6
- ],
- [
- -122.853067,
- 48.658596,
- 180.6
- ],
- [
- -122.853112,
- 48.658611,
- 180.5
- ],
- [
- -122.853161,
- 48.658614,
- 180.1
- ],
- [
- -122.853204,
- 48.658636,
- 180.3
- ],
- [
- -122.853247,
- 48.658666,
- 180.9
- ],
- [
- -122.853277,
- 48.658694,
- 180.9
- ],
- [
- -122.853288,
- 48.658727,
- 181
- ],
- [
- -122.853302,
- 48.658756,
- 180.9
- ],
- [
- -122.85331,
- 48.658791,
- 181
- ],
- [
- -122.853301,
- 48.658823,
- 181.7
- ],
- [
- -122.853306,
- 48.658858,
- 182.1
- ],
- [
- -122.853309,
- 48.658889,
- 182.6
- ],
- [
- -122.85331,
- 48.658926,
- 183.3
- ],
- [
- -122.853312,
- 48.658957,
- 184.1
- ],
- [
- -122.853307,
- 48.658995,
- 185.4
- ],
- [
- -122.853309,
- 48.659026,
- 186.5
- ],
- [
- -122.853319,
- 48.659052,
- 187.7
- ],
- [
- -122.853341,
- 48.659087,
- 189.3
- ],
- [
- -122.853365,
- 48.65911,
- 190.2
- ],
- [
- -122.853411,
- 48.659135,
- 190.5
- ],
- [
- -122.853458,
- 48.659146,
- 189.8
- ],
- [
- -122.853496,
- 48.659162,
- 189.1
- ],
- [
- -122.853524,
- 48.65919,
- 188.9
- ],
- [
- -122.853574,
- 48.659196,
- 189
- ],
- [
- -122.853617,
- 48.659209,
- 190
- ],
- [
- -122.853655,
- 48.659231,
- 191.1
- ],
- [
- -122.853677,
- 48.659263,
- 191.7
- ],
- [
- -122.853713,
- 48.659287,
- 191.6
- ],
- [
- -122.85375,
- 48.65931,
- 191
- ],
- [
- -122.853774,
- 48.65934,
- 190.9
- ],
- [
- -122.853735,
- 48.659356,
- 191.8
- ],
- [
- -122.853689,
- 48.659374,
- 193.1
- ],
- [
- -122.85365,
- 48.659358,
- 193.5
- ],
- [
- -122.853619,
- 48.659325,
- 193
- ],
- [
- -122.853567,
- 48.659346,
- 193.3
- ],
- [
- -122.853609,
- 48.65936,
- 193.7
- ],
- [
- -122.853656,
- 48.659385,
- 193.8
- ],
- [
- -122.853705,
- 48.659405,
- 193.1
- ],
- [
- -122.853759,
- 48.659417,
- 192.5
- ],
- [
- -122.853805,
- 48.659433,
- 192.7
- ],
- [
- -122.853844,
- 48.65944,
- 193
- ],
- [
- -122.853892,
- 48.659454,
- 193.3
- ],
- [
- -122.853945,
- 48.659462,
- 193.4
- ],
- [
- -122.853995,
- 48.659472,
- 193.3
- ],
- [
- -122.854035,
- 48.659455,
- 192.7
- ],
- [
- -122.85408,
- 48.659455,
- 192.3
- ],
- [
- -122.854126,
- 48.659472,
- 192.8
- ],
- [
- -122.854181,
- 48.659484,
- 193.6
- ],
- [
- -122.854221,
- 48.659498,
- 194.7
- ],
- [
- -122.854268,
- 48.659519,
- 195.8
- ],
- [
- -122.854317,
- 48.65954,
- 196.7
- ],
- [
- -122.85435,
- 48.659564,
- 197.9
- ],
- [
- -122.854375,
- 48.659596,
- 199.8
- ],
- [
- -122.854391,
- 48.659622,
- 201.5
- ],
- [
- -122.854425,
- 48.659658,
- 203.7
- ],
- [
- -122.854461,
- 48.659675,
- 204.2
- ],
- [
- -122.854503,
- 48.659685,
- 203
- ],
- [
- -122.854567,
- 48.659691,
- 200.2
- ],
- [
- -122.854606,
- 48.659682,
- 198.2
- ],
- [
- -122.854617,
- 48.659646,
- 196.2
- ],
- [
- -122.854593,
- 48.659614,
- 195.8
- ],
- [
- -122.854579,
- 48.659586,
- 195.7
- ],
- [
- -122.854603,
- 48.659551,
- 193.1
- ],
- [
- -122.854656,
- 48.659531,
- 190.4
- ],
- [
- -122.854692,
- 48.659515,
- 189.4
- ],
- [
- -122.854741,
- 48.659517,
- 190.7
- ],
- [
- -122.854785,
- 48.659525,
- 193
- ],
- [
- -122.854833,
- 48.659515,
- 194.6
- ],
- [
- -122.854864,
- 48.659497,
- 194.4
- ],
- [
- -122.854911,
- 48.6595,
- 195.4
- ],
- [
- -122.854954,
- 48.659506,
- 196.4
- ],
- [
- -122.855003,
- 48.659516,
- 197.6
- ],
- [
- -122.85505,
- 48.659526,
- 198.8
- ],
- [
- -122.855105,
- 48.659533,
- 200
- ],
- [
- -122.855155,
- 48.659542,
- 201.2
- ],
- [
- -122.855208,
- 48.659551,
- 202.2
- ],
- [
- -122.855263,
- 48.659551,
- 202.7
- ],
- [
- -122.855321,
- 48.659549,
- 202.6
- ],
- [
- -122.855367,
- 48.659548,
- 202.4
- ],
- [
- -122.855431,
- 48.659537,
- 201.9
- ],
- [
- -122.855454,
- 48.659537,
- 202
- ],
- [
- -122.855496,
- 48.659541,
- 202.3
- ],
- [
- -122.855548,
- 48.659542,
- 202.8
- ],
- [
- -122.855594,
- 48.659538,
- 203.1
- ],
- [
- -122.855644,
- 48.659553,
- 204.8
- ],
- [
- -122.855688,
- 48.659565,
- 205.6
- ],
- [
- -122.855732,
- 48.659577,
- 205.8
- ],
- [
- -122.85577,
- 48.659596,
- 206.2
- ],
- [
- -122.855804,
- 48.659617,
- 206.8
- ],
- [
- -122.855836,
- 48.659637,
- 207.4
- ],
- [
- -122.855884,
- 48.65966,
- 208.1
- ],
- [
- -122.855923,
- 48.659675,
- 208.2
- ],
- [
- -122.855963,
- 48.659688,
- 208.3
- ],
- [
- -122.856003,
- 48.659698,
- 208.4
- ],
- [
- -122.856054,
- 48.659707,
- 208.3
- ],
- [
- -122.856095,
- 48.659715,
- 208.3
- ],
- [
- -122.856136,
- 48.659733,
- 208.6
- ],
- [
- -122.856174,
- 48.659743,
- 208.7
- ],
- [
- -122.856224,
- 48.659746,
- 208.7
- ],
- [
- -122.85626,
- 48.659765,
- 209.5
- ],
- [
- -122.856293,
- 48.659789,
- 210.1
- ],
- [
- -122.856317,
- 48.659812,
- 210.6
- ],
- [
- -122.856342,
- 48.659848,
- 211.2
- ],
- [
- -122.856358,
- 48.659874,
- 211.3
- ],
- [
- -122.856375,
- 48.659909,
- 211.5
- ],
- [
- -122.856395,
- 48.659945,
- 211.5
- ],
- [
- -122.856411,
- 48.659975,
- 211.4
- ],
- [
- -122.85642,
- 48.660008,
- 211.3
- ],
- [
- -122.856421,
- 48.660039,
- 211
- ],
- [
- -122.856416,
- 48.660071,
- 210.5
- ],
- [
- -122.856408,
- 48.660101,
- 210.1
- ],
- [
- -122.856396,
- 48.660129,
- 210.1
- ],
- [
- -122.856409,
- 48.660162,
- 211
- ],
- [
- -122.85643,
- 48.660188,
- 212.1
- ],
- [
- -122.856468,
- 48.660212,
- 213.2
- ],
- [
- -122.856514,
- 48.660233,
- 214.1
- ],
- [
- -122.856553,
- 48.660245,
- 214.4
- ],
- [
- -122.856602,
- 48.660248,
- 214.2
- ],
- [
- -122.856637,
- 48.660264,
- 214.7
- ],
- [
- -122.856678,
- 48.660272,
- 214.6
- ],
- [
- -122.856677,
- 48.660301,
- 215.9
- ],
- [
- -122.856637,
- 48.660286,
- 215.6
- ],
- [
- -122.856633,
- 48.660336,
- 218.2
- ],
- [
- -122.856674,
- 48.660316,
- 216.6
- ],
- [
- -122.856632,
- 48.660275,
- 215.2
- ],
- [
- -122.85667,
- 48.660263,
- 214.2
- ],
- [
- -122.856691,
- 48.660236,
- 212.8
- ],
- [
- -122.856732,
- 48.660236,
- 212.7
- ],
- [
- -122.85679,
- 48.660225,
- 212.3
- ],
- [
- -122.856816,
- 48.660263,
- 213.7
- ],
- [
- -122.856844,
- 48.660286,
- 214.8
- ],
- [
- -122.856916,
- 48.66029,
- 214.6
- ],
- [
- -122.856916,
- 48.660329,
- 216.3
- ],
- [
- -122.856903,
- 48.660355,
- 217.4
- ],
- [
- -122.856861,
- 48.660355,
- 217.6
- ],
- [
- -122.856821,
- 48.660361,
- 217.7
- ],
- [
- -122.856762,
- 48.660366,
- 217.9
- ],
- [
- -122.85672,
- 48.660371,
- 218.4
- ],
- [
- -122.856749,
- 48.660395,
- 219.2
- ],
- [
- -122.856782,
- 48.660414,
- 220
- ],
- [
- -122.856819,
- 48.660398,
- 219.5
- ],
- [
- -122.856868,
- 48.660383,
- 218.8
- ],
- [
- -122.856921,
- 48.660378,
- 218.4
- ],
- [
- -122.85688,
- 48.660381,
- 218.6
- ],
- [
- -122.856872,
- 48.660413,
- 220
- ],
- [
- -122.856874,
- 48.660442,
- 221.3
- ],
- [
- -122.856897,
- 48.660464,
- 222.3
- ],
- [
- -122.856933,
- 48.660479,
- 223.1
- ],
- [
- -122.856935,
- 48.660506,
- 224.7
- ],
- [
- -122.856899,
- 48.660487,
- 223.5
- ],
- [
- -122.856849,
- 48.660494,
- 223.8
- ],
- [
- -122.856889,
- 48.660511,
- 224.7
- ],
- [
- -122.856929,
- 48.660525,
- 225.7
- ],
- [
- -122.856929,
- 48.660553,
- 227.2
- ],
- [
- -122.856971,
- 48.660558,
- 227.4
- ],
- [
- -122.857001,
- 48.660581,
- 228.8
- ],
- [
- -122.856981,
- 48.660605,
- 230.2
- ],
- [
- -122.856905,
- 48.660625,
- 230.7
- ],
- [
- -122.856843,
- 48.660619,
- 229.6
- ],
- [
- -122.856775,
- 48.660621,
- 229.4
- ],
- [
- -122.856732,
- 48.660647,
- 230.8
- ],
- [
- -122.8567,
- 48.660671,
- 232.1
- ],
- [
- -122.856668,
- 48.6607,
- 233.6
- ],
- [
- -122.856654,
- 48.660732,
- 235.1
- ],
- [
- -122.856617,
- 48.660746,
- 235.8
- ],
- [
- -122.85661,
- 48.660779,
- 237.2
- ],
- [
- -122.856628,
- 48.660806,
- 238.2
- ],
- [
- -122.856595,
- 48.660825,
- 238.7
- ],
- [
- -122.856547,
- 48.660834,
- 238.6
- ],
- [
- -122.856595,
- 48.660847,
- 239.5
- ],
- [
- -122.856605,
- 48.660873,
- 240.4
- ],
- [
- -122.856607,
- 48.660903,
- 241.1
- ],
- [
- -122.856638,
- 48.660928,
- 242.2
- ],
- [
- -122.856679,
- 48.660948,
- 243.3
- ],
- [
- -122.85671,
- 48.660971,
- 244.5
- ],
- [
- -122.856747,
- 48.660985,
- 245.2
- ],
- [
- -122.856794,
- 48.660996,
- 245.7
- ],
- [
- -122.856836,
- 48.660994,
- 245.7
- ],
- [
- -122.856871,
- 48.661023,
- 247.2
- ],
- [
- -122.856881,
- 48.66105,
- 248.7
- ],
- [
- -122.856876,
- 48.661085,
- 250.5
- ],
- [
- -122.856885,
- 48.661113,
- 252
- ],
- [
- -122.856903,
- 48.661148,
- 253.7
- ],
- [
- -122.856855,
- 48.661172,
- 254.7
- ],
- [
- -122.856803,
- 48.661178,
- 254.8
- ],
- [
- -122.856765,
- 48.661189,
- 255
- ],
- [
- -122.856746,
- 48.661221,
- 256.3
- ],
- [
- -122.856704,
- 48.661243,
- 257.3
- ],
- [
- -122.856662,
- 48.661223,
- 256
- ],
- [
- -122.856659,
- 48.66126,
- 257.7
- ],
- [
- -122.856658,
- 48.661291,
- 259
- ],
- [
- -122.85663,
- 48.661312,
- 259.8
- ],
- [
- -122.856593,
- 48.661325,
- 260.2
- ],
- [
- -122.856561,
- 48.661346,
- 260.7
- ],
- [
- -122.856541,
- 48.661378,
- 261.5
- ],
- [
- -122.856526,
- 48.661416,
- 263
- ],
- [
- -122.85651,
- 48.661444,
- 263.9
- ],
- [
- -122.856474,
- 48.661468,
- 264.6
- ],
- [
- -122.856428,
- 48.661488,
- 265
- ],
- [
- -122.856396,
- 48.661509,
- 265.6
- ],
- [
- -122.856388,
- 48.661537,
- 266.5
- ],
- [
- -122.856404,
- 48.661571,
- 267.6
- ],
- [
- -122.856384,
- 48.661611,
- 268.8
- ],
- [
- -122.856386,
- 48.661648,
- 270.1
- ],
- [
- -122.856346,
- 48.66167,
- 270.7
- ],
- [
- -122.85633,
- 48.6617,
- 271.6
- ],
- [
- -122.856343,
- 48.66173,
- 272.7
- ],
- [
- -122.856375,
- 48.661768,
- 274.3
- ],
- [
- -122.856332,
- 48.661741,
- 273.2
- ],
- [
- -122.856279,
- 48.661651,
- 269.6
- ],
- [
- -122.856255,
- 48.66162,
- 268.5
- ],
- [
- -122.856108,
- 48.661491,
- 262.8
- ],
- [
- -122.856162,
- 48.661517,
- 264.1
- ],
- [
- -122.856192,
- 48.661546,
- 265.6
- ],
- [
- -122.856245,
- 48.661593,
- 267.5
- ],
- [
- -122.85628,
- 48.661636,
- 269.1
- ],
- [
- -122.856306,
- 48.661666,
- 270.2
- ],
- [
- -122.856353,
- 48.661726,
- 272.6
- ],
- [
- -122.856302,
- 48.661688,
- 271
- ],
- [
- -122.856354,
- 48.661699,
- 271.7
- ],
- [
- -122.856405,
- 48.661709,
- 272.2
- ],
- [
- -122.856437,
- 48.661746,
- 273.8
- ],
- [
- -122.856412,
- 48.661782,
- 274.9
- ],
- [
- -122.856369,
- 48.661742,
- 273.3
- ],
- [
- -122.856346,
- 48.661714,
- 272.1
- ],
- [
- -122.856325,
- 48.661747,
- 273.4
- ],
- [
- -122.856339,
- 48.661779,
- 274.6
- ],
- [
- -122.856356,
- 48.661809,
- 275.5
- ],
- [
- -122.856347,
- 48.661838,
- 276.4
- ],
- [
- -122.856334,
- 48.661872,
- 277.3
- ],
- [
- -122.856328,
- 48.661899,
- 278.2
- ],
- [
- -122.856348,
- 48.661925,
- 279.3
- ],
- [
- -122.856359,
- 48.661953,
- 280.5
- ],
- [
- -122.856333,
- 48.661976,
- 280.9
- ],
- [
- -122.85635,
- 48.662004,
- 282
- ],
- [
- -122.856314,
- 48.662027,
- 282.4
- ],
- [
- -122.856306,
- 48.662058,
- 283.3
- ],
- [
- -122.856331,
- 48.66208,
- 283.9
- ],
- [
- -122.856333,
- 48.662108,
- 284.6
- ],
- [
- -122.856337,
- 48.662143,
- 285.3
- ],
- [
- -122.856354,
- 48.662171,
- 286
- ],
- [
- -122.856387,
- 48.662193,
- 286.4
- ],
- [
- -122.85642,
- 48.662213,
- 287
- ],
- [
- -122.856438,
- 48.662242,
- 287.7
- ],
- [
- -122.856463,
- 48.662278,
- 288.7
- ],
- [
- -122.856498,
- 48.662307,
- 289.4
- ],
- [
- -122.856512,
- 48.662333,
- 289.8
- ],
- [
- -122.856479,
- 48.66236,
- 290.1
- ],
- [
- -122.856444,
- 48.662383,
- 290.7
- ],
- [
- -122.856442,
- 48.662411,
- 291.2
- ],
- [
- -122.856463,
- 48.662435,
- 291.5
- ],
- [
- -122.856428,
- 48.66242,
- 291.4
- ],
- [
- -122.856397,
- 48.662396,
- 291.4
- ],
- [
- -122.856433,
- 48.66241,
- 291.3
- ],
- [
- -122.856462,
- 48.662439,
- 291.6
- ],
- [
- -122.856487,
- 48.662465,
- 292.1
- ],
- [
- -122.856506,
- 48.662495,
- 292.7
- ],
- [
- -122.856529,
- 48.662522,
- 293.3
- ],
- [
- -122.856533,
- 48.662552,
- 293.9
- ],
- [
- -122.856557,
- 48.662581,
- 294.6
- ],
- [
- -122.856585,
- 48.662609,
- 295.4
- ],
- [
- -122.856583,
- 48.662641,
- 295.9
- ],
- [
- -122.856583,
- 48.662675,
- 296.5
- ],
- [
- -122.85661,
- 48.6627,
- 297.3
- ],
- [
- -122.856643,
- 48.662719,
- 297.9
- ],
- [
- -122.856653,
- 48.662749,
- 298.3
- ],
- [
- -122.856631,
- 48.662783,
- 298.3
- ],
- [
- -122.856615,
- 48.662813,
- 298.4
- ],
- [
- -122.85659,
- 48.662836,
- 298.8
- ],
- [
- -122.856594,
- 48.662864,
- 299.4
- ],
- [
- -122.856611,
- 48.662895,
- 300
- ],
- [
- -122.856652,
- 48.662915,
- 300.6
- ],
- [
- -122.856675,
- 48.662939,
- 300.9
- ],
- [
- -122.856688,
- 48.662984,
- 301.4
- ],
- [
- -122.856701,
- 48.663023,
- 302.1
- ],
- [
- -122.856713,
- 48.663049,
- 302.7
- ],
- [
- -122.856718,
- 48.663079,
- 303.3
- ],
- [
- -122.856741,
- 48.663106,
- 303.9
- ],
- [
- -122.856792,
- 48.663122,
- 304.4
- ],
- [
- -122.856815,
- 48.663148,
- 304.9
- ],
- [
- -122.856832,
- 48.663173,
- 305.6
- ],
- [
- -122.856848,
- 48.663209,
- 306.1
- ],
- [
- -122.856862,
- 48.663241,
- 306.2
- ],
- [
- -122.856893,
- 48.663265,
- 306.6
- ],
- [
- -122.856925,
- 48.663288,
- 307
- ],
- [
- -122.856945,
- 48.66332,
- 307.5
- ],
- [
- -122.856973,
- 48.66334,
- 307.9
- ],
- [
- -122.856999,
- 48.663374,
- 308.2
- ],
- [
- -122.857012,
- 48.663404,
- 307.8
- ],
- [
- -122.857014,
- 48.663433,
- 307.2
- ],
- [
- -122.857009,
- 48.663462,
- 306.6
- ],
- [
- -122.857002,
- 48.663497,
- 306.2
- ],
- [
- -122.856983,
- 48.663529,
- 306
- ],
- [
- -122.856951,
- 48.663557,
- 305.6
- ],
- [
- -122.856953,
- 48.663586,
- 305.5
- ],
- [
- -122.85698,
- 48.663607,
- 305.7
- ],
- [
- -122.857024,
- 48.663635,
- 306.2
- ],
- [
- -122.857044,
- 48.663668,
- 306.2
- ],
- [
- -122.857065,
- 48.663699,
- 306.1
- ],
- [
- -122.857076,
- 48.663729,
- 305.8
- ],
- [
- -122.857081,
- 48.663758,
- 305.7
- ],
- [
- -122.857079,
- 48.66379,
- 305.6
- ],
- [
- -122.857077,
- 48.663827,
- 305.6
- ],
- [
- -122.857071,
- 48.663854,
- 305.6
- ],
- [
- -122.85706,
- 48.663885,
- 305.3
- ],
- [
- -122.857081,
- 48.663916,
- 305.3
- ],
- [
- -122.857126,
- 48.663938,
- 306.1
- ],
- [
- -122.857135,
- 48.663972,
- 306.7
- ],
- [
- -122.857155,
- 48.664011,
- 307.4
- ],
- [
- -122.857151,
- 48.664046,
- 307.6
- ],
- [
- -122.8571,
- 48.664056,
- 306.6
- ],
- [
- -122.85706,
- 48.664046,
- 305.7
- ],
- [
- -122.857084,
- 48.664077,
- 306.8
- ],
- [
- -122.857107,
- 48.664107,
- 307.4
- ],
- [
- -122.857121,
- 48.664134,
- 308
- ],
- [
- -122.857103,
- 48.664159,
- 308.1
- ],
- [
- -122.857067,
- 48.664185,
- 306.9
- ],
- [
- -122.857073,
- 48.664214,
- 307.2
- ],
- [
- -122.857011,
- 48.664236,
- 304.5
- ],
- [
- -122.856953,
- 48.66426,
- 303.4
- ],
- [
- -122.856929,
- 48.664217,
- 302.4
- ],
- [
- -122.856933,
- 48.664169,
- 302.9
- ],
- [
- -122.856948,
- 48.664131,
- 303.8
- ],
- [
- -122.857051,
- 48.66409,
- 306.1
- ],
- [
- -122.857144,
- 48.664092,
- 307.5
- ],
- [
- -122.857197,
- 48.664069,
- 309.8
- ],
- [
- -122.85729,
- 48.664053,
- 313.4
- ],
- [
- -122.857366,
- 48.664048,
- 316.8
- ],
- [
- -122.857342,
- 48.664077,
- 315.8
- ],
- [
- -122.857294,
- 48.664094,
- 313.7
- ],
- [
- -122.857182,
- 48.664129,
- 309.3
- ],
- [
- -122.857108,
- 48.66414,
- 307.9
- ],
- [
- -122.857061,
- 48.664181,
- 306.6
- ],
- [
- -122.857044,
- 48.664227,
- 305.7
- ],
- [
- -122.857089,
- 48.664243,
- 307.7
- ],
- [
- -122.857139,
- 48.664252,
- 309.7
- ],
- [
- -122.857114,
- 48.664273,
- 308.3
- ],
- [
- -122.857131,
- 48.664302,
- 308.5
- ],
- [
- -122.85711,
- 48.664328,
- 306.9
- ],
- [
- -122.857091,
- 48.664354,
- 306.6
- ],
- [
- -122.85709,
- 48.664394,
- 307.9
- ],
- [
- -122.857102,
- 48.664421,
- 308.9
- ],
- [
- -122.857116,
- 48.664453,
- 309.9
- ],
- [
- -122.857156,
- 48.664469,
- 310.4
- ],
- [
- -122.857194,
- 48.664498,
- 311.4
- ],
- [
- -122.857195,
- 48.664531,
- 312.3
- ],
- [
- -122.857179,
- 48.664557,
- 313.2
- ],
- [
- -122.857158,
- 48.664593,
- 314.3
- ],
- [
- -122.857148,
- 48.664653,
- 314.2
- ],
- [
- -122.857142,
- 48.664668,
- 313.9
- ],
- [
- -122.857108,
- 48.664698,
- 313.4
- ],
- [
- -122.857099,
- 48.664726,
- 313.1
- ],
- [
- -122.857091,
- 48.66476,
- 313.3
- ],
- [
- -122.857088,
- 48.664791,
- 314.1
- ],
- [
- -122.857109,
- 48.664816,
- 315.2
- ],
- [
- -122.857128,
- 48.664848,
- 316.9
- ],
- [
- -122.85714,
- 48.664874,
- 318.6
- ],
- [
- -122.857102,
- 48.66489,
- 319.7
- ],
- [
- -122.857112,
- 48.66492,
- 321.4
- ],
- [
- -122.857103,
- 48.664948,
- 322.7
- ],
- [
- -122.857134,
- 48.664972,
- 324.3
- ],
- [
- -122.857153,
- 48.664998,
- 325.5
- ],
- [
- -122.857153,
- 48.665025,
- 326.7
- ],
- [
- -122.857131,
- 48.665062,
- 327.6
- ],
- [
- -122.857129,
- 48.665091,
- 328.4
- ],
- [
- -122.857127,
- 48.665124,
- 329.1
- ],
- [
- -122.857107,
- 48.665161,
- 329.5
- ],
- [
- -122.857133,
- 48.665181,
- 330.5
- ],
- [
- -122.857144,
- 48.665208,
- 331.4
- ],
- [
- -122.857155,
- 48.66524,
- 332.5
- ],
- [
- -122.85719,
- 48.665217,
- 333
- ],
- [
- -122.85718,
- 48.665245,
- 333.3
- ],
- [
- -122.857158,
- 48.665279,
- 333.4
- ],
- [
- -122.85716,
- 48.665311,
- 333.9
- ],
- [
- -122.857167,
- 48.665342,
- 334.4
- ],
- [
- -122.857161,
- 48.665371,
- 334.7
- ],
- [
- -122.857152,
- 48.665409,
- 335.3
- ],
- [
- -122.857151,
- 48.665439,
- 335.5
- ],
- [
- -122.857149,
- 48.665472,
- 335.8
- ],
- [
- -122.85716,
- 48.665506,
- 336
- ],
- [
- -122.85716,
- 48.665536,
- 336.1
- ],
- [
- -122.857154,
- 48.665568,
- 335.8
- ],
- [
- -122.857144,
- 48.665597,
- 335.4
- ],
- [
- -122.857162,
- 48.665624,
- 336.1
- ],
- [
- -122.857165,
- 48.665654,
- 336.1
- ],
- [
- -122.857167,
- 48.665691,
- 336
- ],
- [
- -122.857189,
- 48.66572,
- 336.5
- ],
- [
- -122.857225,
- 48.665737,
- 337.6
- ],
- [
- -122.857258,
- 48.665767,
- 338.3
- ],
- [
- -122.857289,
- 48.665789,
- 339
- ],
- [
- -122.857322,
- 48.665818,
- 339.6
- ],
- [
- -122.85735,
- 48.665845,
- 339.8
- ],
- [
- -122.857388,
- 48.665869,
- 340.2
- ],
- [
- -122.857434,
- 48.665891,
- 340.8
- ],
- [
- -122.857473,
- 48.66591,
- 341.6
- ],
- [
- -122.857511,
- 48.665929,
- 342.1
- ],
- [
- -122.857546,
- 48.66596,
- 342.7
- ],
- [
- -122.857581,
- 48.665984,
- 343.7
- ],
- [
- -122.857623,
- 48.665975,
- 344.9
- ],
- [
- -122.857665,
- 48.665982,
- 345.6
- ],
- [
- -122.857623,
- 48.665986,
- 344.8
- ],
- [
- -122.857577,
- 48.665994,
- 343.5
- ],
- [
- -122.857531,
- 48.666008,
- 342.6
- ],
- [
- -122.857602,
- 48.665994,
- 344.2
- ],
- [
- -122.85761,
- 48.665967,
- 344.6
- ],
- [
- -122.857623,
- 48.665936,
- 344.3
- ],
- [
- -122.857617,
- 48.665907,
- 343.6
- ],
- [
- -122.857604,
- 48.665871,
- 343.2
- ],
- [
- -122.857607,
- 48.66582,
- 343.9
- ],
- [
- -122.857598,
- 48.665892,
- 343.1
- ],
- [
- -122.857648,
- 48.665912,
- 344.3
- ],
- [
- -122.857698,
- 48.66593,
- 345.5
- ],
- [
- -122.857729,
- 48.665949,
- 346.4
- ],
- [
- -122.857758,
- 48.665975,
- 346.8
- ],
- [
- -122.857789,
- 48.665994,
- 346.5
- ],
- [
- -122.85784,
- 48.666005,
- 346.2
- ],
- [
- -122.857885,
- 48.666013,
- 345.9
- ],
- [
- -122.857931,
- 48.666031,
- 345.5
- ],
- [
- -122.857975,
- 48.666024,
- 345.4
- ],
- [
- -122.858023,
- 48.666032,
- 345
- ],
- [
- -122.858054,
- 48.666051,
- 344.3
- ],
- [
- -122.858077,
- 48.666079,
- 344.3
- ],
- [
- -122.858102,
- 48.666108,
- 344.8
- ],
- [
- -122.858129,
- 48.666142,
- 345.5
- ],
- [
- -122.858158,
- 48.666171,
- 346.4
- ],
- [
- -122.858179,
- 48.666195,
- 347.4
- ],
- [
- -122.858194,
- 48.666225,
- 348.7
- ],
- [
- -122.858209,
- 48.66626,
- 350.1
- ],
- [
- -122.858211,
- 48.666287,
- 351.2
- ],
- [
- -122.858205,
- 48.666319,
- 352.4
- ],
- [
- -122.858217,
- 48.666359,
- 353.5
- ],
- [
- -122.858228,
- 48.666393,
- 354.3
- ],
- [
- -122.858224,
- 48.666424,
- 355.3
- ],
- [
- -122.858209,
- 48.666449,
- 356.1
- ],
- [
- -122.858217,
- 48.666484,
- 357.1
- ],
- [
- -122.85823,
- 48.666509,
- 357.8
- ],
- [
- -122.858239,
- 48.666545,
- 358.8
- ],
- [
- -122.858232,
- 48.666574,
- 359.1
- ],
- [
- -122.858236,
- 48.666605,
- 359.5
- ],
- [
- -122.858251,
- 48.666634,
- 360
- ],
- [
- -122.858273,
- 48.666661,
- 360.8
- ],
- [
- -122.858285,
- 48.666692,
- 361.5
- ],
- [
- -122.858288,
- 48.666723,
- 361.9
- ],
- [
- -122.858291,
- 48.666752,
- 362.2
- ],
- [
- -122.858295,
- 48.666788,
- 362.7
- ],
- [
- -122.858304,
- 48.666817,
- 363.1
- ],
- [
- -122.858289,
- 48.66685,
- 362.7
- ],
- [
- -122.858271,
- 48.666884,
- 362.3
- ],
- [
- -122.858263,
- 48.66692,
- 362.3
- ],
- [
- -122.858258,
- 48.666949,
- 362.2
- ],
- [
- -122.85825,
- 48.666975,
- 362.1
- ],
- [
- -122.858245,
- 48.667006,
- 362.2
- ],
- [
- -122.858243,
- 48.667038,
- 362.3
- ],
- [
- -122.85822,
- 48.667075,
- 362.3
- ],
- [
- -122.858192,
- 48.667099,
- 362.4
- ],
- [
- -122.858133,
- 48.667122,
- 362.6
- ],
- [
- -122.858091,
- 48.667147,
- 363.2
- ],
- [
- -122.858051,
- 48.667162,
- 363.6
- ],
- [
- -122.857996,
- 48.667186,
- 364.5
- ],
- [
- -122.857961,
- 48.667211,
- 365.2
- ],
- [
- -122.857927,
- 48.667238,
- 366.2
- ],
- [
- -122.857876,
- 48.667244,
- 366.9
- ],
- [
- -122.857843,
- 48.667261,
- 368
- ],
- [
- -122.857803,
- 48.667282,
- 369.5
- ],
- [
- -122.857762,
- 48.667301,
- 370.6
- ],
- [
- -122.857705,
- 48.667304,
- 370.3
- ],
- [
- -122.857648,
- 48.667306,
- 369.3
- ],
- [
- -122.857603,
- 48.667306,
- 368.2
- ],
- [
- -122.857555,
- 48.667304,
- 367
- ],
- [
- -122.857512,
- 48.667295,
- 365.9
- ],
- [
- -122.857471,
- 48.667266,
- 364.9
- ],
- [
- -122.857433,
- 48.667255,
- 364.4
- ],
- [
- -122.857376,
- 48.667259,
- 363.9
- ],
- [
- -122.857316,
- 48.667269,
- 363.6
- ],
- [
- -122.857267,
- 48.667277,
- 363.5
- ],
- [
- -122.857213,
- 48.667279,
- 363.3
- ],
- [
- -122.857171,
- 48.667288,
- 363.4
- ],
- [
- -122.857138,
- 48.667305,
- 363.5
- ],
- [
- -122.857126,
- 48.667336,
- 364.1
- ],
- [
- -122.857145,
- 48.667367,
- 365.1
- ],
- [
- -122.857153,
- 48.667396,
- 366.1
- ],
- [
- -122.857154,
- 48.667425,
- 366.9
- ],
- [
- -122.857137,
- 48.667452,
- 367
- ],
- [
- -122.857094,
- 48.667469,
- 366.1
- ],
- [
- -122.857138,
- 48.667509,
- 367.7
- ],
- [
- -122.857192,
- 48.66754,
- 369.3
- ],
- [
- -122.857165,
- 48.667564,
- 368.7
- ],
- [
- -122.857133,
- 48.667589,
- 368
- ],
- [
- -122.857101,
- 48.667609,
- 367.9
- ],
- [
- -122.857092,
- 48.667637,
- 368.8
- ],
- [
- -122.857071,
- 48.667664,
- 370.2
- ],
- [
- -122.85707,
- 48.667692,
- 371.1
- ],
- [
- -122.85707,
- 48.667722,
- 372.4
- ],
- [
- -122.857062,
- 48.667754,
- 373.9
- ],
- [
- -122.856994,
- 48.667758,
- 375.8
- ],
- [
- -122.85698,
- 48.667793,
- 377.7
- ],
- [
- -122.856984,
- 48.667817,
- 378.7
- ],
- [
- -122.85702,
- 48.667839,
- 378.6
- ],
- [
- -122.857036,
- 48.667867,
- 379.6
- ],
- [
- -122.857028,
- 48.6679,
- 381.5
- ],
- [
- -122.857046,
- 48.667924,
- 382.1
- ],
- [
- -122.857078,
- 48.667945,
- 382.3
- ],
- [
- -122.857124,
- 48.667952,
- 381.6
- ],
- [
- -122.857134,
- 48.667981,
- 382.7
- ],
- [
- -122.857143,
- 48.668011,
- 383.7
- ],
- [
- -122.857109,
- 48.668033,
- 385.5
- ],
- [
- -122.8571,
- 48.668066,
- 387
- ],
- [
- -122.857083,
- 48.668105,
- 389.5
- ],
- [
- -122.857101,
- 48.668136,
- 390.3
- ],
- [
- -122.857117,
- 48.668162,
- 391.1
- ],
- [
- -122.857123,
- 48.668194,
- 392.6
- ],
- [
- -122.857085,
- 48.668223,
- 394.7
- ],
- [
- -122.857071,
- 48.668249,
- 395.5
- ],
- [
- -122.857069,
- 48.66828,
- 396.3
- ],
- [
- -122.857075,
- 48.668311,
- 397.1
- ],
- [
- -122.857061,
- 48.668337,
- 396.9
- ],
- [
- -122.857048,
- 48.668368,
- 396.8
- ],
- [
- -122.857063,
- 48.668402,
- 397.4
- ],
- [
- -122.857085,
- 48.668437,
- 398
- ],
- [
- -122.857088,
- 48.668474,
- 398
- ],
- [
- -122.857072,
- 48.6685,
- 398.3
- ],
- [
- -122.857073,
- 48.668528,
- 398.7
- ],
- [
- -122.85709,
- 48.668561,
- 399.4
- ],
- [
- -122.857104,
- 48.668588,
- 400
- ],
- [
- -122.857113,
- 48.668619,
- 400.5
- ],
- [
- -122.857122,
- 48.668646,
- 400.8
- ],
- [
- -122.857133,
- 48.668676,
- 401.1
- ],
- [
- -122.857136,
- 48.668706,
- 401.5
- ],
- [
- -122.857151,
- 48.668731,
- 401.7
- ],
- [
- -122.857133,
- 48.668764,
- 402.3
- ],
- [
- -122.857142,
- 48.668798,
- 402.4
- ],
- [
- -122.857138,
- 48.668829,
- 402.2
- ],
- [
- -122.857153,
- 48.668869,
- 401.4
- ],
- [
- -122.85715,
- 48.668902,
- 400.5
- ],
- [
- -122.857148,
- 48.668942,
- 399.8
- ],
- [
- -122.857128,
- 48.668976,
- 399.7
- ],
- [
- -122.857109,
- 48.669008,
- 399.7
- ],
- [
- -122.857096,
- 48.669036,
- 399.6
- ],
- [
- -122.85712,
- 48.669062,
- 399.1
- ],
- [
- -122.857137,
- 48.669089,
- 399.2
- ],
- [
- -122.857144,
- 48.669122,
- 399.7
- ],
- [
- -122.857132,
- 48.669152,
- 400.3
- ],
- [
- -122.857127,
- 48.669193,
- 401.2
- ],
- [
- -122.857128,
- 48.669223,
- 402.1
- ],
- [
- -122.857126,
- 48.669252,
- 403
- ],
- [
- -122.857147,
- 48.669276,
- 403.7
- ],
- [
- -122.857141,
- 48.669305,
- 403.9
- ],
- [
- -122.857136,
- 48.669337,
- 404
- ],
- [
- -122.857147,
- 48.669363,
- 404.7
- ],
- [
- -122.857166,
- 48.66939,
- 405.7
- ],
- [
- -122.857153,
- 48.669417,
- 406.3
- ],
- [
- -122.857153,
- 48.669445,
- 407
- ],
- [
- -122.857178,
- 48.669474,
- 408.2
- ],
- [
- -122.857187,
- 48.669505,
- 408.7
- ],
- [
- -122.857198,
- 48.669531,
- 409
- ],
- [
- -122.857224,
- 48.669559,
- 409.6
- ],
- [
- -122.8572,
- 48.669589,
- 409.4
- ],
- [
- -122.857197,
- 48.66963,
- 410.1
- ],
- [
- -122.857188,
- 48.669662,
- 410.8
- ],
- [
- -122.85717,
- 48.669692,
- 411.5
- ],
- [
- -122.857187,
- 48.669726,
- 412.8
- ],
- [
- -122.857168,
- 48.669754,
- 413.9
- ],
- [
- -122.85716,
- 48.669798,
- 415.2
- ],
- [
- -122.857136,
- 48.669831,
- 416.7
- ],
- [
- -122.85708,
- 48.669879,
- 418.2
- ],
- [
- -122.857069,
- 48.669911,
- 419.4
- ],
- [
- -122.857044,
- 48.669942,
- 420.6
- ],
- [
- -122.857082,
- 48.66992,
- 419.9
- ],
- [
- -122.857112,
- 48.669901,
- 419
- ],
- [
- -122.857159,
- 48.669905,
- 419.4
- ],
- [
- -122.857209,
- 48.669909,
- 419.8
- ],
- [
- -122.857249,
- 48.669926,
- 420.3
- ],
- [
- -122.85728,
- 48.669949,
- 420.9
- ],
- [
- -122.857327,
- 48.669975,
- 421.4
- ],
- [
- -122.857381,
- 48.670008,
- 422.1
- ],
- [
- -122.857398,
- 48.670024,
- 422.7
- ],
- [
- -122.857414,
- 48.670041,
- 423.6
- ],
- [
- -122.85743,
- 48.670057,
- 424.3
- ],
- [
- -122.857447,
- 48.670074,
- 425
- ],
- [
- -122.857463,
- 48.67009,
- 425.7
- ],
- [
- -122.857479,
- 48.670107,
- 426.5
- ],
- [
- -122.857496,
- 48.670123,
- 427.5
- ],
- [
- -122.857512,
- 48.67014,
- 428.4
- ],
- [
- -122.857528,
- 48.670156,
- 429.3
- ],
- [
- -122.857545,
- 48.670173,
- 430.2
- ],
- [
- -122.857561,
- 48.670189,
- 430.9
- ],
- [
- -122.857577,
- 48.670206,
- 431.7
- ],
- [
- -122.857594,
- 48.670223,
- 432.4
- ],
- [
- -122.85757,
- 48.670254,
- 434
- ],
- [
- -122.857611,
- 48.670229,
- 432.7
- ],
- [
- -122.857654,
- 48.670226,
- 432.4
- ],
- [
- -122.857697,
- 48.670246,
- 433.5
- ],
- [
- -122.857693,
- 48.670277,
- 435
- ],
- [
- -122.857717,
- 48.670245,
- 433.4
- ],
- [
- -122.857769,
- 48.670237,
- 432.9
- ],
- [
- -122.857817,
- 48.670232,
- 433.1
- ],
- [
- -122.857857,
- 48.670241,
- 433.6
- ],
- [
- -122.857886,
- 48.67027,
- 435.2
- ],
- [
- -122.85791,
- 48.670296,
- 436.5
- ],
- [
- -122.857904,
- 48.670324,
- 437.7
- ],
- [
- -122.857863,
- 48.670351,
- 438.3
- ],
- [
- -122.857853,
- 48.67038,
- 439.4
- ],
- [
- -122.857862,
- 48.670414,
- 440.9
- ],
- [
- -122.857847,
- 48.670443,
- 442.2
- ],
- [
- -122.857829,
- 48.670469,
- 443.2
- ],
- [
- -122.857814,
- 48.670504,
- 444.6
- ],
- [
- -122.857846,
- 48.670528,
- 445.5
- ],
- [
- -122.857884,
- 48.670561,
- 446.7
- ],
- [
- -122.857884,
- 48.670533,
- 445.7
- ],
- [
- -122.857845,
- 48.670545,
- 446.2
- ],
- [
- -122.857812,
- 48.670564,
- 446.8
- ],
- [
- -122.857814,
- 48.670591,
- 447.8
- ],
- [
- -122.857796,
- 48.670622,
- 448.9
- ],
- [
- -122.857774,
- 48.670645,
- 449.9
- ],
- [
- -122.857747,
- 48.670676,
- 451
- ],
- [
- -122.857719,
- 48.670703,
- 451.8
- ],
- [
- -122.857687,
- 48.670728,
- 452.5
- ],
- [
- -122.857737,
- 48.670734,
- 452.7
- ],
- [
- -122.857735,
- 48.670765,
- 453.8
- ],
- [
- -122.857701,
- 48.670788,
- 454.6
- ],
- [
- -122.857624,
- 48.670777,
- 453.7
- ],
- [
- -122.857588,
- 48.670762,
- 452.7
- ],
- [
- -122.857524,
- 48.67079,
- 452.5
- ],
- [
- -122.857505,
- 48.670761,
- 451.5
- ],
- [
- -122.857452,
- 48.670767,
- 450.7
- ],
- [
- -122.8574,
- 48.670755,
- 450.2
- ],
- [
- -122.857445,
- 48.670748,
- 450.5
- ],
- [
- -122.857483,
- 48.670759,
- 451.1
- ],
- [
- -122.857484,
- 48.670793,
- 451.7
- ],
- [
- -122.857452,
- 48.670811,
- 451.2
- ],
- [
- -122.857431,
- 48.670838,
- 451
- ],
- [
- -122.85741,
- 48.670867,
- 451.2
- ],
- [
- -122.857366,
- 48.670887,
- 452.6
- ],
- [
- -122.857326,
- 48.670904,
- 454.2
- ],
- [
- -122.857271,
- 48.670907,
- 454.8
- ],
- [
- -122.857217,
- 48.670924,
- 455.6
- ],
- [
- -122.857186,
- 48.670949,
- 456.5
- ],
- [
- -122.857162,
- 48.670972,
- 457.1
- ],
- [
- -122.85716,
- 48.671001,
- 458.1
- ],
- [
- -122.857168,
- 48.67103,
- 459.3
- ],
- [
- -122.857172,
- 48.671063,
- 460.5
- ],
- [
- -122.857174,
- 48.671093,
- 461.5
- ],
- [
- -122.857144,
- 48.671119,
- 461.9
- ],
- [
- -122.85711,
- 48.671061,
- 459.6
- ],
- [
- -122.857104,
- 48.67103,
- 458.4
- ],
- [
- -122.857112,
- 48.671064,
- 459.7
- ],
- [
- -122.857135,
- 48.671095,
- 461
- ],
- [
- -122.857147,
- 48.671126,
- 462.2
- ],
- [
- -122.857125,
- 48.6711,
- 461
- ],
- [
- -122.857155,
- 48.671125,
- 462.3
- ],
- [
- -122.857146,
- 48.671166,
- 463.3
- ],
- [
- -122.857119,
- 48.671186,
- 463.4
- ],
- [
- -122.857101,
- 48.671219,
- 464
- ],
- [
- -122.857107,
- 48.671251,
- 464.9
- ],
- [
- -122.857114,
- 48.671283,
- 465.9
- ],
- [
- -122.857116,
- 48.671316,
- 466.7
- ],
- [
- -122.857131,
- 48.671344,
- 467.7
- ],
- [
- -122.857156,
- 48.671368,
- 468.6
- ],
- [
- -122.857165,
- 48.671395,
- 469.4
- ],
- [
- -122.85718,
- 48.671426,
- 470.3
- ],
- [
- -122.857195,
- 48.671454,
- 471
- ],
- [
- -122.857204,
- 48.671483,
- 471.6
- ],
- [
- -122.857215,
- 48.671514,
- 472.1
- ],
- [
- -122.857259,
- 48.671523,
- 471.9
- ],
- [
- -122.85729,
- 48.671542,
- 472
- ],
- [
- -122.857304,
- 48.671571,
- 472.6
- ],
- [
- -122.857336,
- 48.671602,
- 473.4
- ],
- [
- -122.857355,
- 48.671628,
- 474.4
- ],
- [
- -122.85736,
- 48.671662,
- 475.5
- ],
- [
- -122.85738,
- 48.671691,
- 476.3
- ],
- [
- -122.857409,
- 48.671711,
- 476.6
- ],
- [
- -122.85739,
- 48.671739,
- 477.5
- ],
- [
- -122.857355,
- 48.671768,
- 477.8
- ],
- [
- -122.85735,
- 48.671807,
- 477.5
- ],
- [
- -122.857349,
- 48.671834,
- 477
- ],
- [
- -122.857357,
- 48.671867,
- 476.7
- ],
- [
- -122.857363,
- 48.671899,
- 477.7
- ],
- [
- -122.857331,
- 48.671935,
- 479.9
- ],
- [
- -122.857314,
- 48.67196,
- 481.9
- ],
- [
- -122.857308,
- 48.671988,
- 482.8
- ],
- [
- -122.857299,
- 48.672021,
- 483.6
- ],
- [
- -122.857305,
- 48.672049,
- 483.9
- ],
- [
- -122.857247,
- 48.672077,
- 484.8
- ],
- [
- -122.857214,
- 48.672094,
- 485.3
- ],
- [
- -122.857198,
- 48.672133,
- 486.4
- ],
- [
- -122.857199,
- 48.672172,
- 487.7
- ],
- [
- -122.857211,
- 48.672201,
- 488.7
- ],
- [
- -122.857226,
- 48.672226,
- 489.7
- ],
- [
- -122.857255,
- 48.672245,
- 490.4
- ],
- [
- -122.85722,
- 48.672267,
- 491.4
- ],
- [
- -122.857196,
- 48.672296,
- 492.3
- ],
- [
- -122.857175,
- 48.672323,
- 492.5
- ],
- [
- -122.857151,
- 48.672346,
- 492.6
- ],
- [
- -122.85717,
- 48.67237,
- 493.4
- ],
- [
- -122.857214,
- 48.672393,
- 494.7
- ],
- [
- -122.857173,
- 48.672417,
- 494.5
- ],
- [
- -122.857126,
- 48.672399,
- 493.5
- ],
- [
- -122.857044,
- 48.672385,
- 494.9
- ],
- [
- -122.856999,
- 48.67238,
- 495.8
- ],
- [
- -122.857056,
- 48.672377,
- 494.4
- ],
- [
- -122.857099,
- 48.672379,
- 493.2
- ],
- [
- -122.857156,
- 48.672384,
- 493.4
- ],
- [
- -122.857173,
- 48.672417,
- 494.5
- ],
- [
- -122.85716,
- 48.672474,
- 495.6
- ],
- [
- -122.857204,
- 48.672415,
- 495.1
- ],
- [
- -122.857196,
- 48.672384,
- 494.2
- ],
- [
- -122.857257,
- 48.672389,
- 495
- ],
- [
- -122.857185,
- 48.672366,
- 493.6
- ],
- [
- -122.857194,
- 48.672409,
- 494.8
- ],
- [
- -122.857186,
- 48.672438,
- 495.3
- ],
- [
- -122.857193,
- 48.672467,
- 496.2
- ],
- [
- -122.857191,
- 48.672499,
- 497
- ],
- [
- -122.857155,
- 48.672515,
- 496.6
- ],
- [
- -122.857136,
- 48.672548,
- 497.2
- ],
- [
- -122.857122,
- 48.672573,
- 497.7
- ],
- [
- -122.857117,
- 48.672615,
- 498.8
- ],
- [
- -122.857138,
- 48.672654,
- 500.3
- ],
- [
- -122.857153,
- 48.672687,
- 501.4
- ],
- [
- -122.857166,
- 48.672721,
- 502.4
- ],
- [
- -122.857169,
- 48.672753,
- 503.1
- ],
- [
- -122.857165,
- 48.672788,
- 503.8
- ],
- [
- -122.857165,
- 48.672825,
- 504.6
- ],
- [
- -122.857171,
- 48.672859,
- 505.2
- ],
- [
- -122.857187,
- 48.672886,
- 505.6
- ],
- [
- -122.85719,
- 48.672921,
- 506.1
- ],
- [
- -122.857191,
- 48.672954,
- 506.6
- ],
- [
- -122.857198,
- 48.672985,
- 507
- ],
- [
- -122.857205,
- 48.673013,
- 507.1
- ],
- [
- -122.857218,
- 48.673044,
- 506.9
- ],
- [
- -122.857219,
- 48.673075,
- 506.6
- ],
- [
- -122.857207,
- 48.673108,
- 506.1
- ],
- [
- -122.857205,
- 48.673151,
- 506.3
- ],
- [
- -122.857205,
- 48.673184,
- 506.7
- ],
- [
- -122.857217,
- 48.673217,
- 507.5
- ],
- [
- -122.857222,
- 48.673251,
- 508.1
- ],
- [
- -122.857215,
- 48.67329,
- 508.5
- ],
- [
- -122.857212,
- 48.673321,
- 508.8
- ],
- [
- -122.857213,
- 48.673358,
- 509.1
- ],
- [
- -122.857212,
- 48.67339,
- 509.3
- ],
- [
- -122.857211,
- 48.673423,
- 509.7
- ],
- [
- -122.857205,
- 48.673457,
- 510.4
- ],
- [
- -122.857214,
- 48.673486,
- 510.7
- ],
- [
- -122.857247,
- 48.673509,
- 510.3
- ],
- [
- -122.857279,
- 48.673535,
- 509.9
- ],
- [
- -122.857306,
- 48.673559,
- 509.5
- ],
- [
- -122.857334,
- 48.673586,
- 509.2
- ],
- [
- -122.857354,
- 48.673623,
- 509.3
- ],
- [
- -122.857371,
- 48.67365,
- 509.4
- ],
- [
- -122.857405,
- 48.673665,
- 509.3
- ],
- [
- -122.857449,
- 48.673676,
- 509.3
- ],
- [
- -122.857472,
- 48.673704,
- 509.6
- ],
- [
- -122.857507,
- 48.673719,
- 509.7
- ],
- [
- -122.857547,
- 48.673708,
- 509.4
- ],
- [
- -122.857494,
- 48.673718,
- 509.7
- ],
- [
- -122.857441,
- 48.673737,
- 509.9
- ],
- [
- -122.857487,
- 48.673757,
- 509.6
- ],
- [
- -122.857514,
- 48.673783,
- 509.2
- ],
- [
- -122.857557,
- 48.673784,
- 509.1
- ],
- [
- -122.857606,
- 48.673782,
- 508.8
- ],
- [
- -122.857655,
- 48.673792,
- 507.4
- ],
- [
- -122.857711,
- 48.673803,
- 508.9
- ],
- [
- -122.857748,
- 48.673817,
- 510.4
- ],
- [
- -122.857789,
- 48.673827,
- 511.1
- ],
- [
- -122.857805,
- 48.673854,
- 512
- ],
- [
- -122.857823,
- 48.673889,
- 513.2
- ],
- [
- -122.857857,
- 48.673911,
- 514.3
- ],
- [
- -122.857886,
- 48.673942,
- 515.6
- ],
- [
- -122.857897,
- 48.673973,
- 516.9
- ],
- [
- -122.857884,
- 48.674005,
- 518
- ],
- [
- -122.857938,
- 48.674018,
- 518.8
- ],
- [
- -122.85796,
- 48.673985,
- 517.7
- ],
- [
- -122.857913,
- 48.673978,
- 517.2
- ],
- [
- -122.857926,
- 48.674014,
- 518.6
- ],
- [
- -122.857922,
- 48.674041,
- 519.4
- ],
- [
- -122.85792,
- 48.674076,
- 520.4
- ],
- [
- -122.85793,
- 48.67411,
- 521.5
- ],
- [
- -122.857929,
- 48.674146,
- 522.3
- ],
- [
- -122.857949,
- 48.674175,
- 523.4
- ],
- [
- -122.857983,
- 48.674197,
- 524.4
- ],
- [
- -122.858002,
- 48.674231,
- 525.7
- ],
- [
- -122.857985,
- 48.674261,
- 526.5
- ],
- [
- -122.858014,
- 48.674296,
- 528
- ],
- [
- -122.858011,
- 48.67433,
- 529.2
- ],
- [
- -122.858002,
- 48.674365,
- 530.3
- ],
- [
- -122.858007,
- 48.674401,
- 531.4
- ],
- [
- -122.857967,
- 48.674441,
- 532.3
- ],
- [
- -122.857963,
- 48.674479,
- 533.2
- ],
- [
- -122.857943,
- 48.674504,
- 533.7
- ],
- [
- -122.857895,
- 48.674523,
- 533.9
- ],
- [
- -122.857881,
- 48.674549,
- 534.6
- ],
- [
- -122.857842,
- 48.674569,
- 535
- ],
- [
- -122.857821,
- 48.674594,
- 535.6
- ],
- [
- -122.85778,
- 48.674618,
- 536.3
- ],
- [
- -122.857749,
- 48.674644,
- 536.9
- ],
- [
- -122.85775,
- 48.674673,
- 537.9
- ],
- [
- -122.857758,
- 48.674705,
- 539
- ],
- [
- -122.857738,
- 48.674733,
- 539.6
- ],
- [
- -122.857758,
- 48.674762,
- 540.5
- ],
- [
- -122.857728,
- 48.674781,
- 540.8
- ],
- [
- -122.857707,
- 48.67481,
- 541.5
- ],
- [
- -122.857695,
- 48.674841,
- 542.2
- ],
- [
- -122.857673,
- 48.674871,
- 542.7
- ],
- [
- -122.857651,
- 48.674898,
- 543.2
- ],
- [
- -122.857619,
- 48.674931,
- 544
- ],
- [
- -122.857594,
- 48.674961,
- 544.7
- ],
- [
- -122.857572,
- 48.674991,
- 545.3
- ],
- [
- -122.857549,
- 48.675019,
- 545.5
- ],
- [
- -122.857523,
- 48.675045,
- 546
- ],
- [
- -122.857474,
- 48.67506,
- 546.1
- ],
- [
- -122.857434,
- 48.675088,
- 546.6
- ],
- [
- -122.857407,
- 48.675116,
- 547
- ],
- [
- -122.857394,
- 48.675151,
- 547.6
- ],
- [
- -122.857369,
- 48.675175,
- 547.9
- ],
- [
- -122.857306,
- 48.675182,
- 547.9
- ],
- [
- -122.857266,
- 48.675194,
- 548.3
- ],
- [
- -122.857229,
- 48.675211,
- 548.9
- ],
- [
- -122.857207,
- 48.67524,
- 549.4
- ],
- [
- -122.857187,
- 48.675267,
- 549.7
- ],
- [
- -122.857171,
- 48.675302,
- 549.9
- ],
- [
- -122.857152,
- 48.675327,
- 550.2
- ],
- [
- -122.857131,
- 48.675354,
- 550.2
- ],
- [
- -122.857113,
- 48.675381,
- 549.9
- ],
- [
- -122.857099,
- 48.67541,
- 549.7
- ],
- [
- -122.857105,
- 48.675443,
- 549.5
- ],
- [
- -122.857108,
- 48.67548,
- 549.5
- ],
- [
- -122.857108,
- 48.675511,
- 549.5
- ],
- [
- -122.85715,
- 48.675536,
- 549.4
- ],
- [
- -122.857162,
- 48.675564,
- 549.2
- ],
- [
- -122.857175,
- 48.675591,
- 549
- ],
- [
- -122.857175,
- 48.675621,
- 548.9
- ],
- [
- -122.85717,
- 48.675654,
- 548.8
- ],
- [
- -122.85718,
- 48.675684,
- 548.8
- ],
- [
- -122.857186,
- 48.675719,
- 549
- ],
- [
- -122.857184,
- 48.675749,
- 549.6
- ],
- [
- -122.857184,
- 48.675777,
- 549.9
- ],
- [
- -122.857175,
- 48.675818,
- 550.1
- ],
- [
- -122.857168,
- 48.675847,
- 550.3
- ],
- [
- -122.857166,
- 48.675884,
- 550.9
- ],
- [
- -122.857171,
- 48.675911,
- 551.3
- ],
- [
- -122.857184,
- 48.675944,
- 552.3
- ],
- [
- -122.857204,
- 48.675969,
- 553
- ],
- [
- -122.857217,
- 48.675995,
- 553.7
- ],
- [
- -122.857235,
- 48.676034,
- 555
- ],
- [
- -122.85724,
- 48.676061,
- 555.9
- ],
- [
- -122.857261,
- 48.676096,
- 557.4
- ],
- [
- -122.857253,
- 48.676126,
- 558.2
- ],
- [
- -122.85726,
- 48.676162,
- 559.4
- ],
- [
- -122.857246,
- 48.676194,
- 560
- ],
- [
- -122.857256,
- 48.676227,
- 561.3
- ],
- [
- -122.857253,
- 48.67626,
- 562.2
- ],
- [
- -122.857241,
- 48.676292,
- 562.8
- ],
- [
- -122.857218,
- 48.676333,
- 563.2
- ],
- [
- -122.857185,
- 48.676359,
- 562.8
- ],
- [
- -122.857149,
- 48.676392,
- 562.7
- ],
- [
- -122.857126,
- 48.676419,
- 562.8
- ],
- [
- -122.857092,
- 48.676462,
- 562.9
- ],
- [
- -122.857121,
- 48.676483,
- 563.7
- ],
- [
- -122.857153,
- 48.676505,
- 565.1
- ],
- [
- -122.857154,
- 48.67654,
- 566.1
- ],
- [
- -122.857141,
- 48.676571,
- 566.4
- ],
- [
- -122.857146,
- 48.676606,
- 567.5
- ],
- [
- -122.857151,
- 48.676636,
- 568.5
- ],
- [
- -122.857147,
- 48.676666,
- 569.1
- ],
- [
- -122.857149,
- 48.676707,
- 569.8
- ],
- [
- -122.857167,
- 48.676739,
- 571
- ],
- [
- -122.857161,
- 48.676767,
- 571.1
- ],
- [
- -122.857155,
- 48.676796,
- 571.1
- ],
- [
- -122.857144,
- 48.676826,
- 571.1
- ],
- [
- -122.857131,
- 48.676852,
- 570.9
- ],
- [
- -122.857132,
- 48.676882,
- 571.1
- ],
- [
- -122.857136,
- 48.67691,
- 571.3
- ],
- [
- -122.857138,
- 48.676948,
- 571.5
- ],
- [
- -122.85714,
- 48.676984,
- 571.7
- ],
- [
- -122.857159,
- 48.677011,
- 572.3
- ],
- [
- -122.857194,
- 48.677045,
- 573.2
- ],
- [
- -122.857225,
- 48.677065,
- 573.9
- ],
- [
- -122.857249,
- 48.677095,
- 574.3
- ],
- [
- -122.857255,
- 48.677127,
- 574.4
- ],
- [
- -122.857255,
- 48.677161,
- 574.6
- ],
- [
- -122.857251,
- 48.677197,
- 574.6
- ],
- [
- -122.857244,
- 48.677234,
- 574.2
- ],
- [
- -122.857246,
- 48.677267,
- 574
- ],
- [
- -122.85729,
- 48.677301,
- 574
- ],
- [
- -122.857272,
- 48.677328,
- 573.6
- ],
- [
- -122.857235,
- 48.677348,
- 573.3
- ],
- [
- -122.857193,
- 48.677347,
- 573.5
- ],
- [
- -122.857147,
- 48.677353,
- 573.7
- ],
- [
- -122.857108,
- 48.677365,
- 573.6
- ],
- [
- -122.857058,
- 48.677379,
- 572.7
- ],
- [
- -122.85702,
- 48.677393,
- 571.9
- ],
- [
- -122.856984,
- 48.677407,
- 571.5
- ],
- [
- -122.856943,
- 48.677432,
- 571
- ],
- [
- -122.856895,
- 48.677444,
- 570.4
- ],
- [
- -122.856845,
- 48.677453,
- 569.4
- ],
- [
- -122.856789,
- 48.677462,
- 567.7
- ],
- [
- -122.856745,
- 48.67747,
- 566.7
- ],
- [
- -122.85669,
- 48.677484,
- 566.5
- ],
- [
- -122.856647,
- 48.677496,
- 566.8
- ],
- [
- -122.856605,
- 48.677519,
- 567.2
- ],
- [
- -122.856584,
- 48.677545,
- 567.7
- ],
- [
- -122.85657,
- 48.677582,
- 568
- ],
- [
- -122.856537,
- 48.677605,
- 569.1
- ],
- [
- -122.856494,
- 48.677612,
- 570.8
- ],
- [
- -122.856464,
- 48.677631,
- 571.4
- ],
- [
- -122.856423,
- 48.677633,
- 571.6
- ],
- [
- -122.856377,
- 48.677628,
- 571.9
- ],
- [
- -122.856327,
- 48.677633,
- 572.5
- ],
- [
- -122.856277,
- 48.677628,
- 572.7
- ],
- [
- -122.856227,
- 48.67763,
- 572.3
- ],
- [
- -122.856178,
- 48.677626,
- 571.7
- ],
- [
- -122.856134,
- 48.677625,
- 571.6
- ],
- [
- -122.856091,
- 48.677635,
- 571.8
- ],
- [
- -122.85605,
- 48.677642,
- 572.2
- ],
- [
- -122.85601,
- 48.677658,
- 572.9
- ],
- [
- -122.855959,
- 48.677663,
- 573.2
- ],
- [
- -122.855926,
- 48.677627,
- 572.9
- ],
- [
- -122.855888,
- 48.677608,
- 573.2
- ],
- [
- -122.855835,
- 48.677602,
- 574
- ],
- [
- -122.855784,
- 48.67761,
- 575
- ],
- [
- -122.85573,
- 48.677613,
- 575.8
- ],
- [
- -122.855673,
- 48.677617,
- 576.5
- ],
- [
- -122.855613,
- 48.677622,
- 577.3
- ],
- [
- -122.855555,
- 48.677627,
- 577.9
- ],
- [
- -122.855514,
- 48.677627,
- 578
- ],
- [
- -122.855468,
- 48.677615,
- 577.9
- ],
- [
- -122.855426,
- 48.677621,
- 578.3
- ],
- [
- -122.855387,
- 48.677643,
- 579.5
- ],
- [
- -122.855359,
- 48.677664,
- 580.1
- ],
- [
- -122.855318,
- 48.677683,
- 580.6
- ],
- [
- -122.855264,
- 48.677694,
- 580.9
- ],
- [
- -122.855224,
- 48.677701,
- 581.4
- ],
- [
- -122.855172,
- 48.677714,
- 582.4
- ],
- [
- -122.855125,
- 48.677712,
- 582.9
- ],
- [
- -122.855086,
- 48.677724,
- 583.9
- ],
- [
- -122.855051,
- 48.677744,
- 585.4
- ],
- [
- -122.855005,
- 48.677745,
- 586.3
- ],
- [
- -122.854964,
- 48.677755,
- 587.5
- ],
- [
- -122.854929,
- 48.67774,
- 587.7
- ],
- [
- -122.854885,
- 48.67773,
- 588.2
- ],
- [
- -122.854832,
- 48.677737,
- 589.3
- ],
- [
- -122.85479,
- 48.677732,
- 589.9
- ],
- [
- -122.854753,
- 48.677745,
- 590.8
- ],
- [
- -122.85472,
- 48.677769,
- 591.7
- ],
- [
- -122.8547,
- 48.677802,
- 592.3
- ],
- [
- -122.854664,
- 48.677819,
- 592.4
- ],
- [
- -122.854624,
- 48.677827,
- 592.5
- ],
- [
- -122.854601,
- 48.677858,
- 592.9
- ],
- [
- -122.854592,
- 48.677887,
- 593.5
- ],
- [
- -122.85458,
- 48.677919,
- 594.4
- ],
- [
- -122.854573,
- 48.677953,
- 595.4
- ],
- [
- -122.854582,
- 48.677985,
- 595.9
- ],
- [
- -122.854568,
- 48.678011,
- 596.5
- ],
- [
- -122.854536,
- 48.678036,
- 597
- ],
- [
- -122.854487,
- 48.678049,
- 597.3
- ],
- [
- -122.854443,
- 48.678058,
- 597.4
- ],
- [
- -122.854403,
- 48.678055,
- 597.3
- ],
- [
- -122.854363,
- 48.67804,
- 597.4
- ],
- [
- -122.854324,
- 48.678022,
- 598.1
- ],
- [
- -122.854284,
- 48.678001,
- 599.2
- ],
- [
- -122.854253,
- 48.677982,
- 599.9
- ],
- [
- -122.854219,
- 48.677962,
- 600.4
- ],
- [
- -122.854183,
- 48.677947,
- 601
- ],
- [
- -122.85415,
- 48.677968,
- 601.8
- ],
- [
- -122.854089,
- 48.677977,
- 602.5
- ],
- [
- -122.854042,
- 48.677988,
- 602.7
- ],
- [
- -122.854005,
- 48.678001,
- 602.9
- ],
- [
- -122.853952,
- 48.678015,
- 602.9
- ],
- [
- -122.853909,
- 48.67803,
- 602.9
- ],
- [
- -122.853871,
- 48.678044,
- 602.8
- ],
- [
- -122.853828,
- 48.678067,
- 602.8
- ],
- [
- -122.853789,
- 48.678083,
- 602.7
- ],
- [
- -122.853766,
- 48.678109,
- 602.7
- ],
- [
- -122.853748,
- 48.678144,
- 602.8
- ],
- [
- -122.853729,
- 48.67818,
- 602.8
- ],
- [
- -122.853699,
- 48.67821,
- 602.9
- ],
- [
- -122.853691,
- 48.678246,
- 603.1
- ],
- [
- -122.853689,
- 48.678274,
- 603.5
- ],
- [
- -122.853673,
- 48.678302,
- 604.4
- ],
- [
- -122.853646,
- 48.678331,
- 605.7
- ],
- [
- -122.853621,
- 48.678362,
- 606.9
- ],
- [
- -122.853595,
- 48.678389,
- 607.6
- ],
- [
- -122.853568,
- 48.678415,
- 608
- ],
- [
- -122.853527,
- 48.678438,
- 608.3
- ],
- [
- -122.853479,
- 48.678452,
- 608.7
- ],
- [
- -122.85344,
- 48.678468,
- 609.3
- ],
- [
- -122.853403,
- 48.678489,
- 609.8
- ],
- [
- -122.853369,
- 48.678516,
- 610.2
- ],
- [
- -122.853318,
- 48.678548,
- 610.7
- ],
- [
- -122.85329,
- 48.678572,
- 610.8
- ],
- [
- -122.853255,
- 48.678603,
- 610.8
- ],
- [
- -122.853233,
- 48.678626,
- 610.9
- ],
- [
- -122.853207,
- 48.678658,
- 610.9
- ],
- [
- -122.853192,
- 48.678686,
- 610.7
- ],
- [
- -122.853163,
- 48.678705,
- 610.7
- ],
- [
- -122.853133,
- 48.678732,
- 610.7
- ],
- [
- -122.853137,
- 48.678766,
- 610.3
- ],
- [
- -122.85313,
- 48.678798,
- 609.8
- ],
- [
- -122.853101,
- 48.678822,
- 609.4
- ],
- [
- -122.853063,
- 48.67884,
- 609.4
- ],
- [
- -122.853023,
- 48.678863,
- 609.2
- ],
- [
- -122.852996,
- 48.678885,
- 608.9
- ],
- [
- -122.852968,
- 48.678911,
- 608.7
- ],
- [
- -122.852952,
- 48.678962,
- 608.5
- ],
- [
- -122.852945,
- 48.678976,
- 608.5
- ],
- [
- -122.85292,
- 48.679008,
- 608.5
- ],
- [
- -122.852897,
- 48.679031,
- 608.6
- ],
- [
- -122.852865,
- 48.679049,
- 608.6
- ],
- [
- -122.852861,
- 48.679077,
- 608.4
- ],
- [
- -122.852839,
- 48.679111,
- 608.5
- ],
- [
- -122.852819,
- 48.67914,
- 608.7
- ],
- [
- -122.852795,
- 48.679172,
- 608.9
- ],
- [
- -122.85278,
- 48.679202,
- 609
- ],
- [
- -122.852765,
- 48.679236,
- 609.1
- ],
- [
- -122.852755,
- 48.679268,
- 608.8
- ],
- [
- -122.852742,
- 48.679299,
- 608.6
- ],
- [
- -122.852724,
- 48.679325,
- 608.3
- ],
- [
- -122.852694,
- 48.679354,
- 608.2
- ],
- [
- -122.852684,
- 48.679381,
- 607.9
- ],
- [
- -122.852669,
- 48.679415,
- 607.4
- ],
- [
- -122.852647,
- 48.679443,
- 607.1
- ],
- [
- -122.852622,
- 48.679473,
- 606.9
- ],
- [
- -122.852602,
- 48.679512,
- 606.8
- ],
- [
- -122.852568,
- 48.67953,
- 606.6
- ],
- [
- -122.852532,
- 48.679553,
- 606.3
- ],
- [
- -122.852506,
- 48.679581,
- 606.2
- ],
- [
- -122.852472,
- 48.679606,
- 605.8
- ],
- [
- -122.852425,
- 48.679628,
- 605.1
- ],
- [
- -122.852403,
- 48.67964,
- 604.8
- ],
- [
- -122.852373,
- 48.679662,
- 604.4
- ],
- [
- -122.852351,
- 48.679686,
- 604
- ],
- [
- -122.852318,
- 48.679709,
- 603.5
- ],
- [
- -122.852284,
- 48.679727,
- 602.8
- ],
- [
- -122.85224,
- 48.679748,
- 602
- ],
- [
- -122.852198,
- 48.679776,
- 601.5
- ],
- [
- -122.852182,
- 48.679802,
- 601.1
- ],
- [
- -122.852156,
- 48.679834,
- 600.7
- ],
- [
- -122.852133,
- 48.679856,
- 600.4
- ],
- [
- -122.852098,
- 48.679879,
- 599.9
- ],
- [
- -122.852069,
- 48.679899,
- 599.5
- ],
- [
- -122.852023,
- 48.67992,
- 599.4
- ],
- [
- -122.851992,
- 48.679945,
- 599.5
- ],
- [
- -122.851964,
- 48.679974,
- 599.4
- ],
- [
- -122.851937,
- 48.680001,
- 599.1
- ],
- [
- -122.851913,
- 48.680023,
- 598.8
- ],
- [
- -122.851876,
- 48.680043,
- 598.8
- ],
- [
- -122.851831,
- 48.680062,
- 599
- ],
- [
- -122.851789,
- 48.680084,
- 599.4
- ],
- [
- -122.851763,
- 48.680106,
- 599.7
- ],
- [
- -122.851719,
- 48.68013,
- 600.2
- ],
- [
- -122.851672,
- 48.680152,
- 600.6
- ],
- [
- -122.85163,
- 48.680158,
- 601
- ],
- [
- -122.851631,
- 48.680124,
- 600.9
- ],
- [
- -122.851674,
- 48.680113,
- 600.5
- ],
- [
- -122.851678,
- 48.68007,
- 600.3
- ],
- [
- -122.851653,
- 48.680045,
- 600.2
- ],
- [
- -122.851588,
- 48.68011,
- 601.1
- ],
- [
- -122.851591,
- 48.680142,
- 601.1
- ],
- [
- -122.851546,
- 48.680141,
- 601.7
- ],
- [
- -122.851516,
- 48.680117,
- 601.7
- ],
- [
- -122.851523,
- 48.680151,
- 602.1
- ],
- [
- -122.851543,
- 48.680179,
- 602.1
- ],
- [
- -122.851516,
- 48.680153,
- 602.2
- ],
- [
- -122.851477,
- 48.68014,
- 602.6
- ],
- [
- -122.851464,
- 48.680109,
- 602.4
- ],
- [
- -122.851459,
- 48.680077,
- 602.3
- ],
- [
- -122.851448,
- 48.680041,
- 602
- ],
- [
- -122.851425,
- 48.680007,
- 601.8
- ],
- [
- -122.851413,
- 48.679975,
- 601.3
- ],
- [
- -122.851399,
- 48.679946,
- 601.1
- ],
- [
- -122.851403,
- 48.679913,
- 600.7
- ],
- [
- -122.851394,
- 48.679883,
- 600.4
- ],
- [
- -122.851387,
- 48.679849,
- 600
- ],
- [
- -122.851375,
- 48.679817,
- 599.7
- ],
- [
- -122.851392,
- 48.679791,
- 599.4
- ],
- [
- -122.851407,
- 48.679759,
- 599.2
- ],
- [
- -122.851407,
- 48.67973,
- 598.9
- ],
- [
- -122.851412,
- 48.679701,
- 598.8
- ],
- [
- -122.851422,
- 48.679674,
- 598.5
- ],
- [
- -122.851427,
- 48.679644,
- 598.3
- ],
- [
- -122.851421,
- 48.679606,
- 597.9
- ],
- [
- -122.851411,
- 48.67957,
- 597.7
- ],
- [
- -122.851396,
- 48.679544,
- 597.8
- ],
- [
- -122.85139,
- 48.679513,
- 597.8
- ],
- [
- -122.851397,
- 48.679484,
- 597.6
- ],
- [
- -122.851401,
- 48.679454,
- 597.5
- ],
- [
- -122.85138,
- 48.679428,
- 597.5
- ],
- [
- -122.851366,
- 48.679398,
- 597.2
- ],
- [
- -122.851362,
- 48.679369,
- 597.5
- ],
- [
- -122.851357,
- 48.679341,
- 597.4
- ],
- [
- -122.851354,
- 48.679309,
- 597.2
- ],
- [
- -122.851362,
- 48.679279,
- 597
- ],
- [
- -122.85137,
- 48.67925,
- 596.6
- ],
- [
- -122.851376,
- 48.679222,
- 596.4
- ],
- [
- -122.851386,
- 48.679191,
- 596.4
- ],
- [
- -122.851401,
- 48.679156,
- 596.2
- ],
- [
- -122.851404,
- 48.679126,
- 596.1
- ],
- [
- -122.851387,
- 48.679093,
- 596.3
- ],
- [
- -122.851378,
- 48.679062,
- 595.9
- ],
- [
- -122.851383,
- 48.679029,
- 595.4
- ],
- [
- -122.851408,
- 48.679004,
- 594.9
- ],
- [
- -122.851401,
- 48.678975,
- 594.4
- ],
- [
- -122.851325,
- 48.678928,
- 593.1
- ],
- [
- -122.851284,
- 48.678943,
- 593
- ],
- [
- -122.851329,
- 48.678954,
- 593.7
- ],
- [
- -122.851327,
- 48.678987,
- 594.5
- ],
- [
- -122.851334,
- 48.678925,
- 593.1
- ],
- [
- -122.851337,
- 48.678894,
- 592.6
- ],
- [
- -122.85134,
- 48.678867,
- 592.3
- ],
- [
- -122.85135,
- 48.678831,
- 592
- ],
- [
- -122.851352,
- 48.678791,
- 591.8
- ],
- [
- -122.851351,
- 48.678762,
- 591.6
- ],
- [
- -122.851372,
- 48.678725,
- 591.8
- ],
- [
- -122.851385,
- 48.678686,
- 591.9
- ],
- [
- -122.851402,
- 48.678653,
- 592.2
- ],
- [
- -122.851413,
- 48.67862,
- 592.3
- ],
- [
- -122.851436,
- 48.678596,
- 592.6
- ],
- [
- -122.85144,
- 48.678563,
- 592.8
- ],
- [
- -122.851459,
- 48.678538,
- 593
- ],
- [
- -122.851469,
- 48.678508,
- 593.2
- ],
- [
- -122.851478,
- 48.678479,
- 593.4
- ],
- [
- -122.851504,
- 48.678453,
- 593.4
- ],
- [
- -122.851536,
- 48.678419,
- 593.2
- ],
- [
- -122.85155,
- 48.67839,
- 593.3
- ],
- [
- -122.851557,
- 48.678363,
- 593.5
- ],
- [
- -122.851581,
- 48.678333,
- 593.9
- ],
- [
- -122.851593,
- 48.678299,
- 594.2
- ],
- [
- -122.851596,
- 48.678269,
- 594.5
- ],
- [
- -122.851591,
- 48.678232,
- 595
- ],
- [
- -122.851585,
- 48.678203,
- 596.1
- ],
- [
- -122.851588,
- 48.678155,
- 596.9
- ],
- [
- -122.851625,
- 48.678142,
- 596.8
- ],
- [
- -122.851647,
- 48.678117,
- 596.5
- ],
- [
- -122.851639,
- 48.678082,
- 596.1
- ],
- [
- -122.85163,
- 48.678044,
- 595.6
- ],
- [
- -122.851645,
- 48.678011,
- 595.4
- ],
- [
- -122.851652,
- 48.67798,
- 595.8
- ],
- [
- -122.851644,
- 48.677949,
- 596.3
- ],
- [
- -122.851615,
- 48.677929,
- 596.5
- ],
- [
- -122.851629,
- 48.677893,
- 597.2
- ],
- [
- -122.851642,
- 48.67786,
- 597.9
- ],
- [
- -122.851634,
- 48.677826,
- 599
- ],
- [
- -122.851602,
- 48.677793,
- 600
- ],
- [
- -122.851564,
- 48.677778,
- 600.4
- ],
- [
- -122.851539,
- 48.677754,
- 600.9
- ],
- [
- -122.851522,
- 48.677713,
- 601.2
- ],
- [
- -122.851518,
- 48.677682,
- 601.4
- ],
- [
- -122.851514,
- 48.677653,
- 601.5
- ],
- [
- -122.851509,
- 48.67762,
- 601.7
- ],
- [
- -122.851478,
- 48.677583,
- 601.6
- ],
- [
- -122.851461,
- 48.677555,
- 601.8
- ],
- [
- -122.851452,
- 48.677521,
- 602
- ],
- [
- -122.851466,
- 48.677489,
- 602.1
- ],
- [
- -122.851477,
- 48.677454,
- 602.1
- ],
- [
- -122.851478,
- 48.677418,
- 602.3
- ],
- [
- -122.851461,
- 48.677392,
- 602.5
- ],
- [
- -122.851456,
- 48.677364,
- 602.6
- ],
- [
- -122.851448,
- 48.677326,
- 602.6
- ],
- [
- -122.851463,
- 48.677284,
- 601.9
- ],
- [
- -122.851473,
- 48.677249,
- 601.1
- ],
- [
- -122.851494,
- 48.677218,
- 600
- ],
- [
- -122.851504,
- 48.67719,
- 599.3
- ],
- [
- -122.851489,
- 48.677161,
- 599.1
- ],
- [
- -122.851465,
- 48.677135,
- 599.1
- ],
- [
- -122.851449,
- 48.677095,
- 598.8
- ],
- [
- -122.851448,
- 48.677058,
- 598.4
- ],
- [
- -122.851446,
- 48.677029,
- 598.1
- ],
- [
- -122.851431,
- 48.677,
- 597.7
- ],
- [
- -122.851417,
- 48.676965,
- 596.6
- ],
- [
- -122.851415,
- 48.676935,
- 595.7
- ],
- [
- -122.851412,
- 48.676904,
- 595.2
- ],
- [
- -122.851401,
- 48.676862,
- 595.6
- ],
- [
- -122.851404,
- 48.676829,
- 596.4
- ],
- [
- -122.851414,
- 48.676797,
- 596.9
- ],
- [
- -122.851418,
- 48.676771,
- 597
- ],
- [
- -122.851405,
- 48.676738,
- 597
- ],
- [
- -122.851413,
- 48.676707,
- 596.8
- ],
- [
- -122.851405,
- 48.676678,
- 596.5
- ],
- [
- -122.851403,
- 48.676646,
- 596
- ],
- [
- -122.851396,
- 48.676612,
- 595.5
- ],
- [
- -122.851412,
- 48.676584,
- 594.9
- ],
- [
- -122.851399,
- 48.676555,
- 594.5
- ],
- [
- -122.85139,
- 48.676524,
- 593.9
- ],
- [
- -122.851403,
- 48.676493,
- 593.3
- ],
- [
- -122.851398,
- 48.676463,
- 592.7
- ],
- [
- -122.851389,
- 48.676431,
- 592.1
- ],
- [
- -122.851379,
- 48.676387,
- 591.5
- ],
- [
- -122.851387,
- 48.676349,
- 591.2
- ],
- [
- -122.851402,
- 48.676315,
- 591.2
- ],
- [
- -122.851438,
- 48.676294,
- 592
- ],
- [
- -122.851478,
- 48.676277,
- 592.9
- ],
- [
- -122.851455,
- 48.676235,
- 592.4
- ],
- [
- -122.851433,
- 48.676207,
- 591.6
- ],
- [
- -122.851437,
- 48.67617,
- 591.5
- ],
- [
- -122.851448,
- 48.67614,
- 591.5
- ],
- [
- -122.851485,
- 48.676118,
- 591.8
- ],
- [
- -122.851499,
- 48.676089,
- 591.4
- ],
- [
- -122.851507,
- 48.676058,
- 590.9
- ],
- [
- -122.851555,
- 48.676028,
- 591
- ],
- [
- -122.851568,
- 48.675998,
- 590.9
- ],
- [
- -122.851566,
- 48.675965,
- 590.3
- ],
- [
- -122.851584,
- 48.675936,
- 590.1
- ],
- [
- -122.851605,
- 48.675911,
- 590.2
- ],
- [
- -122.851591,
- 48.675875,
- 589.8
- ],
- [
- -122.851561,
- 48.67584,
- 589.9
- ],
- [
- -122.851544,
- 48.675802,
- 589.9
- ],
- [
- -122.851533,
- 48.675774,
- 589.9
- ],
- [
- -122.851513,
- 48.675739,
- 590.1
- ],
- [
- -122.85152,
- 48.675709,
- 589.7
- ],
- [
- -122.851497,
- 48.67567,
- 590.3
- ],
- [
- -122.851478,
- 48.675641,
- 590.3
- ],
- [
- -122.851456,
- 48.675611,
- 590.4
- ],
- [
- -122.851438,
- 48.675586,
- 590.8
- ],
- [
- -122.851427,
- 48.675556,
- 590.8
- ],
- [
- -122.851409,
- 48.675523,
- 590.6
- ],
- [
- -122.851398,
- 48.675489,
- 590.3
- ],
- [
- -122.851381,
- 48.675457,
- 589.9
- ],
- [
- -122.85137,
- 48.675422,
- 589.5
- ],
- [
- -122.851357,
- 48.675389,
- 589.9
- ],
- [
- -122.851332,
- 48.675342,
- 590.9
- ],
- [
- -122.851324,
- 48.675297,
- 591.9
- ],
- [
- -122.851312,
- 48.675264,
- 592.2
- ],
- [
- -122.85131,
- 48.675225,
- 593
- ],
- [
- -122.851307,
- 48.675196,
- 593.2
- ],
- [
- -122.851331,
- 48.675166,
- 593.5
- ],
- [
- -122.851366,
- 48.675148,
- 594
- ],
- [
- -122.851364,
- 48.675118,
- 594.5
- ],
- [
- -122.851365,
- 48.675077,
- 595.2
- ],
- [
- -122.851365,
- 48.675047,
- 595.6
- ],
- [
- -122.851362,
- 48.675017,
- 596.4
- ],
- [
- -122.851371,
- 48.674988,
- 597.1
- ],
- [
- -122.851386,
- 48.674963,
- 597.8
- ],
- [
- -122.851395,
- 48.674933,
- 598.6
- ],
- [
- -122.851395,
- 48.674898,
- 599.7
- ],
- [
- -122.851382,
- 48.674862,
- 600.8
- ],
- [
- -122.851374,
- 48.674835,
- 601.5
- ],
- [
- -122.851376,
- 48.674803,
- 602.7
- ],
- [
- -122.85138,
- 48.674775,
- 603.3
- ],
- [
- -122.851387,
- 48.674739,
- 603.8
- ],
- [
- -122.85142,
- 48.67471,
- 603.9
- ],
- [
- -122.851446,
- 48.674682,
- 604.1
- ],
- [
- -122.851493,
- 48.674673,
- 604.2
- ],
- [
- -122.85154,
- 48.674656,
- 604.8
- ],
- [
- -122.851582,
- 48.674656,
- 605
- ],
- [
- -122.851636,
- 48.674646,
- 605.5
- ],
- [
- -122.851688,
- 48.674654,
- 605.8
- ],
- [
- -122.851747,
- 48.674644,
- 606.6
- ],
- [
- -122.851798,
- 48.674633,
- 607.2
- ],
- [
- -122.85185,
- 48.67463,
- 607.9
- ],
- [
- -122.851898,
- 48.674634,
- 608.4
- ],
- [
- -122.85194,
- 48.674628,
- 609.7
- ],
- [
- -122.851986,
- 48.674623,
- 611.4
- ],
- [
- -122.852039,
- 48.674612,
- 613.1
- ],
- [
- -122.852082,
- 48.674619,
- 613.7
- ],
- [
- -122.852037,
- 48.674643,
- 612.2
- ],
- [
- -122.852,
- 48.674626,
- 611.7
- ],
- [
- -122.851961,
- 48.674614,
- 610.9
- ],
- [
- -122.851921,
- 48.674605,
- 610.1
- ],
- [
- -122.851889,
- 48.674582,
- 610.9
- ],
- [
- -122.851846,
- 48.674559,
- 612.2
- ],
- [
- -122.851824,
- 48.674524,
- 614.1
- ],
- [
- -122.851814,
- 48.674497,
- 615.8
- ],
- [
- -122.851795,
- 48.674463,
- 618
- ],
- [
- -122.851773,
- 48.674433,
- 618.4
- ],
- [
- -122.851745,
- 48.674409,
- 618.5
- ],
- [
- -122.851729,
- 48.674376,
- 619.3
- ],
- [
- -122.851726,
- 48.674348,
- 620
- ],
- [
- -122.851703,
- 48.674315,
- 620.8
- ],
- [
- -122.851665,
- 48.674292,
- 621.2
- ],
- [
- -122.85163,
- 48.674262,
- 622
- ],
- [
- -122.85162,
- 48.674226,
- 623.7
- ],
- [
- -122.851587,
- 48.674199,
- 625.3
- ],
- [
- -122.851552,
- 48.674163,
- 625.7
- ],
- [
- -122.851529,
- 48.674135,
- 625.6
- ],
- [
- -122.851494,
- 48.674115,
- 625.3
- ],
- [
- -122.851468,
- 48.674091,
- 625.1
- ],
- [
- -122.851446,
- 48.674061,
- 624.9
- ],
- [
- -122.85144,
- 48.674033,
- 625.2
- ],
- [
- -122.851441,
- 48.674005,
- 625.9
- ],
- [
- -122.851457,
- 48.673979,
- 626.9
- ],
- [
- -122.851478,
- 48.673946,
- 627.9
- ],
- [
- -122.8515,
- 48.673921,
- 628.8
- ],
- [
- -122.851483,
- 48.673896,
- 629.5
- ],
- [
- -122.851459,
- 48.673861,
- 630.8
- ],
- [
- -122.851437,
- 48.673835,
- 631.2
- ],
- [
- -122.851454,
- 48.673807,
- 631.7
- ],
- [
- -122.851493,
- 48.673794,
- 631.8
- ],
- [
- -122.851479,
- 48.673828,
- 631.5
- ],
- [
- -122.851447,
- 48.673852,
- 630.9
- ],
- [
- -122.851507,
- 48.673836,
- 631.2
- ],
- [
- -122.851532,
- 48.673818,
- 631.4
- ],
- [
- -122.85153,
- 48.673788,
- 631.8
- ],
- [
- -122.851533,
- 48.673756,
- 632
- ],
- [
- -122.851516,
- 48.673721,
- 632.3
- ],
- [
- -122.851497,
- 48.673685,
- 632.5
- ],
- [
- -122.851479,
- 48.67365,
- 632.7
- ],
- [
- -122.851454,
- 48.673626,
- 632.9
- ],
- [
- -122.851436,
- 48.673595,
- 632.8
- ],
- [
- -122.851423,
- 48.673556,
- 632.6
- ],
- [
- -122.851424,
- 48.673527,
- 632.3
- ],
- [
- -122.851426,
- 48.673493,
- 632
- ],
- [
- -122.851404,
- 48.673466,
- 631.9
- ],
- [
- -122.851376,
- 48.673434,
- 631.6
- ],
- [
- -122.851347,
- 48.673409,
- 631.8
- ],
- [
- -122.851319,
- 48.673385,
- 632.2
- ],
- [
- -122.851305,
- 48.673355,
- 632.5
- ],
- [
- -122.851284,
- 48.673322,
- 633.2
- ],
- [
- -122.851263,
- 48.673298,
- 633.4
- ],
- [
- -122.851224,
- 48.673271,
- 634
- ],
- [
- -122.851185,
- 48.673247,
- 634.4
- ],
- [
- -122.851156,
- 48.673224,
- 634.2
- ],
- [
- -122.851133,
- 48.673201,
- 634.6
- ],
- [
- -122.851098,
- 48.673179,
- 635.1
- ],
- [
- -122.851071,
- 48.673158,
- 635.3
- ],
- [
- -122.851041,
- 48.673135,
- 635.3
- ],
- [
- -122.851,
- 48.673106,
- 635.8
- ],
- [
- -122.850967,
- 48.673078,
- 636.2
- ],
- [
- -122.850918,
- 48.673058,
- 636.7
- ],
- [
- -122.85087,
- 48.673055,
- 637.3
- ],
- [
- -122.850846,
- 48.673021,
- 637.2
- ],
- [
- -122.850829,
- 48.672993,
- 637.1
- ],
- [
- -122.850801,
- 48.672957,
- 637.3
- ],
- [
- -122.85078,
- 48.672932,
- 637.3
- ],
- [
- -122.850732,
- 48.67293,
- 637
- ],
- [
- -122.850683,
- 48.672915,
- 636.7
- ],
- [
- -122.850659,
- 48.67289,
- 636.6
- ],
- [
- -122.850629,
- 48.672864,
- 636.6
- ],
- [
- -122.850602,
- 48.672838,
- 636.7
- ],
- [
- -122.850572,
- 48.672806,
- 636.9
- ],
- [
- -122.850538,
- 48.67278,
- 637.1
- ],
- [
- -122.850487,
- 48.672777,
- 637
- ],
- [
- -122.850431,
- 48.672761,
- 637.4
- ],
- [
- -122.850408,
- 48.672736,
- 637.7
- ],
- [
- -122.850384,
- 48.672767,
- 637.7
- ],
- [
- -122.850347,
- 48.67273,
- 638.1
- ],
- [
- -122.850292,
- 48.672747,
- 638.1
- ],
- [
- -122.850264,
- 48.672722,
- 638.3
- ],
- [
- -122.850313,
- 48.67274,
- 638.1
- ],
- [
- -122.850304,
- 48.672692,
- 638.2
- ],
- [
- -122.850225,
- 48.672679,
- 638.4
- ],
- [
- -122.850187,
- 48.672669,
- 638.6
- ],
- [
- -122.850139,
- 48.672661,
- 639.3
- ],
- [
- -122.850127,
- 48.672628,
- 639.2
- ],
- [
- -122.850073,
- 48.67259,
- 638.8
- ],
- [
- -122.850039,
- 48.672571,
- 638.4
- ],
- [
- -122.849995,
- 48.672563,
- 638.5
- ],
- [
- -122.849954,
- 48.672558,
- 638.9
- ],
- [
- -122.849915,
- 48.672536,
- 639.2
- ],
- [
- -122.849874,
- 48.672524,
- 639.6
- ],
- [
- -122.84983,
- 48.672504,
- 640
- ],
- [
- -122.849823,
- 48.67247,
- 639.8
- ],
- [
- -122.849807,
- 48.672436,
- 640.2
- ],
- [
- -122.849789,
- 48.672402,
- 640.5
- ],
- [
- -122.849772,
- 48.672371,
- 640.5
- ],
- [
- -122.849745,
- 48.672342,
- 640.3
- ],
- [
- -122.8497,
- 48.672326,
- 640.4
- ],
- [
- -122.84966,
- 48.672304,
- 640.3
- ],
- [
- -122.849636,
- 48.672278,
- 640
- ],
- [
- -122.849609,
- 48.672252,
- 639.7
- ],
- [
- -122.849578,
- 48.672223,
- 639.4
- ],
- [
- -122.849534,
- 48.672219,
- 639.2
- ],
- [
- -122.849495,
- 48.672232,
- 639.1
- ],
- [
- -122.849452,
- 48.672253,
- 639.1
- ],
- [
- -122.84941,
- 48.672253,
- 638.8
- ],
- [
- -122.84937,
- 48.672268,
- 638.8
- ],
- [
- -122.849328,
- 48.67228,
- 638.6
- ],
- [
- -122.849268,
- 48.672287,
- 638.5
- ],
- [
- -122.849226,
- 48.672282,
- 637.9
- ],
- [
- -122.849165,
- 48.672273,
- 637
- ],
- [
- -122.849128,
- 48.67226,
- 636.7
- ],
- [
- -122.849091,
- 48.672234,
- 636.6
- ],
- [
- -122.849072,
- 48.67221,
- 636.8
- ],
- [
- -122.849025,
- 48.672189,
- 637.1
- ],
- [
- -122.848988,
- 48.672173,
- 637.6
- ],
- [
- -122.848951,
- 48.672159,
- 638
- ],
- [
- -122.84893,
- 48.672135,
- 638.1
- ],
- [
- -122.848911,
- 48.672103,
- 638.3
- ],
- [
- -122.848886,
- 48.672081,
- 638.5
- ],
- [
- -122.848866,
- 48.672039,
- 639.1
- ],
- [
- -122.848823,
- 48.67199,
- 640.1
- ],
- [
- -122.848786,
- 48.671962,
- 640.3
- ],
- [
- -122.848749,
- 48.671929,
- 640.8
- ],
- [
- -122.848728,
- 48.671892,
- 640.8
- ],
- [
- -122.848718,
- 48.671862,
- 640.8
- ],
- [
- -122.848714,
- 48.671828,
- 640.6
- ],
- [
- -122.848711,
- 48.671792,
- 640.5
- ],
- [
- -122.848722,
- 48.671765,
- 640.4
- ],
- [
- -122.848711,
- 48.671725,
- 640.4
- ],
- [
- -122.848706,
- 48.67169,
- 640.4
- ],
- [
- -122.848695,
- 48.671663,
- 640.5
- ],
- [
- -122.848672,
- 48.671637,
- 640.6
- ],
- [
- -122.848653,
- 48.671612,
- 640.2
- ],
- [
- -122.848635,
- 48.671585,
- 639.8
- ],
- [
- -122.848619,
- 48.671559,
- 639.7
- ],
- [
- -122.848589,
- 48.671527,
- 639.1
- ],
- [
- -122.848558,
- 48.671507,
- 638.1
- ],
- [
- -122.848527,
- 48.671482,
- 637.3
- ],
- [
- -122.848521,
- 48.671453,
- 636.8
- ],
- [
- -122.848513,
- 48.671416,
- 636.3
- ],
- [
- -122.848485,
- 48.671392,
- 636
- ],
- [
- -122.848445,
- 48.671384,
- 635.9
- ],
- [
- -122.848397,
- 48.671365,
- 636
- ],
- [
- -122.848333,
- 48.671349,
- 636.3
- ],
- [
- -122.848295,
- 48.671333,
- 636.6
- ],
- [
- -122.848263,
- 48.671315,
- 636.9
- ],
- [
- -122.84823,
- 48.671283,
- 636.7
- ],
- [
- -122.848219,
- 48.671246,
- 635.9
- ],
- [
- -122.848178,
- 48.67122,
- 635.3
- ],
- [
- -122.848131,
- 48.671211,
- 634.6
- ],
- [
- -122.848084,
- 48.671206,
- 634.3
- ],
- [
- -122.848042,
- 48.671204,
- 634.2
- ],
- [
- -122.847993,
- 48.671203,
- 634
- ],
- [
- -122.847934,
- 48.671208,
- 633.4
- ],
- [
- -122.84789,
- 48.671201,
- 632.9
- ],
- [
- -122.847851,
- 48.671166,
- 633.4
- ],
- [
- -122.847828,
- 48.671141,
- 633.6
- ],
- [
- -122.847803,
- 48.671117,
- 633.7
- ],
- [
- -122.847762,
- 48.671089,
- 633.7
- ],
- [
- -122.847731,
- 48.67107,
- 633.8
- ],
- [
- -122.847688,
- 48.671053,
- 633.2
- ],
- [
- -122.847653,
- 48.671034,
- 632.8
- ],
- [
- -122.847622,
- 48.671014,
- 632.6
- ],
- [
- -122.847599,
- 48.67099,
- 632.7
- ],
- [
- -122.847573,
- 48.670966,
- 632.8
- ],
- [
- -122.847543,
- 48.670945,
- 633
- ],
- [
- -122.847498,
- 48.67092,
- 633.2
- ],
- [
- -122.84746,
- 48.670894,
- 633.5
- ],
- [
- -122.847416,
- 48.670888,
- 633.7
- ],
- [
- -122.847367,
- 48.67087,
- 634.3
- ],
- [
- -122.847336,
- 48.670847,
- 635.2
- ],
- [
- -122.847297,
- 48.670828,
- 635.6
- ],
- [
- -122.847257,
- 48.670819,
- 635.7
- ],
- [
- -122.847215,
- 48.670787,
- 636.3
- ],
- [
- -122.847188,
- 48.670766,
- 636.7
- ],
- [
- -122.847148,
- 48.670754,
- 636.8
- ],
- [
- -122.847126,
- 48.67073,
- 637.3
- ],
- [
- -122.847092,
- 48.670712,
- 637.6
- ],
- [
- -122.847068,
- 48.670668,
- 638.1
- ],
- [
- -122.847047,
- 48.670642,
- 638.4
- ],
- [
- -122.847013,
- 48.670614,
- 638.7
- ],
- [
- -122.846977,
- 48.670595,
- 638.9
- ],
- [
- -122.846938,
- 48.670578,
- 639.2
- ],
- [
- -122.84689,
- 48.670561,
- 639.3
- ],
- [
- -122.846848,
- 48.670537,
- 639.4
- ],
- [
- -122.846806,
- 48.670525,
- 639.7
- ],
- [
- -122.846763,
- 48.670515,
- 640.1
- ],
- [
- -122.846718,
- 48.670514,
- 640.4
- ],
- [
- -122.846676,
- 48.670508,
- 640
- ],
- [
- -122.846625,
- 48.670498,
- 639.5
- ],
- [
- -122.846576,
- 48.670488,
- 639
- ],
- [
- -122.846537,
- 48.670476,
- 638.4
- ],
- [
- -122.846503,
- 48.67046,
- 637
- ],
- [
- -122.846463,
- 48.670455,
- 636
- ],
- [
- -122.846412,
- 48.670468,
- 635.6
- ],
- [
- -122.846364,
- 48.67047,
- 634.8
- ],
- [
- -122.8463,
- 48.670426,
- 633
- ],
- [
- -122.846273,
- 48.670403,
- 633
- ],
- [
- -122.846266,
- 48.670374,
- 633.2
- ],
- [
- -122.846327,
- 48.670342,
- 633.4
- ],
- [
- -122.846354,
- 48.670321,
- 633.5
- ],
- [
- -122.846305,
- 48.670308,
- 633.5
- ],
- [
- -122.846274,
- 48.670354,
- 633.3
- ],
- [
- -122.846243,
- 48.670322,
- 633.4
- ],
- [
- -122.84628,
- 48.670291,
- 633.7
- ],
- [
- -122.846321,
- 48.670276,
- 633.8
- ],
- [
- -122.846372,
- 48.670279,
- 633.8
- ],
- [
- -122.846424,
- 48.670269,
- 634.2
- ],
- [
- -122.84646,
- 48.670253,
- 634.7
- ],
- [
- -122.846501,
- 48.670238,
- 635.1
- ],
- [
- -122.846552,
- 48.670225,
- 634.9
- ],
- [
- -122.84659,
- 48.670205,
- 634.8
- ],
- [
- -122.846626,
- 48.670189,
- 634.5
- ],
- [
- -122.846666,
- 48.670173,
- 633.6
- ],
- [
- -122.846714,
- 48.670168,
- 632.2
- ],
- [
- -122.846745,
- 48.670149,
- 631.6
- ],
- [
- -122.846755,
- 48.670119,
- 631.7
- ],
- [
- -122.846779,
- 48.670092,
- 631.7
- ],
- [
- -122.846831,
- 48.670086,
- 630.2
- ],
- [
- -122.846879,
- 48.670081,
- 629.1
- ],
- [
- -122.846932,
- 48.670069,
- 628.2
- ],
- [
- -122.846987,
- 48.670063,
- 627.4
- ],
- [
- -122.847042,
- 48.67006,
- 627.2
- ],
- [
- -122.847088,
- 48.670045,
- 626.5
- ],
- [
- -122.847131,
- 48.670047,
- 626.4
- ],
- [
- -122.847173,
- 48.670045,
- 626.2
- ],
- [
- -122.847175,
- 48.670017,
- 625
- ],
- [
- -122.84718,
- 48.669983,
- 625.1
- ],
- [
- -122.847188,
- 48.669955,
- 625.5
- ],
- [
- -122.847211,
- 48.669926,
- 625.2
- ],
- [
- -122.847245,
- 48.669904,
- 624.5
- ],
- [
- -122.847281,
- 48.669877,
- 623.6
- ],
- [
- -122.847303,
- 48.669851,
- 623.5
- ],
- [
- -122.847339,
- 48.669827,
- 622.4
- ],
- [
- -122.847354,
- 48.669801,
- 622
- ],
- [
- -122.84735,
- 48.669773,
- 622.5
- ],
- [
- -122.847379,
- 48.669745,
- 621
- ],
- [
- -122.847391,
- 48.669712,
- 620.1
- ],
- [
- -122.847397,
- 48.669677,
- 619.6
- ],
- [
- -122.847385,
- 48.669645,
- 620.2
- ],
- [
- -122.847378,
- 48.669609,
- 620.3
- ],
- [
- -122.84739,
- 48.669581,
- 619.3
- ],
- [
- -122.847411,
- 48.669557,
- 617.6
- ],
- [
- -122.847439,
- 48.669529,
- 615
- ],
- [
- -122.847479,
- 48.669494,
- 611.9
- ],
- [
- -122.847482,
- 48.669461,
- 611.4
- ],
- [
- -122.847483,
- 48.669433,
- 611
- ],
- [
- -122.847505,
- 48.669403,
- 609.7
- ],
- [
- -122.847543,
- 48.669369,
- 607.6
- ],
- [
- -122.84757,
- 48.669345,
- 606.4
- ],
- [
- -122.847598,
- 48.66932,
- 605
- ],
- [
- -122.847627,
- 48.669283,
- 603.4
- ],
- [
- -122.847654,
- 48.669242,
- 602.4
- ],
- [
- -122.84767,
- 48.669206,
- 602.1
- ],
- [
- -122.847672,
- 48.669175,
- 602
- ],
- [
- -122.847692,
- 48.669137,
- 601.3
- ],
- [
- -122.847731,
- 48.669123,
- 599.5
- ],
- [
- -122.847781,
- 48.669105,
- 596.8
- ],
- [
- -122.847827,
- 48.669119,
- 594.8
- ],
- [
- -122.847863,
- 48.669146,
- 592.7
- ],
- [
- -122.847893,
- 48.669167,
- 590.8
- ],
- [
- -122.847918,
- 48.669197,
- 588.8
- ],
- [
- -122.847935,
- 48.669222,
- 586.8
- ],
- [
- -122.847941,
- 48.669256,
- 586.6
- ],
- [
- -122.847957,
- 48.669292,
- 585.7
- ],
- [
- -122.84796,
- 48.669329,
- 586.3
- ],
- [
- -122.847989,
- 48.669358,
- 586
- ],
- [
- -122.848,
- 48.669392,
- 587.2
- ],
- [
- -122.847996,
- 48.669421,
- 588.6
- ],
- [
- -122.848028,
- 48.669442,
- 590.1
- ],
- [
- -122.847983,
- 48.669484,
- 592.2
- ],
- [
- -122.847952,
- 48.669514,
- 593.9
- ],
- [
- -122.847981,
- 48.669493,
- 592.8
- ],
- [
- -122.847991,
- 48.669461,
- 590.9
- ],
- [
- -122.84802,
- 48.669435,
- 589.6
- ],
- [
- -122.848053,
- 48.669413,
- 588.7
- ],
- [
- -122.848072,
- 48.669381,
- 587
- ],
- [
- -122.848084,
- 48.669353,
- 585.5
- ],
- [
- -122.848098,
- 48.669328,
- 583.9
- ],
- [
- -122.84812,
- 48.6693,
- 582.3
- ],
- [
- -122.848146,
- 48.669274,
- 580.9
- ],
- [
- -122.848196,
- 48.669257,
- 580.6
- ],
- [
- -122.848245,
- 48.669233,
- 579.9
- ],
- [
- -122.848283,
- 48.669218,
- 579.4
- ],
- [
- -122.848348,
- 48.669196,
- 578.9
- ],
- [
- -122.848405,
- 48.669184,
- 579.2
- ],
- [
- -122.848448,
- 48.669166,
- 579
- ],
- [
- -122.848505,
- 48.669168,
- 579.7
- ],
- [
- -122.848566,
- 48.669157,
- 579.6
- ],
- [
- -122.848617,
- 48.669162,
- 578.9
- ],
- [
- -122.848664,
- 48.66918,
- 578.1
- ],
- [
- -122.848704,
- 48.669204,
- 577.9
- ],
- [
- -122.848731,
- 48.669226,
- 578
- ],
- [
- -122.84876,
- 48.669247,
- 578.1
- ],
- [
- -122.848712,
- 48.669244,
- 579.7
- ],
- [
- -122.848683,
- 48.669225,
- 579.7
- ],
- [
- -122.848614,
- 48.669238,
- 582.4
- ],
- [
- -122.848558,
- 48.669256,
- 584.3
- ],
- [
- -122.848517,
- 48.669269,
- 585.1
- ],
- [
- -122.848473,
- 48.66926,
- 584.5
- ],
- [
- -122.84849,
- 48.669228,
- 582.9
- ],
- [
- -122.848471,
- 48.669198,
- 581
- ],
- [
- -122.848445,
- 48.669171,
- 579.2
- ],
- [
- -122.848413,
- 48.669153,
- 577.5
- ],
- [
- -122.848367,
- 48.669158,
- 577.1
- ],
- [
- -122.84832,
- 48.669178,
- 577.4
- ],
- [
- -122.848281,
- 48.669188,
- 577.4
- ],
- [
- -122.848237,
- 48.669189,
- 577
- ],
- [
- -122.84823,
- 48.669157,
- 575.3
- ],
- [
- -122.848197,
- 48.669128,
- 573.7
- ],
- [
- -122.848147,
- 48.669113,
- 572.8
- ],
- [
- -122.848122,
- 48.669089,
- 572.7
- ],
- [
- -122.848081,
- 48.669075,
- 574
- ],
- [
- -122.848043,
- 48.669062,
- 576
- ],
- [
- -122.848062,
- 48.669028,
- 575.5
- ],
- [
- -122.848077,
- 48.668998,
- 574.6
- ],
- [
- -122.848101,
- 48.668969,
- 573.7
- ],
- [
- -122.848115,
- 48.668941,
- 573
- ],
- [
- -122.848161,
- 48.668917,
- 570.9
- ],
- [
- -122.848214,
- 48.668903,
- 569.1
- ],
- [
- -122.848277,
- 48.668935,
- 569.3
- ],
- [
- -122.848307,
- 48.668903,
- 568.2
- ],
- [
- -122.848328,
- 48.668871,
- 567.2
- ],
- [
- -122.848341,
- 48.668842,
- 566.5
- ],
- [
- -122.848365,
- 48.668799,
- 565.4
- ],
- [
- -122.848396,
- 48.668762,
- 564.4
- ],
- [
- -122.848432,
- 48.66873,
- 563.7
- ],
- [
- -122.848475,
- 48.668708,
- 563.3
- ],
- [
- -122.848516,
- 48.668687,
- 562.3
- ],
- [
- -122.848569,
- 48.668679,
- 561.2
- ],
- [
- -122.848611,
- 48.668681,
- 560.3
- ],
- [
- -122.848651,
- 48.668693,
- 559.5
- ],
- [
- -122.848693,
- 48.668706,
- 558.3
- ],
- [
- -122.848737,
- 48.668712,
- 556.8
- ],
- [
- -122.848783,
- 48.668718,
- 555.3
- ],
- [
- -122.848828,
- 48.668705,
- 553.4
- ],
- [
- -122.848872,
- 48.668721,
- 552.5
- ],
- [
- -122.848912,
- 48.668731,
- 551.2
- ],
- [
- -122.848936,
- 48.668756,
- 551.3
- ],
- [
- -122.848965,
- 48.668779,
- 551.1
- ],
- [
- -122.849003,
- 48.668795,
- 550.3
- ],
- [
- -122.849043,
- 48.668812,
- 549.7
- ],
- [
- -122.84909,
- 48.668804,
- 548.6
- ],
- [
- -122.849138,
- 48.668804,
- 548
- ],
- [
- -122.849181,
- 48.668818,
- 548.1
- ],
- [
- -122.849204,
- 48.668842,
- 548.6
- ],
- [
- -122.849192,
- 48.668868,
- 549.4
- ],
- [
- -122.849161,
- 48.668888,
- 550.4
- ],
- [
- -122.849113,
- 48.668893,
- 551.5
- ],
- [
- -122.849074,
- 48.668871,
- 551.4
- ],
- [
- -122.849023,
- 48.668868,
- 552.5
- ],
- [
- -122.848975,
- 48.668858,
- 553.4
- ],
- [
- -122.848955,
- 48.668828,
- 553.1
- ],
- [
- -122.848924,
- 48.668807,
- 553.5
- ],
- [
- -122.84888,
- 48.668807,
- 554.9
- ],
- [
- -122.848817,
- 48.668808,
- 557.1
- ],
- [
- -122.84876,
- 48.668797,
- 558.8
- ],
- [
- -122.848727,
- 48.668778,
- 559.2
- ],
- [
- -122.848725,
- 48.668747,
- 558.4
- ],
- [
- -122.848727,
- 48.668711,
- 557.1
- ],
- [
- -122.848726,
- 48.668679,
- 556.1
- ],
- [
- -122.848721,
- 48.668651,
- 555.3
- ],
- [
- -122.848735,
- 48.668624,
- 553.5
- ],
- [
- -122.848731,
- 48.668589,
- 552
- ],
- [
- -122.848739,
- 48.668553,
- 550.1
- ],
- [
- -122.848726,
- 48.668518,
- 548.8
- ],
- [
- -122.848751,
- 48.668492,
- 546.8
- ],
- [
- -122.848786,
- 48.668468,
- 544.2
- ],
- [
- -122.848826,
- 48.668445,
- 542
- ],
- [
- -122.848869,
- 48.668425,
- 540.1
- ],
- [
- -122.848909,
- 48.668406,
- 538.8
- ],
- [
- -122.848952,
- 48.668396,
- 538
- ],
- [
- -122.848945,
- 48.66843,
- 538.9
- ],
- [
- -122.848914,
- 48.668455,
- 540.4
- ],
- [
- -122.848882,
- 48.668484,
- 542.3
- ],
- [
- -122.848842,
- 48.668522,
- 545.1
- ],
- [
- -122.848785,
- 48.66856,
- 548.8
- ],
- [
- -122.848734,
- 48.668582,
- 551.6
- ],
- [
- -122.848738,
- 48.668535,
- 549.2
- ],
- [
- -122.848737,
- 48.668497,
- 547.5
- ],
- [
- -122.848744,
- 48.668452,
- 545
- ],
- [
- -122.84883,
- 48.668402,
- 540
- ],
- [
- -122.848792,
- 48.66838,
- 540.3
- ],
- [
- -122.848736,
- 48.668372,
- 541.3
- ],
- [
- -122.848683,
- 48.668368,
- 542.7
- ],
- [
- -122.848639,
- 48.668363,
- 544.2
- ],
- [
- -122.848619,
- 48.668334,
- 543.4
- ],
- [
- -122.848597,
- 48.668303,
- 542.7
- ],
- [
- -122.84859,
- 48.668271,
- 541.4
- ],
- [
- -122.848616,
- 48.668236,
- 538.4
- ],
- [
- -122.848666,
- 48.668205,
- 535.3
- ],
- [
- -122.848709,
- 48.668176,
- 533.2
- ],
- [
- -122.84874,
- 48.668149,
- 531.4
- ],
- [
- -122.848766,
- 48.668123,
- 530.2
- ],
- [
- -122.848796,
- 48.668102,
- 529.2
- ],
- [
- -122.848832,
- 48.66809,
- 528.6
- ],
- [
- -122.848799,
- 48.668067,
- 528.5
- ],
- [
- -122.848752,
- 48.668061,
- 528.6
- ],
- [
- -122.848706,
- 48.668053,
- 528.4
- ],
- [
- -122.848651,
- 48.668051,
- 528.8
- ],
- [
- -122.848607,
- 48.66806,
- 530.2
- ],
- [
- -122.848634,
- 48.66803,
- 528.1
- ],
- [
- -122.848662,
- 48.667996,
- 526.1
- ],
- [
- -122.848683,
- 48.667955,
- 524.3
- ],
- [
- -122.848708,
- 48.667918,
- 523.1
- ],
- [
- -122.84873,
- 48.667893,
- 521.9
- ],
- [
- -122.848719,
- 48.667862,
- 520.8
- ],
- [
- -122.848735,
- 48.667836,
- 519.5
- ],
- [
- -122.848762,
- 48.667815,
- 518.2
- ],
- [
- -122.84881,
- 48.667811,
- 517.2
- ],
- [
- -122.848861,
- 48.667822,
- 516.5
- ],
- [
- -122.848903,
- 48.667837,
- 516.2
- ],
- [
- -122.848948,
- 48.667854,
- 515.9
- ],
- [
- -122.849001,
- 48.66786,
- 515.2
- ],
- [
- -122.849052,
- 48.667869,
- 515.1
- ],
- [
- -122.849099,
- 48.667875,
- 514.6
- ],
- [
- -122.849141,
- 48.667879,
- 513.9
- ],
- [
- -122.849185,
- 48.667883,
- 512.9
- ],
- [
- -122.849242,
- 48.667886,
- 511.7
- ],
- [
- -122.849271,
- 48.667908,
- 511.8
- ],
- [
- -122.849229,
- 48.667908,
- 513.1
- ],
- [
- -122.849194,
- 48.667922,
- 514.4
- ],
- [
- -122.849154,
- 48.667939,
- 515.7
- ],
- [
- -122.84911,
- 48.667934,
- 516.4
- ],
- [
- -122.849069,
- 48.667926,
- 516.9
- ],
- [
- -122.849029,
- 48.667908,
- 516.9
- ],
- [
- -122.848997,
- 48.667887,
- 516.5
- ],
- [
- -122.848969,
- 48.667861,
- 515.8
- ],
- [
- -122.848947,
- 48.667832,
- 515
- ],
- [
- -122.848913,
- 48.667817,
- 515.1
- ],
- [
- -122.848861,
- 48.667811,
- 516
- ],
- [
- -122.848827,
- 48.66779,
- 515.9
- ],
- [
- -122.848851,
- 48.667756,
- 514.2
- ],
- [
- -122.848889,
- 48.667716,
- 511.8
- ],
- [
- -122.848933,
- 48.667684,
- 510
- ],
- [
- -122.84896,
- 48.667663,
- 508.7
- ],
- [
- -122.848961,
- 48.667629,
- 507.6
- ],
- [
- -122.848951,
- 48.667598,
- 507
- ],
- [
- -122.848972,
- 48.667553,
- 505
- ],
- [
- -122.849005,
- 48.667514,
- 502.5
- ],
- [
- -122.849046,
- 48.667509,
- 500.6
- ],
- [
- -122.849088,
- 48.667513,
- 499.1
- ],
- [
- -122.849129,
- 48.667515,
- 497.8
- ],
- [
- -122.849165,
- 48.667535,
- 497.6
- ],
- [
- -122.849212,
- 48.667541,
- 496.5
- ],
- [
- -122.849255,
- 48.66753,
- 494.8
- ],
- [
- -122.849319,
- 48.667518,
- 492.6
- ],
- [
- -122.84937,
- 48.667525,
- 491.8
- ],
- [
- -122.849413,
- 48.667544,
- 491.7
- ],
- [
- -122.849453,
- 48.66756,
- 491.5
- ],
- [
- -122.849499,
- 48.667569,
- 491.4
- ],
- [
- -122.849537,
- 48.667589,
- 491.8
- ],
- [
- -122.849571,
- 48.667605,
- 492.8
- ],
- [
- -122.849603,
- 48.667626,
- 494.1
- ],
- [
- -122.849651,
- 48.667617,
- 492.4
- ],
- [
- -122.849685,
- 48.667595,
- 490.1
- ],
- [
- -122.849727,
- 48.667585,
- 488.2
- ],
- [
- -122.849766,
- 48.667575,
- 486.8
- ],
- [
- -122.849814,
- 48.667583,
- 486.6
- ],
- [
- -122.849853,
- 48.667607,
- 487.6
- ],
- [
- -122.849896,
- 48.667648,
- 488.4
- ],
- [
- -122.849938,
- 48.667688,
- 488.7
- ],
- [
- -122.849889,
- 48.667679,
- 489.1
- ],
- [
- -122.849846,
- 48.667711,
- 490.6
- ],
- [
- -122.849815,
- 48.667735,
- 491.6
- ],
- [
- -122.849852,
- 48.667709,
- 490.5
- ],
- [
- -122.8499,
- 48.667682,
- 489.1
- ],
- [
- -122.849945,
- 48.667661,
- 487.8
- ],
- [
- -122.84999,
- 48.66765,
- 486.5
- ],
- [
- -122.850035,
- 48.667646,
- 485.9
- ],
- [
- -122.850081,
- 48.667658,
- 486
- ],
- [
- -122.850129,
- 48.667672,
- 485.2
- ],
- [
- -122.850166,
- 48.667689,
- 484.1
- ],
- [
- -122.850208,
- 48.667703,
- 483.7
- ],
- [
- -122.850249,
- 48.667713,
- 483.2
- ],
- [
- -122.850291,
- 48.667725,
- 483.1
- ],
- [
- -122.850333,
- 48.667745,
- 482.3
- ],
- [
- -122.850359,
- 48.667768,
- 482.1
- ],
- [
- -122.85039,
- 48.66779,
- 482.6
- ],
- [
- -122.850438,
- 48.667796,
- 481.6
- ],
- [
- -122.850482,
- 48.667803,
- 481
- ],
- [
- -122.850526,
- 48.667807,
- 479.9
- ],
- [
- -122.850572,
- 48.667801,
- 478.3
- ],
- [
- -122.85062,
- 48.667804,
- 477.2
- ],
- [
- -122.850665,
- 48.667813,
- 476.2
- ],
- [
- -122.850709,
- 48.667825,
- 475.4
- ],
- [
- -122.850742,
- 48.667844,
- 475.8
- ],
- [
- -122.850781,
- 48.667857,
- 475.8
- ],
- [
- -122.850826,
- 48.667868,
- 475.1
- ],
- [
- -122.850876,
- 48.667869,
- 473.3
- ],
- [
- -122.850918,
- 48.667869,
- 471.7
- ],
- [
- -122.850959,
- 48.667878,
- 470
- ],
- [
- -122.851005,
- 48.667901,
- 469.4
- ],
- [
- -122.851046,
- 48.667924,
- 469.8
- ],
- [
- -122.851088,
- 48.667945,
- 469.7
- ],
- [
- -122.851126,
- 48.667958,
- 469
- ],
- [
- -122.851161,
- 48.667975,
- 468.7
- ],
- [
- -122.851191,
- 48.667999,
- 469
- ],
- [
- -122.851215,
- 48.668026,
- 469.8
- ],
- [
- -122.851259,
- 48.668031,
- 468.8
- ],
- [
- -122.8513,
- 48.668026,
- 467.5
- ],
- [
- -122.85134,
- 48.668037,
- 466.9
- ],
- [
- -122.851373,
- 48.668066,
- 466.8
- ],
- [
- -122.851415,
- 48.668082,
- 466.5
- ],
- [
- -122.851467,
- 48.668083,
- 465.1
- ],
- [
- -122.851507,
- 48.668075,
- 464
- ],
- [
- -122.851546,
- 48.668091,
- 463.6
- ],
- [
- -122.851584,
- 48.668112,
- 463.4
- ],
- [
- -122.851627,
- 48.668113,
- 462.6
- ],
- [
- -122.851627,
- 48.66815,
- 463.6
- ],
- [
- -122.851608,
- 48.668177,
- 464.9
- ],
- [
- -122.85158,
- 48.668201,
- 466.6
- ],
- [
- -122.851616,
- 48.668225,
- 466.3
- ],
- [
- -122.851724,
- 48.668221,
- 464
- ],
- [
- -122.851765,
- 48.668205,
- 463.3
- ],
- [
- -122.851803,
- 48.668183,
- 462.6
- ],
- [
- -122.851849,
- 48.668174,
- 462.2
- ],
- [
- -122.851885,
- 48.668151,
- 461.5
- ],
- [
- -122.851936,
- 48.668131,
- 460.7
- ],
- [
- -122.851979,
- 48.668133,
- 460.3
- ],
- [
- -122.852035,
- 48.668142,
- 459.2
- ],
- [
- -122.851996,
- 48.668156,
- 460.8
- ],
- [
- -122.852022,
- 48.668134,
- 459.3
- ],
- [
- -122.851982,
- 48.668122,
- 459.9
- ],
- [
- -122.851947,
- 48.668107,
- 459.8
- ],
- [
- -122.851904,
- 48.66812,
- 460.5
- ],
- [
- -122.851859,
- 48.668143,
- 461.3
- ],
- [
- -122.851817,
- 48.668127,
- 461.1
- ],
- [
- -122.851776,
- 48.668117,
- 460.9
- ],
- [
- -122.85175,
- 48.668068,
- 459.3
- ],
- [
- -122.85171,
- 48.668056,
- 459.3
- ],
- [
- -122.851712,
- 48.668023,
- 458.3
- ],
- [
- -122.851686,
- 48.668002,
- 458.4
- ],
- [
- -122.851628,
- 48.668009,
- 459.7
- ],
- [
- -122.851587,
- 48.667995,
- 459.7
- ],
- [
- -122.851541,
- 48.667985,
- 460.4
- ],
- [
- -122.851515,
- 48.667964,
- 460.4
- ],
- [
- -122.851498,
- 48.667938,
- 460.1
- ],
- [
- -122.851463,
- 48.667916,
- 460.2
- ],
- [
- -122.851441,
- 48.667891,
- 459.6
- ],
- [
- -122.851384,
- 48.667879,
- 460.2
- ],
- [
- -122.851342,
- 48.667881,
- 461
- ],
- [
- -122.851283,
- 48.667882,
- 462.1
- ],
- [
- -122.851242,
- 48.667876,
- 462.7
- ],
- [
- -122.851205,
- 48.667857,
- 462.8
- ],
- [
- -122.851182,
- 48.667833,
- 462.3
- ],
- [
- -122.851168,
- 48.667803,
- 461.5
- ],
- [
- -122.851134,
- 48.667774,
- 461.1
- ],
- [
- -122.851106,
- 48.667744,
- 460.5
- ],
- [
- -122.851082,
- 48.667717,
- 459.7
- ],
- [
- -122.851053,
- 48.667693,
- 459
- ],
- [
- -122.85102,
- 48.667672,
- 458.3
- ],
- [
- -122.850978,
- 48.667652,
- 458.1
- ],
- [
- -122.850938,
- 48.667652,
- 458.8
- ],
- [
- -122.850893,
- 48.667658,
- 459.6
- ],
- [
- -122.850839,
- 48.667657,
- 460.7
- ],
- [
- -122.850798,
- 48.667647,
- 461.5
- ],
- [
- -122.850775,
- 48.667622,
- 460.7
- ],
- [
- -122.850761,
- 48.667592,
- 459.3
- ],
- [
- -122.850768,
- 48.667552,
- 456.6
- ],
- [
- -122.85078,
- 48.667519,
- 454.4
- ],
- [
- -122.850801,
- 48.66749,
- 452.4
- ],
- [
- -122.850834,
- 48.667464,
- 450.5
- ],
- [
- -122.850859,
- 48.667438,
- 448.8
- ],
- [
- -122.850873,
- 48.667412,
- 447.7
- ],
- [
- -122.850917,
- 48.667383,
- 446.1
- ],
- [
- -122.850967,
- 48.66736,
- 444.6
- ],
- [
- -122.851013,
- 48.667348,
- 443.7
- ],
- [
- -122.851051,
- 48.667331,
- 442.8
- ],
- [
- -122.851081,
- 48.667312,
- 441.9
- ],
- [
- -122.851121,
- 48.667295,
- 441.2
- ],
- [
- -122.851151,
- 48.667271,
- 440.4
- ],
- [
- -122.851193,
- 48.667263,
- 440
- ],
- [
- -122.851246,
- 48.66725,
- 439.2
- ],
- [
- -122.851274,
- 48.667243,
- 438.6
- ],
- [
- -122.851331,
- 48.667245,
- 437.7
- ],
- [
- -122.851374,
- 48.667237,
- 436.9
- ],
- [
- -122.851429,
- 48.667231,
- 435.8
- ],
- [
- -122.851475,
- 48.66721,
- 434.3
- ],
- [
- -122.851517,
- 48.667195,
- 432.9
- ],
- [
- -122.85156,
- 48.66718,
- 431.5
- ],
- [
- -122.851607,
- 48.667156,
- 429.4
- ],
- [
- -122.851643,
- 48.667135,
- 428.1
- ],
- [
- -122.851709,
- 48.667132,
- 426.7
- ],
- [
- -122.851772,
- 48.667132,
- 425.6
- ],
- [
- -122.851815,
- 48.667132,
- 424.9
- ],
- [
- -122.851858,
- 48.667152,
- 425
- ],
- [
- -122.851913,
- 48.667166,
- 424.7
- ],
- [
- -122.851953,
- 48.66719,
- 425
- ],
- [
- -122.851976,
- 48.667233,
- 426.4
- ],
- [
- -122.851999,
- 48.667262,
- 427.2
- ],
- [
- -122.852038,
- 48.667269,
- 426.6
- ],
- [
- -122.852077,
- 48.667291,
- 426.7
- ],
- [
- -122.852051,
- 48.667317,
- 428
- ],
- [
- -122.852009,
- 48.667347,
- 429.9
- ],
- [
- -122.851978,
- 48.667368,
- 430.7
- ],
- [
- -122.852005,
- 48.667345,
- 429.8
- ],
- [
- -122.852044,
- 48.667318,
- 428.2
- ],
- [
- -122.852043,
- 48.667288,
- 427.2
- ],
- [
- -122.852007,
- 48.667273,
- 427.5
- ],
- [
- -122.851955,
- 48.66726,
- 427.8
- ],
- [
- -122.851934,
- 48.66723,
- 426.9
- ],
- [
- -122.851937,
- 48.667198,
- 425.6
- ],
- [
- -122.851915,
- 48.667173,
- 424.9
- ],
- [
- -122.851902,
- 48.667138,
- 423.9
- ],
- [
- -122.851909,
- 48.66711,
- 422.9
- ],
- [
- -122.851881,
- 48.66708,
- 422.6
- ],
- [
- -122.851855,
- 48.667053,
- 422.8
- ],
- [
- -122.851832,
- 48.66703,
- 423.1
- ],
- [
- -122.851836,
- 48.667002,
- 422.9
- ],
- [
- -122.851813,
- 48.66698,
- 423.1
- ],
- [
- -122.851853,
- 48.666942,
- 422.1
- ],
- [
- -122.851839,
- 48.666908,
- 421.6
- ],
- [
- -122.851827,
- 48.666879,
- 421
- ],
- [
- -122.851833,
- 48.666842,
- 420.1
- ],
- [
- -122.851835,
- 48.666813,
- 419.7
- ],
- [
- -122.85185,
- 48.666786,
- 419.4
- ],
- [
- -122.851862,
- 48.666747,
- 418.7
- ],
- [
- -122.851874,
- 48.666716,
- 418.1
- ],
- [
- -122.85186,
- 48.666688,
- 418.4
- ],
- [
- -122.851892,
- 48.666651,
- 417.5
- ],
- [
- -122.851899,
- 48.666619,
- 416.4
- ],
- [
- -122.851904,
- 48.666587,
- 415.6
- ],
- [
- -122.851925,
- 48.666563,
- 414.4
- ],
- [
- -122.851942,
- 48.66653,
- 413.4
- ],
- [
- -122.851958,
- 48.666497,
- 412.3
- ],
- [
- -122.851969,
- 48.666467,
- 411
- ],
- [
- -122.851987,
- 48.666437,
- 409.6
- ],
- [
- -122.852001,
- 48.666409,
- 408.6
- ],
- [
- -122.852038,
- 48.666388,
- 407.5
- ],
- [
- -122.852075,
- 48.666356,
- 406
- ],
- [
- -122.852113,
- 48.666335,
- 404.7
- ],
- [
- -122.852145,
- 48.666317,
- 403.3
- ],
- [
- -122.852187,
- 48.6663,
- 401.6
- ],
- [
- -122.852236,
- 48.666306,
- 400.6
- ],
- [
- -122.852278,
- 48.666311,
- 399.5
- ],
- [
- -122.852313,
- 48.666335,
- 399.2
- ],
- [
- -122.852336,
- 48.666357,
- 399.2
- ],
- [
- -122.852363,
- 48.666382,
- 399.4
- ],
- [
- -122.852407,
- 48.666385,
- 398
- ],
- [
- -122.852477,
- 48.66639,
- 396
- ],
- [
- -122.852529,
- 48.66639,
- 394.7
- ],
- [
- -122.852576,
- 48.666396,
- 393.6
- ],
- [
- -122.852557,
- 48.666423,
- 394.8
- ],
- [
- -122.852586,
- 48.666442,
- 394.6
- ],
- [
- -122.852634,
- 48.666462,
- 394.6
- ],
- [
- -122.852658,
- 48.66648,
- 394.7
- ],
- [
- -122.852682,
- 48.666505,
- 395
- ],
- [
- -122.852714,
- 48.666531,
- 395.2
- ],
- [
- -122.852739,
- 48.666554,
- 395.4
- ],
- [
- -122.852764,
- 48.66653,
- 394.3
- ],
- [
- -122.852775,
- 48.666497,
- 393
- ],
- [
- -122.852821,
- 48.666498,
- 391.9
- ],
- [
- -122.852871,
- 48.66649,
- 390.4
- ],
- [
- -122.852912,
- 48.666513,
- 390
- ],
- [
- -122.852937,
- 48.666539,
- 389.9
- ],
- [
- -122.852979,
- 48.666529,
- 388.5
- ],
- [
- -122.853021,
- 48.666544,
- 387.8
- ],
- [
- -122.853042,
- 48.666568,
- 387.9
- ],
- [
- -122.853072,
- 48.666593,
- 388
- ],
- [
- -122.853111,
- 48.666605,
- 387.7
- ],
- [
- -122.853149,
- 48.666615,
- 387.3
- ],
- [
- -122.853163,
- 48.666649,
- 388
- ],
- [
- -122.853206,
- 48.666665,
- 388
- ],
- [
- -122.853255,
- 48.666666,
- 386.9
- ],
- [
- -122.853301,
- 48.666661,
- 385.7
- ],
- [
- -122.853344,
- 48.666655,
- 384.7
- ],
- [
- -122.853382,
- 48.666675,
- 384.5
- ],
- [
- -122.853415,
- 48.666701,
- 384.7
- ],
- [
- -122.853467,
- 48.666713,
- 384
- ],
- [
- -122.853513,
- 48.666694,
- 382.4
- ],
- [
- -122.853545,
- 48.666715,
- 382.1
- ],
- [
- -122.853564,
- 48.666746,
- 382.4
- ],
- [
- -122.853591,
- 48.666767,
- 381.9
- ],
- [
- -122.853647,
- 48.666767,
- 380.5
- ],
- [
- -122.853681,
- 48.666784,
- 379.9
- ],
- [
- -122.85371,
- 48.666806,
- 379.7
- ],
- [
- -122.853752,
- 48.666798,
- 378.9
- ],
- [
- -122.853785,
- 48.666781,
- 377.8
- ],
- [
- -122.853812,
- 48.666754,
- 375.7
- ],
- [
- -122.853818,
- 48.666787,
- 377.1
- ],
- [
- -122.85382,
- 48.666817,
- 378.1
- ],
- [
- -122.853824,
- 48.666844,
- 378.7
- ],
- [
- -122.853816,
- 48.666882,
- 380.1
- ],
- [
- -122.853792,
- 48.666914,
- 381.5
- ],
- [
- -122.853759,
- 48.66689,
- 380.9
- ],
- [
- -122.853734,
- 48.666867,
- 380.8
- ],
- [
- -122.853692,
- 48.666865,
- 381.3
- ],
- [
- -122.853644,
- 48.666857,
- 382.4
- ],
- [
- -122.853586,
- 48.666852,
- 384
- ],
- [
- -122.853543,
- 48.666842,
- 385.1
- ],
- [
- -122.853558,
- 48.666814,
- 384
- ],
- [
- -122.85351,
- 48.666805,
- 385.2
- ],
- [
- -122.853476,
- 48.666784,
- 385.5
- ],
- [
- -122.853461,
- 48.666757,
- 385.3
- ],
- [
- -122.853469,
- 48.666728,
- 384.3
- ],
- [
- -122.853466,
- 48.666699,
- 383.6
- ],
- [
- -122.853463,
- 48.666671,
- 382.8
- ],
- [
- -122.853459,
- 48.666642,
- 381.8
- ],
- [
- -122.853442,
- 48.666615,
- 381.3
- ],
- [
- -122.85344,
- 48.666586,
- 380.3
- ],
- [
- -122.853443,
- 48.666559,
- 379.2
- ],
- [
- -122.853452,
- 48.666531,
- 377.9
- ],
- [
- -122.853448,
- 48.666493,
- 377
- ],
- [
- -122.853434,
- 48.666461,
- 376.5
- ],
- [
- -122.853425,
- 48.666433,
- 376
- ],
- [
- -122.853444,
- 48.666409,
- 374.8
- ],
- [
- -122.853471,
- 48.666381,
- 373.6
- ],
- [
- -122.853505,
- 48.666357,
- 372.5
- ],
- [
- -122.853535,
- 48.666337,
- 371.6
- ],
- [
- -122.85354,
- 48.666308,
- 370.9
- ],
- [
- -122.853517,
- 48.666282,
- 370.6
- ],
- [
- -122.853486,
- 48.666261,
- 370.4
- ],
- [
- -122.853442,
- 48.666246,
- 371
- ],
- [
- -122.853411,
- 48.666224,
- 371.1
- ],
- [
- -122.853392,
- 48.666197,
- 370.9
- ],
- [
- -122.853364,
- 48.666171,
- 370.9
- ],
- [
- -122.853379,
- 48.666142,
- 369.5
- ],
- [
- -122.85339,
- 48.666111,
- 368.4
- ],
- [
- -122.853371,
- 48.66608,
- 368.1
- ],
- [
- -122.853344,
- 48.666049,
- 368
- ],
- [
- -122.853327,
- 48.666021,
- 367.3
- ],
- [
- -122.853303,
- 48.665995,
- 366.9
- ],
- [
- -122.853259,
- 48.66599,
- 367.4
- ],
- [
- -122.853251,
- 48.665963,
- 366.8
- ],
- [
- -122.853216,
- 48.665929,
- 366.3
- ],
- [
- -122.853185,
- 48.6659,
- 365.6
- ],
- [
- -122.853173,
- 48.665873,
- 364.7
- ],
- [
- -122.853133,
- 48.665864,
- 365
- ],
- [
- -122.853135,
- 48.665834,
- 364.3
- ],
- [
- -122.853132,
- 48.665806,
- 363.9
- ],
- [
- -122.85309,
- 48.665789,
- 364.4
- ],
- [
- -122.853068,
- 48.665758,
- 364
- ],
- [
- -122.85305,
- 48.665726,
- 363.3
- ],
- [
- -122.853037,
- 48.665695,
- 362.1
- ],
- [
- -122.852998,
- 48.665674,
- 362.2
- ],
- [
- -122.852998,
- 48.665635,
- 360.7
- ],
- [
- -122.852991,
- 48.665608,
- 359.8
- ],
- [
- -122.853024,
- 48.665575,
- 358
- ],
- [
- -122.853046,
- 48.665549,
- 356.7
- ],
- [
- -122.853078,
- 48.665525,
- 355.4
- ],
- [
- -122.853113,
- 48.665504,
- 354.1
- ],
- [
- -122.85314,
- 48.66548,
- 352.7
- ],
- [
- -122.853174,
- 48.665455,
- 351
- ],
- [
- -122.853204,
- 48.665436,
- 349.8
- ],
- [
- -122.853254,
- 48.665438,
- 349
- ],
- [
- -122.853298,
- 48.66543,
- 347.9
- ],
- [
- -122.853338,
- 48.665438,
- 347.5
- ],
- [
- -122.853382,
- 48.665448,
- 346.8
- ],
- [
- -122.853429,
- 48.665459,
- 346.4
- ],
- [
- -122.853485,
- 48.66546,
- 345.4
- ],
- [
- -122.853535,
- 48.665455,
- 344.2
- ],
- [
- -122.853575,
- 48.665465,
- 342.8
- ],
- [
- -122.85361,
- 48.665481,
- 341.6
- ],
- [
- -122.853641,
- 48.665506,
- 341.5
- ],
- [
- -122.853683,
- 48.66552,
- 341.6
- ],
- [
- -122.853735,
- 48.665531,
- 341
- ],
- [
- -122.85378,
- 48.665544,
- 340.2
- ],
- [
- -122.85381,
- 48.665568,
- 340.3
- ],
- [
- -122.853875,
- 48.665575,
- 338.3
- ],
- [
- -122.853866,
- 48.665603,
- 339.6
- ],
- [
- -122.853901,
- 48.665626,
- 339
- ],
- [
- -122.853947,
- 48.665631,
- 337.4
- ],
- [
- -122.853988,
- 48.665639,
- 336.4
- ],
- [
- -122.854022,
- 48.665658,
- 335.7
- ],
- [
- -122.854068,
- 48.66567,
- 334.8
- ],
- [
- -122.8541,
- 48.665698,
- 334.9
- ],
- [
- -122.854096,
- 48.665732,
- 335.7
- ],
- [
- -122.854094,
- 48.665762,
- 336.5
- ],
- [
- -122.854074,
- 48.665787,
- 337.9
- ],
- [
- -122.854052,
- 48.665758,
- 337.6
- ],
- [
- -122.854011,
- 48.665747,
- 338.8
- ],
- [
- -122.853966,
- 48.66574,
- 340.1
- ],
- [
- -122.853922,
- 48.665732,
- 341.3
- ],
- [
- -122.853912,
- 48.665695,
- 340.5
- ],
- [
- -122.853907,
- 48.665665,
- 339.9
- ],
- [
- -122.85391,
- 48.665638,
- 339
- ],
- [
- -122.853918,
- 48.665604,
- 337.7
- ],
- [
- -122.853917,
- 48.66557,
- 336.6
- ],
- [
- -122.853935,
- 48.665544,
- 335.6
- ],
- [
- -122.853914,
- 48.665514,
- 334.7
- ],
- [
- -122.853895,
- 48.665481,
- 334
- ],
- [
- -122.853897,
- 48.665446,
- 332.5
- ],
- [
- -122.853922,
- 48.665413,
- 330.2
- ],
- [
- -122.853932,
- 48.665385,
- 329.1
- ],
- [
- -122.853897,
- 48.66537,
- 329.2
- ],
- [
- -122.853872,
- 48.665344,
- 328.6
- ],
- [
- -122.85388,
- 48.665304,
- 327.2
- ],
- [
- -122.853856,
- 48.665272,
- 327.3
- ],
- [
- -122.85385,
- 48.665244,
- 326.9
- ],
- [
- -122.853832,
- 48.665216,
- 326.9
- ],
- [
- -122.853833,
- 48.665185,
- 326.3
- ],
- [
- -122.853837,
- 48.665156,
- 325.9
- ],
- [
- -122.853826,
- 48.665118,
- 325.2
- ],
- [
- -122.853839,
- 48.665091,
- 323.9
- ],
- [
- -122.853867,
- 48.66507,
- 322.7
- ],
- [
- -122.853896,
- 48.665041,
- 321.3
- ],
- [
- -122.853916,
- 48.665068,
- 322
- ],
- [
- -122.853917,
- 48.665102,
- 322.9
- ],
- [
- -122.853964,
- 48.665107,
- 322.5
- ],
- [
- -122.854063,
- 48.665088,
- 319.7
- ],
- [
- -122.854034,
- 48.66511,
- 320.3
- ],
- [
- -122.854048,
- 48.665069,
- 320.1
- ],
- [
- -122.854062,
- 48.665038,
- 319.6
- ],
- [
- -122.854076,
- 48.664991,
- 318.1
- ],
- [
- -122.854048,
- 48.664957,
- 317.3
- ],
- [
- -122.853998,
- 48.664967,
- 318.3
- ],
- [
- -122.854004,
- 48.664935,
- 316.8
- ],
- [
- -122.853959,
- 48.664937,
- 317
- ],
- [
- -122.853908,
- 48.664943,
- 317.4
- ],
- [
- -122.853877,
- 48.664916,
- 317
- ],
- [
- -122.853848,
- 48.664891,
- 316.9
- ],
- [
- -122.853807,
- 48.664883,
- 318
- ],
- [
- -122.853784,
- 48.664861,
- 318.4
- ],
- [
- -122.85375,
- 48.664844,
- 319.3
- ],
- [
- -122.853774,
- 48.664822,
- 318
- ],
- [
- -122.853793,
- 48.664794,
- 316.6
- ],
- [
- -122.853826,
- 48.664773,
- 314.9
- ],
- [
- -122.853875,
- 48.664768,
- 313.5
- ],
- [
- -122.853915,
- 48.664755,
- 312.2
- ],
- [
- -122.853933,
- 48.664727,
- 311
- ],
- [
- -122.853963,
- 48.664698,
- 309.5
- ],
- [
- -122.854004,
- 48.664689,
- 308.4
- ],
- [
- -122.854035,
- 48.664668,
- 307
- ],
- [
- -122.854013,
- 48.664644,
- 306.8
- ],
- [
- -122.853973,
- 48.664649,
- 307.7
- ],
- [
- -122.85393,
- 48.664657,
- 308.6
- ],
- [
- -122.853877,
- 48.664659,
- 309.9
- ],
- [
- -122.853859,
- 48.664633,
- 309.5
- ],
- [
- -122.85387,
- 48.664604,
- 308.2
- ],
- [
- -122.853883,
- 48.66457,
- 306.6
- ],
- [
- -122.853872,
- 48.664539,
- 306
- ],
- [
- -122.853849,
- 48.664507,
- 305.9
- ],
- [
- -122.853838,
- 48.664467,
- 304.9
- ],
- [
- -122.853852,
- 48.664439,
- 303.5
- ],
- [
- -122.853879,
- 48.664415,
- 301.9
- ],
- [
- -122.853875,
- 48.664383,
- 300.9
- ],
- [
- -122.853882,
- 48.664346,
- 299.6
- ],
- [
- -122.853894,
- 48.664315,
- 298.3
- ],
- [
- -122.853899,
- 48.664287,
- 297.6
- ],
- [
- -122.853905,
- 48.664252,
- 297.1
- ],
- [
- -122.853919,
- 48.664222,
- 296.3
- ],
- [
- -122.853926,
- 48.664181,
- 295.7
- ],
- [
- -122.853955,
- 48.664142,
- 294.8
- ],
- [
- -122.853997,
- 48.664122,
- 293.6
- ],
- [
- -122.854036,
- 48.664112,
- 292.4
- ],
- [
- -122.854067,
- 48.664091,
- 291.2
- ],
- [
- -122.854034,
- 48.664061,
- 291.6
- ],
- [
- -122.854042,
- 48.664029,
- 291.1
- ],
- [
- -122.85406,
- 48.664001,
- 290.5
- ],
- [
- -122.854092,
- 48.663972,
- 289.4
- ],
- [
- -122.854108,
- 48.663941,
- 289
- ],
- [
- -122.854127,
- 48.663915,
- 288.7
- ],
- [
- -122.854143,
- 48.663887,
- 288.5
- ],
- [
- -122.854175,
- 48.663853,
- 288.2
- ],
- [
- -122.854209,
- 48.663829,
- 288
- ],
- [
- -122.854254,
- 48.663809,
- 287.5
- ],
- [
- -122.854311,
- 48.66379,
- 287.4
- ],
- [
- -122.854366,
- 48.663773,
- 287.7
- ],
- [
- -122.854412,
- 48.663764,
- 288.1
- ],
- [
- -122.854463,
- 48.663762,
- 288.8
- ],
- [
- -122.854507,
- 48.663772,
- 289.2
- ],
- [
- -122.854536,
- 48.663792,
- 289.3
- ],
- [
- -122.854598,
- 48.663789,
- 289.4
- ],
- [
- -122.854641,
- 48.663781,
- 289.1
- ],
- [
- -122.854683,
- 48.663773,
- 287.7
- ],
- [
- -122.854727,
- 48.66377,
- 286.2
- ],
- [
- -122.854778,
- 48.663774,
- 285.2
- ],
- [
- -122.854803,
- 48.663802,
- 284.7
- ],
- [
- -122.854824,
- 48.663829,
- 284.3
- ],
- [
- -122.854874,
- 48.663843,
- 283.1
- ],
- [
- -122.854935,
- 48.66385,
- 281.8
- ],
- [
- -122.854971,
- 48.663867,
- 281.4
- ],
- [
- -122.855013,
- 48.663877,
- 281.2
- ],
- [
- -122.85507,
- 48.66388,
- 281
- ],
- [
- -122.855113,
- 48.663877,
- 280.5
- ],
- [
- -122.855155,
- 48.663877,
- 279.7
- ],
- [
- -122.8552,
- 48.663883,
- 278.9
- ],
- [
- -122.855249,
- 48.663908,
- 278.8
- ],
- [
- -122.855272,
- 48.663932,
- 278.9
- ],
- [
- -122.85528,
- 48.663962,
- 279.4
- ],
- [
- -122.855312,
- 48.663985,
- 279.5
- ],
- [
- -122.855361,
- 48.663982,
- 278.9
- ],
- [
- -122.855329,
- 48.664005,
- 279.7
- ],
- [
- -122.855265,
- 48.664021,
- 281
- ],
- [
- -122.855236,
- 48.664,
- 280.8
- ],
- [
- -122.855221,
- 48.663974,
- 280.2
- ],
- [
- -122.855219,
- 48.663944,
- 279.6
- ],
- [
- -122.855216,
- 48.663913,
- 279.2
- ],
- [
- -122.855224,
- 48.66387,
- 278.5
- ],
- [
- -122.855239,
- 48.663838,
- 278
- ],
- [
- -122.855242,
- 48.66381,
- 277.5
- ],
- [
- -122.855236,
- 48.663779,
- 277.1
- ],
- [
- -122.855215,
- 48.663749,
- 276.6
- ],
- [
- -122.855208,
- 48.663722,
- 276.2
- ],
- [
- -122.855173,
- 48.663696,
- 275.8
- ],
- [
- -122.855158,
- 48.663668,
- 275.7
- ],
- [
- -122.855125,
- 48.663646,
- 275.7
- ],
- [
- -122.855088,
- 48.663618,
- 275.9
- ],
- [
- -122.855063,
- 48.663588,
- 275.9
- ],
- [
- -122.855059,
- 48.663552,
- 275.3
- ],
- [
- -122.855022,
- 48.663539,
- 275.6
- ],
- [
- -122.855011,
- 48.663498,
- 275
- ],
- [
- -122.855015,
- 48.663467,
- 274.5
- ],
- [
- -122.85503,
- 48.66342,
- 274.2
- ],
- [
- -122.85503,
- 48.66338,
- 274.2
- ],
- [
- -122.855034,
- 48.66334,
- 274.1
- ],
- [
- -122.855032,
- 48.663304,
- 274
- ],
- [
- -122.855039,
- 48.663277,
- 273.6
- ],
- [
- -122.855044,
- 48.663249,
- 273
- ],
- [
- -122.855046,
- 48.663217,
- 272.2
- ],
- [
- -122.855,
- 48.663213,
- 272.5
- ],
- [
- -122.854966,
- 48.663188,
- 272.1
- ],
- [
- -122.854915,
- 48.663179,
- 271.8
- ],
- [
- -122.85487,
- 48.663168,
- 270.1
- ],
- [
- -122.854818,
- 48.663173,
- 269.7
- ],
- [
- -122.854774,
- 48.663163,
- 270.1
- ],
- [
- -122.85477,
- 48.66312,
- 267.2
- ],
- [
- -122.854761,
- 48.663088,
- 266.5
- ],
- [
- -122.85473,
- 48.663063,
- 266.1
- ],
- [
- -122.854702,
- 48.663037,
- 266
- ],
- [
- -122.854701,
- 48.663009,
- 265.5
- ],
- [
- -122.854644,
- 48.662987,
- 266.1
- ],
- [
- -122.854617,
- 48.662958,
- 265.9
- ],
- [
- -122.854577,
- 48.662944,
- 266.5
- ],
- [
- -122.854577,
- 48.662912,
- 265.3
- ],
- [
- -122.854574,
- 48.662872,
- 264.3
- ],
- [
- -122.854575,
- 48.662833,
- 264.1
- ],
- [
- -122.854585,
- 48.662802,
- 264.4
- ],
- [
- -122.854568,
- 48.662775,
- 264.4
- ],
- [
- -122.854521,
- 48.662785,
- 263.4
- ],
- [
- -122.854467,
- 48.662785,
- 263.9
- ],
- [
- -122.854455,
- 48.662756,
- 263.4
- ],
- [
- -122.854423,
- 48.662725,
- 262.8
- ],
- [
- -122.854399,
- 48.662698,
- 262.8
- ],
- [
- -122.854357,
- 48.662702,
- 262.7
- ],
- [
- -122.854319,
- 48.662712,
- 263.5
- ],
- [
- -122.854261,
- 48.662708,
- 264.8
- ],
- [
- -122.854216,
- 48.662708,
- 266.3
- ],
- [
- -122.854158,
- 48.662725,
- 269
- ],
- [
- -122.854112,
- 48.662721,
- 270.2
- ],
- [
- -122.854085,
- 48.662693,
- 269.2
- ],
- [
- -122.854076,
- 48.662652,
- 266.6
- ],
- [
- -122.854081,
- 48.662613,
- 263.6
- ],
- [
- -122.854082,
- 48.662583,
- 261.8
- ],
- [
- -122.854086,
- 48.662546,
- 261.5
- ],
- [
- -122.854087,
- 48.662517,
- 262.6
- ],
- [
- -122.854086,
- 48.662474,
- 263.1
- ],
- [
- -122.854087,
- 48.662424,
- 261.7
- ],
- [
- -122.85409,
- 48.662397,
- 260.1
- ],
- [
- -122.854085,
- 48.662363,
- 257.6
- ],
- [
- -122.854078,
- 48.662327,
- 254.5
- ],
- [
- -122.854074,
- 48.662294,
- 252
- ],
- [
- -122.85407,
- 48.662262,
- 249.8
- ],
- [
- -122.854068,
- 48.662228,
- 247.6
- ],
- [
- -122.854078,
- 48.662189,
- 245.7
- ],
- [
- -122.854116,
- 48.662173,
- 246
- ],
- [
- -122.854153,
- 48.662153,
- 246.1
- ],
- [
- -122.854194,
- 48.662136,
- 246.6
- ],
- [
- -122.854232,
- 48.662115,
- 246.6
- ],
- [
- -122.854275,
- 48.662101,
- 247.4
- ],
- [
- -122.854319,
- 48.66209,
- 248.4
- ],
- [
- -122.854361,
- 48.662075,
- 248.9
- ],
- [
- -122.854407,
- 48.662062,
- 249.5
- ],
- [
- -122.854442,
- 48.662038,
- 249.2
- ],
- [
- -122.854468,
- 48.662016,
- 248.9
- ],
- [
- -122.854503,
- 48.661988,
- 248.5
- ],
- [
- -122.854543,
- 48.661972,
- 249
- ],
- [
- -122.854588,
- 48.661965,
- 250
- ],
- [
- -122.854622,
- 48.661988,
- 251.8
- ],
- [
- -122.854626,
- 48.662016,
- 252.9
- ],
- [
- -122.854595,
- 48.662059,
- 253.7
- ],
- [
- -122.854579,
- 48.662094,
- 254.8
- ],
- [
- -122.854547,
- 48.662124,
- 255.9
- ],
- [
- -122.85451,
- 48.662148,
- 257
- ],
- [
- -122.854469,
- 48.662163,
- 257
- ],
- [
- -122.854435,
- 48.662187,
- 257.9
- ],
- [
- -122.854403,
- 48.662211,
- 259.2
- ],
- [
- -122.854354,
- 48.662219,
- 258.6
- ],
- [
- -122.854315,
- 48.66219,
- 254.5
- ],
- [
- -122.854308,
- 48.662145,
- 251.1
- ],
- [
- -122.854295,
- 48.662113,
- 248.7
- ],
- [
- -122.854318,
- 48.662087,
- 248.2
- ],
- [
- -122.854337,
- 48.662045,
- 246.8
- ],
- [
- -122.854363,
- 48.662015,
- 246.2
- ],
- [
- -122.854398,
- 48.661988,
- 245.9
- ],
- [
- -122.854425,
- 48.661962,
- 245.6
- ],
- [
- -122.854452,
- 48.661926,
- 244.7
- ],
- [
- -122.854478,
- 48.661894,
- 244
- ],
- [
- -122.854509,
- 48.661857,
- 242.9
- ],
- [
- -122.854546,
- 48.661839,
- 242.9
- ],
- [
- -122.854585,
- 48.661811,
- 242.4
- ],
- [
- -122.85461,
- 48.661777,
- 241.5
- ],
- [
- -122.854606,
- 48.661746,
- 239.8
- ],
- [
- -122.854566,
- 48.661738,
- 238.4
- ],
- [
- -122.854579,
- 48.661707,
- 237.5
- ],
- [
- -122.854607,
- 48.661679,
- 237.2
- ],
- [
- -122.854636,
- 48.661642,
- 236.4
- ],
- [
- -122.854659,
- 48.661618,
- 236
- ],
- [
- -122.854685,
- 48.661593,
- 235.7
- ],
- [
- -122.85475,
- 48.661575,
- 236.3
- ],
- [
- -122.854788,
- 48.661567,
- 236.6
- ],
- [
- -122.854809,
- 48.661532,
- 235.8
- ],
- [
- -122.854831,
- 48.661503,
- 235.4
- ],
- [
- -122.854864,
- 48.661476,
- 235.2
- ],
- [
- -122.854898,
- 48.66146,
- 235.5
- ],
- [
- -122.854935,
- 48.661436,
- 235.7
- ],
- [
- -122.85497,
- 48.661397,
- 235.1
- ],
- [
- -122.854978,
- 48.66137,
- 234.6
- ],
- [
- -122.854985,
- 48.661342,
- 234.3
- ],
- [
- -122.855018,
- 48.661319,
- 234.3
- ],
- [
- -122.855033,
- 48.661262,
- 234
- ],
- [
- -122.855037,
- 48.661246,
- 234.1
- ],
- [
- -122.855057,
- 48.661217,
- 234.2
- ],
- [
- -122.855094,
- 48.661182,
- 234
- ],
- [
- -122.855116,
- 48.661159,
- 233.8
- ],
- [
- -122.855134,
- 48.661127,
- 233.6
- ],
- [
- -122.855154,
- 48.661102,
- 233.4
- ],
- [
- -122.855181,
- 48.661077,
- 232.9
- ],
- [
- -122.855208,
- 48.661055,
- 232.4
- ],
- [
- -122.855233,
- 48.661033,
- 231.6
- ],
- [
- -122.855268,
- 48.661008,
- 230.5
- ],
- [
- -122.855284,
- 48.660975,
- 229.9
- ],
- [
- -122.855308,
- 48.660952,
- 229.1
- ],
- [
- -122.85534,
- 48.660929,
- 228.1
- ],
- [
- -122.855382,
- 48.660903,
- 226.8
- ],
- [
- -122.855404,
- 48.660879,
- 226
- ],
- [
- -122.855443,
- 48.660849,
- 224.3
- ],
- [
- -122.855473,
- 48.660828,
- 222.9
- ],
- [
- -122.855541,
- 48.66081,
- 221.2
- ],
- [
- -122.855582,
- 48.660793,
- 220.5
- ],
- [
- -122.855596,
- 48.66076,
- 219.3
- ],
- [
- -122.855613,
- 48.660724,
- 218.6
- ],
- [
- -122.855642,
- 48.6607,
- 218.4
- ],
- [
- -122.855678,
- 48.660661,
- 217.7
- ],
- [
- -122.855707,
- 48.660641,
- 217
- ],
- [
- -122.855705,
- 48.660605,
- 215.7
- ],
- [
- -122.855704,
- 48.660574,
- 214.9
- ],
- [
- -122.855726,
- 48.66055,
- 214.3
- ],
- [
- -122.855749,
- 48.660527,
- 213.8
- ],
- [
- -122.855764,
- 48.6605,
- 213.6
- ],
- [
- -122.855781,
- 48.66047,
- 213.5
- ],
- [
- -122.855783,
- 48.660441,
- 213.5
- ],
- [
- -122.855802,
- 48.6604,
- 213.2
- ],
- [
- -122.855814,
- 48.660362,
- 212.8
- ],
- [
- -122.855836,
- 48.66033,
- 212.6
- ],
- [
- -122.855877,
- 48.660321,
- 212.5
- ],
- [
- -122.855929,
- 48.660309,
- 212.4
- ],
- [
- -122.855957,
- 48.660284,
- 211.9
- ],
- [
- -122.855986,
- 48.660247,
- 211.3
- ],
- [
- -122.856012,
- 48.660215,
- 210.6
- ],
- [
- -122.856045,
- 48.660186,
- 209.7
- ],
- [
- -122.856078,
- 48.660166,
- 208.9
- ],
- [
- -122.856132,
- 48.660144,
- 208.5
- ],
- [
- -122.856182,
- 48.660133,
- 208.4
- ],
- [
- -122.856226,
- 48.660112,
- 208.4
- ],
- [
- -122.856289,
- 48.660084,
- 208.8
- ],
- [
- -122.856326,
- 48.660071,
- 209.3
- ],
- [
- -122.856366,
- 48.660065,
- 210.1
- ],
- [
- -122.856417,
- 48.660057,
- 210.7
- ],
- [
- -122.85646,
- 48.660055,
- 210.5
- ],
- [
- -122.856518,
- 48.660054,
- 209.1
- ],
- [
- -122.856587,
- 48.660055,
- 206.7
- ],
- [
- -122.856635,
- 48.660054,
- 205.4
- ],
- [
- -122.856692,
- 48.660054,
- 204.8
- ],
- [
- -122.856742,
- 48.66006,
- 205.4
- ],
- [
- -122.856785,
- 48.660037,
- 204.9
- ],
- [
- -122.856789,
- 48.660071,
- 206.3
- ],
- [
- -122.856811,
- 48.660096,
- 207.4
- ],
- [
- -122.856786,
- 48.660126,
- 208.5
- ],
- [
- -122.856755,
- 48.660153,
- 209.2
- ],
- [
- -122.856708,
- 48.660165,
- 209.5
- ],
- [
- -122.856659,
- 48.660172,
- 209.6
- ],
- [
- -122.856594,
- 48.660176,
- 210
- ],
- [
- -122.856532,
- 48.660175,
- 210.9
- ],
- [
- -122.856489,
- 48.660173,
- 211.2
- ],
- [
- -122.856449,
- 48.660163,
- 211
- ],
- [
- -122.856405,
- 48.660146,
- 210.6
- ],
- [
- -122.856392,
- 48.660114,
- 209.9
- ],
- [
- -122.856404,
- 48.660078,
- 210.4
- ],
- [
- -122.856415,
- 48.660046,
- 210.9
- ],
- [
- -122.856428,
- 48.660012,
- 211.3
- ],
- [
- -122.856447,
- 48.659985,
- 211.3
- ],
- [
- -122.856473,
- 48.659963,
- 211.2
- ],
- [
- -122.856453,
- 48.65993,
- 211.4
- ],
- [
- -122.856417,
- 48.659913,
- 211.6
- ],
- [
- -122.85641,
- 48.659881,
- 211.2
- ],
- [
- -122.856405,
- 48.659842,
- 210.2
- ],
- [
- -122.856387,
- 48.659812,
- 209.9
- ],
- [
- -122.85637,
- 48.659786,
- 209.6
- ],
- [
- -122.856366,
- 48.659759,
- 208.9
- ],
- [
- -122.856334,
- 48.659733,
- 208.3
- ],
- [
- -122.856292,
- 48.659721,
- 207.9
- ],
- [
- -122.85625,
- 48.659714,
- 207.6
- ],
- [
- -122.856208,
- 48.65971,
- 207.5
- ],
- [
- -122.856167,
- 48.659685,
- 207
- ],
- [
- -122.856134,
- 48.659652,
- 206.1
- ],
- [
- -122.856104,
- 48.659626,
- 205.5
- ],
- [
- -122.856057,
- 48.659606,
- 205.1
- ],
- [
- -122.856011,
- 48.659602,
- 205.4
- ],
- [
- -122.855958,
- 48.659599,
- 205.8
- ],
- [
- -122.855911,
- 48.659595,
- 206.2
- ],
- [
- -122.855867,
- 48.659572,
- 205.9
- ],
- [
- -122.855822,
- 48.659562,
- 205.5
- ],
- [
- -122.855782,
- 48.659551,
- 205.2
- ],
- [
- -122.855727,
- 48.659557,
- 205.5
- ],
- [
- -122.855684,
- 48.659559,
- 205.5
- ],
- [
- -122.855639,
- 48.659564,
- 205.1
- ],
- [
- -122.855592,
- 48.65957,
- 204.6
- ],
- [
- -122.855545,
- 48.65957,
- 204
- ],
- [
- -122.855503,
- 48.659581,
- 204
- ],
- [
- -122.855451,
- 48.65959,
- 204
- ],
- [
- -122.855409,
- 48.659569,
- 203.5
- ],
- [
- -122.855374,
- 48.659553,
- 202.7
- ],
- [
- -122.855324,
- 48.659542,
- 202.1
- ],
- [
- -122.855287,
- 48.659555,
- 202.9
- ],
- [
- -122.855246,
- 48.65956,
- 202.9
- ],
- [
- -122.855202,
- 48.659571,
- 203
- ],
- [
- -122.855163,
- 48.659586,
- 203.1
- ],
- [
- -122.855116,
- 48.659607,
- 203.1
- ],
- [
- -122.855072,
- 48.659616,
- 202.5
- ],
- [
- -122.855021,
- 48.659624,
- 202.1
- ],
- [
- -122.854972,
- 48.659635,
- 202.1
- ],
- [
- -122.854938,
- 48.659653,
- 202.7
- ],
- [
- -122.854904,
- 48.65967,
- 203.1
- ],
- [
- -122.854871,
- 48.65969,
- 203.3
- ],
- [
- -122.854818,
- 48.659695,
- 201.5
- ],
- [
- -122.854772,
- 48.6597,
- 199.8
- ],
- [
- -122.854739,
- 48.659678,
- 198
- ],
- [
- -122.854705,
- 48.659654,
- 196.2
- ],
- [
- -122.854682,
- 48.659631,
- 195
- ],
- [
- -122.854639,
- 48.659612,
- 194.1
- ],
- [
- -122.854592,
- 48.659604,
- 195.5
- ],
- [
- -122.854549,
- 48.659593,
- 197.3
- ],
- [
- -122.854519,
- 48.659574,
- 198.3
- ],
- [
- -122.854486,
- 48.659545,
- 197.5
- ],
- [
- -122.85444,
- 48.659532,
- 196.8
- ],
- [
- -122.854391,
- 48.659519,
- 196
- ],
- [
- -122.854343,
- 48.659494,
- 195.1
- ],
- [
- -122.854304,
- 48.659463,
- 193.8
- ],
- [
- -122.854264,
- 48.659454,
- 193.3
- ],
- [
- -122.854214,
- 48.659461,
- 193.1
- ],
- [
- -122.854172,
- 48.659472,
- 193.1
- ],
- [
- -122.854136,
- 48.659487,
- 193.2
- ],
- [
- -122.854095,
- 48.659481,
- 192.8
- ],
- [
- -122.854068,
- 48.659455,
- 192.4
- ],
- [
- -122.85403,
- 48.659439,
- 192.5
- ],
- [
- -122.853975,
- 48.659425,
- 192.6
- ],
- [
- -122.853932,
- 48.659417,
- 192.7
- ],
- [
- -122.853876,
- 48.659412,
- 192.4
- ],
- [
- -122.853837,
- 48.659398,
- 191.8
- ],
- [
- -122.853795,
- 48.659383,
- 191.5
- ],
- [
- -122.853754,
- 48.659364,
- 191.5
- ],
- [
- -122.853719,
- 48.659346,
- 192.1
- ],
- [
- -122.853688,
- 48.659323,
- 192.5
- ],
- [
- -122.853669,
- 48.659293,
- 192.2
- ],
- [
- -122.853676,
- 48.65926,
- 191.6
- ],
- [
- -122.853688,
- 48.65922,
- 191
- ],
- [
- -122.853664,
- 48.659191,
- 189.9
- ],
- [
- -122.853635,
- 48.659163,
- 188.6
- ],
- [
- -122.853634,
- 48.659131,
- 187.3
- ],
- [
- -122.853624,
- 48.659102,
- 186.3
- ],
- [
- -122.853582,
- 48.659102,
- 186.5
- ],
- [
- -122.853568,
- 48.659067,
- 185.4
- ],
- [
- -122.853536,
- 48.659051,
- 185.4
- ],
- [
- -122.853493,
- 48.659032,
- 185
- ],
- [
- -122.853457,
- 48.659018,
- 184.7
- ],
- [
- -122.853416,
- 48.65901,
- 184.6
- ],
- [
- -122.853387,
- 48.658991,
- 184.1
- ],
- [
- -122.853359,
- 48.65897,
- 183.7
- ],
- [
- -122.853338,
- 48.658941,
- 183.2
- ],
- [
- -122.8533,
- 48.658919,
- 183.3
- ],
- [
- -122.853289,
- 48.658885,
- 182.9
- ],
- [
- -122.853268,
- 48.658854,
- 182.8
- ],
- [
- -122.853229,
- 48.658832,
- 183.6
- ],
- [
- -122.853224,
- 48.658802,
- 183.5
- ],
- [
- -122.853253,
- 48.658768,
- 182.5
- ],
- [
- -122.853276,
- 48.658741,
- 181.6
- ],
- [
- -122.853262,
- 48.658711,
- 181.7
- ],
- [
- -122.853235,
- 48.65869,
- 181.8
- ],
- [
- -122.853187,
- 48.658695,
- 182.6
- ],
- [
- -122.853146,
- 48.658692,
- 182.8
- ],
- [
- -122.853125,
- 48.658667,
- 182.1
- ],
- [
- -122.853116,
- 48.658634,
- 181.2
- ],
- [
- -122.853126,
- 48.658605,
- 180.1
- ],
- [
- -122.853104,
- 48.658576,
- 179.2
- ],
- [
- -122.853068,
- 48.658551,
- 178.8
- ],
- [
- -122.853037,
- 48.658521,
- 178.2
- ],
- [
- -122.852996,
- 48.658512,
- 178.7
- ],
- [
- -122.852943,
- 48.658512,
- 179.7
- ],
- [
- -122.852902,
- 48.658501,
- 179.9
- ],
- [
- -122.852871,
- 48.658483,
- 179.6
- ],
- [
- -122.852829,
- 48.65848,
- 180.3
- ],
- [
- -122.852796,
- 48.658461,
- 179.7
- ],
- [
- -122.852765,
- 48.658431,
- 178.2
- ],
- [
- -122.852732,
- 48.658402,
- 176.6
- ],
- [
- -122.852686,
- 48.658389,
- 175.9
- ],
- [
- -122.852656,
- 48.658366,
- 174.4
- ],
- [
- -122.852627,
- 48.658343,
- 172.9
- ],
- [
- -122.852561,
- 48.658331,
- 172.5
- ],
- [
- -122.852521,
- 48.658309,
- 171.3
- ],
- [
- -122.85249,
- 48.658283,
- 170.1
- ],
- [
- -122.852464,
- 48.658261,
- 169.3
- ],
- [
- -122.852461,
- 48.658222,
- 168.4
- ],
- [
- -122.852435,
- 48.658194,
- 168.5
- ],
- [
- -122.8524,
- 48.658161,
- 168.8
- ],
- [
- -122.852373,
- 48.65812,
- 168.8
- ],
- [
- -122.852377,
- 48.658088,
- 168.7
- ],
- [
- -122.852346,
- 48.658061,
- 169.3
- ],
- [
- -122.852373,
- 48.658037,
- 169
- ],
- [
- -122.852402,
- 48.658013,
- 168.5
- ],
- [
- -122.852463,
- 48.658,
- 167.7
- ],
- [
- -122.852522,
- 48.657996,
- 167
- ],
- [
- -122.852583,
- 48.657996,
- 166.6
- ],
- [
- -122.852638,
- 48.657987,
- 166.1
- ],
- [
- -122.852692,
- 48.657988,
- 165.1
- ],
- [
- -122.852748,
- 48.657982,
- 164.2
- ],
- [
- -122.852792,
- 48.657974,
- 163.7
- ],
- [
- -122.852835,
- 48.657961,
- 163.2
- ],
- [
- -122.852882,
- 48.657957,
- 162.7
- ],
- [
- -122.852924,
- 48.657945,
- 162.7
- ],
- [
- -122.852954,
- 48.657919,
- 163.1
- ],
- [
- -122.852973,
- 48.657893,
- 163.2
- ],
- [
- -122.853022,
- 48.657886,
- 162.6
- ],
- [
- -122.853062,
- 48.657872,
- 162.5
- ],
- [
- -122.853096,
- 48.657853,
- 162.7
- ],
- [
- -122.853145,
- 48.657828,
- 162.6
- ],
- [
- -122.85317,
- 48.657814,
- 162.2
- ],
- [
- -122.853175,
- 48.657782,
- 162.6
- ],
- [
- -122.85322,
- 48.657771,
- 161.3
- ],
- [
- -122.853258,
- 48.657744,
- 160.2
- ],
- [
- -122.853258,
- 48.657715,
- 160.1
- ],
- [
- -122.853289,
- 48.657696,
- 158.8
- ],
- [
- -122.853323,
- 48.657675,
- 157.4
- ],
- [
- -122.853373,
- 48.657662,
- 155.6
- ],
- [
- -122.853385,
- 48.657625,
- 155.3
- ],
- [
- -122.853395,
- 48.65758,
- 154.9
- ],
- [
- -122.853395,
- 48.657534,
- 154.7
- ],
- [
- -122.853397,
- 48.657502,
- 154.7
- ],
- [
- -122.853443,
- 48.657507,
- 153.8
- ],
- [
- -122.85347,
- 48.657484,
- 153.1
- ],
- [
- -122.853497,
- 48.657454,
- 152.8
- ],
- [
- -122.853552,
- 48.657439,
- 151.8
- ],
- [
- -122.853593,
- 48.657426,
- 150.6
- ],
- [
- -122.853611,
- 48.657394,
- 150.5
- ],
- [
- -122.853618,
- 48.657364,
- 150.5
- ],
- [
- -122.853626,
- 48.657337,
- 150.6
- ],
- [
- -122.853648,
- 48.657313,
- 150.2
- ],
- [
- -122.853666,
- 48.657285,
- 149.8
- ],
- [
- -122.85369,
- 48.657255,
- 149.2
- ],
- [
- -122.853724,
- 48.657236,
- 148.1
- ],
- [
- -122.853762,
- 48.657197,
- 147.1
- ],
- [
- -122.853803,
- 48.657176,
- 146.1
- ],
- [
- -122.853835,
- 48.657151,
- 145.3
- ],
- [
- -122.853885,
- 48.657152,
- 142.9
- ],
- [
- -122.85391,
- 48.657188,
- 141.4
- ],
- [
- -122.853939,
- 48.657212,
- 140.2
- ],
- [
- -122.853979,
- 48.657218,
- 138.4
- ],
- [
- -122.854021,
- 48.657228,
- 136.3
- ],
- [
- -122.854059,
- 48.657262,
- 134.2
- ],
- [
- -122.854078,
- 48.657288,
- 132.9
- ],
- [
- -122.854093,
- 48.657315,
- 131.8
- ],
- [
- -122.854105,
- 48.657341,
- 130.8
- ],
- [
- -122.854125,
- 48.657377,
- 129.5
- ],
- [
- -122.854136,
- 48.657412,
- 128.6
- ],
- [
- -122.854143,
- 48.65744,
- 128
- ],
- [
- -122.854101,
- 48.657444,
- 130
- ],
- [
- -122.854058,
- 48.657447,
- 132.2
- ],
- [
- -122.85409,
- 48.657467,
- 130.6
- ],
- [
- -122.854103,
- 48.657495,
- 129.8
- ],
- [
- -122.854113,
- 48.657529,
- 129.1
- ],
- [
- -122.854125,
- 48.657559,
- 128.5
- ],
- [
- -122.854164,
- 48.657577,
- 127
- ],
- [
- -122.854203,
- 48.657563,
- 125.7
- ],
- [
- -122.854165,
- 48.657574,
- 127
- ],
- [
- -122.854194,
- 48.657593,
- 126.3
- ],
- [
- -122.854237,
- 48.657621,
- 126.2
- ],
- [
- -122.854279,
- 48.657648,
- 126.3
- ],
- [
- -122.854304,
- 48.657675,
- 126.7
- ],
- [
- -122.854342,
- 48.657703,
- 125.5
- ],
- [
- -122.854377,
- 48.657723,
- 124.5
- ],
- [
- -122.854421,
- 48.657747,
- 124.6
- ],
- [
- -122.85446,
- 48.657735,
- 124
- ],
- [
- -122.854502,
- 48.657757,
- 124.6
- ],
- [
- -122.85455,
- 48.657778,
- 125.4
- ],
- [
- -122.854597,
- 48.657804,
- 126.2
- ],
- [
- -122.854632,
- 48.657827,
- 126.5
- ],
- [
- -122.854603,
- 48.657848,
- 126.1
- ],
- [
- -122.854574,
- 48.657872,
- 126.3
- ],
- [
- -122.854595,
- 48.65792,
- 127.5
- ],
- [
- -122.854562,
- 48.657938,
- 128.5
- ],
- [
- -122.854609,
- 48.657955,
- 128.5
- ],
- [
- -122.85465,
- 48.657952,
- 127.7
- ],
- [
- -122.854661,
- 48.657925,
- 127.6
- ],
- [
- -122.854649,
- 48.657896,
- 127.1
- ],
- [
- -122.854614,
- 48.65788,
- 126.6
- ],
- [
- -122.854576,
- 48.657864,
- 126.2
- ],
- [
- -122.854532,
- 48.657866,
- 126.3
- ],
- [
- -122.854489,
- 48.657887,
- 127.6
- ],
- [
- -122.85444,
- 48.657874,
- 128.5
- ],
- [
- -122.854385,
- 48.657861,
- 129.8
- ],
- [
- -122.854378,
- 48.657827,
- 128.8
- ],
- [
- -122.854406,
- 48.65778,
- 125.7
- ],
- [
- -122.854431,
- 48.657729,
- 124.1
- ],
- [
- -122.854438,
- 48.65769,
- 123.2
- ],
- [
- -122.854428,
- 48.657654,
- 122.6
- ],
- [
- -122.854408,
- 48.657625,
- 122.3
- ],
- [
- -122.854368,
- 48.65761,
- 122.6
- ],
- [
- -122.854366,
- 48.657574,
- 122.4
- ],
- [
- -122.854341,
- 48.657539,
- 122.9
- ],
- [
- -122.854319,
- 48.657513,
- 123
- ],
- [
- -122.854286,
- 48.657483,
- 123
- ],
- [
- -122.85429,
- 48.65745,
- 122.6
- ],
- [
- -122.854306,
- 48.657416,
- 122.2
- ],
- [
- -122.854314,
- 48.657388,
- 122
- ],
- [
- -122.854347,
- 48.657343,
- 120.9
- ],
- [
- -122.854366,
- 48.657312,
- 120.1
- ],
- [
- -122.854379,
- 48.657281,
- 119.8
- ],
- [
- -122.854391,
- 48.657233,
- 119.6
- ],
- [
- -122.854402,
- 48.657188,
- 119.1
- ],
- [
- -122.854408,
- 48.657141,
- 118.7
- ],
- [
- -122.854407,
- 48.657105,
- 118.4
- ],
- [
- -122.854421,
- 48.657079,
- 118.1
- ],
- [
- -122.854448,
- 48.657052,
- 117.7
- ],
- [
- -122.854477,
- 48.65703,
- 117.5
- ],
- [
- -122.854471,
- 48.656993,
- 117.8
- ],
- [
- -122.854492,
- 48.656956,
- 117.1
- ],
- [
- -122.854525,
- 48.656938,
- 116.6
- ],
- [
- -122.854548,
- 48.656912,
- 116.4
- ],
- [
- -122.854569,
- 48.656881,
- 116
- ],
- [
- -122.854595,
- 48.65685,
- 115.7
- ],
- [
- -122.854609,
- 48.656824,
- 115.5
- ],
- [
- -122.854611,
- 48.656785,
- 115.2
- ],
- [
- -122.854615,
- 48.65675,
- 115
- ],
- [
- -122.854619,
- 48.656718,
- 114.9
- ],
- [
- -122.854631,
- 48.656685,
- 114.8
- ],
- [
- -122.854649,
- 48.65666,
- 114.7
- ],
- [
- -122.854691,
- 48.656658,
- 114.6
- ],
- [
- -122.854752,
- 48.656673,
- 114.5
- ],
- [
- -122.85482,
- 48.656664,
- 114.6
- ]
- ],
- "type": "LineString"
- },
- "properties": {
- "name": "Moran State Park Western Boundary Hike",
- "time": "2015-04-18T15:51:49Z"
- },
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
-}
diff --git a/platform/ios/app/pt-BR.lproj/Localizable.strings b/platform/ios/app/pt-BR.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/pt-BR.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/pt-PT.lproj/Localizable.strings b/platform/ios/app/pt-PT.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/pt-PT.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/ru.lproj/Localizable.strings b/platform/ios/app/ru.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/ru.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/simple_route.json b/platform/ios/app/simple_route.json
deleted file mode 100644
index 8b910dbdaf..0000000000
--- a/platform/ios/app/simple_route.json
+++ /dev/null
@@ -1,184 +0,0 @@
-{
- "coordinates":[
- [
- -122.39899,
- 37.787357
- ],
- [
- -122.398818,
- 37.78722
- ],
- [
- -122.398794,
- 37.7872
- ],
- [
- -122.398259,
- 37.786773
- ],
- [
- -122.398984,
- 37.786206
- ],
- [
- -122.399053,
- 37.786151
- ],
- [
- -122.399379,
- 37.785888
- ],
- [
- -122.399614,
- 37.785697
- ],
- [
- -122.399884,
- 37.785478
- ],
- [
- -122.400382,
- 37.78509
- ],
- [
- -122.400478,
- 37.785015
- ],
- [
- -122.400599,
- 37.785111
- ],
- [
- -122.4012,
- 37.785587
- ],
- [
- -122.401495,
- 37.785825
- ],
- [
- -122.401705,
- 37.785993
- ],
- [
- -122.402041,
- 37.786261
- ],
- [
- -122.402476,
- 37.786603
- ],
- [
- -122.402573,
- 37.78668
- ],
- [
- -122.403019,
- 37.787031
- ],
- [
- -122.403315,
- 37.78728
- ],
- [
- -122.403358,
- 37.787324
- ],
- [
- -122.403382,
- 37.787356
- ],
- [
- -122.403398,
- 37.787392
- ],
- [
- -122.403405,
- 37.787425
- ],
- [
- -122.403415,
- 37.787486
- ],
- [
- -122.403434,
- 37.787654
- ],
- [
- -122.403436,
- 37.787676
- ],
- [
- -122.40344,
- 37.787698
- ],
- [
- -122.403444,
- 37.787729
- ],
- [
- -122.403464,
- 37.787825
- ],
- [
- -122.403476,
- 37.787877
- ],
- [
- -122.403497,
- 37.787965
- ],
- [
- -122.403591,
- 37.788436
- ],
- [
- -122.403684,
- 37.788901
- ],
- [
- -122.403774,
- 37.789349
- ],
- [
- -122.403798,
- 37.789469
- ],
- [
- -122.403872,
- 37.789833
- ],
- [
- -122.404232,
- 37.789788
- ],
- [
- -122.405435,
- 37.789635
- ],
- [
- -122.406,
- 37.789562
- ],
- [
- -122.406982,
- 37.789436
- ],
- [
- -122.407475,
- 37.789373
- ],
- [
- -122.408599,
- 37.789231
- ],
- [
- -122.408616,
- 37.789229
- ],
- [
- -122.408451,
- 37.788454
- ]
- ]
-} \ No newline at end of file
diff --git a/platform/ios/app/sv.lproj/Localizable.strings b/platform/ios/app/sv.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/sv.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/threestates.geojson b/platform/ios/app/threestates.geojson
deleted file mode 100644
index 9b70388782..0000000000
--- a/platform/ios/app/threestates.geojson
+++ /dev/null
@@ -1,1612 +0,0 @@
-{
- "type": "FeatureCollection",
- "features": [
- {
- "geometry": {
- "coordinates": [
- [
- [
- -75.80260539153913,
- 39.722485154715464
- ],
- [
- -75.76669272327231,
- 39.722485154715464
- ],
- [
- -75.76669272327231,
- 39.765510893789376
- ],
- [
- -75.73078005500548,
- 39.765510893789376
- ],
- [
- -75.73078005500548,
- 39.79132633723372
- ],
- [
- -75.69486738673865,
- 39.79132633723372
- ],
- [
- -75.69486738673865,
- 39.817141780678064
- ],
- [
- -75.623042050205,
- 39.834352076307624
- ],
- [
- -75.47939137713769,
- 39.834352076307624
- ],
- [
- -75.44347870887087,
- 39.80853663286328
- ],
- [
- -75.40756604060404,
- 39.80853663286328
- ],
- [
- -75.40756604060404,
- 39.799931485048496
- ],
- [
- -75.44347870887087,
- 39.79132633723372
- ],
- [
- -75.44347870887087,
- 39.765510893789376
- ],
- [
- -75.47939137713769,
- 39.765510893789376
- ],
- [
- -75.47939137713769,
- 39.69666971127112
- ],
- [
- -75.51530404540452,
- 39.69666971127112
- ],
- [
- -75.51530404540452,
- 39.64503882438243
- ],
- [
- -75.55121671367135,
- 39.64503882438243
- ],
- [
- -75.55121671367135,
- 39.593407937493744
- ],
- [
- -75.51530404540452,
- 39.58480278967896
- ],
- [
- -75.51530404540452,
- 39.541777050605056
- ],
- [
- -75.51530404540452,
- 39.498751311531144
- ],
- [
- -75.55121671367135,
- 39.498751311531144
- ],
- [
- -75.55121671367135,
- 39.429910129012896
- ],
- [
- -75.51530404540452,
- 39.429910129012896
- ],
- [
- -75.51530404540452,
- 39.40409468556855
- ],
- [
- -75.47939137713769,
- 39.39548953775377
- ],
- [
- -75.47939137713769,
- 39.369674094309424
- ],
- [
- -75.44347870887087,
- 39.36106894649464
- ],
- [
- -75.44347870887087,
- 39.335253503050296
- ],
- [
- -75.40756604060404,
- 39.335253503050296
- ],
- [
- -75.40756604060404,
- 39.30943805960595
- ],
- [
- -75.33574070407039,
- 39.27501746834683
- ],
- [
- -75.33574070407039,
- 39.24920202490249
- ],
- [
- -75.29982803580356,
- 39.24920202490249
- ],
- [
- -75.29982803580356,
- 39.206176285828576
- ],
- [
- -75.26391536753674,
- 39.188965990199016
- ],
- [
- -75.26391536753674,
- 39.15454539893989
- ],
- [
- -75.22800269926991,
- 39.15454539893989
- ],
- [
- -75.22800269926991,
- 39.111519659865984
- ],
- [
- -75.19209003100308,
- 39.06849392079207
- ],
- [
- -75.15617736273626,
- 39.05988877297729
- ],
- [
- -75.15617736273626,
- 38.999652738273824
- ],
- [
- -75.12026469446943,
- 38.999652738273824
- ],
- [
- -75.12026469446943,
- 38.965232147014696
- ],
- [
- -75.0843520262026,
- 38.91360126012601
- ],
- [
- -75.0843520262026,
- 38.87918066886688
- ],
- [
- -75.04843935793578,
- 38.87918066886688
- ],
- [
- -75.04843935793578,
- 38.836154929792976
- ],
- [
- -75.01252668966895,
- 38.80173433853385
- ],
- [
- -75.01252668966895,
- 38.78452404290429
- ],
- [
- -75.01252668966895,
- 38.612421086608656
- ],
- [
- -74.97661402140213,
- 38.612421086608656
- ],
- [
- -74.97661402140213,
- 38.44892327812781
- ],
- [
- -75.44347870887087,
- 38.44892327812781
- ],
- [
- -75.44347870887087,
- 38.45752842594259
- ],
- [
- -75.69486738673865,
- 38.45752842594259
- ],
- [
- -75.69486738673865,
- 38.69847256475647
- ],
- [
- -75.73078005500548,
- 38.70707771257125
- ],
- [
- -75.73078005500548,
- 39.145940251125104
- ],
- [
- -75.76669272327231,
- 39.15454539893989
- ],
- [
- -75.76669272327231,
- 39.593407937493744
- ],
- [
- -75.80260539153913,
- 39.60201308530853
- ],
- [
- -75.80260539153913,
- 39.722485154715464
- ]
- ]
- ],
- "type": "Polygon"
- },
- "properties": {
- "NAME": "Delaware"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- [
- [
- -80.50716493449343,
- 40.634630823082304
- ],
- [
- -80.50716493449343,
- 42.32984494259426
- ],
- [
- -80.36351426142612,
- 42.34705523822382
- ],
- [
- -80.18395092009199,
- 42.381475829482945
- ],
- [
- -80.0762129152915,
- 42.39008097729772
- ],
- [
- -80.00438757875786,
- 42.42450156855685
- ],
- [
- -79.7889115691569,
- 42.50194789888988
- ],
- [
- -79.75299890089008,
- 42.51915819451945
- ],
- [
- -79.75299890089008,
- 42.00284932563255
- ],
- [
- -79.53752289128911,
- 42.00284932563255
- ],
- [
- -79.50161022302228,
- 41.99424417781778
- ],
- [
- -79.42978488648863,
- 42.00284932563255
- ],
- [
- -78.96292019901988,
- 42.00284932563255
- ],
- [
- -78.92700753075306,
- 41.99424417781778
- ],
- [
- -78.7115315211521,
- 41.99424417781778
- ],
- [
- -78.7115315211521,
- 42.00284932563255
- ],
- [
- -77.92145281928191,
- 42.00284932563255
- ],
- [
- -77.92145281928191,
- 41.99424417781778
- ],
- [
- -77.81371481448143,
- 41.99424417781778
- ],
- [
- -77.74188947794778,
- 42.00284932563255
- ],
- [
- -77.16728678567856,
- 42.00284932563255
- ],
- [
- -76.37720808380836,
- 42.00284932563255
- ],
- [
- -76.37720808380836,
- 41.99424417781778
- ],
- [
- -76.19764474247422,
- 41.99424417781778
- ],
- [
- -76.1617320742074,
- 42.00284932563255
- ],
- [
- -75.87443072807278,
- 42.00284932563255
- ],
- [
- -75.83851805980596,
- 41.99424417781778
- ],
- [
- -75.65895471847183,
- 41.99424417781778
- ],
- [
- -75.623042050205,
- 42.00284932563255
- ],
- [
- -75.37165337233722,
- 42.00284932563255
- ],
- [
- -75.33574070407039,
- 41.99424417781778
- ],
- [
- -75.33574070407039,
- 41.951218438743865
- ],
- [
- -75.26391536753674,
- 41.94261329092909
- ],
- [
- -75.26391536753674,
- 41.865166960596056
- ],
- [
- -75.22800269926991,
- 41.865166960596056
- ],
- [
- -75.19209003100308,
- 41.865166960596056
- ],
- [
- -75.19209003100308,
- 41.87377210841083
- ],
- [
- -75.19209003100308,
- 41.865166960596056
- ],
- [
- -75.19209003100308,
- 41.87377210841083
- ],
- [
- -75.15617736273626,
- 41.87377210841083
- ],
- [
- -75.15617736273626,
- 41.84795666496649
- ],
- [
- -75.12026469446943,
- 41.84795666496649
- ],
- [
- -75.12026469446943,
- 41.822141221522145
- ],
- [
- -75.0843520262026,
- 41.822141221522145
- ],
- [
- -75.0843520262026,
- 41.78772063026302
- ],
- [
- -75.12026469446943,
- 41.77051033463346
- ],
- [
- -75.04843935793578,
- 41.77051033463346
- ],
- [
- -75.04843935793578,
- 41.563986787078704
- ],
- [
- -75.01252668966895,
- 41.563986787078704
- ],
- [
- -75.01252668966895,
- 41.51235590019001
- ],
- [
- -74.97661402140213,
- 41.51235590019001
- ],
- [
- -74.97661402140213,
- 41.47793530893089
- ],
- [
- -74.9407013531353,
- 41.47793530893089
- ],
- [
- -74.90478868486846,
- 41.47793530893089
- ],
- [
- -74.90478868486846,
- 41.43490956985698
- ],
- [
- -74.83296334833481,
- 41.44351471767176
- ],
- [
- -74.79705068006798,
- 41.4263044220422
- ],
- [
- -74.72522534353433,
- 41.43490956985698
- ],
- [
- -74.72522534353433,
- 41.37467353515351
- ],
- [
- -74.6893126752675,
- 41.357463239523945
- ],
- [
- -74.76113801180117,
- 41.34885809170916
- ],
- [
- -74.76113801180117,
- 41.32304264826482
- ],
- [
- -74.79705068006798,
- 41.32304264826482
- ],
- [
- -74.79705068006798,
- 41.29722720482047
- ],
- [
- -74.83296334833481,
- 41.29722720482047
- ],
- [
- -74.83296334833481,
- 41.25420146574657
- ],
- [
- -74.86887601660165,
- 41.25420146574657
- ],
- [
- -74.86887601660165,
- 41.176755135413536
- ],
- [
- -74.90478868486846,
- 41.176755135413536
- ],
- [
- -74.90478868486846,
- 41.14233454415441
- ],
- [
- -74.9407013531353,
- 41.14233454415441
- ],
- [
- -74.9407013531353,
- 41.116519100710065
- ],
- [
- -74.97661402140213,
- 41.099308805080504
- ],
- [
- -74.97661402140213,
- 41.09070365726572
- ],
- [
- -74.97661402140213,
- 41.099308805080504
- ],
- [
- -74.97661402140213,
- 41.09070365726572
- ],
- [
- -75.01252668966895,
- 41.07349336163616
- ],
- [
- -75.01252668966895,
- 41.03907277037703
- ],
- [
- -75.0843520262026,
- 41.004652179117905
- ],
- [
- -75.12026469446943,
- 41.004652179117905
- ],
- [
- -75.12026469446943,
- 40.935810996599656
- ],
- [
- -75.0843520262026,
- 40.935810996599656
- ],
- [
- -75.0843520262026,
- 40.892785257525745
- ],
- [
- -75.04843935793578,
- 40.88418010971097
- ],
- [
- -75.04843935793578,
- 40.84975951845184
- ],
- [
- -75.0843520262026,
- 40.84975951845184
- ],
- [
- -75.0843520262026,
- 40.79812863156315
- ],
- [
- -75.12026469446943,
- 40.79812863156315
- ],
- [
- -75.12026469446943,
- 40.77231318811881
- ],
- [
- -75.15617736273626,
- 40.77231318811881
- ],
- [
- -75.19209003100308,
- 40.77231318811881
- ],
- [
- -75.19209003100308,
- 40.56578964056405
- ],
- [
- -75.12026469446943,
- 40.57439478837883
- ],
- [
- -75.0843520262026,
- 40.56578964056405
- ],
- [
- -75.0843520262026,
- 40.53136904930492
- ],
- [
- -75.04843935793578,
- 40.53136904930492
- ],
- [
- -75.04843935793578,
- 40.471133014601456
- ],
- [
- -75.0843520262026,
- 40.471133014601456
- ],
- [
- -75.0843520262026,
- 40.44531757115711
- ],
- [
- -75.04843935793578,
- 40.44531757115711
- ],
- [
- -75.04843935793578,
- 40.4022918320832
- ],
- [
- -74.97661402140213,
- 40.410896979897984
- ],
- [
- -74.97661402140213,
- 40.38508153645364
- ],
- [
- -74.9407013531353,
- 40.38508153645364
- ],
- [
- -74.9407013531353,
- 40.32484550175017
- ],
- [
- -74.86887601660165,
- 40.30763520612061
- ],
- [
- -74.86887601660165,
- 40.2646094670467
- ],
- [
- -74.83296334833481,
- 40.2646094670467
- ],
- [
- -74.83296334833481,
- 40.23879402360235
- ],
- [
- -74.76113801180117,
- 40.22158372797279
- ],
- [
- -74.76113801180117,
- 40.17855798889888
- ],
- [
- -74.72522534353433,
- 40.17855798889888
- ],
- [
- -74.72522534353433,
- 40.135532249824976
- ],
- [
- -74.79705068006798,
- 40.118321954195416
- ],
- [
- -74.83296334833481,
- 40.12692710201019
- ],
- [
- -74.83296334833481,
- 40.09250651075107
- ],
- [
- -74.90478868486846,
- 40.075296215121504
- ],
- [
- -74.97661402140213,
- 40.058085919491944
- ],
- [
- -74.97661402140213,
- 40.0322704760476
- ],
- [
- -75.04843935793578,
- 40.01506018041803
- ],
- [
- -75.04843935793578,
- 39.98063958915891
- ],
- [
- -75.12026469446943,
- 39.97203444134413
- ],
- [
- -75.12026469446943,
- 39.88598296319631
- ],
- [
- -75.19209003100308,
- 39.88598296319631
- ],
- [
- -75.22800269926991,
- 39.851562371937185
- ],
- [
- -75.33574070407039,
- 39.851562371937185
- ],
- [
- -75.37165337233722,
- 39.84295722412241
- ],
- [
- -75.37165337233722,
- 39.817141780678064
- ],
- [
- -75.40756604060404,
- 39.80853663286328
- ],
- [
- -75.40756604060404,
- 39.799931485048496
- ],
- [
- -75.40756604060404,
- 39.80853663286328
- ],
- [
- -75.44347870887087,
- 39.80853663286328
- ],
- [
- -75.47939137713769,
- 39.834352076307624
- ],
- [
- -75.623042050205,
- 39.834352076307624
- ],
- [
- -75.69486738673865,
- 39.817141780678064
- ],
- [
- -75.69486738673865,
- 39.79132633723372
- ],
- [
- -75.73078005500548,
- 39.79132633723372
- ],
- [
- -75.73078005500548,
- 39.765510893789376
- ],
- [
- -75.76669272327231,
- 39.765510893789376
- ],
- [
- -75.76669272327231,
- 39.722485154715464
- ],
- [
- -75.80260539153913,
- 39.722485154715464
- ],
- [
- -76.52085875687567,
- 39.722485154715464
- ],
- [
- -77.02363611261124,
- 39.722485154715464
- ],
- [
- -77.84962748274826,
- 39.722485154715464
- ],
- [
- -78.49605551155113,
- 39.722485154715464
- ],
- [
- -78.81926952595258,
- 39.722485154715464
- ],
- [
- -79.46569755475545,
- 39.722485154715464
- ],
- [
- -80.0762129152915,
- 39.722485154715464
- ],
- [
- -80.50716493449343,
- 39.722485154715464
- ],
- [
- -80.50716493449343,
- 40.634630823082304
- ]
- ]
- ],
- "type": "Polygon"
- },
- "properties": {
- "NAME": "Pennsylvania"
- },
- "type": "Feature"
- },
- {
- "geometry": {
- "coordinates": [
- [
- [
- -75.15617736273626,
- 40.77231318811881
- ],
- [
- -75.12026469446943,
- 40.77231318811881
- ],
- [
- -75.12026469446943,
- 40.79812863156315
- ],
- [
- -75.0843520262026,
- 40.79812863156315
- ],
- [
- -75.0843520262026,
- 40.84975951845184
- ],
- [
- -75.04843935793578,
- 40.84975951845184
- ],
- [
- -75.04843935793578,
- 40.88418010971097
- ],
- [
- -75.0843520262026,
- 40.892785257525745
- ],
- [
- -75.0843520262026,
- 40.935810996599656
- ],
- [
- -75.12026469446943,
- 40.935810996599656
- ],
- [
- -75.12026469446943,
- 41.004652179117905
- ],
- [
- -75.0843520262026,
- 41.004652179117905
- ],
- [
- -75.01252668966895,
- 41.03907277037703
- ],
- [
- -75.01252668966895,
- 41.07349336163616
- ],
- [
- -74.97661402140213,
- 41.09070365726572
- ],
- [
- -74.97661402140213,
- 41.099308805080504
- ],
- [
- -74.97661402140213,
- 41.09070365726572
- ],
- [
- -74.97661402140213,
- 41.099308805080504
- ],
- [
- -74.9407013531353,
- 41.116519100710065
- ],
- [
- -74.9407013531353,
- 41.14233454415441
- ],
- [
- -74.90478868486846,
- 41.14233454415441
- ],
- [
- -74.90478868486846,
- 41.176755135413536
- ],
- [
- -74.86887601660165,
- 41.176755135413536
- ],
- [
- -74.86887601660165,
- 41.25420146574657
- ],
- [
- -74.83296334833481,
- 41.25420146574657
- ],
- [
- -74.83296334833481,
- 41.29722720482047
- ],
- [
- -74.79705068006798,
- 41.29722720482047
- ],
- [
- -74.79705068006798,
- 41.32304264826482
- ],
- [
- -74.76113801180117,
- 41.32304264826482
- ],
- [
- -74.76113801180117,
- 41.34885809170916
- ],
- [
- -74.6893126752675,
- 41.357463239523945
- ],
- [
- -74.58157467046702,
- 41.29722720482047
- ],
- [
- -74.50974933393337,
- 41.28001690919091
- ],
- [
- -74.50974933393337,
- 41.26280661356135
- ],
- [
- -74.25836065606559,
- 41.14233454415441
- ],
- [
- -74.15062265126511,
- 41.116519100710065
- ],
- [
- -74.07879731473146,
- 41.064888213821376
- ],
- [
- -74.0069719781978,
- 41.047677918191816
- ],
- [
- -73.93514664166415,
- 41.004652179117905
- ],
- [
- -73.89923397339732,
- 41.004652179117905
- ],
- [
- -73.89923397339732,
- 40.92720584878487
- ],
- [
- -73.93514664166415,
- 40.91860070097009
- ],
- [
- -73.93514664166415,
- 40.84975951845184
- ],
- [
- -73.97105930993098,
- 40.84975951845184
- ],
- [
- -73.97105930993098,
- 40.78952348374837
- ],
- [
- -74.0069719781978,
- 40.78952348374837
- ],
- [
- -74.0069719781978,
- 40.712077153415336
- ],
- [
- -74.04288464646463,
- 40.70347200560055
- ],
- [
- -74.04288464646463,
- 40.68626170997099
- ],
- [
- -74.04288464646463,
- 40.651841118711864
- ],
- [
- -74.18653531953193,
- 40.64323597089708
- ],
- [
- -74.18653531953193,
- 40.59160508400839
- ],
- [
- -74.22244798779876,
- 40.59160508400839
- ],
- [
- -74.22244798779876,
- 40.55718449274927
- ],
- [
- -74.25836065606559,
- 40.54857934493449
- ],
- [
- -74.25836065606559,
- 40.47973816241623
- ],
- [
- -74.18653531953193,
- 40.47973816241623
- ],
- [
- -74.07879731473146,
- 40.4969484580458
- ],
- [
- -73.97105930993098,
- 40.522763901490144
- ],
- [
- -73.93514664166415,
- 40.522763901490144
- ],
- [
- -73.89923397339732,
- 40.488343310231016
- ],
- [
- -73.89923397339732,
- 40.23879402360235
- ],
- [
- -73.93514664166415,
- 40.22158372797279
- ],
- [
- -73.93514664166415,
- 40.15274254545454
- ],
- [
- -73.97105930993098,
- 40.12692710201019
- ],
- [
- -73.97105930993098,
- 40.023665328232816
- ],
- [
- -74.0069719781978,
- 40.01506018041803
- ],
- [
- -74.0069719781978,
- 39.82574692849284
- ],
- [
- -74.04288464646463,
- 39.80853663286328
- ],
- [
- -74.04288464646463,
- 39.722485154715464
- ],
- [
- -74.07879731473146,
- 39.705274859085904
- ],
- [
- -74.07879731473146,
- 39.653643972197216
- ],
- [
- -74.22244798779876,
- 39.498751311531144
- ],
- [
- -74.22244798779876,
- 39.4729358680868
- ],
- [
- -74.25836065606559,
- 39.45572557245724
- ],
- [
- -74.25836065606559,
- 39.42130498119811
- ],
- [
- -74.29427332433241,
- 39.37827924212421
- ],
- [
- -74.36609866086607,
- 39.34385865086508
- ],
- [
- -74.36609866086607,
- 39.318043207420736
- ],
- [
- -74.47383666566655,
- 39.300832911791176
- ],
- [
- -74.47383666566655,
- 39.27501746834683
- ],
- [
- -74.50974933393337,
- 39.26641232053205
- ],
- [
- -74.50974933393337,
- 39.240596877087704
- ],
- [
- -74.58157467046702,
- 39.21478143364336
- ],
- [
- -74.58157467046702,
- 39.17175569456945
- ],
- [
- -74.65340000700068,
- 39.128729955495544
- ],
- [
- -74.65340000700068,
- 39.05988877297729
- ],
- [
- -74.6893126752675,
- 39.05128362516251
- ],
- [
- -74.6893126752675,
- 39.016863033903384
- ],
- [
- -74.72522534353433,
- 39.016863033903384
- ],
- [
- -74.72522534353433,
- 38.95662699919991
- ],
- [
- -74.79705068006798,
- 38.93081155575557
- ],
- [
- -74.79705068006798,
- 38.904996112311224
- ],
- [
- -74.83296334833481,
- 38.887785816681664
- ],
- [
- -74.90478868486846,
- 38.87918066886688
- ],
- [
- -75.01252668966895,
- 38.80173433853385
- ],
- [
- -75.01252668966895,
- 38.78452404290429
- ],
- [
- -75.01252668966895,
- 38.80173433853385
- ],
- [
- -75.04843935793578,
- 38.836154929792976
- ],
- [
- -75.04843935793578,
- 38.87918066886688
- ],
- [
- -75.0843520262026,
- 38.87918066886688
- ],
- [
- -75.0843520262026,
- 38.91360126012601
- ],
- [
- -75.12026469446943,
- 38.965232147014696
- ],
- [
- -75.12026469446943,
- 38.999652738273824
- ],
- [
- -75.15617736273626,
- 38.999652738273824
- ],
- [
- -75.15617736273626,
- 39.05988877297729
- ],
- [
- -75.19209003100308,
- 39.06849392079207
- ],
- [
- -75.22800269926991,
- 39.111519659865984
- ],
- [
- -75.22800269926991,
- 39.15454539893989
- ],
- [
- -75.26391536753674,
- 39.15454539893989
- ],
- [
- -75.26391536753674,
- 39.188965990199016
- ],
- [
- -75.29982803580356,
- 39.206176285828576
- ],
- [
- -75.29982803580356,
- 39.24920202490249
- ],
- [
- -75.33574070407039,
- 39.24920202490249
- ],
- [
- -75.33574070407039,
- 39.27501746834683
- ],
- [
- -75.40756604060404,
- 39.30943805960595
- ],
- [
- -75.40756604060404,
- 39.335253503050296
- ],
- [
- -75.44347870887087,
- 39.335253503050296
- ],
- [
- -75.44347870887087,
- 39.36106894649464
- ],
- [
- -75.47939137713769,
- 39.369674094309424
- ],
- [
- -75.47939137713769,
- 39.39548953775377
- ],
- [
- -75.51530404540452,
- 39.40409468556855
- ],
- [
- -75.51530404540452,
- 39.429910129012896
- ],
- [
- -75.55121671367135,
- 39.429910129012896
- ],
- [
- -75.55121671367135,
- 39.498751311531144
- ],
- [
- -75.51530404540452,
- 39.498751311531144
- ],
- [
- -75.51530404540452,
- 39.541777050605056
- ],
- [
- -75.51530404540452,
- 39.58480278967896
- ],
- [
- -75.55121671367135,
- 39.593407937493744
- ],
- [
- -75.55121671367135,
- 39.64503882438243
- ],
- [
- -75.51530404540452,
- 39.64503882438243
- ],
- [
- -75.51530404540452,
- 39.69666971127112
- ],
- [
- -75.47939137713769,
- 39.69666971127112
- ],
- [
- -75.47939137713769,
- 39.765510893789376
- ],
- [
- -75.44347870887087,
- 39.765510893789376
- ],
- [
- -75.44347870887087,
- 39.79132633723372
- ],
- [
- -75.40756604060404,
- 39.799931485048496
- ],
- [
- -75.40756604060404,
- 39.80853663286328
- ],
- [
- -75.37165337233722,
- 39.817141780678064
- ],
- [
- -75.37165337233722,
- 39.84295722412241
- ],
- [
- -75.33574070407039,
- 39.851562371937185
- ],
- [
- -75.22800269926991,
- 39.851562371937185
- ],
- [
- -75.19209003100308,
- 39.88598296319631
- ],
- [
- -75.12026469446943,
- 39.88598296319631
- ],
- [
- -75.12026469446943,
- 39.97203444134413
- ],
- [
- -75.04843935793578,
- 39.98063958915891
- ],
- [
- -75.04843935793578,
- 40.01506018041803
- ],
- [
- -74.97661402140213,
- 40.0322704760476
- ],
- [
- -74.97661402140213,
- 40.058085919491944
- ],
- [
- -74.90478868486846,
- 40.075296215121504
- ],
- [
- -74.83296334833481,
- 40.09250651075107
- ],
- [
- -74.83296334833481,
- 40.12692710201019
- ],
- [
- -74.79705068006798,
- 40.118321954195416
- ],
- [
- -74.72522534353433,
- 40.135532249824976
- ],
- [
- -74.72522534353433,
- 40.17855798889888
- ],
- [
- -74.76113801180117,
- 40.17855798889888
- ],
- [
- -74.76113801180117,
- 40.22158372797279
- ],
- [
- -74.83296334833481,
- 40.23879402360235
- ],
- [
- -74.83296334833481,
- 40.2646094670467
- ],
- [
- -74.86887601660165,
- 40.2646094670467
- ],
- [
- -74.86887601660165,
- 40.30763520612061
- ],
- [
- -74.9407013531353,
- 40.32484550175017
- ],
- [
- -74.9407013531353,
- 40.38508153645364
- ],
- [
- -74.97661402140213,
- 40.38508153645364
- ],
- [
- -74.97661402140213,
- 40.410896979897984
- ],
- [
- -75.04843935793578,
- 40.4022918320832
- ],
- [
- -75.04843935793578,
- 40.44531757115711
- ],
- [
- -75.0843520262026,
- 40.44531757115711
- ],
- [
- -75.0843520262026,
- 40.471133014601456
- ],
- [
- -75.04843935793578,
- 40.471133014601456
- ],
- [
- -75.04843935793578,
- 40.53136904930492
- ],
- [
- -75.0843520262026,
- 40.53136904930492
- ],
- [
- -75.0843520262026,
- 40.56578964056405
- ],
- [
- -75.12026469446943,
- 40.57439478837883
- ],
- [
- -75.19209003100308,
- 40.56578964056405
- ],
- [
- -75.19209003100308,
- 40.77231318811881
- ],
- [
- -75.15617736273626,
- 40.77231318811881
- ]
- ]
- ],
- "type": "Polygon"
- },
- "properties": {
- "NAME": "New Jersey"
- },
- "type": "Feature"
- }
- ]
-} \ No newline at end of file
diff --git a/platform/ios/app/uk.lproj/Localizable.strings b/platform/ios/app/uk.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/uk.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/vi.lproj/Localizable.strings b/platform/ios/app/vi.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/vi.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/zh-Hans.lproj/Localizable.strings b/platform/ios/app/zh-Hans.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/zh-Hans.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/app/zh-Hant.lproj/Localizable.strings b/platform/ios/app/zh-Hant.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/ios/app/zh-Hant.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 73f0fa2497..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "images" : [
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-Small@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-Small@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-1.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-40@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon.png",
- "scale" : "2x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-2.png",
- "scale" : "3x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-Small.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-3.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-40.png",
- "scale" : "1x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-76.png",
- "scale" : "1x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-76@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "83.5x83.5",
- "idiom" : "ipad",
- "filename" : "Icon-4.png",
- "scale" : "2x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "iTunesArtwork.png",
- "scale" : "1x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "iTunesArtwork@2x.png",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png
deleted file mode 100644
index 8133332fe2..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png
deleted file mode 100644
index 9b7db0607a..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png
deleted file mode 100644
index 8f61a8ec03..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png
deleted file mode 100644
index 783467e2ab..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png
deleted file mode 100644
index 2425133189..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
deleted file mode 100644
index b827b1e5a1..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
deleted file mode 100644
index 89c7119ac6..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png
deleted file mode 100644
index 0ed2a26730..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
deleted file mode 100644
index 311a1658a8..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
deleted file mode 100644
index 630d7c04c6..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
deleted file mode 100644
index c0ee89211a..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
deleted file mode 100644
index 436a8b404c..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png
deleted file mode 100644
index 2c9ecb48cb..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png
deleted file mode 100644
index f87c8734b5..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png
deleted file mode 100644
index 8d456a126f..0000000000
--- a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard b/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index 323bd43177..0000000000
--- a/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
- <dependencies>
- <deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="EHf-IW-A2E">
- <objects>
- <viewController id="01J-lp-oVM" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
- <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
- <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
- </view>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="53" y="375"/>
- </scene>
- </scenes>
-</document>
diff --git a/platform/ios/benchmark/Info.plist b/platform/ios/benchmark/Info.plist
deleted file mode 100644
index fc89fdaf08..0000000000
--- a/platform/ios/benchmark/Info.plist
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleDisplayName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>com.mapbox.GL.benchmark</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.0.2</string>
- <key>CFBundleSignature</key>
- <string>MBGL</string>
- <key>CFBundleVersion</key>
- <string>0.0.3</string>
- <key>LSRequiresIPhoneOS</key>
- <true/>
- <key>NSHumanReadableCopyright</key>
- <string>© 2015–2019 Mapbox</string>
- <key>UIApplicationExitsOnSuspend</key>
- <true/>
- <key>UILaunchStoryboardName</key>
- <string>LaunchScreen</string>
- <key>UIRequiredDeviceCapabilities</key>
- <array>
- <string>armv7</string>
- </array>
- <key>UISupportedInterfaceOrientations</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
- <key>UISupportedInterfaceOrientations~ipad</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationPortraitUpsideDown</string>
- <string>UIInterfaceOrientationLandscapeLeft</string>
- <string>UIInterfaceOrientationLandscapeRight</string>
- </array>
- <key>MGLMapboxMetricsEnabledSettingShownInApp</key>
- <true/>
-</dict>
-</plist>
diff --git a/platform/ios/benchmark/MBXBenchAppDelegate.h b/platform/ios/benchmark/MBXBenchAppDelegate.h
deleted file mode 100644
index 2368ca6daf..0000000000
--- a/platform/ios/benchmark/MBXBenchAppDelegate.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXBenchAppDelegate : UIResponder <UIApplicationDelegate>
-
-@property (strong, nonatomic) UIWindow *window;
-
-@end
diff --git a/platform/ios/benchmark/MBXBenchAppDelegate.m b/platform/ios/benchmark/MBXBenchAppDelegate.m
deleted file mode 100644
index d1a0ddf943..0000000000
--- a/platform/ios/benchmark/MBXBenchAppDelegate.m
+++ /dev/null
@@ -1,16 +0,0 @@
-#import "MBXBenchAppDelegate.h"
-#import "MBXBenchViewController.h"
-
-@implementation MBXBenchAppDelegate
-
-- (BOOL)application:(UIApplication*)application
- didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
-
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- self.window.rootViewController = [MBXBenchViewController new];
- [self.window makeKeyAndVisible];
-
- return YES;
-}
-
-@end
diff --git a/platform/ios/benchmark/MBXBenchViewController.h b/platform/ios/benchmark/MBXBenchViewController.h
deleted file mode 100644
index c4439be5ec..0000000000
--- a/platform/ios/benchmark/MBXBenchViewController.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface MBXBenchViewController : UIViewController
-
-@end
diff --git a/platform/ios/benchmark/MBXBenchViewController.mm b/platform/ios/benchmark/MBXBenchViewController.mm
deleted file mode 100644
index 901eb07cd1..0000000000
--- a/platform/ios/benchmark/MBXBenchViewController.mm
+++ /dev/null
@@ -1,151 +0,0 @@
-#import "MBXBenchViewController.h"
-#import "MBXBenchAppDelegate.h"
-#import "MGLMapView_Private.h"
-
-#include "locations.hpp"
-
-#include <chrono>
-
-@interface MBXBenchViewController () <MGLMapViewDelegate>
-
-@property (nonatomic) MGLMapView *mapView;
-
-@end
-
-@implementation MBXBenchViewController
-
-#pragma mark - Setup
-
-+ (void)initialize
-{
- if (self == [MBXBenchViewController class])
- {
- [[NSUserDefaults standardUserDefaults] registerDefaults:@{
- @"MBXUserTrackingMode": @(MGLUserTrackingModeNone),
- @"MBXShowsUserLocation": @NO,
- @"MBXDebug": @NO,
- }];
- }
-}
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
-
- // Use a local style and local assets if they’ve been downloaded.
- NSURL *tileSourceURL = [[NSBundle mainBundle] URLForResource:@"mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6" withExtension:nil subdirectory:@"tiles"];
- NSURL *url = [NSURL URLWithString:tileSourceURL ? @"asset://styles/streets-v8.json" : @"mapbox://styles/mapbox/streets-v8"];
- self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds styleURL:url];
- self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- self.mapView.delegate = self;
- self.mapView.zoomEnabled = NO;
- self.mapView.scrollEnabled = NO;
- self.mapView.rotateEnabled = NO;
- self.mapView.userInteractionEnabled = YES;
- self.mapView.preferredFramesPerSecond = MGLMapViewPreferredFramesPerSecondMaximum;
-
- [self.view addSubview:self.mapView];
-}
-
-- (void)viewDidAppear:(BOOL)animated
-{
- [super viewDidAppear:animated];
-
- [self startBenchmarkIteration];
-}
-
-size_t idx = 0;
-enum class State { None, WaitingForAssets, WarmingUp, Benchmarking } state = State::None;
-int frames = 0;
-std::chrono::steady_clock::time_point started;
-std::vector<std::pair<std::string, double>> result;
-
-static const int warmupDuration = 20; // frames
-static const int benchmarkDuration = 200; // frames
-
-- (void)startBenchmarkIteration
-{
- if (mbgl::bench::locations.size() > idx) {
- const auto& location = mbgl::bench::locations[idx];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(location.latitude, location.longitude) zoomLevel:location.zoom animated:NO];
- self.mapView.direction = location.bearing;
- state = State::WaitingForAssets;
- NSLog(@"Benchmarking \"%s\"", location.name.c_str());
- NSLog(@"- Loading assets...");
- } else {
- // Do nothing. The benchmark is completed.
- NSLog(@"Benchmark completed.");
- NSLog(@"Result:");
- double totalFPS = 0;
- size_t colWidth = 0;
- for (const auto& row : result) {
- colWidth = std::max(row.first.size(), colWidth);
- }
- for (const auto& row : result) {
- NSLog(@"| %-*s | %4.1f fps |", int(colWidth), row.first.c_str(), row.second);
- totalFPS += row.second;
- }
- NSLog(@"Total FPS: %4.1f", totalFPS);
- NSLog(@"Average FPS: %4.1f", totalFPS / result.size());
- exit(0);
- }
-}
-
-- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(__unused BOOL)fullyRendered
-{
- if (state == State::Benchmarking)
- {
- frames++;
- if (frames >= benchmarkDuration)
- {
- state = State::None;
-
- // Report FPS
- const auto duration = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() - started).count() ;
- const auto fps = double(frames * 1e6) / duration;
- result.emplace_back(mbgl::bench::locations[idx].name, fps);
- NSLog(@"- FPS: %.1f", fps);
-
- // Start benchmarking the next location.
- idx++;
- [self startBenchmarkIteration];
- } else {
- [mapView setNeedsRerender];
- }
- return;
- }
-
- else if (state == State::WarmingUp)
- {
- frames++;
- if (frames >= warmupDuration)
- {
- frames = 0;
- state = State::Benchmarking;
- started = std::chrono::steady_clock::now();
- NSLog(@"- Benchmarking for %d frames...", benchmarkDuration);
- }
- [mapView setNeedsRerender];
- return;
- }
-
- else if (state == State::WaitingForAssets)
- {
- if ([mapView isFullyLoaded])
- {
- // Start the benchmarking timer.
- state = State::WarmingUp;
- [self.mapView didReceiveMemoryWarning];
- NSLog(@"- Warming up for %d frames...", warmupDuration);
- [mapView setNeedsRerender];
- }
- return;
- }
-}
-
-- (NSUInteger)supportedInterfaceOrientations
-{
- return UIInterfaceOrientationMaskLandscape;
-}
-
-@end
diff --git a/platform/ios/benchmark/assets/glyphs/download.sh b/platform/ios/benchmark/assets/glyphs/download.sh
deleted file mode 100755
index 01ca5c63c7..0000000000
--- a/platform/ios/benchmark/assets/glyphs/download.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env bash
-
-set -u
-
-LIST=(
- "DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/0-255.pbf"
- "DIN%20Offc%20Pro%20Medium%2cArial%20Unicode%20MS%20Regular/0-255.pbf"
- "DIN%20Offc%20Pro%20Bold%2cArial%20Unicode%20MS%20Bold/0-255.pbf"
- "DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/256-511.pbf"
- "DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/8192-8447.pbf"
- "DIN%20Offc%20Pro%20Medium%2cArial%20Unicode%20MS%20Regular/8192-8447.pbf"
- "DIN%20Offc%20Pro%20Italic%2cArial%20Unicode%20MS%20Regular/0-255.pbf"
-
-)
-
-# from https://gist.github.com/cdown/1163649
-urldecode() {
- local url_encoded="${1//+/ }"
- printf '%b' "${url_encoded//%/\x}"
-}
-
-for i in ${LIST[@]} ; do
- OUTPUT=`urldecode "$i"`
- if [ ! -f "${OUTPUT}" ] ; then
- mkdir -p "`dirname "${OUTPUT}"`"
- echo "Downloading glyph '${OUTPUT}'"
- curl -# "https://api.tiles.mapbox.com/v4/fontstack/${i}?access_token=${MAPBOX_ACCESS_TOKEN}" | gunzip > "${OUTPUT}"
- fi
-done
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets.json b/platform/ios/benchmark/assets/sprites/mapbox-streets.json
deleted file mode 100644
index 488bf335de..0000000000
--- a/platform/ios/benchmark/assets/sprites/mapbox-streets.json
+++ /dev/null
@@ -1,2034 +0,0 @@
-{
- "secondary_marker": {
- "x": 0,
- "y": 0,
- "width": 20,
- "height": 50,
- "pixelRatio": 1,
- "sdf": false
- },
- "default_marker": {
- "x": 22,
- "y": 0,
- "width": 20,
- "height": 50,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-alternate-1-large": {
- "x": 44,
- "y": 0,
- "width": 21,
- "height": 37,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-business-1-large": {
- "x": 67,
- "y": 0,
- "width": 27,
- "height": 37,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-business-2-large": {
- "x": 0,
- "y": 52,
- "width": 27,
- "height": 37,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-alternate-2-large": {
- "x": 29,
- "y": 52,
- "width": 27,
- "height": 37,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-truck-1-large": {
- "x": 58,
- "y": 52,
- "width": 23,
- "height": 35,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-truck-2-large": {
- "x": 96,
- "y": 0,
- "width": 27,
- "height": 35,
- "pixelRatio": 1,
- "sdf": false
- },
- "marsh-32": {
- "x": 0,
- "y": 91,
- "width": 32,
- "height": 32,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-alternate-1-small": {
- "x": 96,
- "y": 37,
- "width": 17,
- "height": 31,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-business-1-small": {
- "x": 34,
- "y": 91,
- "width": 17,
- "height": 31,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-alternate-2-small": {
- "x": 53,
- "y": 91,
- "width": 21,
- "height": 31,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-truck-2-small": {
- "x": 76,
- "y": 91,
- "width": 21,
- "height": 31,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-business-2-small": {
- "x": 99,
- "y": 91,
- "width": 21,
- "height": 31,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-truck-1-small": {
- "x": 125,
- "y": 0,
- "width": 17,
- "height": 31,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-duplex-4-large": {
- "x": 144,
- "y": 0,
- "width": 40,
- "height": 29,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-duplex-3-large": {
- "x": 144,
- "y": 31,
- "width": 35,
- "height": 29,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-2-large": {
- "x": 144,
- "y": 62,
- "width": 29,
- "height": 29,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-duplex-5-large": {
- "x": 0,
- "y": 125,
- "width": 43,
- "height": 29,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-3-large": {
- "x": 144,
- "y": 93,
- "width": 35,
- "height": 29,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-1-large": {
- "x": 45,
- "y": 125,
- "width": 25,
- "height": 29,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-business-3-large": {
- "x": 72,
- "y": 125,
- "width": 35,
- "height": 28,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-business-2-large": {
- "x": 109,
- "y": 125,
- "width": 29,
- "height": 28,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-business-1-large": {
- "x": 140,
- "y": 125,
- "width": 25,
- "height": 28,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-2-large": {
- "x": 0,
- "y": 156,
- "width": 25,
- "height": 26,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-4-large": {
- "x": 27,
- "y": 156,
- "width": 37,
- "height": 26,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-1-large": {
- "x": 66,
- "y": 156,
- "width": 20,
- "height": 26,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-3-large": {
- "x": 88,
- "y": 156,
- "width": 30,
- "height": 26,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-state-3-large": {
- "x": 120,
- "y": 156,
- "width": 31,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-state-4-large": {
- "x": 186,
- "y": 0,
- "width": 36,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-3-small": {
- "x": 186,
- "y": 27,
- "width": 30,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-2-small": {
- "x": 186,
- "y": 54,
- "width": 25,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-1-small": {
- "x": 186,
- "y": 81,
- "width": 21,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-duplex-5-small": {
- "x": 186,
- "y": 108,
- "width": 36,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-duplex-4-small": {
- "x": 186,
- "y": 135,
- "width": 34,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-duplex-3-small": {
- "x": 153,
- "y": 156,
- "width": 30,
- "height": 25,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-business-2-small": {
- "x": 0,
- "y": 184,
- "width": 25,
- "height": 24,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-business-3-small": {
- "x": 27,
- "y": 184,
- "width": 30,
- "height": 24,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-interstate-business-1-small": {
- "x": 59,
- "y": 184,
- "width": 21,
- "height": 24,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-state-1-large": {
- "x": 82,
- "y": 184,
- "width": 20,
- "height": 24,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-state-2-large": {
- "x": 104,
- "y": 184,
- "width": 25,
- "height": 24,
- "pixelRatio": 1,
- "sdf": false
- },
- "post-15": {
- "x": 131,
- "y": 184,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "prison-15": {
- "x": 156,
- "y": 184,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "religious-christian-15": {
- "x": 181,
- "y": 184,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "religious-jewish-15": {
- "x": 224,
- "y": 0,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "religious-muslim-15": {
- "x": 224,
- "y": 25,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "rocket-15": {
- "x": 224,
- "y": 50,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "shop-15": {
- "x": 224,
- "y": 75,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "star-15": {
- "x": 224,
- "y": 100,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "suitcase-15": {
- "x": 224,
- "y": 125,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "swimming-15": {
- "x": 224,
- "y": 150,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "theatre-15": {
- "x": 224,
- "y": 175,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "town-hall-15": {
- "x": 0,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "triangle-15": {
- "x": 25,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "triangle-stroked-15": {
- "x": 50,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "dentist-15": {
- "x": 75,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "hospital-15": {
- "x": 100,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "pharmacy-15": {
- "x": 125,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "america-football-15": {
- "x": 150,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "baseball-15": {
- "x": 175,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "basketball-15": {
- "x": 200,
- "y": 210,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "campsite-15": {
- "x": 249,
- "y": 0,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "cemetery-15": {
- "x": 249,
- "y": 25,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "dog-park-15": {
- "x": 249,
- "y": 50,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "beer-15": {
- "x": 249,
- "y": 75,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "park-15": {
- "x": 249,
- "y": 100,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "bar-15": {
- "x": 249,
- "y": 125,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "playground-15": {
- "x": 249,
- "y": 150,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "zoo-15": {
- "x": 249,
- "y": 175,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "college-15": {
- "x": 249,
- "y": 200,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "ferry-15": {
- "x": 0,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "school-15": {
- "x": 25,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "rail-metro-15": {
- "x": 50,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "cafe-15": {
- "x": 75,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "bus-15": {
- "x": 100,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "airport-15": {
- "x": 125,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "airfield-15": {
- "x": 150,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "fast-food-15": {
- "x": 175,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "rail-light-15": {
- "x": 200,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "rail-15": {
- "x": 225,
- "y": 235,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "heliport-15": {
- "x": 274,
- "y": 0,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "restaurant-15": {
- "x": 274,
- "y": 25,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "alcohol-shop-15": {
- "x": 274,
- "y": 50,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "art-gallery-15": {
- "x": 274,
- "y": 75,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "bakery-15": {
- "x": 274,
- "y": 100,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "bank-15": {
- "x": 274,
- "y": 125,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "bicycle-15": {
- "x": 274,
- "y": 150,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "car-15": {
- "x": 274,
- "y": 175,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "cinema-15": {
- "x": 274,
- "y": 200,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "circle-15": {
- "x": 274,
- "y": 225,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "circle-stroked-15": {
- "x": 0,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "clothing-store-15": {
- "x": 25,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "embassy-15": {
- "x": 50,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "fire-station-15": {
- "x": 75,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "fuel-15": {
- "x": 100,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "garden-15": {
- "x": 125,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "grocery-15": {
- "x": 150,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "hairdresser-15": {
- "x": 175,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "harbor-15": {
- "x": 200,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "ice-cream-15": {
- "x": 225,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "laundry-15": {
- "x": 250,
- "y": 260,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "library-15": {
- "x": 299,
- "y": 0,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "lodging-15": {
- "x": 299,
- "y": 25,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "marker-15": {
- "x": 299,
- "y": 50,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "monument-15": {
- "x": 299,
- "y": 75,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "museum-15": {
- "x": 299,
- "y": 100,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "music-15": {
- "x": 299,
- "y": 125,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "place-of-worship-15": {
- "x": 299,
- "y": 150,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "police-15": {
- "x": 299,
- "y": 175,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "golf-15": {
- "x": 299,
- "y": 200,
- "width": 23,
- "height": 23,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-4-small": {
- "x": 0,
- "y": 285,
- "width": 31,
- "height": 22,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-1-small": {
- "x": 299,
- "y": 225,
- "width": 17,
- "height": 22,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-duplex-3-large": {
- "x": 33,
- "y": 285,
- "width": 32,
- "height": 22,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-2-small": {
- "x": 299,
- "y": 249,
- "width": 21,
- "height": 22,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-duplex-4-large": {
- "x": 67,
- "y": 285,
- "width": 34,
- "height": 22,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-federal-3-small": {
- "x": 103,
- "y": 285,
- "width": 25,
- "height": 22,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-duplex-5-large": {
- "x": 130,
- "y": 285,
- "width": 37,
- "height": 22,
- "pixelRatio": 1,
- "sdf": false
- },
- "washington-metro-11": {
- "x": 225,
- "y": 210,
- "width": 21,
- "height": 21,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-3-large": {
- "x": 169,
- "y": 285,
- "width": 30,
- "height": 21,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-2-large": {
- "x": 201,
- "y": 285,
- "width": 27,
- "height": 21,
- "pixelRatio": 1,
- "sdf": false
- },
- "light-11": {
- "x": 250,
- "y": 235,
- "width": 21,
- "height": 21,
- "pixelRatio": 1,
- "sdf": false
- },
- "subway-11": {
- "x": 275,
- "y": 260,
- "width": 21,
- "height": 21,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-1-large": {
- "x": 230,
- "y": 285,
- "width": 20,
- "height": 21,
- "pixelRatio": 1,
- "sdf": false
- },
- "u-bahn-11": {
- "x": 252,
- "y": 285,
- "width": 21,
- "height": 21,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-state-1-small": {
- "x": 186,
- "y": 162,
- "width": 17,
- "height": 20,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-state-4-small": {
- "x": 275,
- "y": 285,
- "width": 29,
- "height": 20,
- "pixelRatio": 1,
- "sdf": false
- },
- "mx-state-3-small": {
- "x": 324,
- "y": 0,
- "width": 25,
- "height": 20,
- "pixelRatio": 1,
- "sdf": false
- },
- "circle.sdf": {
- "x": 324,
- "y": 22,
- "width": 19,
- "height": 20,
- "pixelRatio": 1,
- "sdf": true
- },
- "mx-state-2-small": {
- "x": 324,
- "y": 44,
- "width": 21,
- "height": 20,
- "pixelRatio": 1,
- "sdf": false
- },
- "zoo-11": {
- "x": 324,
- "y": 66,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "beer-11": {
- "x": 324,
- "y": 87,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "dlr-11": {
- "x": 324,
- "y": 108,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "dlr.london-overground.london-underground.national-rail-11": {
- "x": 0,
- "y": 309,
- "width": 75,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "dlr.london-underground-11": {
- "x": 77,
- "y": 309,
- "width": 39,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "dlr.london-underground.national-rail-11": {
- "x": 118,
- "y": 309,
- "width": 57,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "dlr.national-rail-11": {
- "x": 177,
- "y": 309,
- "width": 39,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "heliport-11": {
- "x": 324,
- "y": 129,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "museum-11": {
- "x": 324,
- "y": 150,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "london-overground-11": {
- "x": 324,
- "y": 171,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "london-overground.london-underground-11": {
- "x": 218,
- "y": 309,
- "width": 39,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "london-overground.london-underground.national-rail-11": {
- "x": 259,
- "y": 309,
- "width": 57,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "london-overground.national-rail-11": {
- "x": 0,
- "y": 330,
- "width": 39,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "london-underground-11": {
- "x": 324,
- "y": 192,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "london-underground.national-rail-11": {
- "x": 41,
- "y": 330,
- "width": 39,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "circle-11": {
- "x": 324,
- "y": 213,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "metro.rer-11": {
- "x": 82,
- "y": 330,
- "width": 39,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "moscow-metro-11": {
- "x": 324,
- "y": 234,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "national-rail-11": {
- "x": 324,
- "y": 255,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "rail-11": {
- "x": 324,
- "y": 276,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "rer-11": {
- "x": 96,
- "y": 70,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "rer.transilien-11": {
- "x": 123,
- "y": 330,
- "width": 39,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "s-bahn-11": {
- "x": 318,
- "y": 309,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "music-11": {
- "x": 164,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "transilien-11": {
- "x": 185,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "school-11": {
- "x": 206,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "place-of-worship-11": {
- "x": 227,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "weiner-linien-11": {
- "x": 248,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "ferry-11": {
- "x": 269,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "circle-stroked-11": {
- "x": 290,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "bus-11": {
- "x": 311,
- "y": 330,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "police-11": {
- "x": 351,
- "y": 0,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "airport-11": {
- "x": 351,
- "y": 21,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "fast-food-11": {
- "x": 351,
- "y": 42,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "airfield-11": {
- "x": 351,
- "y": 63,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "post-11": {
- "x": 351,
- "y": 84,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "clothing-store-11": {
- "x": 351,
- "y": 105,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "prison-11": {
- "x": 351,
- "y": 126,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "alcohol-shop-11": {
- "x": 351,
- "y": 147,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "religious-christian-11": {
- "x": 351,
- "y": 168,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "embassy-11": {
- "x": 351,
- "y": 189,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "religious-jewish-11": {
- "x": 351,
- "y": 210,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "bar-11": {
- "x": 351,
- "y": 231,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "religious-muslim-11": {
- "x": 351,
- "y": 252,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "fire-station-11": {
- "x": 351,
- "y": 273,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "rocket-11": {
- "x": 351,
- "y": 294,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "art-gallery-11": {
- "x": 351,
- "y": 315,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "shop-11": {
- "x": 0,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "fuel-11": {
- "x": 21,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "star-11": {
- "x": 42,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "restaurant-11": {
- "x": 63,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "suitcase-11": {
- "x": 84,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "garden-11": {
- "x": 105,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "swimming-11": {
- "x": 126,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "bakery-11": {
- "x": 147,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "theatre-11": {
- "x": 168,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "grocery-11": {
- "x": 189,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "town-hall-11": {
- "x": 210,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "rail-metro-11": {
- "x": 231,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "triangle-11": {
- "x": 252,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "hairdresser-11": {
- "x": 273,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "triangle-stroked-11": {
- "x": 294,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "bank-11": {
- "x": 315,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "dentist-11": {
- "x": 336,
- "y": 351,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "harbor-11": {
- "x": 372,
- "y": 0,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "hospital-11": {
- "x": 372,
- "y": 21,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "cafe-11": {
- "x": 372,
- "y": 42,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "pharmacy-11": {
- "x": 372,
- "y": 63,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "ice-cream-11": {
- "x": 372,
- "y": 84,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "america-football-11": {
- "x": 372,
- "y": 105,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "bicycle-11": {
- "x": 372,
- "y": 126,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "baseball-11": {
- "x": 372,
- "y": 147,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "laundry-11": {
- "x": 372,
- "y": 168,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "basketball-11": {
- "x": 372,
- "y": 189,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "college-11": {
- "x": 372,
- "y": 210,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "campsite-11": {
- "x": 372,
- "y": 231,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "library-11": {
- "x": 372,
- "y": 252,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "cemetery-11": {
- "x": 372,
- "y": 273,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "car-11": {
- "x": 372,
- "y": 294,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "dog-park-11": {
- "x": 372,
- "y": 315,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "lodging-11": {
- "x": 372,
- "y": 336,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "golf-11": {
- "x": 0,
- "y": 372,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "rail-light-11": {
- "x": 21,
- "y": 372,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "park-11": {
- "x": 42,
- "y": 372,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "marker-11": {
- "x": 63,
- "y": 372,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "cinema-11": {
- "x": 84,
- "y": 372,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "monument-11": {
- "x": 105,
- "y": 372,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "playground-11": {
- "x": 126,
- "y": 372,
- "width": 19,
- "height": 19,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-5-large": {
- "x": 147,
- "y": 372,
- "width": 48,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-1-large": {
- "x": 197,
- "y": 372,
- "width": 18,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-3-small": {
- "x": 217,
- "y": 372,
- "width": 25,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-2-small": {
- "x": 244,
- "y": 372,
- "width": 21,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-1-small": {
- "x": 205,
- "y": 162,
- "width": 17,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-2-large": {
- "x": 267,
- "y": 372,
- "width": 25,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-6-large": {
- "x": 294,
- "y": 372,
- "width": 50,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-3-large": {
- "x": 346,
- "y": 372,
- "width": 32,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-5-large": {
- "x": 393,
- "y": 0,
- "width": 45,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-4-large": {
- "x": 393,
- "y": 20,
- "width": 39,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-1-large": {
- "x": 393,
- "y": 40,
- "width": 22,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-6-large": {
- "x": 0,
- "y": 393,
- "width": 54,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-2-large": {
- "x": 393,
- "y": 60,
- "width": 28,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-4-large": {
- "x": 393,
- "y": 80,
- "width": 42,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-3-large": {
- "x": 393,
- "y": 100,
- "width": 35,
- "height": 18,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-duplex-5-small": {
- "x": 393,
- "y": 120,
- "width": 29,
- "height": 17,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-duplex-4-small": {
- "x": 393,
- "y": 139,
- "width": 28,
- "height": 17,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-highway-duplex-3-small": {
- "x": 393,
- "y": 158,
- "width": 27,
- "height": 17,
- "pixelRatio": 1,
- "sdf": false
- },
- "entrance-11": {
- "x": 417,
- "y": 40,
- "width": 17,
- "height": 17,
- "pixelRatio": 1,
- "sdf": false
- },
- "marsh-16": {
- "x": 422,
- "y": 158,
- "width": 16,
- "height": 16,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-1-small": {
- "x": 393,
- "y": 177,
- "width": 17,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-6-small": {
- "x": 393,
- "y": 194,
- "width": 45,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-4-small": {
- "x": 393,
- "y": 211,
- "width": 33,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-3-small": {
- "x": 393,
- "y": 228,
- "width": 27,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-5-small": {
- "x": 393,
- "y": 245,
- "width": 38,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-2-small": {
- "x": 412,
- "y": 177,
- "width": 21,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-2-small": {
- "x": 393,
- "y": 262,
- "width": 23,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-1-small": {
- "x": 423,
- "y": 60,
- "width": 15,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-4-small": {
- "x": 393,
- "y": 279,
- "width": 35,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "metro-11": {
- "x": 423,
- "y": 139,
- "width": 15,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-3-small": {
- "x": 393,
- "y": 296,
- "width": 29,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "us-state-5-small": {
- "x": 393,
- "y": 313,
- "width": 40,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "default-6-small": {
- "x": 393,
- "y": 330,
- "width": 44,
- "height": 15,
- "pixelRatio": 1,
- "sdf": false
- },
- "oneway-spaced-white-large": {
- "x": 424,
- "y": 120,
- "width": 14,
- "height": 6,
- "pixelRatio": 1,
- "sdf": false
- },
- "oneway-spaced-large": {
- "x": 424,
- "y": 128,
- "width": 14,
- "height": 6,
- "pixelRatio": 1,
- "sdf": false
- },
- "oneway-spaced-small": {
- "x": 422,
- "y": 228,
- "width": 11,
- "height": 5,
- "pixelRatio": 1,
- "sdf": false
- },
- "oneway-spaced-white-small": {
- "x": 422,
- "y": 235,
- "width": 11,
- "height": 5,
- "pixelRatio": 1,
- "sdf": false
- }
-} \ No newline at end of file
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets.png b/platform/ios/benchmark/assets/sprites/mapbox-streets.png
deleted file mode 100644
index 00925f91a2..0000000000
--- a/platform/ios/benchmark/assets/sprites/mapbox-streets.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json b/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json
deleted file mode 100644
index 0a193fb4db..0000000000
--- a/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json
+++ /dev/null
@@ -1,2034 +0,0 @@
-{
- "secondary_marker": {
- "x": 0,
- "y": 0,
- "width": 40,
- "height": 100,
- "pixelRatio": 2,
- "sdf": false
- },
- "default_marker": {
- "x": 42,
- "y": 0,
- "width": 40,
- "height": 100,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-business-1-large": {
- "x": 84,
- "y": 0,
- "width": 54,
- "height": 74,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-alternate-1-large": {
- "x": 140,
- "y": 0,
- "width": 42,
- "height": 74,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-alternate-2-large": {
- "x": 0,
- "y": 102,
- "width": 54,
- "height": 74,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-business-2-large": {
- "x": 56,
- "y": 102,
- "width": 54,
- "height": 74,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-truck-1-large": {
- "x": 112,
- "y": 102,
- "width": 46,
- "height": 70,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-truck-2-large": {
- "x": 184,
- "y": 0,
- "width": 54,
- "height": 70,
- "pixelRatio": 2,
- "sdf": false
- },
- "marsh-32": {
- "x": 240,
- "y": 0,
- "width": 64,
- "height": 64,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-truck-1-small": {
- "x": 240,
- "y": 66,
- "width": 34,
- "height": 62,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-business-2-small": {
- "x": 184,
- "y": 72,
- "width": 42,
- "height": 62,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-alternate-2-small": {
- "x": 0,
- "y": 178,
- "width": 42,
- "height": 62,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-alternate-1-small": {
- "x": 44,
- "y": 178,
- "width": 34,
- "height": 62,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-truck-2-small": {
- "x": 80,
- "y": 178,
- "width": 42,
- "height": 62,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-business-1-small": {
- "x": 124,
- "y": 178,
- "width": 34,
- "height": 62,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-duplex-3-large": {
- "x": 160,
- "y": 178,
- "width": 68,
- "height": 56,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-3-large": {
- "x": 230,
- "y": 178,
- "width": 68,
- "height": 56,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-duplex-4-large": {
- "x": 0,
- "y": 242,
- "width": 78,
- "height": 56,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-1-large": {
- "x": 80,
- "y": 242,
- "width": 48,
- "height": 56,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-duplex-5-large": {
- "x": 130,
- "y": 242,
- "width": 84,
- "height": 56,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-2-large": {
- "x": 216,
- "y": 242,
- "width": 56,
- "height": 56,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-business-1-large": {
- "x": 306,
- "y": 0,
- "width": 48,
- "height": 54,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-business-2-large": {
- "x": 0,
- "y": 300,
- "width": 56,
- "height": 54,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-business-3-large": {
- "x": 58,
- "y": 300,
- "width": 68,
- "height": 54,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-1-large": {
- "x": 306,
- "y": 56,
- "width": 40,
- "height": 52,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-2-large": {
- "x": 128,
- "y": 300,
- "width": 50,
- "height": 52,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-3-large": {
- "x": 180,
- "y": 300,
- "width": 60,
- "height": 52,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-4-large": {
- "x": 242,
- "y": 300,
- "width": 74,
- "height": 52,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-4-large": {
- "x": 356,
- "y": 0,
- "width": 72,
- "height": 50,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-3-large": {
- "x": 356,
- "y": 52,
- "width": 62,
- "height": 50,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-duplex-5-small": {
- "x": 356,
- "y": 104,
- "width": 70,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-2-small": {
- "x": 356,
- "y": 154,
- "width": 48,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-duplex-3-small": {
- "x": 356,
- "y": 204,
- "width": 58,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-duplex-4-small": {
- "x": 356,
- "y": 254,
- "width": 66,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-1-small": {
- "x": 356,
- "y": 304,
- "width": 40,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-2-large": {
- "x": 0,
- "y": 356,
- "width": 50,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-3-small": {
- "x": 52,
- "y": 356,
- "width": 58,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-1-large": {
- "x": 306,
- "y": 110,
- "width": 40,
- "height": 48,
- "pixelRatio": 2,
- "sdf": false
- },
- "music-15": {
- "x": 306,
- "y": 160,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "place-of-worship-15": {
- "x": 306,
- "y": 208,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "police-15": {
- "x": 240,
- "y": 130,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "post-15": {
- "x": 112,
- "y": 356,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "prison-15": {
- "x": 160,
- "y": 356,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "religious-christian-15": {
- "x": 208,
- "y": 356,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "religious-jewish-15": {
- "x": 256,
- "y": 356,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "religious-muslim-15": {
- "x": 304,
- "y": 356,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "rocket-15": {
- "x": 352,
- "y": 356,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "shop-15": {
- "x": 430,
- "y": 0,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "star-15": {
- "x": 430,
- "y": 48,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "suitcase-15": {
- "x": 430,
- "y": 96,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "swimming-15": {
- "x": 430,
- "y": 144,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "theatre-15": {
- "x": 430,
- "y": 192,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "town-hall-15": {
- "x": 430,
- "y": 240,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "triangle-15": {
- "x": 430,
- "y": 288,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "triangle-stroked-15": {
- "x": 430,
- "y": 336,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "dentist-15": {
- "x": 0,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "hospital-15": {
- "x": 48,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "pharmacy-15": {
- "x": 96,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "america-football-15": {
- "x": 144,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "baseball-15": {
- "x": 192,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "basketball-15": {
- "x": 240,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "campsite-15": {
- "x": 288,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "cemetery-15": {
- "x": 336,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "dog-park-15": {
- "x": 384,
- "y": 406,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "beer-15": {
- "x": 478,
- "y": 0,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "park-15": {
- "x": 478,
- "y": 48,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "bar-15": {
- "x": 478,
- "y": 96,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "playground-15": {
- "x": 478,
- "y": 144,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "zoo-15": {
- "x": 478,
- "y": 192,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "ferry-15": {
- "x": 478,
- "y": 240,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "bus-15": {
- "x": 478,
- "y": 288,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "airport-15": {
- "x": 478,
- "y": 336,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "college-15": {
- "x": 478,
- "y": 384,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "airfield-15": {
- "x": 0,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "school-15": {
- "x": 48,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "rail-metro-15": {
- "x": 96,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "cafe-15": {
- "x": 144,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "fast-food-15": {
- "x": 192,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "rail-light-15": {
- "x": 240,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "rail-15": {
- "x": 288,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-business-3-small": {
- "x": 336,
- "y": 454,
- "width": 58,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "heliport-15": {
- "x": 396,
- "y": 454,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-business-2-small": {
- "x": 444,
- "y": 454,
- "width": 48,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "restaurant-15": {
- "x": 526,
- "y": 0,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "alcohol-shop-15": {
- "x": 526,
- "y": 48,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-interstate-business-1-small": {
- "x": 526,
- "y": 96,
- "width": 40,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "art-gallery-15": {
- "x": 526,
- "y": 144,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "bakery-15": {
- "x": 526,
- "y": 192,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "bank-15": {
- "x": 526,
- "y": 240,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "bicycle-15": {
- "x": 526,
- "y": 288,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "car-15": {
- "x": 526,
- "y": 336,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "cinema-15": {
- "x": 526,
- "y": 384,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "circle-15": {
- "x": 526,
- "y": 432,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "circle-stroked-15": {
- "x": 0,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "clothing-store-15": {
- "x": 48,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "embassy-15": {
- "x": 96,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "fire-station-15": {
- "x": 144,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "fuel-15": {
- "x": 192,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "garden-15": {
- "x": 240,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "grocery-15": {
- "x": 288,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "hairdresser-15": {
- "x": 336,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "harbor-15": {
- "x": 384,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "ice-cream-15": {
- "x": 432,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "laundry-15": {
- "x": 480,
- "y": 502,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "library-15": {
- "x": 574,
- "y": 0,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "lodging-15": {
- "x": 574,
- "y": 48,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "marker-15": {
- "x": 574,
- "y": 96,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "monument-15": {
- "x": 574,
- "y": 144,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "museum-15": {
- "x": 574,
- "y": 192,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "golf-15": {
- "x": 574,
- "y": 240,
- "width": 46,
- "height": 46,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-4-small": {
- "x": 0,
- "y": 550,
- "width": 62,
- "height": 44,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-3-small": {
- "x": 64,
- "y": 550,
- "width": 50,
- "height": 44,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-duplex-5-large": {
- "x": 116,
- "y": 550,
- "width": 74,
- "height": 44,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-2-small": {
- "x": 574,
- "y": 288,
- "width": 42,
- "height": 44,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-duplex-4-large": {
- "x": 192,
- "y": 550,
- "width": 68,
- "height": 44,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-federal-1-small": {
- "x": 574,
- "y": 334,
- "width": 34,
- "height": 44,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-duplex-3-large": {
- "x": 262,
- "y": 550,
- "width": 64,
- "height": 44,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-1-large": {
- "x": 574,
- "y": 380,
- "width": 40,
- "height": 42,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-2-large": {
- "x": 328,
- "y": 550,
- "width": 54,
- "height": 42,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-3-large": {
- "x": 384,
- "y": 550,
- "width": 60,
- "height": 42,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-3-small": {
- "x": 184,
- "y": 136,
- "width": 50,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-1-small": {
- "x": 574,
- "y": 424,
- "width": 34,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-2-small": {
- "x": 574,
- "y": 466,
- "width": 42,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "mx-state-4-small": {
- "x": 446,
- "y": 550,
- "width": 58,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "u-bahn-11": {
- "x": 574,
- "y": 508,
- "width": 40,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "subway-11": {
- "x": 306,
- "y": 256,
- "width": 40,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "light-11": {
- "x": 432,
- "y": 406,
- "width": 40,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "circle.sdf": {
- "x": 528,
- "y": 502,
- "width": 38,
- "height": 40,
- "pixelRatio": 2,
- "sdf": true
- },
- "washington-metro-11": {
- "x": 506,
- "y": 550,
- "width": 40,
- "height": 40,
- "pixelRatio": 2,
- "sdf": false
- },
- "zoo-11": {
- "x": 548,
- "y": 550,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "beer-11": {
- "x": 622,
- "y": 0,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "heliport-11": {
- "x": 622,
- "y": 40,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "museum-11": {
- "x": 622,
- "y": 80,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "ferry-11": {
- "x": 622,
- "y": 120,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "circle-11": {
- "x": 622,
- "y": 160,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "bus-11": {
- "x": 622,
- "y": 200,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "music-11": {
- "x": 622,
- "y": 240,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "school-11": {
- "x": 622,
- "y": 280,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "airport-11": {
- "x": 622,
- "y": 320,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "place-of-worship-11": {
- "x": 622,
- "y": 360,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "airfield-11": {
- "x": 622,
- "y": 400,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "circle-stroked-11": {
- "x": 622,
- "y": 440,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "police-11": {
- "x": 622,
- "y": 480,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "fast-food-11": {
- "x": 622,
- "y": 520,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "post-11": {
- "x": 0,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "clothing-store-11": {
- "x": 40,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "prison-11": {
- "x": 80,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "alcohol-shop-11": {
- "x": 120,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "rail-11": {
- "x": 160,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "religious-christian-11": {
- "x": 200,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "embassy-11": {
- "x": 240,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "religious-jewish-11": {
- "x": 280,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "bar-11": {
- "x": 320,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "religious-muslim-11": {
- "x": 360,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "fire-station-11": {
- "x": 400,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "rocket-11": {
- "x": 440,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "art-gallery-11": {
- "x": 480,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "shop-11": {
- "x": 520,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "fuel-11": {
- "x": 560,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "star-11": {
- "x": 600,
- "y": 596,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "restaurant-11": {
- "x": 662,
- "y": 0,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "suitcase-11": {
- "x": 662,
- "y": 40,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "garden-11": {
- "x": 662,
- "y": 80,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "swimming-11": {
- "x": 662,
- "y": 120,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "bakery-11": {
- "x": 662,
- "y": 160,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "theatre-11": {
- "x": 662,
- "y": 200,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "grocery-11": {
- "x": 662,
- "y": 240,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "town-hall-11": {
- "x": 662,
- "y": 280,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "rail-metro-11": {
- "x": 662,
- "y": 320,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "triangle-11": {
- "x": 662,
- "y": 360,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "hairdresser-11": {
- "x": 662,
- "y": 400,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "triangle-stroked-11": {
- "x": 662,
- "y": 440,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "bank-11": {
- "x": 662,
- "y": 480,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "dentist-11": {
- "x": 662,
- "y": 520,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "harbor-11": {
- "x": 662,
- "y": 560,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "hospital-11": {
- "x": 0,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "cafe-11": {
- "x": 40,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "pharmacy-11": {
- "x": 80,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "ice-cream-11": {
- "x": 120,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "america-football-11": {
- "x": 160,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "bicycle-11": {
- "x": 200,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "baseball-11": {
- "x": 240,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "laundry-11": {
- "x": 280,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "basketball-11": {
- "x": 320,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "college-11": {
- "x": 360,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "campsite-11": {
- "x": 400,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "library-11": {
- "x": 440,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "cemetery-11": {
- "x": 480,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "car-11": {
- "x": 520,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "dog-park-11": {
- "x": 560,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "lodging-11": {
- "x": 600,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "golf-11": {
- "x": 640,
- "y": 636,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "rail-light-11": {
- "x": 702,
- "y": 0,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "park-11": {
- "x": 702,
- "y": 40,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "marker-11": {
- "x": 702,
- "y": 80,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "cinema-11": {
- "x": 702,
- "y": 120,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "monument-11": {
- "x": 702,
- "y": 160,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "playground-11": {
- "x": 702,
- "y": 200,
- "width": 38,
- "height": 38,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-3-small": {
- "x": 0,
- "y": 676,
- "width": 50,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-1-small": {
- "x": 702,
- "y": 240,
- "width": 34,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "dlr-11": {
- "x": 702,
- "y": 278,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "dlr.london-overground.london-underground.national-rail-11": {
- "x": 52,
- "y": 676,
- "width": 148,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "dlr.london-underground-11": {
- "x": 202,
- "y": 676,
- "width": 76,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-6-large": {
- "x": 280,
- "y": 676,
- "width": 100,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "dlr.london-underground.national-rail-11": {
- "x": 382,
- "y": 676,
- "width": 112,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "dlr.national-rail-11": {
- "x": 496,
- "y": 676,
- "width": 76,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-5-large": {
- "x": 574,
- "y": 676,
- "width": 90,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "london-overground-11": {
- "x": 702,
- "y": 316,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-4-large": {
- "x": 742,
- "y": 0,
- "width": 78,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "london-overground.london-underground-11": {
- "x": 742,
- "y": 38,
- "width": 76,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-3-large": {
- "x": 742,
- "y": 76,
- "width": 65,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "london-overground.london-underground.national-rail-11": {
- "x": 0,
- "y": 714,
- "width": 112,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-2-large": {
- "x": 742,
- "y": 114,
- "width": 50,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-6-large": {
- "x": 114,
- "y": 714,
- "width": 108,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-1-large": {
- "x": 742,
- "y": 152,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "weiner-linien-11": {
- "x": 780,
- "y": 152,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "transilien-11": {
- "x": 742,
- "y": 190,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "s-bahn-11": {
- "x": 780,
- "y": 190,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "rer.transilien-11": {
- "x": 742,
- "y": 228,
- "width": 76,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "rer-11": {
- "x": 742,
- "y": 266,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "national-rail-11": {
- "x": 780,
- "y": 266,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "moscow-metro-11": {
- "x": 742,
- "y": 304,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "metro.rer-11": {
- "x": 742,
- "y": 342,
- "width": 76,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-5-large": {
- "x": 224,
- "y": 714,
- "width": 96,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "london-underground.national-rail-11": {
- "x": 742,
- "y": 380,
- "width": 76,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-2-small": {
- "x": 742,
- "y": 418,
- "width": 42,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "london-overground.national-rail-11": {
- "x": 742,
- "y": 456,
- "width": 76,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-1-large": {
- "x": 742,
- "y": 494,
- "width": 44,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-4-large": {
- "x": 322,
- "y": 714,
- "width": 84,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-2-large": {
- "x": 742,
- "y": 532,
- "width": 56,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-3-large": {
- "x": 742,
- "y": 570,
- "width": 70,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "london-underground-11": {
- "x": 780,
- "y": 304,
- "width": 36,
- "height": 36,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-duplex-3-small": {
- "x": 742,
- "y": 608,
- "width": 54,
- "height": 34,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-duplex-4-small": {
- "x": 742,
- "y": 644,
- "width": 56,
- "height": 34,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-highway-duplex-5-small": {
- "x": 666,
- "y": 676,
- "width": 58,
- "height": 34,
- "pixelRatio": 2,
- "sdf": false
- },
- "marsh-16": {
- "x": 786,
- "y": 418,
- "width": 32,
- "height": 32,
- "pixelRatio": 2,
- "sdf": false
- },
- "entrance-11": {
- "x": 788,
- "y": 494,
- "width": 32,
- "height": 32,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-1-small": {
- "x": 742,
- "y": 680,
- "width": 30,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-2-small": {
- "x": 774,
- "y": 680,
- "width": 46,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-2-small": {
- "x": 408,
- "y": 714,
- "width": 42,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-3-small": {
- "x": 452,
- "y": 714,
- "width": 54,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-4-small": {
- "x": 508,
- "y": 714,
- "width": 66,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-3-small": {
- "x": 576,
- "y": 714,
- "width": 58,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-5-small": {
- "x": 636,
- "y": 714,
- "width": 76,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-5-small": {
- "x": 714,
- "y": 714,
- "width": 80,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-6-small": {
- "x": 0,
- "y": 752,
- "width": 90,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "default-6-small": {
- "x": 92,
- "y": 752,
- "width": 88,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-4-small": {
- "x": 182,
- "y": 752,
- "width": 70,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "us-state-1-small": {
- "x": 702,
- "y": 354,
- "width": 34,
- "height": 30,
- "pixelRatio": 2,
- "sdf": false
- },
- "metro-11": {
- "x": 702,
- "y": 386,
- "width": 28,
- "height": 28,
- "pixelRatio": 2,
- "sdf": false
- },
- "oneway-spaced-white-large": {
- "x": 702,
- "y": 416,
- "width": 28,
- "height": 12,
- "pixelRatio": 2,
- "sdf": false
- },
- "oneway-spaced-large": {
- "x": 702,
- "y": 430,
- "width": 28,
- "height": 12,
- "pixelRatio": 2,
- "sdf": false
- },
- "oneway-spaced-small": {
- "x": 794,
- "y": 114,
- "width": 22,
- "height": 10,
- "pixelRatio": 2,
- "sdf": false
- },
- "oneway-spaced-white-small": {
- "x": 794,
- "y": 126,
- "width": 22,
- "height": 10,
- "pixelRatio": 2,
- "sdf": false
- }
-} \ No newline at end of file
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.png b/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.png
deleted file mode 100644
index 0d5bd533f7..0000000000
--- a/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/assets/styles/streets-v8.json b/platform/ios/benchmark/assets/styles/streets-v8.json
deleted file mode 100644
index 4befdc121a..0000000000
--- a/platform/ios/benchmark/assets/styles/streets-v8.json
+++ /dev/null
@@ -1,8935 +0,0 @@
-{
- "version": 8,
- "name": "Mapbox Streets",
- "sources": {
- "composite": {
- "url": "asset://tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json",
- "type": "vector"
- }
- },
- "sprite": "asset://sprites/mapbox-streets",
- "glyphs": "asset://glyphs/{fontstack}/{range}.pbf",
- "layers": [
- {
- "id": "background",
- "type": "background",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "background-color": "#ede9d9"
- }
- },
- {
- "id": "landcover_crop",
- "type": "fill",
- "source": "composite",
- "source-layer": "landcover",
- "minzoom": 0,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "crop"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ddecb1",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 14,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_grass",
- "type": "fill",
- "source": "composite",
- "source-layer": "landcover",
- "minzoom": 0,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "grass"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ddecb1",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 14,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_scrub",
- "type": "fill",
- "source": "composite",
- "source-layer": "landcover",
- "minzoom": 0,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "scrub"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ddecb1",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 14,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_wood",
- "type": "fill",
- "source": "composite",
- "source-layer": "landcover",
- "minzoom": 0,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "wood"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ddecb1",
- "fill-opacity": {
- "base": 1.5,
- "stops": [
- [
- 2,
- 0.3
- ],
- [
- 14,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "landcover_snow",
- "type": "fill",
- "source": "composite",
- "source-layer": "landcover",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "snow"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#fff",
- "fill-opacity": 0.2,
- "fill-antialias": false
- }
- },
- {
- "id": "scrub",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 9,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "scrub"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ddecb1",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 9,
- 0
- ],
- [
- 16,
- 0.2
- ]
- ]
- }
- }
- },
- {
- "id": "grass",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 9,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "grass"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ddecb1",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 9,
- 0
- ],
- [
- 16,
- 0.4
- ]
- ]
- }
- }
- },
- {
- "id": "wood",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 6,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "wood"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ddecb1",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 6,
- 0
- ],
- [
- 16,
- 0.5
- ]
- ]
- }
- }
- },
- {
- "id": "agriculture",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "agriculture"
- ]
- ],
- "layout": {
- "visibility": "none"
- },
- "paint": {
- "fill-color": "rgba(221,85,85,1.000)",
- "fill-opacity": 1
- }
- },
- {
- "id": "hospital",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "hospital"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#f4dcdc"
- }
- },
- {
- "id": "school",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "school"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#f3ebb4"
- }
- },
- {
- "id": "parks",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "park"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#cde8a2",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 6,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "glaciers",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 9,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "glacier"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#dcedf9",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 9,
- 0
- ],
- [
- 10,
- 0.25
- ]
- ]
- }
- }
- },
- {
- "id": "pitch",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "pitch"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#c3e194"
- }
- },
- {
- "id": "pitch-line",
- "type": "line",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "pitch"
- ]
- ],
- "layout": {},
- "paint": {
- "line-color": "#e1f2c6"
- }
- },
- {
- "id": "cemetery",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "cemetery"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#dde6c2"
- }
- },
- {
- "id": "industrial",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "industrial"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#e0dae0"
- }
- },
- {
- "id": "sand",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "sand"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#ededcf"
- }
- },
- {
- "id": "hillshade_highlight_bright",
- "type": "fill",
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 18,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "level",
- 94
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#fff",
- "fill-opacity": {
- "stops": [
- [
- 15,
- 0.12
- ],
- [
- 18,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_highlight_med",
- "type": "fill",
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "level",
- 90
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#fff",
- "fill-opacity": {
- "stops": [
- [
- 15,
- 0.12
- ],
- [
- 18,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_faint",
- "type": "fill",
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 17,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "level",
- 89
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#5a5517",
- "fill-opacity": {
- "stops": [
- [
- 15,
- 0.05
- ],
- [
- 17,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_med",
- "type": "fill",
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "level",
- 78
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#5a5517",
- "fill-opacity": {
- "stops": [
- [
- 15,
- 0.05
- ],
- [
- 17,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_dark",
- "type": "fill",
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "level",
- 67
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#5a5517",
- "fill-opacity": {
- "stops": [
- [
- 15,
- 0.06
- ],
- [
- 17,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "hillshade_shadow_extreme",
- "type": "fill",
- "source": "composite",
- "source-layer": "hillshade",
- "maxzoom": 17,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "level",
- 56
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#5a5517",
- "fill-opacity": {
- "stops": [
- [
- 15,
- 0.06
- ],
- [
- 17,
- 0
- ]
- ]
- },
- "fill-antialias": false
- }
- },
- {
- "id": "waterway-river",
- "type": "line",
- "source": "composite",
- "source-layer": "waterway",
- "minzoom": 8,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "any",
- [
- "in",
- "class",
- "river"
- ],
- [
- "in",
- "class",
- "canal"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": {
- "base": 1,
- "stops": [
- [
- 0,
- "butt"
- ],
- [
- 11,
- "round"
- ]
- ]
- },
- "line-join": "round"
- },
- "paint": {
- "line-color": "#8ccbf7",
- "line-width": {
- "base": 1.3,
- "stops": [
- [
- 8.5,
- 0.1
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 8,
- 0
- ],
- [
- 8.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "waterway-other",
- "type": "line",
- "source": "composite",
- "source-layer": "waterway",
- "minzoom": 13,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "class",
- "river"
- ],
- [
- "!=",
- "class",
- "canal"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-color": "#8ccbf7",
- "line-width": {
- "base": 1.35,
- "stops": [
- [
- 13.5,
- 0.1
- ],
- [
- 20,
- 3
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 13.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "water",
- "type": "fill",
- "source": "composite",
- "source-layer": "water",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#8ccbf7"
- }
- },
- {
- "id": "landuse-overlay",
- "type": "fill",
- "source": "composite",
- "source-layer": "landuse_overlay",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all"
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#9DD3D8",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 10,
- 0.25
- ],
- [
- 10.5,
- 0.15
- ]
- ]
- }
- }
- },
- {
- "id": "landuse-overlay-pattern",
- "ref": "landuse-overlay",
- "interactive": true,
- "paint": {
- "fill-color": "#9DD3D8",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 10,
- 0
- ],
- [
- 10.5,
- 1
- ]
- ]
- },
- "fill-pattern": {
- "base": 1,
- "stops": [
- [
- 13,
- "marsh-16"
- ],
- [
- 14,
- "marsh-32"
- ]
- ]
- }
- }
- },
- {
- "id": "barrier_line-land-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "barrier_line",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "land"
- ],
- [
- "in",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": "#ede9d9"
- }
- },
- {
- "id": "barrier_line-land-line",
- "type": "line",
- "source": "composite",
- "source-layer": "barrier_line",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "land"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "line-cap": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.99,
- "stops": [
- [
- 14,
- 0.75
- ],
- [
- 20,
- 40
- ]
- ]
- },
- "line-color": "#ede9d9"
- }
- },
- {
- "id": "building-bottom",
- "type": "fill",
- "source": "composite",
- "source-layer": "building",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#cbc6b7",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 15.5,
- 0
- ],
- [
- 16,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "building-top",
- "ref": "building-bottom",
- "interactive": true,
- "paint": {
- "fill-color": {
- "base": 1,
- "stops": [
- [
- 15,
- "#ede9d9"
- ],
- [
- 16,
- "#e8e0cc"
- ]
- ]
- },
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.5,
- 1
- ]
- ]
- },
- "fill-outline-color": "#d0cbbb",
- "fill-translate": {
- "base": 1,
- "stops": [
- [
- 15,
- [
- 0,
- 0
- ]
- ],
- [
- 20,
- [
- -5,
- -5
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "$type",
- "Polygon"
- ],
- [
- "!=",
- "type",
- "apron"
- ]
- ],
- "layout": {},
- "paint": {
- "fill-color": "#dbcedb",
- "fill-opacity": {
- "base": 1,
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-runway",
- "type": "line",
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "runway"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt"
- },
- "paint": {
- "line-color": "#dbcedb",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 9,
- 1
- ],
- [
- 18,
- 80
- ]
- ]
- }
- }
- },
- {
- "id": "aeroway-taxiway",
- "type": "line",
- "source": "composite",
- "source-layer": "aeroway",
- "minzoom": 9,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "taxiway"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt"
- },
- "paint": {
- "line-color": "#dbcedb",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 10,
- 0.5
- ],
- [
- 18,
- 20
- ]
- ]
- }
- }
- },
- {
- "id": "admin-3-4-boundaries-bg",
- "type": "line",
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- ">=",
- "admin_level",
- 3
- ],
- [
- "in",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-join": "bevel"
- },
- "paint": {
- "line-color": {
- "base": 1,
- "stops": [
- [
- 8,
- "#ede9d9"
- ],
- [
- 16,
- "#f6e8e1"
- ]
- ]
- },
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 3.5
- ],
- [
- 10,
- 8
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 7,
- 0
- ],
- [
- 8,
- 0.75
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 8,
- 3
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street_limited-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#EEE8E3",
- "fill-opacity": 0.75
- }
- },
- {
- "id": "tunnel-path-bg",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "path"
- ]
- ],
- "layout": {
- "visibility": "none",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-color": "#d9d3c9",
- "line-blur": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.25,
- 0.5
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-path",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "path"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 15,
- [
- 0.1,
- 1.25
- ]
- ],
- [
- 16,
- [
- 0.1,
- 1.6
- ]
- ],
- [
- 17,
- [
- 0.1,
- 1.45
- ]
- ],
- [
- 18,
- [
- 0.1,
- 1.3
- ]
- ]
- ]
- },
- "line-color": "#f5f2ee",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street-low",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street_limited-low",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-motorway_link-case",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "motorway_link"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-service-driveway-case",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "service",
- "driveway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#c4beb7",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-street_limited-case",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ],
- [
- "!=",
- "type",
- "construction"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#c4beb7",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street-case",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#c4beb7",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-main-case",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main"
- ],
- [
- "!=",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-dasharray": [
- 3,
- 3
- ],
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "#c4beb7"
- }
- },
- {
- "id": "tunnel-trunk-case",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main"
- ],
- [
- "in",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway-case",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "motorway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 3,
- 3
- ]
- }
- },
- {
- "id": "tunnel-motorway_link",
- "ref": "tunnel-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#ffbe8c",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-service-driveway",
- "ref": "tunnel-service-driveway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#fff",
- "line-dasharray": [
- 1,
- 0
- ]
- }
- },
- {
- "id": "tunnel-construction",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ],
- [
- "in",
- "type",
- "construction"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street_limited",
- "ref": "tunnel-street_limited-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#EFEDEB",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-street",
- "ref": "tunnel-street-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-main",
- "ref": "tunnel-main-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 0
- ],
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-trunk",
- "ref": "tunnel-trunk-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "#f2de9e"
- }
- },
- {
- "id": "tunnel-motorway",
- "ref": "tunnel-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-opacity": 1,
- "line-color": "#ffbe8c",
- "line-blur": 0
- }
- },
- {
- "id": "tunnel-rail",
- "type": "line",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 13,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt"
- },
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "#d8d5c8"
- ],
- [
- 16,
- "#c0beb2"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "tunnel-rail-tracks",
- "ref": "tunnel-rail",
- "interactive": true,
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "#d8d5c8"
- ],
- [
- 16,
- "#c0beb2"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 4
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-dasharray": [
- 0.1,
- 15
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.75,
- 0
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-path-bg",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "path"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-color": "#d9d3c9",
- "line-blur": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.25,
- 0.5
- ]
- ]
- }
- }
- },
- {
- "id": "road-path",
- "ref": "road-path-bg",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "#fff",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 15,
- [
- 0.1,
- 1.25
- ]
- ],
- [
- 16,
- [
- 0.1,
- 1.6
- ]
- ],
- [
- 17,
- [
- 0.1,
- 1.45
- ]
- ],
- [
- 18,
- [
- 0.1,
- 1.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-polygon-outline",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 12,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {
- "visibility": "none"
- },
- "paint": {
- "line-color": "#d9d3c9",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 1.5
- ],
- [
- 20,
- 4
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "road-street-low",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-low",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "stops": [
- [
- 11,
- 0
- ],
- [
- 11.25,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway_link-case",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 10,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "motorway_link"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 10.99,
- 0
- ],
- [
- 11,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-service-driveway-case",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "service",
- "driveway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-case",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ],
- [
- "!=",
- "type",
- "construction"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street-case",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-main-case",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main"
- ],
- [
- "!=",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 9.99,
- 0
- ],
- [
- 10,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk-case",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 5,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main"
- ],
- [
- "in",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 5.9,
- 0
- ],
- [
- 6,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-motorway-case",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "motorway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5.9,
- 0
- ],
- [
- 6,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 12,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {
- "visibility": "none"
- },
- "paint": {
- "fill-color": "#EFEDEB",
- "fill-opacity": 1
- }
- },
- {
- "id": "road-service-driveway",
- "ref": "road-service-driveway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#fff"
- }
- },
- {
- "id": "road-motorway_link",
- "ref": "road-motorway_link-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#ffa159",
- "line-opacity": 1
- }
- },
- {
- "id": "road-construction",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ],
- [
- "in",
- "type",
- "construction"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "road-street_limited",
- "ref": "road-street_limited-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#EFEDEB",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-street",
- "ref": "road-street-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-main",
- "ref": "road-main-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 5,
- "#ede9d9"
- ],
- [
- 8,
- "#fff"
- ]
- ]
- },
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-trunk",
- "ref": "road-trunk-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "#f2cf60"
- }
- },
- {
- "id": "road-motorway",
- "ref": "road-motorway-case",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 5.9,
- "#fff"
- ],
- [
- 6,
- "#ffa159"
- ]
- ]
- },
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-rail",
- "type": "line",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 13,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt"
- },
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "#d8d5c8"
- ],
- [
- 16,
- "#b3b1a6"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "road-rail-tracks",
- "ref": "road-rail",
- "interactive": true,
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "#d8d5c8"
- ],
- [
- 16,
- "#b3b1a6"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 4
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-dasharray": [
- 0.1,
- 15
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.75,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-polygon",
- "type": "fill",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "Polygon"
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "fill-color": "#EEE8E3",
- "fill-opacity": 0.75
- }
- },
- {
- "id": "bridge-path-bg",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "path"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 2
- ],
- [
- 18,
- 7
- ]
- ]
- },
- "line-dasharray": [
- 1,
- 0
- ],
- "line-color": "#d9d3c9",
- "line-blur": 0,
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.25,
- 0.75
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-path",
- "ref": "bridge-path-bg",
- "interactive": true,
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 15,
- 1
- ],
- [
- 18,
- 4
- ]
- ]
- },
- "line-color": "#fff",
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.1,
- 1.25
- ]
- ],
- [
- 16,
- [
- 0.1,
- 1.6
- ]
- ],
- [
- 17,
- [
- 0.1,
- 1.45
- ]
- ],
- [
- 18,
- [
- 0.1,
- 1.3
- ]
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 15,
- 0
- ],
- [
- 15.25,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-low",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-low",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "stops": [
- [
- 11.5,
- 0
- ],
- [
- 12,
- 1
- ],
- [
- 14,
- 1
- ],
- [
- 14.01,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link-case",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 12,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "motorway_link"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-opacity": 1
- }
- },
- {
- "id": "bridge-service-driveway-case",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "service",
- "driveway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited-case",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ],
- [
- "!=",
- "type",
- "construction"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street-case",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.75
- ],
- [
- 20,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 13,
- 0
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-main-case",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 8,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main"
- ],
- [
- "!=",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.2,
- "stops": [
- [
- 10,
- 0.75
- ],
- [
- 18,
- 2
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ]
- }
- },
- {
- "id": "bridge-motorway-trunk-case",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "any",
- [
- "in",
- "class",
- "motorway"
- ],
- [
- "in",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 16,
- 2
- ]
- ]
- },
- "line-color": "#fff",
- "line-gap-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-motorway_link",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 10,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "motorway_link"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#ffa159"
- }
- },
- {
- "id": "bridge-service-driveway",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "service",
- "driveway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#fff"
- }
- },
- {
- "id": "bridge-construction",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ],
- [
- "in",
- "type",
- "construction"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#d9d3c9",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- },
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 14,
- [
- 0.4,
- 0.8
- ]
- ],
- [
- 15,
- [
- 0.3,
- 0.6
- ]
- ],
- [
- 16,
- [
- 0.2,
- 0.3
- ]
- ],
- [
- 17,
- [
- 0.2,
- 0.25
- ]
- ],
- [
- 18,
- [
- 0.15,
- 0.15
- ]
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street_limited",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ],
- [
- "!=",
- "type",
- "construction"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 12
- ]
- ]
- },
- "line-color": "#EFEDEB",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-street",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 12.5,
- 0.5
- ],
- [
- 14,
- 2
- ],
- [
- 18,
- 18
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-main",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main"
- ],
- [
- "!=",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 8.5,
- 0.5
- ],
- [
- 10,
- 0.75
- ],
- [
- 18,
- 26
- ]
- ]
- },
- "line-color": "#fff",
- "line-opacity": {
- "base": 1.2,
- "stops": [
- [
- 5,
- 0
- ],
- [
- 5.5,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-trunk",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main"
- ],
- [
- "in",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "#f2cf60"
- }
- },
- {
- "id": "bridge-motorway",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "motorway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 5,
- 0.75
- ],
- [
- 18,
- 32
- ]
- ]
- },
- "line-color": "#ffa159"
- }
- },
- {
- "id": "bridge-rail",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 13,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "major_rail",
- "minor_rail"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt"
- },
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "#d8d5c8"
- ],
- [
- 16,
- "#b3b1a6"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-rail-tracks",
- "ref": "bridge-rail",
- "interactive": true,
- "paint": {
- "line-color": {
- "stops": [
- [
- 13,
- "#d8d5c8"
- ],
- [
- 16,
- "#b3b1a6"
- ]
- ]
- },
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 4
- ],
- [
- 20,
- 8
- ]
- ]
- },
- "line-dasharray": [
- 0.1,
- 15
- ],
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 13.75,
- 0
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "bridge-aerialway",
- "type": "line",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 13,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "aerialway"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt"
- },
- "paint": {
- "line-color": "#b3ada6",
- "line-width": {
- "base": 1.5,
- "stops": [
- [
- 14,
- 0.5
- ],
- [
- 20,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "hedges",
- "type": "line",
- "source": "composite",
- "source-layer": "barrier_line",
- "minzoom": 16,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "hedge"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#e2f4c2",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 16,
- 1
- ],
- [
- 20,
- 3
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 2,
- 5,
- 2,
- 1,
- 2
- ]
- }
- },
- {
- "id": "fences",
- "type": "line",
- "source": "composite",
- "source-layer": "barrier_line",
- "minzoom": 16,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "fence"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#cbc6b7",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 16,
- 1
- ],
- [
- 20,
- 3
- ]
- ]
- },
- "line-opacity": 1,
- "line-dasharray": [
- 1,
- 2,
- 5,
- 2,
- 1,
- 2
- ]
- }
- },
- {
- "id": "gates",
- "type": "line",
- "source": "composite",
- "source-layer": "barrier_line",
- "minzoom": 17,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "gate"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#cbc6b7",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 16,
- 1
- ],
- [
- 20,
- 3
- ]
- ]
- },
- "line-opacity": 0.5,
- "line-dasharray": [
- 1,
- 2,
- 5,
- 2,
- 1,
- 2
- ]
- }
- },
- {
- "id": "admin-2-boundaries-bg",
- "type": "line",
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "admin_level",
- 2
- ],
- [
- "in",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-join": "miter",
- "line-cap": "butt"
- },
- "paint": {
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 3.5
- ],
- [
- 10,
- 10
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 6,
- "#ede9d9"
- ],
- [
- 8,
- "#f6e8e1"
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 4,
- 0.5
- ]
- ]
- },
- "line-translate": [
- 0,
- 0
- ],
- "line-blur": {
- "base": 1,
- "stops": [
- [
- 3,
- 0
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-3-4-boundaries",
- "type": "line",
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- ">=",
- "admin_level",
- 3
- ],
- [
- "in",
- "maritime",
- 0
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-dasharray": {
- "base": 1,
- "stops": [
- [
- 6,
- [
- 2,
- 0
- ]
- ],
- [
- 7,
- [
- 2,
- 2,
- 6,
- 2
- ]
- ]
- ]
- },
- "line-width": {
- "base": 1,
- "stops": [
- [
- 7,
- 0.75
- ],
- [
- 12,
- 1.5
- ]
- ]
- },
- "line-opacity": {
- "base": 1,
- "stops": [
- [
- 2,
- 0
- ],
- [
- 3,
- 1
- ]
- ]
- },
- "line-color": {
- "base": 1,
- "stops": [
- [
- 3,
- "#c3bfcc"
- ],
- [
- 7,
- "#aba8b3"
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries",
- "type": "line",
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "admin_level",
- 2
- ],
- [
- "in",
- "maritime",
- 0
- ],
- [
- "in",
- "disputed",
- 0
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-join": "round",
- "line-cap": "round"
- },
- "paint": {
- "line-color": "#787680",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "admin-2-boundaries-dispute",
- "type": "line",
- "source": "composite",
- "source-layer": "admin",
- "minzoom": 1,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "admin_level",
- 2
- ],
- [
- "in",
- "maritime",
- 0
- ],
- [
- "in",
- "disputed",
- 1
- ]
- ],
- "layout": {
- "visibility": "visible",
- "line-cap": "butt",
- "line-join": "round"
- },
- "paint": {
- "line-dasharray": [
- 1.5,
- 1.5
- ],
- "line-color": "#787680",
- "line-width": {
- "base": 1,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 10,
- 2
- ]
- ]
- }
- }
- },
- {
- "id": "contour",
- "type": "line",
- "source": "composite",
- "source-layer": "contour",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!=",
- "index",
- 5
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "line-opacity": 0.07,
- "line-color": "#66601a"
- }
- },
- {
- "id": "contour-index",
- "type": "line",
- "source": "composite",
- "source-layer": "contour",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "index",
- 5
- ]
- ],
- "layout": {
- "visibility": "visible"
- },
- "paint": {
- "line-opacity": 0.12,
- "line-color": "#66601a"
- }
- },
- {
- "id": "tunnel-oneway-arrows-color",
- "type": "symbol",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "oneway",
- 1
- ],
- [
- "in",
- "class",
- "main",
- "street",
- "street_limited"
- ],
- [
- "!=",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-spaced-small"
- ],
- [
- 17,
- "oneway-spaced-large"
- ]
- ]
- },
- "icon-ignore-placement": false,
- "symbol-spacing": 250
- },
- "paint": {}
- },
- {
- "id": "tunnel-oneway-arrows-white",
- "type": "symbol",
- "source": "composite",
- "source-layer": "tunnel",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "oneway",
- 1
- ],
- [
- "any",
- [
- "in",
- "class",
- "motorway",
- "motorway_link"
- ],
- [
- "in",
- "type",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-spaced-white-small"
- ],
- [
- 17,
- "oneway-spaced-white-large"
- ]
- ]
- },
- "icon-ignore-placement": false,
- "symbol-spacing": 250
- },
- "paint": {}
- },
- {
- "id": "road-oneway-arrows-color",
- "type": "symbol",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "oneway",
- 1
- ],
- [
- "in",
- "class",
- "main",
- "street",
- "street_limited"
- ],
- [
- "!=",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-spaced-small"
- ],
- [
- 17,
- "oneway-spaced-large"
- ]
- ]
- },
- "icon-ignore-placement": false,
- "icon-rotation-alignment": "map",
- "icon-padding": 2,
- "symbol-spacing": 250
- },
- "paint": {}
- },
- {
- "id": "road-oneway-arrows-white",
- "type": "symbol",
- "source": "composite",
- "source-layer": "road",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "oneway",
- 1
- ],
- [
- "any",
- [
- "in",
- "class",
- "motorway",
- "motorway_link"
- ],
- [
- "in",
- "type",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-spaced-white-small"
- ],
- [
- 17,
- "oneway-spaced-white-large"
- ]
- ]
- },
- "icon-ignore-placement": false,
- "icon-padding": 2,
- "symbol-spacing": 250
- },
- "paint": {}
- },
- {
- "id": "bridge-oneway-arrows-color",
- "type": "symbol",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "oneway",
- 1
- ],
- [
- "in",
- "class",
- "main",
- "street",
- "street_limited"
- ],
- [
- "!=",
- "type",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-spaced-small"
- ],
- [
- 17,
- "oneway-spaced-large"
- ]
- ]
- },
- "icon-ignore-placement": false,
- "symbol-spacing": 250
- },
- "paint": {}
- },
- {
- "id": "bridge-oneway-arrows-white",
- "type": "symbol",
- "source": "composite",
- "source-layer": "bridge",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "oneway",
- 1
- ],
- [
- "any",
- [
- "in",
- "class",
- "motorway",
- "motorway_link"
- ],
- [
- "in",
- "type",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 16,
- "oneway-spaced-white-small"
- ],
- [
- 17,
- "oneway-spaced-white-large"
- ]
- ]
- },
- "icon-ignore-placement": false,
- "symbol-spacing": 250
- },
- "paint": {}
- },
- {
- "id": "housenum-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "housenum_label",
- "minzoom": 17,
- "maxzoom": 22,
- "interactive": true,
- "layout": {
- "visibility": "visible",
- "text-field": "{house_num}",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 4,
- "text-max-width": 7,
- "text-size": 9.5
- },
- "paint": {
- "text-color": "#b2aca5",
- "text-halo-color": "#e8e0cc",
- "text-halo-width": 1.5,
- "text-halo-blur": 0
- }
- },
- {
- "id": "contour-index-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "contour",
- "minzoom": 14,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "index",
- 5
- ]
- ],
- "layout": {
- "text-field": "{ele} m",
- "symbol-placement": "line",
- "text-max-angle": 25,
- "visibility": "visible",
- "text-padding": 5,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-size": 9.5
- },
- "paint": {
- "text-color": "#a7a696",
- "text-halo-width": 1,
- "text-halo-blur": 1,
- "text-halo-color": "rgba(237,233,217, 0.25)"
- }
- },
- {
- "id": "waterway-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "waterway_label",
- "minzoom": 12,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "river"
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "visibility": "visible",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-max-angle": 30,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 12
- ],
- [
- 18,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 0.5,
- "text-halo-color": "#ffffff",
- "text-color": "#004087",
- "text-halo-blur": 0.5
- }
- },
- {
- "id": "poi-scalerank4-l15",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 17,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "rail-light",
- "rail-metro",
- "rail",
- "airport",
- "airfield",
- "heliport",
- "rocket",
- "park",
- "golf",
- "cemetery",
- "zoo",
- "campsite",
- "swimming",
- "dog-park"
- ],
- [
- "in",
- "scalerank",
- 4
- ],
- [
- ">=",
- "localrank",
- 15
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": "{maki}-11",
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "poi-scalerank4-l1",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 16,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "rail-light",
- "rail-metro",
- "rail",
- "airport",
- "airfield",
- "heliport",
- "rocket",
- "park",
- "golf",
- "cemetery",
- "zoo",
- "campsite",
- "swimming",
- "dog-park"
- ],
- [
- "in",
- "scalerank",
- 4
- ],
- [
- "<=",
- "localrank",
- 14
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": "{maki}-11",
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 1,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "poi-parks_scalerank4",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 16,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "maki",
- "park",
- "cemetery",
- "golf",
- "zoo",
- "playground"
- ],
- [
- "in",
- "scalerank",
- 4
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": "{maki}-11",
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 1,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#4c661f",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "poi-scalerank3",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "rail-light",
- "rail-metro",
- "rail",
- "airport",
- "airfield",
- "heliport",
- "rocket",
- "park",
- "golf",
- "cemetery",
- "zoo",
- "campsite",
- "swimming",
- "dog-park"
- ],
- [
- "in",
- "scalerank",
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": "{maki}-11",
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 1,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "poi-parks-scalerank3",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "maki",
- "park",
- "cemetery",
- "golf",
- "zoo"
- ],
- [
- "in",
- "scalerank",
- 3
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": "{maki}-11",
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#4c661f",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "road-label-small",
- "type": "symbol",
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "class",
- "motorway",
- "main",
- "street_limited",
- "street"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "text-ignore-placement": false,
- "text-max-angle": 30,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "visibility": "visible",
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 15,
- 10
- ],
- [
- 20,
- 13
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#3a3836",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25,
- "text-halo-blur": 1
- }
- },
- {
- "id": "road-label-medium",
- "type": "symbol",
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 11,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "street",
- "street_limited"
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "text-max-angle": 30,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "visibility": "visible",
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 10
- ],
- [
- 20,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#3a3836",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "road-label-large",
- "type": "symbol",
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "class",
- "main",
- "motorway"
- ]
- ],
- "layout": {
- "text-allow-overlap": false,
- "text-ignore-placement": false,
- "text-max-angle": 30,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "text-padding": 1,
- "visibility": "visible",
- "text-rotation-alignment": "map",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.01,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 9,
- 10
- ],
- [
- 20,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#3a3836",
- "text-halo-color": "rgba(255,255,255, 0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "other-motorway-shields",
- "type": "symbol",
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "shield",
- "us-interstate",
- "us-interstate-business",
- "us-interstate-duplex"
- ],
- [
- "<=",
- "reflen",
- 6
- ]
- ],
- "layout": {
- "text-allow-overlap": false,
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 0,
- "{shield}-{reflen}-small"
- ],
- [
- 16,
- "{shield}-{reflen}-large"
- ]
- ]
- },
- "icon-rotation-alignment": "viewport",
- "symbol-avoid-edges": false,
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "symbol-placement": {
- "base": 1,
- "stops": [
- [
- 10,
- "point"
- ],
- [
- 11,
- "line"
- ]
- ]
- },
- "text-padding": 2,
- "visibility": "visible",
- "text-rotation-alignment": "viewport",
- "text-field": "{ref}",
- "text-letter-spacing": 0.05,
- "icon-padding": 2,
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 11,
- 100
- ],
- [
- 14,
- 200
- ]
- ]
- },
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 9
- ],
- [
- 16.01,
- 11
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#3a3836",
- "icon-halo-color": "rgba(0, 0, 0, 1)",
- "icon-halo-width": 1,
- "text-opacity": 1,
- "icon-color": "white",
- "text-halo-color": "#ffffff",
- "text-halo-width": 0
- }
- },
- {
- "id": "interstate_motorway_shields",
- "type": "symbol",
- "source": "composite",
- "source-layer": "road_label",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "shield",
- "us-interstate",
- "us-interstate-business",
- "us-interstate-duplex"
- ],
- [
- "<=",
- "reflen",
- 6
- ]
- ],
- "layout": {
- "text-allow-overlap": false,
- "icon-image": {
- "base": 1,
- "stops": [
- [
- 0,
- "{shield}-{reflen}-small"
- ],
- [
- 16,
- "{shield}-{reflen}-large"
- ]
- ]
- },
- "icon-rotation-alignment": "viewport",
- "symbol-avoid-edges": false,
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": {
- "base": 1,
- "stops": [
- [
- 10,
- "point"
- ],
- [
- 11,
- "line"
- ]
- ]
- },
- "text-padding": 2,
- "visibility": "visible",
- "text-rotation-alignment": "viewport",
- "text-field": "{ref}",
- "text-letter-spacing": 0.05,
- "icon-padding": 2,
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 11,
- 100
- ],
- [
- 14,
- 200
- ]
- ]
- },
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 9
- ],
- [
- 16.01,
- 11
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#fff",
- "icon-halo-color": "rgba(0, 0, 0, 1)",
- "icon-halo-width": 1,
- "text-opacity": 1,
- "icon-color": "white",
- "text-halo-color": "#ffffff",
- "text-halo-width": 0
- }
- },
- {
- "id": "poi-scalerank2",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 13,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "rail-light",
- "rail-metro",
- "rail",
- "airport",
- "airfield",
- "heliport",
- "rocket",
- "park",
- "golf",
- "cemetery",
- "zoo",
- "campsite",
- "swimming",
- "dog-park"
- ],
- [
- "in",
- "scalerank",
- 2
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": {
- "stops": [
- [
- 14,
- "{maki}-11"
- ],
- [
- 15,
- "{maki}-15"
- ]
- ]
- },
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1.25
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25
- }
- },
- {
- "id": "poi-parks-scalerank2",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 13,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "maki",
- "park",
- "golf",
- "cemetery",
- "zoo",
- "campsite",
- "swimming",
- "dog-park"
- ],
- [
- "in",
- "scalerank",
- 2
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": {
- "stops": [
- [
- 14,
- "{maki}-11"
- ],
- [
- 15,
- "{maki}-15"
- ]
- ]
- },
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1.25
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 14,
- 11
- ],
- [
- 20,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#4c661f",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25
- }
- },
- {
- "id": "rail-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 12,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "Rail Station"
- ]
- ],
- "layout": {
- "icon-image": "{network}-11",
- "symbol-avoid-edges": true,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "icon-allow-overlap": false,
- "symbol-placement": "point",
- "text-justify": "center",
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- ""
- ],
- [
- 13,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.02,
- "icon-padding": 0,
- "text-max-width": 7,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 11
- ],
- [
- 20,
- 13
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.5,
- "icon-halo-width": 4,
- "icon-halo-color": "#fff",
- "text-opacity": {
- "base": 1,
- "stops": [
- [
- 13.99,
- 0
- ],
- [
- 14,
- 1
- ]
- ]
- }
- }
- },
- {
- "id": "water-label-sm",
- "type": "symbol",
- "source": "composite",
- "source-layer": "water_label",
- "minzoom": 15,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "area",
- 10000
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "visibility": "visible",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 16,
- 13
- ],
- [
- 20,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 0,
- "text-halo-color": "#ffffff",
- "text-color": "#004087",
- "text-halo-blur": 1.5
- }
- },
- {
- "id": "water-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "water_label",
- "minzoom": 5,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- ">",
- "area",
- 10000
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "visibility": "visible",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 13,
- 13
- ],
- [
- 18,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-width": 0,
- "text-halo-color": "#ffffff",
- "text-color": "#004087",
- "text-halo-blur": 1.5
- }
- },
- {
- "id": "poi-parks-scalerank1",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "maki",
- "park",
- "golf",
- "cemetery",
- "zoo",
- "campsite",
- "swimming",
- "dog-park"
- ],
- [
- "<=",
- "scalerank",
- 1
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": {
- "stops": [
- [
- 13,
- "{maki}-11"
- ],
- [
- 14,
- "{maki}-15"
- ]
- ]
- },
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#4c661f",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1,
- "text-halo-blur": 0
- }
- },
- {
- "id": "poi-scalerank1",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "maki",
- "rail-light",
- "rail-metro",
- "rail",
- "airport",
- "airfield",
- "heliport",
- "rocket",
- "park",
- "golf",
- "cemetery",
- "zoo",
- "campsite",
- "swimming",
- "dog-park"
- ],
- [
- "<=",
- "scalerank",
- 1
- ],
- [
- "!=",
- "type",
- "Island"
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "icon-image": {
- "stops": [
- [
- 13,
- "{maki}-11"
- ],
- [
- 14,
- "{maki}-15"
- ]
- ]
- },
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 1
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "airport-label",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 9,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "maki",
- "airport",
- "heliport",
- "rocket"
- ],
- [
- "<=",
- "scalerank",
- 2
- ]
- ],
- "layout": {
- "text-allow-overlap": false,
- "icon-image": {
- "stops": [
- [
- 12,
- "{maki}-11"
- ],
- [
- 13,
- "{maki}-15"
- ]
- ]
- },
- "text-ignore-placement": false,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 12,
- [
- 0,
- 1
- ]
- ],
- [
- 13,
- [
- 0,
- 1.25
- ]
- ]
- ]
- },
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "top",
- "text-field": {
- "stops": [
- [
- 12,
- "{ref}"
- ],
- [
- 13,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.02,
- "text-max-width": 9,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 12
- ],
- [
- 18,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#000000",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25
- }
- },
- {
- "id": "poi-islets",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "Islet"
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 0
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "center",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 8,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 14,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "place-neighbourhood",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "neighbourhood"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-letter-spacing": 0.1,
- "text-max-width": 7,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11
- ],
- [
- 16,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "rgba(255,255,255, 0.5)",
- "text-halo-width": 1.75,
- "text-color": "#805540",
- "text-halo-blur": 0
- }
- },
- {
- "id": "place-suburb",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "suburb"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-letter-spacing": 0.15,
- "text-max-width": 7,
- "text-padding": 3,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 11,
- 11
- ],
- [
- 15,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "rgba(255,255,255, 0.5)",
- "text-halo-width": 1.75,
- "text-color": "#805540"
- }
- },
- {
- "id": "place-hamlet",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 10,
- "maxzoom": 16,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "hamlet"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 12,
- 11.5
- ],
- [
- 15,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25,
- "text-color": "#000000"
- }
- },
- {
- "id": "place-village",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 8,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "village"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11.5
- ],
- [
- 16,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25,
- "text-color": "#000000"
- }
- },
- {
- "id": "place-town",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 6,
- "maxzoom": 15,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "town"
- ]
- ],
- "layout": {
- "icon-image": "circle.sdf",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 11,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 12,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "visibility": "visible",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- 0,
- -0.15
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 7,
- 11.5
- ],
- [
- 15,
- 20
- ]
- ]
- },
- "icon-size": 0.3
- },
- "paint": {
- "text-color": "#000000",
- "icon-halo-blur": 1,
- "icon-halo-color": "#ffffff",
- "icon-halo-width": 1,
- "icon-color": "#000000",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "poi-islands",
- "type": "symbol",
- "source": "composite",
- "source-layer": "poi_label",
- "minzoom": 0,
- "maxzoom": 22,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "type",
- "Island"
- ]
- ],
- "layout": {
- "text-line-height": 1.2,
- "text-allow-overlap": false,
- "text-ignore-placement": false,
- "text-max-angle": 38,
- "text-font": [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "point",
- "text-padding": 2,
- "visibility": "visible",
- "text-offset": [
- 0,
- 0
- ],
- "icon-optional": false,
- "text-rotation-alignment": "viewport",
- "text-anchor": "center",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.02,
- "text-max-width": 7,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 10,
- 11
- ],
- [
- 18,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#65513d",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "place-city-sm",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 0,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "!in",
- "scalerank",
- 0,
- 1,
- 2,
- 3,
- 4,
- 5
- ],
- [
- "in",
- "type",
- "city"
- ]
- ],
- "layout": {
- "icon-image": "circle.sdf",
- "text-transform": "none",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "visibility": "visible",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.2
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 12
- ],
- [
- 14,
- 22
- ]
- ]
- },
- "icon-size": 0.3
- },
- "paint": {
- "text-color": "#000000",
- "icon-halo-blur": 1,
- "icon-halo-color": "#ffffff",
- "icon-halo-width": 1,
- "icon-color": "#000000",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1.25,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "place-city-md-s",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 0,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ],
- [
- "in",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "S",
- "SE",
- "SW",
- "E"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "icon-image": "circle.sdf",
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "top"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.1
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- },
- "icon-size": 0.35
- },
- "paint": {
- "text-halo-width": 1,
- "text-halo-color": "#ffffff",
- "text-color": "#000000",
- "text-halo-blur": 1,
- "icon-color": "#000000",
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- }
- }
- },
- {
- "id": "place-city-md-n",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 0,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "scalerank",
- 3,
- 4,
- 5
- ],
- [
- "in",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ]
- ],
- "layout": {
- "icon-image": "circle.sdf",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "visibility": "visible",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 12
- ],
- [
- 12,
- 22
- ]
- ]
- },
- "icon-size": 0.35
- },
- "paint": {
- "text-color": "#000000",
- "icon-halo-blur": 1,
- "icon-halo-color": "#ffffff",
- "icon-halo-width": 1,
- "icon-color": "#000000",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 1
- }
- },
- {
- "id": "place-city-lg-s",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "in",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "S",
- "SE",
- "SW",
- "E"
- ]
- ],
- "layout": {
- "icon-image": "circle.sdf",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "visibility": "visible",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- 0.15
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "top"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- },
- "icon-size": 0.4
- },
- "paint": {
- "text-color": "#000000",
- "icon-halo-blur": 1,
- "icon-halo-color": "#ffffff",
- "icon-halo-width": 1,
- "icon-color": "#000000",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 1
- }
- },
- {
- "id": "place-city-lg-n",
- "type": "symbol",
- "source": "composite",
- "source-layer": "place_label",
- "minzoom": 1,
- "maxzoom": 14,
- "interactive": true,
- "filter": [
- "all",
- [
- "<=",
- "scalerank",
- 2
- ],
- [
- "in",
- "type",
- "city"
- ],
- [
- "in",
- "ldir",
- "N",
- "NE",
- "NW",
- "W"
- ]
- ],
- "layout": {
- "icon-image": "circle.sdf",
- "text-font": {
- "base": 1,
- "stops": [
- [
- 7,
- [
- "DIN Offc Pro Regular",
- "Arial Unicode MS Regular"
- ]
- ],
- [
- 8,
- [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ]
- ]
- ]
- },
- "visibility": "visible",
- "text-offset": {
- "base": 1,
- "stops": [
- [
- 7.99,
- [
- 0,
- -0.25
- ]
- ],
- [
- 8,
- [
- 0,
- 0
- ]
- ]
- ]
- },
- "text-anchor": {
- "base": 1,
- "stops": [
- [
- 7,
- "bottom"
- ],
- [
- 8,
- "center"
- ]
- ]
- },
- "text-field": "{name_en}",
- "text-max-width": 7,
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 4,
- 12
- ],
- [
- 10,
- 22
- ]
- ]
- },
- "icon-size": 0.4
- },
- "paint": {
- "text-color": "#000000",
- "icon-halo-blur": 1,
- "icon-halo-color": "#ffffff",
- "icon-halo-width": 1,
- "text-opacity": 1,
- "icon-color": "#000000",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1,
- "icon-opacity": {
- "base": 1,
- "stops": [
- [
- 7.99,
- 1
- ],
- [
- 8,
- 0
- ]
- ]
- },
- "text-halo-blur": 1
- }
- },
- {
- "id": "marine-label-sm-ln",
- "type": "symbol",
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- ">=",
- "labelrank",
- 4
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.1,
- "text-max-width": 5,
- "symbol-spacing": {
- "base": 1,
- "stops": [
- [
- 4,
- 100
- ],
- [
- 6,
- 400
- ]
- ]
- },
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#c8e5f9"
- }
- },
- {
- "id": "marine-label-sm-pt",
- "type": "symbol",
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 3,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- ">=",
- "labelrank",
- 4
- ],
- [
- "in",
- "$type",
- "Point"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.1,
- "text-line-height": 1.5,
- "symbol-placement": "point",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 12
- ],
- [
- 6,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#c8e5f9"
- }
- },
- {
- "id": "marine-label-md-ln",
- "type": "symbol",
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "labelrank",
- 2,
- 3
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "text-line-height": 1.1,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "symbol-placement": "line",
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-letter-spacing": 0.15,
- "text-max-width": 5,
- "symbol-spacing": 250,
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 12
- ],
- [
- 5,
- 20
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#c8e5f9"
- }
- },
- {
- "id": "marine-label-md-pt",
- "type": "symbol",
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 2,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "labelrank",
- 2,
- 3
- ],
- [
- "in",
- "$type",
- "Point"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-max-width": 5,
- "text-letter-spacing": 0.15,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1.1,
- "stops": [
- [
- 2,
- 14
- ],
- [
- 5,
- 20
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#c8e5f9"
- }
- },
- {
- "id": "marine-label-lg-ln",
- "type": "symbol",
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "labelrank",
- 1
- ],
- [
- "in",
- "$type",
- "LineString"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.1,
- "symbol-placement": "line",
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#c8e5f9"
- }
- },
- {
- "id": "marine-label-lg-pt",
- "type": "symbol",
- "source": "composite",
- "source-layer": "marine_label",
- "minzoom": 1,
- "maxzoom": 4,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "labelrank",
- 1
- ],
- [
- "in",
- "$type",
- "Point"
- ]
- ],
- "layout": {
- "visibility": "visible",
- "text-field": "{name_en}",
- "text-max-width": 4,
- "text-letter-spacing": 0.25,
- "text-line-height": 1.5,
- "text-font": [
- "DIN Offc Pro Italic",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 14
- ],
- [
- 4,
- 30
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#c8e5f9"
- }
- },
- {
- "id": "state-label-sm",
- "type": "symbol",
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 9,
- "interactive": true,
- "filter": [
- "all",
- [
- "<",
- "area",
- 20000
- ]
- ],
- "layout": {
- "text-allow-overlap": false,
- "text-ignore-placement": false,
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "visibility": "visible",
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 6,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 5,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 6,
- 10
- ],
- [
- 9,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "#242424",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "state-label-md",
- "type": "symbol",
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "<",
- "area",
- 80000
- ],
- [
- ">=",
- "area",
- 20000
- ]
- ],
- "layout": {
- "text-allow-overlap": false,
- "text-ignore-placement": false,
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "visibility": "visible",
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 5,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 5,
- 10
- ],
- [
- 8,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "#242424",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "state-label-lg",
- "type": "symbol",
- "source": "composite",
- "source-layer": "state_label",
- "minzoom": 3,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- "all",
- [
- ">=",
- "area",
- 80000
- ]
- ],
- "layout": {
- "text-allow-overlap": false,
- "text-ignore-placement": false,
- "text-transform": "uppercase",
- "text-font": [
- "DIN Offc Pro Bold",
- "Arial Unicode MS Bold"
- ],
- "text-padding": 1,
- "visibility": "visible",
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{abbr}"
- ],
- [
- 4,
- "{name_en}"
- ]
- ]
- },
- "text-letter-spacing": 0.15,
- "text-max-width": 6,
- "text-size": {
- "base": 1,
- "stops": [
- [
- 4,
- 10
- ],
- [
- 7,
- 18
- ]
- ]
- }
- },
- "paint": {
- "text-opacity": 1,
- "text-color": "#242424",
- "text-halo-color": "#ffffff",
- "text-halo-width": 1
- }
- },
- {
- "id": "country-label-sm",
- "type": "symbol",
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 10,
- "interactive": true,
- "filter": [
- "all",
- [
- ">=",
- "scalerank",
- 5
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "visibility": "visible",
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 0.9,
- "stops": [
- [
- 5,
- 14
- ],
- [
- 9,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#000000",
- "text-halo-color": {
- "base": 1,
- "stops": [
- [
- 2,
- "rgba(255,255,255,0.75)"
- ],
- [
- 3,
- "#ffffff"
- ]
- ]
- },
- "text-halo-width": 1.25
- }
- },
- {
- "id": "country-label-md",
- "type": "symbol",
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 8,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "scalerank",
- 3,
- 4
- ]
- ],
- "layout": {
- "text-field": {
- "base": 1,
- "stops": [
- [
- 0,
- "{code}"
- ],
- [
- 2,
- "{name_en}"
- ]
- ]
- },
- "visibility": "visible",
- "text-max-width": 6,
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 3,
- 10
- ],
- [
- 8,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#000000",
- "text-halo-color": {
- "base": 1,
- "stops": [
- [
- 2,
- "rgba(255,255,255,0.75)"
- ],
- [
- 3,
- "#ffffff"
- ]
- ]
- },
- "text-halo-width": 1.25
- }
- },
- {
- "id": "country-label-lg",
- "type": "symbol",
- "source": "composite",
- "source-layer": "country_label",
- "minzoom": 1,
- "maxzoom": 7,
- "interactive": true,
- "filter": [
- "all",
- [
- "in",
- "scalerank",
- 1,
- 2
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "visibility": "visible",
- "text-max-width": {
- "base": 1,
- "stops": [
- [
- 0,
- 5
- ],
- [
- 3,
- 6
- ]
- ]
- },
- "text-font": [
- "DIN Offc Pro Medium",
- "Arial Unicode MS Regular"
- ],
- "text-size": {
- "base": 1,
- "stops": [
- [
- 1,
- 10
- ],
- [
- 6,
- 24
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#000000",
- "text-halo-color": {
- "base": 1,
- "stops": [
- [
- 2,
- "rgba(255,255,255,0.75)"
- ],
- [
- 3,
- "#ffffff"
- ]
- ]
- },
- "text-halo-width": 1.25
- }
- }
- ],
- "owner": "nicki",
- "modified": "2015-05-07T16:43:40.332Z",
- "created": "2015-05-07T16:00:16.592Z",
- "id": "nicki.7bfc461f"
-}
diff --git a/platform/ios/benchmark/assets/tiles/download.sh b/platform/ios/benchmark/assets/tiles/download.sh
deleted file mode 100755
index f44dda18fd..0000000000
--- a/platform/ios/benchmark/assets/tiles/download.sh
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env bash
-
-set -u
-
-LIST=(
- # paris
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1037/704.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1037/705.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1038/704.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1038/705.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1036/704.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1037/703.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1036/705.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1038/703.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1036/703.vector.pbf"
-
- # paris2
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4150/2819.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2819.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4150/2818.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4148/2819.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2818.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4148/2818.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4150/2820.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2820.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2817.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4148/2817.vector.pbf"
-
- # alps
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/23.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/22.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/23.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/22.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/21.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/23.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/22.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/21.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/21.vector.pbf"
-
- # us east
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/9/12.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/8/12.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/9/13.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/8/13.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/9/11.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/7/12.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/8/11.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/7/13.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/7/11.vector.pbf"
-
- # greater la
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/88/204.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/88/205.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/89/204.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/89/205.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/87/204.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/88/203.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/87/205.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/89/203.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/87/203.vector.pbf"
-
- # sf
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2621/6333.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2620/6333.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2621/6334.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2620/6334.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2621/6332.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2619/6333.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2620/6332.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2619/6334.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2619/6332.vector.pbf"
-
- # oakland
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/657/1582.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/657/1583.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/658/1582.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/658/1583.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/656/1582.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/657/1581.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/656/1583.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/658/1581.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/656/1581.vector.pbf"
-
- # germany
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/20.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/20.vector.pbf"
- "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/20.vector.pbf"
-)
-
-for OUTPUT in ${LIST[@]} ; do
- if [ ! -f "${OUTPUT}" ] ; then
- mkdir -p "`dirname "${OUTPUT}"`"
- echo "Downloading tile '${OUTPUT}'"
- curl -# "https://a.tiles.mapbox.com/v4/${OUTPUT}?access_token=${MAPBOX_ACCESS_TOKEN}" | gunzip > "${OUTPUT}"
- fi
-done
diff --git a/platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json b/platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json
deleted file mode 100644
index 371428d415..0000000000
--- a/platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json
+++ /dev/null
@@ -1 +0,0 @@
-{"attribution":"<a href=\"https://www.mapbox.com/about/maps/\" target=\"_blank\">&copy; Mapbox</a> <a href=\"http://www.openstreetmap.org/about/\" target=\"_blank\">&copy; OpenStreetMap</a> <a class=\"mapbox-improve-map\" href=\"https://apps.mapbox.com/feedback/\" target=\"_blank\">Improve this map</a>","bounds":[-180,-85.0511,180,85.0511],"center":[0,0,0],"format":"pbf","maxzoom":15,"minzoom":0,"name":"Mapbox Streets V6 + Vector Terrain V2","scheme":"xyz","tilejson":"2.0.0","tiles":["asset://tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/{z}/{x}/{y}.vector.pbf"],"vector_layers":[{"description":"Generalized landcover classification","fields":{"class":"One of: wood, scrub, grass, crop, snow"},"id":"landcover","maxzoom":22,"minzoom":0,"source":"mapbox.mapbox-terrain-v2"},{"description":"","fields":{"class":"One of: shadow, highlight","level":"Brightness %. One of: 94, 90, 89, 78, 67, 56"},"id":"hillshade","maxzoom":22,"minzoom":0,"source":"mapbox.mapbox-terrain-v2"},{"description":"Elevation contour polygons","fields":{"ele":"Integer. The elevation of the contour in meters","index":"Indicator for every 2nd, 5th, or 10th contour. Coastlines are given -1. One of: 2, 5, 10, -1, null"},"id":"contour","maxzoom":22,"minzoom":0,"source":"mapbox.mapbox-terrain-v2"},{"description":"","fields":{"class":"One of: park, cemetery, hospital, school, industrial, parking, pitch, piste, agriculture, wood, scrub, grass, sand, rock, glacier","osm_id":"Unique OSM ID number","type":"OSM tag, more specific than class"},"id":"landuse","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: river, canal, stream, stream_intermittent, ditch, drain","osm_id":"Unique OSM ID number","type":"One of: river, canal, stream, ditch, drain"},"id":"waterway","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"osm_id":"Unique OSM ID number"},"id":"water","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"osm_id":"Unique OSM ID number","type":"One of: runway, taxiway, apron"},"id":"aeroway","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: fence, hedge, cliff, gate, land","osm_id":"Unique OSM ID number"},"id":"barrier_line","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"osm_id":"Unique OSM ID number"},"id":"building","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: wetland, wetland_noveg","osm_id":"Unique OSM ID number"},"id":"landuse_overlay","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path, major_rail, minor_rail","layer":"Number used for ordering overlapping tunnels. May be any integer, but most common values are -1 to -5","oneway":"Number. Oneway roads are 1, all others are 0","osm_id":"Unique OSM ID number","type":"The value of the tunnel's highway tag"},"id":"tunnel","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path, major_rail, minor_rail","oneway":"Number. Oneway roads are 1, all others are 0","osm_id":"Unique OSM ID number","type":"The value of the road's highway tag"},"id":"road","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path, major_rail, minor_rail, aerialway","layer":"Number used for ordering overlapping bridges. May be any integer, but most common values are 1 to 5","oneway":"Number. Oneway bridges are 1, all others are 0","osm_id":"Unique OSM ID number","type":"The value of the bridge's highway tag"},"id":"bridge","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"admin_level":"The OSM administrative level of the boundary. One of: 2, 3, 4","disputed":"Number. Disputed boundaries are 1, all others are 0","maritime":"Number. Maritime boundaries are 1, all others are 0"},"id":"admin","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"code":"ISO 3166-1 Alpha-2 code","name":"Local name of the country","name_de":"German name of the country","name_en":"English name of the country","name_es":"Spanish name of the country","name_fr":"French name of the country","name_ru":"Russian name of the country","name_zh":"Chinese name of the country","osm_id":"Unique OSM ID number","parent":"ISO 3166-1 Alpha-2 code of the administering/parent state, if any","scalerank":"Number, 1-6. Useful for styling text sizes","type":"One of: country, territory, disputed territory, sar"},"id":"country_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"labelrank":"Number, 1-6. Useful for styling text sizes","name":"Local or international name of the water body","name_de":"German name of the water body","name_en":"English name of the water body","name_es":"Spanish name of the water body","name_fr":"French name of the water body","name_ru":"Russian name of the water body","name_zh":"Chinese name of the water body","placement":"One of: point, line"},"id":"marine_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"abbr":"Abbreviated state name","area":"The area of the state in kilometers²","name":"Local name of the state","name_de":"German name of the state","name_en":"English name of the state","name_es":"Spanish name of the state","name_fr":"French name of the state","name_ru":"Russian name of the state","name_zh":"Chinese name of the state","osm_id":"Unique OSM ID number"},"id":"state_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"capital":"Admin level the city is a capital of, if any. One of: 2, 3, 4, null","ldir":"A hint for label placement at low zoom levels. One of: N, E, S, W, NE, SE, SW, NW, null","localrank":"Number. Priority relative to nearby places. Useful for limiting label density","name":"Local name of the place","name_de":"German name of the place","name_en":"English name of the place","name_es":"Spanish name of the place","name_fr":"French name of the place","name_ru":"Russian name of the place","name_zh":"Chinese name of the place","osm_id":"Unique OSM ID number","scalerank":"Number, 0-9 or null. Useful for styling text & marker sizes","type":"One of: city, town, village, hamlet, suburb, neighbourhood"},"id":"place_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"area":"The area of the water polygon in Mercator meters²","name":"Local name of the water body","name_de":"German name of the water body","name_en":"English name of the water body","name_es":"Spanish name of the water body","name_fr":"French name of the water body","name_ru":"Russian name of the water body","name_zh":"Chinese name of the water body","osm_id":"Unique OSM ID number"},"id":"water_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"address":"Street address of the POI","localrank":"Number. Priority relative to nearby POIs. Useful for limiting label density","maki":"The name of the Maki icon that should be used for the POI","name":"Local name of the POI","name_de":"German name of the POI","name_en":"English name of the POI","name_es":"Spanish name of the POI","name_fr":"French name of the POI","name_ru":"Russian name of the POI","name_zh":"Chinese name of the POI","network":"For rail stations, the network(s) that the station serves. Useful for icon styling","osm_id":"Unique OSM ID number","ref":"Short reference code, if any","scalerank":"Number. 1-4. Useful for styling icon sizes and minimum zoom levels","type":"The original OSM tag value","website":"URL of the POI"},"id":"poi_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path","len":"Number. Length of the road segment in Mercator meters","localrank":"Number. Used for shield points only. Priority relative to nearby shields. Useful for limiting shield density","name":"Local name of the road","name_de":"German name of the road","name_en":"English name of the road","name_es":"Spanish name of the road","name_fr":"French name of the road","name_ru":"Russian name of the road","name_zh":"Chinese name of the road","osm_id":"Unique OSM ID number","ref":"Route number of the road","reflen":"Number. How many characters long the ref tag is. Useful for shield styling","shield":"The shield style to use. One of: default, mx-federal, mx-state, us-highway, us-highway-alternate, us-highway-business, us-highway-duplex, us-interstate, us-interstate-business, us-interstate-duplex, us-interstate-truck, us-state"},"id":"road_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: river, canal, stream, stream_intermittent","name":"Local name of the waterway","name_de":"German name of the waterway","name_en":"English name of the waterway","name_es":"Spanish name of the waterway","name_fr":"French name of the waterway","name_ru":"Russian name of the waterway","name_zh":"Chinese name of the waterway","osm_id":"Unique OSM ID number","type":"One of: river, canal, stream"},"id":"waterway_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"house_num":"House number","osm_id":"Unique OSM ID number"},"id":"housenum_label","source":"mapbox.mapbox-streets-v6"}]}
diff --git a/platform/ios/benchmark/locations.cpp b/platform/ios/benchmark/locations.cpp
deleted file mode 100644
index 9f53877e40..0000000000
--- a/platform/ios/benchmark/locations.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "locations.hpp"
-
-namespace mbgl {
-namespace bench {
-
-const std::vector<Location> locations = {
- { "paris", 2.3411, 48.8664, 11, 0.0 },
- { "paris2", 2.3516, 48.8356, 13, 273.8 },
- { "alps", 10.6107, 46.9599, 6, 0.0 },
- { "us east", -84.3395, 36.9400, 5, 0.0 },
- { "greater la", -117.9529, 34.0259, 9, 0.0 },
- { "sf", -122.4202, 37.7625, 14, 0.0 },
- { "oakland", -122.2328, 37.8267, 12, 0.0 },
- { "germany", 9.2280, 50.9262, 6, 0.0 },
-};
-
-}
-}
diff --git a/platform/ios/benchmark/locations.hpp b/platform/ios/benchmark/locations.hpp
deleted file mode 100644
index 1ea65d6280..0000000000
--- a/platform/ios/benchmark/locations.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <vector>
-#include <string>
-
-namespace mbgl {
-namespace bench {
-
-struct Location {
- const std::string name;
- const double longitude;
- const double latitude;
- const double zoom;
- const double bearing;
-};
-
-extern const std::vector<Location> locations;
-
-}
-}
diff --git a/platform/ios/benchmark/main.m b/platform/ios/benchmark/main.m
deleted file mode 100644
index 52bb445552..0000000000
--- a/platform/ios/benchmark/main.m
+++ /dev/null
@@ -1,10 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MBXBenchAppDelegate.h"
-
-int main(int argc, char * argv[])
-{
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([MBXBenchAppDelegate class]));
- }
-}
diff --git a/platform/ios/docs/guides/For Style Authors.md b/platform/ios/docs/guides/For Style Authors.md
deleted file mode 100644
index d6259238fe..0000000000
--- a/platform/ios/docs/guides/For Style Authors.md
+++ /dev/null
@@ -1,434 +0,0 @@
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-# Information for Style Authors
-
-A _style_ defines a map view’s content and appearance. If you’ve authored a
-style using
-[Mapbox Studio’s Styles editor](https://www.mapbox.com/studio/styles/) or as
-JSON in a text editor, you can use that style in this SDK and manipulate it
-afterwards in code. This document provides information you can use to ensure a
-seamless transition from Mapbox Studio to your application.
-
-## Designing for iOS
-
-When designing your style, consider the context in which your application shows
-the style. There are a number of considerations specific to iOS that may
-not be obvious when designing your style in Mapbox Studio on the Web. A map view
-is essentially a graphical user interface element, so many of same issues in
-user interface design also apply when designing a map style.
-
-### Color
-
-Ensure sufficient contrast in your application’s user interface when your map
-style is present. Standard user interface elements such as toolbars, sidebars,
-and sheets often overlap the map view with a translucent, blurred background, so
-make sure the contents of these elements remain legible with the map view
-underneath.
-The user location annotation view, the attribution button, any buttons in
-callout views, and any items in the navigation bar are influenced by your
-application’s tint color, so choose a tint color that contrasts well with your
-map style.
-If you intend your style to be used in the dark, consider the impact that Night
-Shift may have on your style’s colors.
-
-### Typography and graphics
-
-Choose font and icon sizes appropriate to iOS devices. iPhones and iPads have
-smaller screens than the typical browser window in which you would use Mapbox
-Studio, especially when multitasking is enabled. Your user’s viewing distance
-may be shorter than on a desktop computer. Some of your users may use the Larger
-Dynamic Type and Accessibility Text features to increase the size of all text on
-the device. You can use the
-[runtime styling API](#manipulating-the-style-at-runtime) to adjust your style’s
- font and icon sizes accordingly.
-
-Design sprite images and choose font weights that look crisp on both
-standard-resolution displays and Retina displays. This SDK supports the same
-resolutions as iOS.
-Standard-resolution displays are limited to older devices that your application
-may or may not support, depending on its minimum deployment target.
-
-Icon and text labels should be legible regardless of the map’s orientation.
-By default, this SDK makes it easy for your users to rotate or tilt the map
-using multitouch gestures.
-If you do not intend your design to accommodate rotation and tilting, disable
-these gestures using the `MGLMapView.rotateEnabled` and
-`MGLMapView.pitchEnabled` properties, respectively, or the corresponding
-inspectables in Interface Builder.
-
-### Interactivity
-
-Pay attention to whether elements of your style appear to be interactive.
-A text label may look like a tappable button merely due to matching your
-application’s tint color or the default blue tint color.
-You can make an icon or text label interactive by installing a gesture
-recognizer and performing feature querying (e.g.,
-`-[MGLMapView visibleFeaturesAtPoint:]`) to get details about the selected
-feature.
-
-Make sure your users can easily distinguish any interactive elements from the
-surrounding map, such as pins, the user location annotation view, or a route
-line. Avoid relying on hover effects to indicate interactive elements. Leave
-enough room between interactive elements to accommodate imprecise tapping
-gestures.
-
-For more information about user interface design, consult Apple’s
-[_iOS Human Interface Guidelines_](https://developer.apple.com/ios/human-interface-guidelines/).
-To learn more about designing maps for mobile devices, see [Nathaniel Slaughter's blog post](https://www.mapbox.com/blog/designing-maps-for-mobile-devices/) on
-the subject.
-
-## Applying your style
-
-You set an `MGLMapView` object’s style either in code, by setting the
-`MGLMapView.styleURL` property, or in Interface Builder, by setting the “Style
-URL” inspectable. The URL must point to a local or remote style JSON file. The
-style JSON file format is defined by the
-[Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/). This
-SDK supports the functionality defined by version 8 of the specification unless
-otherwise noted in the
-[style specification documentation](https://www.mapbox.com/mapbox-gl-style-spec/).
-
-## Manipulating the style at runtime
-
-The _runtime styling API_ enables you to modify every aspect of a style
-dynamically as a user interacts with your application. The style itself is
-represented at runtime by an `MGLStyle` object, which provides access to various
-`MGLSource` and `MGLStyleLayer` objects that represent content sources and style
-layers, respectively.
-For more information about the capabilities exposed by the runtime styling API,
-see “[Runtime Styling](https://www.mapbox.com/ios-sdk/maps/overview/runtime-styling/)”.
-
-The names of runtime styling classes and properties on iOS are generally
-consistent with the style specification and Mapbox Studio’s Styles editor. Any
-exceptions are listed in this document.
-
-To avoid conflicts with Objective-C keywords or Cocoa terminology, this SDK uses
-the following terms for concepts defined in the style specification:
-
-In the style specification | In the SDK
----------------------------|---------
-bounds | coordinate bounds
-filter | predicate
-function type | interpolation mode
-id | identifier
-image | style image
-layer | style layer
-property | attribute
-SDF icon | template image
-source | content source
-
-## Specifying the map’s content
-
-Each source defined by a style JSON file is represented at runtime by a content
-source object that you can use to initialize new style layers. The content
-source object is a member of one of the following subclasses of `MGLSource`:
-
-In style JSON | In the SDK
---------------|-----------
-`vector` | `MGLVectorTileSource`
-`raster` | `MGLRasterTileSource`
-`raster-dem` | `MGLRasterDEMSource`
-`geojson` | `MGLShapeSource`
-`image` | `MGLImageSource`
-
-`canvas` and `video` sources are not supported.
-
-### Tile sources
-
-Raster and vector tile sources may be defined in TileJSON configuration files.
-This SDK supports the properties defined in the style specification, which are a
-subset of the keys defined in version 2.1.0 of the
-[TileJSON](https://github.com/mapbox/tilejson-spec/tree/master/2.1.0)
-specification. As an alternative to authoring a custom TileJSON file, you may
-supply various tile source options when creating a raster or vector tile source.
-These options are detailed in the `MGLTileSourceOption` documentation:
-
-In style JSON | In TileJSON | In the SDK
---------------|---------------|-----------
-`url` | — | `configurationURL` parameter in `-[MGLTileSource initWithIdentifier:configurationURL:]`
-`tiles` | `tiles` | `tileURLTemplates` parameter in `-[MGLTileSource initWithIdentifier:tileURLTemplates:options:]`
-`minzoom` | `minzoom` | `MGLTileSourceOptionMinimumZoomLevel`
-`maxzoom` | `maxzoom` | `MGLTileSourceOptionMaximumZoomLevel`
-`bounds` | `bounds` | `MGLTileSourceOptionCoordinateBounds`
-`tileSize` | — | `MGLTileSourceOptionTileSize`
-`attribution` | `attribution` | `MGLTileSourceOptionAttributionHTMLString` (but consider specifying `MGLTileSourceOptionAttributionInfos` instead for improved security)
-`scheme` | `scheme` | `MGLTileSourceOptionTileCoordinateSystem`
-`encoding` | – | `MGLTileSourceOptionDEMEncoding`
-
-### Shape sources
-
-Shape sources also accept various options. These options are detailed in the
-`MGLShapeSourceOption` documentation:
-
-In style JSON | In the SDK
------------------|-----------
-`data` | `url` parameter in `-[MGLShapeSource initWithIdentifier:URL:options:]`
-`maxzoom` | `MGLShapeSourceOptionMaximumZoomLevel`
-`buffer` | `MGLShapeSourceOptionBuffer`
-`tolerance` | `MGLShapeSourceOptionSimplificationTolerance`
-`cluster` | `MGLShapeSourceOptionClustered`
-`clusterRadius` | `MGLShapeSourceOptionClusterRadius`
-`clusterMaxZoom` | `MGLShapeSourceOptionMaximumZoomLevelForClustering`
-`lineMetrics` | `MGLShapeSourceOptionLineDistanceMetrics`
-
-To create a shape source from local GeoJSON data, first
-[convert the GeoJSON data into a shape](working-with-geojson-data.html#converting-geojson-data-into-shape-objects),
-then use the `-[MGLShapeSource initWithIdentifier:shape:options:]` method.
-
-### Image sources
-
-Image sources accept a non-axis aligned quadrilateral as their geographic coordinates.
-These coordinates, in `MGLCoordinateQuad`, are described in counterclockwise order,
-in contrast to the clockwise order defined in the style specification.
-
-## Configuring the map content’s appearance
-
-Each layer defined by the style JSON file is represented at runtime by a style
-layer object, which you can use to refine the map’s appearance. The style layer
-object is a member of one of the following subclasses of `MGLStyleLayer`:
-
-In style JSON | In the SDK
---------------|-----------
-`background` | `MGLBackgroundStyleLayer`
-`circle` | `MGLCircleStyleLayer`
-`fill` | `MGLFillStyleLayer`
-`fill-extrusion` | `MGLFillExtrusionStyleLayer`
-`heatmap` | `MGLHeatmapStyleLayer`
-`hillshade` | `MGLHillshadeStyleLayer`
-`line` | `MGLLineStyleLayer`
-`raster` | `MGLRasterStyleLayer`
-`symbol` | `MGLSymbolStyleLayer`
-
-You configure layout and paint attributes by setting properties on these style
-layer objects. The property names generally correspond to the style JSON
-properties, except for the use of camelCase instead of kebab-case. Properties
-whose names differ from the style specification are listed below:
-
-### Circle style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`circle-pitch-scale` | `MGLCircleStyleLayer.circleScaleAlignment` | `MGLCircleStyleLayer.circleScaleAlignment`
-`circle-translate` | `MGLCircleStyleLayer.circleTranslation` | `MGLCircleStyleLayer.circleTranslation`
-`circle-translate-anchor` | `MGLCircleStyleLayer.circleTranslationAnchor` | `MGLCircleStyleLayer.circleTranslationAnchor`
-
-### Fill style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`fill-antialias` | `MGLFillStyleLayer.fillAntialiased` | `MGLFillStyleLayer.isFillAntialiased`
-`fill-translate` | `MGLFillStyleLayer.fillTranslation` | `MGLFillStyleLayer.fillTranslation`
-`fill-translate-anchor` | `MGLFillStyleLayer.fillTranslationAnchor` | `MGLFillStyleLayer.fillTranslationAnchor`
-
-### Fill extrusion style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`fill-extrusion-vertical-gradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient`
-`fill-extrusion-translate` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation`
-`fill-extrusion-translate-anchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor`
-
-### Line style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`line-dasharray` | `MGLLineStyleLayer.lineDashPattern` | `MGLLineStyleLayer.lineDashPattern`
-`line-translate` | `MGLLineStyleLayer.lineTranslation` | `MGLLineStyleLayer.lineTranslation`
-`line-translate-anchor` | `MGLLineStyleLayer.lineTranslationAnchor` | `MGLLineStyleLayer.lineTranslationAnchor`
-
-### Raster style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`raster-brightness-max` | `MGLRasterStyleLayer.maximumRasterBrightness` | `MGLRasterStyleLayer.maximumRasterBrightness`
-`raster-brightness-min` | `MGLRasterStyleLayer.minimumRasterBrightness` | `MGLRasterStyleLayer.minimumRasterBrightness`
-`raster-hue-rotate` | `MGLRasterStyleLayer.rasterHueRotation` | `MGLRasterStyleLayer.rasterHueRotation`
-`raster-resampling` | `MGLRasterStyleLayer.rasterResamplingMode` | `MGLRasterStyleLayer.rasterResamplingMode`
-
-### Symbol style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`icon-allow-overlap` | `MGLSymbolStyleLayer.iconAllowsOverlap` | `MGLSymbolStyleLayer.iconAllowsOverlap`
-`icon-ignore-placement` | `MGLSymbolStyleLayer.iconIgnoresPlacement` | `MGLSymbolStyleLayer.iconIgnoresPlacement`
-`icon-image` | `MGLSymbolStyleLayer.iconImageName` | `MGLSymbolStyleLayer.iconImageName`
-`icon-optional` | `MGLSymbolStyleLayer.iconOptional` | `MGLSymbolStyleLayer.isIconOptional`
-`icon-rotate` | `MGLSymbolStyleLayer.iconRotation` | `MGLSymbolStyleLayer.iconRotation`
-`icon-size` | `MGLSymbolStyleLayer.iconScale` | `MGLSymbolStyleLayer.iconScale`
-`icon-keep-upright` | `MGLSymbolStyleLayer.keepsIconUpright` | `MGLSymbolStyleLayer.keepsIconUpright`
-`text-keep-upright` | `MGLSymbolStyleLayer.keepsTextUpright` | `MGLSymbolStyleLayer.keepsTextUpright`
-`text-max-angle` | `MGLSymbolStyleLayer.maximumTextAngle` | `MGLSymbolStyleLayer.maximumTextAngle`
-`text-max-width` | `MGLSymbolStyleLayer.maximumTextWidth` | `MGLSymbolStyleLayer.maximumTextWidth`
-`symbol-avoid-edges` | `MGLSymbolStyleLayer.symbolAvoidsEdges` | `MGLSymbolStyleLayer.symbolAvoidsEdges`
-`text-field` | `MGLSymbolStyleLayer.text` | `MGLSymbolStyleLayer.text`
-`text-allow-overlap` | `MGLSymbolStyleLayer.textAllowsOverlap` | `MGLSymbolStyleLayer.textAllowsOverlap`
-`text-font` | `MGLSymbolStyleLayer.textFontNames` | `MGLSymbolStyleLayer.textFontNames`
-`text-size` | `MGLSymbolStyleLayer.textFontSize` | `MGLSymbolStyleLayer.textFontSize`
-`text-ignore-placement` | `MGLSymbolStyleLayer.textIgnoresPlacement` | `MGLSymbolStyleLayer.textIgnoresPlacement`
-`text-justify` | `MGLSymbolStyleLayer.textJustification` | `MGLSymbolStyleLayer.textJustification`
-`text-optional` | `MGLSymbolStyleLayer.textOptional` | `MGLSymbolStyleLayer.isTextOptional`
-`text-rotate` | `MGLSymbolStyleLayer.textRotation` | `MGLSymbolStyleLayer.textRotation`
-`text-writing-mode` | `MGLSymbolStyleLayer.textWritingModes` | `MGLSymbolStyleLayer.textWritingModes`
-`icon-translate` | `MGLSymbolStyleLayer.iconTranslation` | `MGLSymbolStyleLayer.iconTranslation`
-`icon-translate-anchor` | `MGLSymbolStyleLayer.iconTranslationAnchor` | `MGLSymbolStyleLayer.iconTranslationAnchor`
-`text-translate` | `MGLSymbolStyleLayer.textTranslation` | `MGLSymbolStyleLayer.textTranslation`
-`text-translate-anchor` | `MGLSymbolStyleLayer.textTranslationAnchor` | `MGLSymbolStyleLayer.textTranslationAnchor`
-
-## Setting attribute values
-
-Each property representing a layout or paint attribute is set to an
-`NSExpression` object. `NSExpression` objects play the same role as
-[expressions in the Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions),
-but you create the former using a very different syntax. `NSExpression`’s format
-string syntax is reminiscent of a spreadsheet formula or an expression in a
-database query. See the
-“[Predicates and Expressions](predicates-and-expressions.html)” guide for an
-overview of the expression support in this SDK. This SDK no longer supports
-style functions; use expressions instead.
-
-### Constant values in expressions
-
-In contrast to the JSON type that the style specification defines for each
-layout or paint property, the style value object often contains a more specific
-Foundation or Cocoa type. General rules for attribute types are listed below.
-Pay close attention to the SDK documentation for the attribute you want to get
-or set.
-
-In style JSON | In Objective-C | In Swift
---------------|-----------------------|---------
-Color | `UIColor` | `UIColor`
-Enum | `NSString` | `String`
-String | `NSString` | `String`
-Boolean | `NSNumber.boolValue` | `NSNumber.boolValue`
-Number | `NSNumber.floatValue` | `NSNumber.floatValue`
-Array (`-dasharray`) | `NSArray<NSNumber>` | `[Float]`
-Array (`-font`) | `NSArray<NSString>` | `[String]`
-Array (`-offset`, `-translate`) | `NSValue.CGVectorValue` | `NSValue.cgVectorValue`
-Array (`-padding`) | `NSValue.UIEdgeInsetsValue` | `NSValue.uiEdgeInsetsValue`
-
-For padding attributes, note that the arguments to
-`UIEdgeInsetsMake()` in Objective-C and `UIEdgeInsets(top:left:bottom:right:)`
-in Swift
-are specified in counterclockwise order, in contrast to the clockwise order
-defined by the style specification.
-
-### Expression operators
-
-Many expression operators defined in the style specification have corresponding
-symbols to be used with the `+[NSExpression expressionWithFormat:]`,
-`+[NSExpression expressionForFunction:arguments:]`, or
-`+[NSExpression expressionForFunction:selectorName:arguments:]` method:
-
-In style specification | Method, function, or predicate type | Format string syntax
------------------------|-------------------------------------|---------------------
-`array` | |
-`boolean` | |
-`collator` | `NSComparisonPredicateOptions` | `'Québec' =[cd] 'QUEBEC'`
-`literal` | `+[NSExpression expressionForConstantValue:]` | `%@` representing `NSArray` or `NSDictionary`
-`number` | |
-`string` | |
-`to-boolean` | `boolValue` |
-`to-color` | | `CAST(var, 'UIColor')`
-`to-number` | `mgl_numberWithFallbackValues:` | `CAST(zipCode, 'NSNumber')`
-`to-string` | `stringValue` | `CAST(ele, 'NSString')`
-`typeof` | |
-`geometry-type` | `NSExpression.geometryTypeVariableExpression` | `$geometryType`
-`id` | `NSExpression.featureIdentifierVariableExpression` | `$featureIdentifier`
-`properties` | `NSExpression.featureAttributesVariableExpression` | `$featureAttributes`
-`at` | `objectFrom:withIndex:` | `array[n]`
-`get` | `+[NSExpression expressionForKeyPath:]` | Key path
-`has` | `mgl_does:have:` | `mgl_does:have:(self, 'key')`
-`length` | `count:` | `count({1, 2, 2, 3, 4, 7, 9})`
-`!` | `NSNotPredicateType` | `NOT (p0 OR … OR pn)`
-`!=` | `NSNotEqualToPredicateOperatorType` | `key != value`
-`<` | `NSLessThanPredicateOperatorType` | `key < value`
-`<=` | `NSLessThanOrEqualToPredicateOperatorType` | `key <= value`
-`==` | `NSEqualToPredicateOperatorType` | `key == value`
-`>` | `NSGreaterThanPredicateOperatorType` | `key > value`
-`>=` | `NSGreaterThanOrEqualToPredicateOperatorType` | `key >= value`
-`all` | `NSAndPredicateType` | `p0 AND … AND pn`
-`any` | `NSOrPredicateType` | `p0 OR … OR pn`
-`case` | `+[NSExpression expressionForConditional:trueExpression:falseExpression:]` or `MGL_IF` or `+[NSExpression mgl_expressionForConditional:trueExpression:falseExpresssion:]` | `TERNARY(1 = 2, YES, NO)` or `MGL_IF(1 = 2, YES, 2 = 2, YES, NO)`
-`coalesce` | `mgl_coalesce:` | `mgl_coalesce({x, y, z})`
-`match` | `MGL_MATCH` or `+[NSExpression mgl_expressionForMatchingExpression:inDictionary:defaultExpression:]` | `MGL_MATCH(x, 0, 'zero match', 1, 'one match', 'two match', 'default')`
-`interpolate` | `mgl_interpolate:withCurveType:parameters:stops:` or `+[NSExpression mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` |
-`step` | `mgl_step:from:stops:` or `+[NSExpression mgl_expressionForSteppingExpression:fromExpression:stops:]` |
-`let` | `mgl_expressionWithContext:` | `MGL_LET('ios', 11, 'macos', 10.13, $ios + $macos)`
-`var` | `+[NSExpression expressionForVariable:]` | `$variable`
-`concat` | `mgl_join:` or `-[NSExpression mgl_expressionByAppendingExpression:]` | `mgl_join({'Old', ' ', 'MacDonald'})`
-`downcase` | `lowercase:` | `lowercase('DOWNTOWN')`
-`upcase` | `uppercase:` | `uppercase('Elysian Fields')`
-`rgb` | `+[UIColor colorWithRed:green:blue:alpha:]` |
-`rgba` | `+[UIColor colorWithRed:green:blue:alpha:]` |
-`to-rgba` | | `CAST(noindex(var), 'NSArray')`
-`-` | `from:subtract:` | `2 - 1`
-`*` | `multiply:by:` | `1 * 2`
-`/` | `divide:by:` | `1 / 2`
-`%` | `modulus:by:` |
-`^` | `raise:toPower:` | `2 ** 2`
-`+` | `add:to:` | `1 + 2`
-`abs` | `abs:` | `abs(-1)`
-`acos` | `mgl_acos:` | `mgl_acos(1)`
-`asin` | `mgl_asin:` | `mgl_asin(0)`
-`atan` | `mgl_atan:` | `mgl_atan(20)`
-`ceil` | `ceiling:` | `ceiling(0.99999)`
-`cos` | `mgl_cos:` | `mgl_cos(0)`
-`e` | | `%@` representing `NSNumber` containing `M_E`
-`floor` | `floor:` | `floor(-0.99999)`
-`ln` | `ln:` | `ln(2)`
-`ln2` | | `%@` representing `NSNumber` containing `M_LN2`
-`log10` | `log:` | `log(1)`
-`log2` | `mgl_log2:` | `mgl_log2(1024)`
-`max` | `max:` | `max({1, 2, 2, 3, 4, 7, 9})`
-`min` | `min:` | `min({1, 2, 2, 3, 4, 7, 9})`
-`pi` | | `%@` representing `NSNumber` containing `M_PI`
-`round` | `mgl_round:` | `mgl_round(1.5)`
-`sin` | `mgl_sin:` | `mgl_sin(0)`
-`sqrt` | `sqrt:` | `sqrt(2)`
-`tan` | `mgl_tan:` | `mgl_tan(0)`
-`zoom` | `NSExpression.zoomLevelVariableExpression` | `$zoomLevel`
-`heatmap-density` | `NSExpression.heatmapDensityVariableExpression` | `$heatmapDensity`
-`line-progress` | `NSExpression.lineProgressVariableExpression` | `$lineProgress`
-`format` | `+[NSExpression mgl_expressionForAttributedExpressions:]` or `mgl_attributed:` | `mgl_attributed({x, y, z})`
-
-For operators that have no corresponding `NSExpression` symbol, use the
-`MGL_FUNCTION()` format string syntax.
-
-## Filtering sources
-
-You can filter a shape or vector tile source by setting the
-`MGLVectorStyleLayer.predicate` property to an `NSPredicate` object. Below is a
-table of style JSON operators and the corresponding operators used in the
-predicate format string:
-
-In style JSON | In the format string
---------------------------|---------------------
-`["has", key]` | `key != nil`
-`["!has", key]` | `key == nil`
-`["==", key, value]` | `key == value`
-`["!=", key, value]` | `key != value`
-`[">", key, value]` | `key > value`
-`[">=", key, value]` | `key >= value`
-`["<", key, value]` | `key < value`
-`["<=", key, value]` | `key <= value`
-`["in", key, v0, …, vn]` | `key IN {v0, …, vn}`
-`["!in", key, v0, …, vn]` | `NOT key IN {v0, …, vn}`
-`["all", f0, …, fn]` | `p0 AND … AND pn`
-`["any", f0, …, fn]` | `p0 OR … OR pn`
-`["none", f0, …, fn]` | `NOT (p0 OR … OR pn)`
-
-## Specifying the text format
-
-The following format attributes are defined as `NSString` constans that you
-can use to update the formatting of `MGLSymbolStyleLayer.text` property.
-
-In style JSON | In Objective-C | In Swift
---------------|-----------------------|---------
-`text-font` | `MGLFontNamesAttribute` | `.fontNamesAttribute`
-`font-scale` | `MGLFontScaleAttribute` | `.fontScaleAttribute`
-`text-color` | `MGLFontColorAttribute` | `.fontColorAttribute`
-
-See the “[Predicates and Expressions](predicates-and-expressions.html)” guide for
-a full description of the supported operators and operand types.
diff --git a/platform/ios/docs/guides/Gesture Recognizers.md b/platform/ios/docs/guides/Gesture Recognizers.md
deleted file mode 100644
index 26237e3cfa..0000000000
--- a/platform/ios/docs/guides/Gesture Recognizers.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# User Interactions
-
-The Mapbox Maps SDK for iOS provides a set of built-in gesture recognizers. You can customize or supplement these gestures according to your use case. You see what gesture recognizers are on your `MGLMapView` by accessing the `gestureRecognizers` property on your map.
-
-## Configuring user interaction
-
-Several properties on an `MGLMapView` provide ways to enable or disable a set of gesture recognizers. Boolean values are set to `YES` by default.
-
-- `zoomEnabled` - Allows the user to zoom in or out by pinching two fingers, double-tapping, tapping with two fingers, or double-tapping then dragging vertically. Accepts Boolean values.
-- `scrollEnabled` - Allows the user to scroll by dragging or swiping one finger. Accepts Boolean values.
-- `rotateEnabled` - Allows the user to rotate by moving two fingers in a circular motion. Accepts Boolean values.
-- `pitchEnabled` - Allows the user to tilt the map by vertically dragging two fingers. Accepts Boolean values.
-- `decelerationRate` - Determines the rate of deceleration after the user lifts their finger. You can set the value using the `MGLMapViewDecelerationRateNormal`, `MGLMapViewDecelerationRateFast`, or `MGLMapViewDecelerationRateImmediate` constants.
-
-## Individual gestures
-
-|Gesture | Description | Related Property |
-|:-------:|----------------| -----------|
-|Pinch | Zooms in or out on the map's anchor point | `zoomEnabled` |
-|Rotation | Changes the MGLMapView direction based on the user rotating two fingers in a circular motion | `rotateEnabled` |
-|Single tap | Selects/deselects the annotation that you tap. | |
-|Double tap | Zooms in on the map's anchor point | `zoomEnabled` |
-|Two-finger tap | Zooms out with the map's anchor point centered | `zoomEnabled` |
-|Pan | Scrolls across mapView (_note: if_ `MGLUserTrackingModeFollow` _is being used, it will be disabled once the user pans_)| `scrollEnabled` |
-|Two-finger drag | Adjusts the pitch of the `MGLMapView` | `pitchEnabled` |
-|One-finger zoom | Tap twice; on second tap, hold your finger on the map and pan up to zoom in, or down to zoom out | `zoomEnabled`|
-
-![quick zoom](img/user-interaction/quickzoom.gif) ![rotation](img/user-interaction/RotateSydney.gif)
-
-## Adding custom gesture recognizers
-
-You can add `UIGestureRecognizers` to your map programmatically or via storyboard. Adding custom responses to gesture recognizers can enhance your user's experience, but try to use standard gestures where possible.
-
-The gesture recognizers that you add will take priority over the built-in gesture recognizer. You can also set up your own gesture recognizer to work simultaneously with built-in gesture recognizers by using `-gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:`, allowing you to enhance already existing gesture recognizers.
-
-You can also add gesture recognizers that are only called when the default gesture recognizer fails (and vice versa), such as when a user taps on a part of the map that is not an annotation. The documentation for [MGLMapView](Classes/MGLMapView.html) includes an example of how to create a fallback gesture recognizer.
-
-If you would like to disable a specific set of gesture recognizers, such as zoom, you can set the Boolean value for the appropriate property to `NO`. You can then add your own gesture recognizers to perform those actions.
diff --git a/platform/ios/docs/guides/Info.plist Keys.md b/platform/ios/docs/guides/Info.plist Keys.md
deleted file mode 100644
index 6322b42dc1..0000000000
--- a/platform/ios/docs/guides/Info.plist Keys.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# Info.plist Keys
-
-The Mapbox Maps SDK for iOS supports custom `Info.plist` keys in your application in order to configure various settings.
-
-## MGLMapboxAccessToken
-
-Set the [Mapbox access token](https://www.mapbox.com/help/define-access-token/) to be used by all instances of `MGLMapView` in the current application.
-
-Mapbox-hosted vector tiles and styles require an API access token, which you can obtain from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). Access tokens associate requests to Mapbox’s vector tile and style APIs with your Mapbox account. They also deter other developers from using your styles without your permission.
-
-As an alternative, you can use `MGLAccountManager.accessToken` to set a token in code. See [our guide](https://www.mapbox.com/help/ios-private-access-token/) for some tips on keeping access tokens in open source code private.
-
-## MGLMapboxAPIBaseURL
-
-Use this key if you need to customize the API base URL used throughout the SDK. If unset, the default Mapbox API is used.
-
-The default value is `https://api.mapbox.com`.
-
-## MGLMapboxMetricsEnabledSettingShownInApp
-
-If you have implemented custom opt-out of Mapbox Telemetry within the user interface of your app, use this key to disable the built-in check for opt-out support. See [this guide](https://docs.mapbox.com/help/how-mapbox-works/attribution/#mapbox-maps-sdk-for-ios) for more details.
-
-## MGLIdeographicFontFamilyName
-
-The name of the font family to use for client-side text rendering of CJK ideographs.
-
-Set `MGLIdeographicFontFamilyName` in your containing application's Info.plist to font family name(s) that will be available at run time, such as “PingFang TC” or “Marker Felt”. This plist key accepts:
-
-- A string value of a single font family name.
-
-- An array of font family names. Fonts will be used in the defined order, eventually falling back to default system font if none are available.
-
-- A boolean value `NO` to disable client-side rendering of CJK glyphs — remote fonts specified in your style will be used instead.
-
-## MGLCollisionBehaviorPre4_0
-
- If this key is set to YES (`true`), collision detection is performed only between symbol style layers based on the same source, as in versions 2.0–3.7 of the Mapbox Maps SDK for iOS. In other words, symbols in an `MGLSymbolStyleLayer` based on one source (for example, an `MGLShapeSource`) may overlap with symbols in another layer that is based on a different source (such as the Mapbox Streets source). This is the case regardless of the `MGLSymbolStyleLayer.iconAllowsOverlap`, `MGLSymbolStyleLayer.iconIgnoresPlacement`, `MGLSymbolStyleLayer.textAllowsOverlap`, and `MGLSymbolStyleLayer.textIgnoresPlacement` properties.
-
-Beginning in version 4.0, the SDK also performs collision detection between style layers based on different sources by default. For the default behavior, omit the `MGLCollisionBehaviorPre4_0` key or set it to NO (`false`).
-
-This property may also be set using `[[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:@"MGLCollisionBehaviorPre4_0"]`; it will override any value specified in the `Info.plist`.
-
diff --git a/platform/ios/docs/guides/Migrating to Expressions.md b/platform/ios/docs/guides/Migrating to Expressions.md
deleted file mode 100644
index d92aab0ffc..0000000000
--- a/platform/ios/docs/guides/Migrating to Expressions.md
+++ /dev/null
@@ -1,266 +0,0 @@
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-
-# Migrating from Style Functions to Expressions
-
-[Runtime Styling](https://www.mapbox.com/ios-sdk/maps/overview/runtime-styling/) enables you to modify every aspect of the map’s appearance dynamically as a user interacts with your application. Developers can specify in advance how a layout or paint attribute will vary as the zoom level changes or how the appearance of individual features vary based on metadata provided by a content source.
-
-With Mapbox Maps SDK for iOS v4.0.0, style functions have been replaced with expressions. These provide even more tools for developers who want to style their maps dynamically. This guide outlines some tips for migrating from style functions to expressions, and offers an overview of some things that developers can do with expressions.
-
-An expression is represented at runtime by the `NSExpression` class. Expressions can be used to style paint and layout properties based on zoom level, data attributes, or a combination of the two.
-
-A constant expression can also be assigned to a style property. For example, the opacity of a fill style layer can be set to a constant value between 0 and 1.
-
-The documentation for each individual style layer property notes which non-constant expressions are enabled for that property. Style functions supported four interpolation modes: exponential, interval, categorical, and identity.
-
-This guide uses earthquake data from the [U.S. Geological Survey](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php). Under each interpolation mode, the style function implementation will be shown, followed by the current syntax.
-
-For more information about how to work with GeoJSON data in our iOS SDK, please see our [working with GeoJSON data](working-with-geojson-data.html) guide. To learn more about supported expressions, see our ["Predicates and Expressions"](predicates-and-expressions.html) guide. The "Predicates and Expressions" guide also outlines Mapbox custom functions that can be used to dynamically style a map.
-
-## Stops
-Stops are dictionary keys that are associated with layer attribute values. Constant values no longer need to be wrapped as style values when they are values in a stops dictionary.
-
-
-Style function syntax:
-
-```swift
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-```
-
-Current syntax:
-```swift
-let stops: [NSNumber: UIColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
-]
-```
-
-
-## Interpolation mode
-
-Style functions supported four interpolation modes: exponential/linear, interval, categorical, and identity. For more information about supported custom expressions, please see the "Predicates and Expressions" guide.
-
-### Linear
-
-`+[NSExpression(MGLAdditions) mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` takes the interpolation type as a parameter. If you previously used the default interpolation base, use the curve type `MGLExpressionInterpolationMode.linear`. See the [`mgl_interpolate:withCurveType:parameters:stops:`](predicates-and-expressions.html#code-mgl_interpolate-withcurvetype-parameters-stops-code) documentation for more details.
-
-The stops dictionary below, shows colors that continuously shift from yellow to orange to red to blue to white based on the attribute value.
-
-Style function syntax:
-
-```swift
-let url = URL(string: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson")!
-let symbolSource = MGLSource(identifier: "source")
-let symbolLayer = MGLSymbolStyleLayer(identifier: "place-city-sm", source: symbolSource)
-
-let source = MGLShapeSource(identifier: "earthquakes", url: url, options: nil)
-mapView.style?.addSource(source)
-
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-
-let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-layer.circleColor = MGLStyleValue(interpolationMode: .exponential,
- sourceStops: stops,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .green)])
-layer.circleRadius = MGLStyleValue(rawValue: 10)
-mapView.style?.insertLayer(layer, below: symbolLayer)
-```
-
-Current syntax:
-
-```swift
-let url = URL(string: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson")!
-let symbolSource = MGLSource(identifier: "source")
-let symbolLayer = MGLSymbolStyleLayer(identifier: "place-city-sm", source: symbolSource)
-
-let source = MGLShapeSource(identifier: "earthquakes", url: url, options: nil)
-mapView.style?.addSource(source)
-
-let stops: [NSNumber: UIColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
-]
-
-let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-layer.circleColor = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:(mag, 'linear', nil, %@)",
- stops)
-layer.circleRadius = NSExpression(forConstantValue: 10)
-mapView.style?.insertLayer(layer, below: symbolLayer)
-```
-
-### Exponential
-
-If you previously used an interpolation base greater than `0` (other than `1`), you can use `MGLExpressionInterpolationMode.exponential` as the curve type for `+[NSExpression(MGLAdditions) mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` or `'exponential'` as the curve type for [`mgl_interpolate:withCurveType:parameters:stops:`](predicates-and-expressions.html#code-mgl_interpolate-withcurvetype-parameters-stops-code). The `parameters` argument takes that interpolation base. This interpolates between values exponentially, creating an accelerated ramp effect.
-
-Here’s a visualization from Mapbox Studio (see [Mapbox Studio and iOS](https://www.mapbox.com/ios-sdk/maps/overview/mapbox-studio/)) comparing interpolation base values of `1.5` and `0.5` based on zoom. In order to convert camera style functions, use `$zoomLevel` or `MGL_FUNCTION('zoomLevel')` as the attribute key.
-
-<img src="img/data-driven-styling/exponential-function.png" height=344/>
-<img src="img/data-driven-styling/exponential-function-1.png" height=344/>
-
-The example below increases a layer’s `circleRadius` exponentially based on a map’s zoom level. The interpolation base is `1.5`.
-
-Style function syntax:
-
-```swift
-let stops = [
- 12: MGLStyleValue<NSNumber>(rawValue: 0.5),
- 14: MGLStyleValue(rawValue: 2),
- 18: MGLStyleValue(rawValue: 18),
-]
-
-layer.circleRadius = MGLStyleValue(interpolationMode: .exponential,
- cameraStops: stops,
- options: [.interpolationBase: 1.5])
-```
-
-Current syntax:
-
-```swift
-let stops = [
- 12: 0.5,
- 14: 2,
- 18: 18,
-]
-
-layer.circleRadius = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.5, %@)",
- stops)
-```
-
-### Interval
-
-Steps, or intervals, create a range using the keys from the stops dictionary. The range is from the given key to just less than the next key. The attribute values that fall into that range are then styled using the layout or paint value assigned to that key. You can use the `+[NSExpression(MGLAdditions) mgl_expressionForSteppingExpression:fromExpression:stops:]` method or the custom function [`mgl_step:from:stops:`](predicates-and-expressions.html#code-mgl_step-from-stops-code) for cases where you previously used interval interpolation mode. The first parameter takes the feature attribute name and the second parameter (`from:`) optionally takes the default or fallback value for that function. The final parameter takes a stops dictionary as an argument.
-
-When we use the stops dictionary given above with an `'mgl_step:from:stops:'`, we create ranges where earthquakes with a magnitude of 0 to just less than 2.5 would be yellow, 2.5 to just less than 5 would be orange, and so on.
-
-Style function syntax:
-
-```swift
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-
-layer.circleColor = MGLStyleValue(interpolationMode: .interval,
- sourceStops: stops,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .green)])
-````
-
-Current syntax:
-
-```swift
-let stops: [NSNumber: UIColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
-]
-
-layer.circleColor = NSExpression(format: "mgl_step:from:stops:(mag, %@, %@)",
- UIColor.green, stops)
-```
-
-### Categorical
-
-Categorical interpolation mode took a stops dictionary. If the value for a specified feature attribute name matched one in that stops dictionary, the style value for that attribute value would be used. Categorical style functions can now be replaced with `MGL_MATCH`.
-
-`MGL_MATCH` takes an initial condition, which in this case is an attribute key. This is followed by possible matches for that key and the value to assign to the layer property if there is a match. The final argument can be a default style value that is to be used if none of the specified values match.
-
-There are three main types of events in the USGS dataset: earthquakes, explosions, and quarry blasts. In this case, the color of the circle layer will be determined by the type of event, with a default value of blue to catch any events that do not fall into any of those categories.
-
-Style function syntax:
-
-```swift
-let categoricalStops = [
- "earthquake": MGLStyleValue<UIColor>(rawValue: .orange),
- "explosion": MGLStyleValue(rawValue: .red),
- "quarry blast": MGLStyleValue(rawValue: .yellow),
-]
-
-layer.circleColor = MGLStyleValue(interpolationMode: .categorical,
- sourceStops: categoricalStops,
- attributeName: "type",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .blue)])
-```
-
-Current syntax:
-```swift
-let defaultColor = UIColor.blue
-layer.circleColor = NSExpression(format: "MGL_MATCH(type, 'earthquake', %@, 'explosion', %@, 'quarry blast', %@, %@)",
- UIColor.orange, UIColor.red, UIColor.yellow, defaultColor)
-```
-
-If your use case does not require a default value, you can either apply a predicate to your layer prior to styling it, or use the format string `"valueForKeyPath:"`.
-
-### Identity
-
-Identity interpolation mode used the attribute’s value as the style layer property value. In this example, you might set the `circleRadius` to the earthquake’s magnitude. In order to use a feature attribute value to style a layer property, set the property value to `[NSExpression expressionForKeyPath:]`, which take the feature attribute name as an argument.
-
-Style function syntax:
-
-```swift
-layer.circleRadius = MGLStyleValue(interpolationMode: .identity,
- sourceStops: nil,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<NSNumber>(rawValue: 0)])
-```
-
-Current syntax:
-```swift
-layer.circleRadius = NSExpression(forKeyPath: "mag")
-```
-
-![identity mode](img/data-driven-styling/identity.png)
-
-Some built-in functions can be applied to attribute values to style layer property values. To set the circle radius to three times the earthquake’s magnitude, create a `multiply:by:` function that takes the attribute value and the multiplier as arguments, or use a format string.
-
-```swift
-layer.circleRadius = NSExpression(forFunction: "multiply:by:", arguments: [NSExpression(forKeyPath: "mag"), 3])
-```
-
-![multiply magnitude](img/data-driven-styling/multiply.png)
-
-You can also cast attribute values in order to use them. One example is to cast an integer as an `NSString` and use it as a text value.
-
-```swift
-let magnitudeLayer = MGLSymbolStyleLayer(identifier: "mag-layer", source: source)
-magnitudeLayer.text = NSExpression(format: "CAST(mag, 'NSString')")
-mapView.style?.addLayer(magnitudeLayer)
-```
-
-![cast a value](img/data-driven-styling/cast.png)
-
-### Constant Values
-
-For constant values that do not necessarily change based on camera or attribute values, use `[NSExpression expressionForConstantValue:]` (previously `[MGLStyleValue valueWithRawValue:]`).
-
-## Resources
-
-* [USGS Earthquake Feed](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php)
-* [For Style Authors](for-style-authors.html)
-* [Predicates and Expressions](predicates-and-expressions.html)
diff --git a/platform/ios/docs/guides/Tile URL Templates.md b/platform/ios/docs/guides/Tile URL Templates.md
deleted file mode 100644
index 4c8064f781..0000000000
--- a/platform/ios/docs/guides/Tile URL Templates.md
+++ /dev/null
@@ -1,99 +0,0 @@
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-# Tile URL Templates
-
-`MGLTileSource` objects, specifically `MGLRasterTileSource` and
-`MGLVectorTileSource` objects, can be created using an initializer that accepts
-an array of tile URL templates. Tile URL templates are strings that specify the
-URLs of the vector tiles or raster tile images to load. A template resembles an
-absolute URL, but with any number of placeholder strings that the source
-evaluates based on the tile it needs to load. For example:
-
-* `http://www.example.com/tiles/{z}/{x}/{y}.pbf` could be
- evaluated as `http://www.example.com/tiles/14/6/9.pbf`.
-* `http://www.example.com/tiles/{z}/{x}/{y}{ratio}.png` could be
- evaluated as `http://www.example.com/tiles/14/6/9@2x.png`.
-
-Tile URL templates are also used to define tilesets in TileJSON manifests or
-[`raster`](https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-raster-tiles)
-and
-[`vector`](https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-vector-tiles)
-sources in style JSON files. See the
-[TileJSON specification](https://github.com/mapbox/tilejson-spec/tree/master/2.2.0)
-for information about tile URL templates in the context of a TileJSON or style
-JSON file.
-
-Tile sources support the following placeholder strings in tile URL templates,
-all of which are optional:
-
-<table>
-<thead>
-<tr><th>Placeholder string</th><th>Description</th></tr>
-</thead>
-<tbody>
-<tr>
- <td><code>{x}</code></td>
- <td>The index of the tile along the map’s x axis according to Spherical
- Mercator projection. If the value is 0, the tile’s left edge corresponds
- to the 180th meridian west. If the value is 2<sup><var>z</var></sup>−1,
- the tile’s right edge corresponds to the 180th meridian east.</td>
-</tr>
-<tr>
- <td><code>{y}</code></td>
- <td>The index of the tile along the map’s y axis according to Spherical
- Mercator projection. If the value is 0, the tile’s tile edge corresponds
- to arctan(sinh(π)), or approximately 85.0511 degrees north. If the value
- is 2<sup><var>z</var></sup>−1, the tile’s bottom edge corresponds to
- −arctan(sinh(π)), or approximately 85.0511 degrees south. The y axis is
- inverted if the <code>options</code> parameter contains
- <code>MGLTileSourceOptionTileCoordinateSystem</code> with a value of
- <code>MGLTileCoordinateSystemTMS</code>.</td>
-</tr>
-<tr>
- <td><code>{z}</code></td>
- <td>The tile’s zoom level. At zoom level 0, each tile covers the entire
- world map; at zoom level 1, it covers ¼ of the world; at zoom level 2,
- <sup>1</sup>⁄<sub>16</sub> of the world, and so on. For tiles loaded by
- a <code>MGLRasterTileSource</code> object, whether the tile zoom level
- matches the map’s current zoom level depends on the value of the
- source’s tile size as specified in the
- <code>MGLTileSourceOptionTileSize</code> key of the <code>options</code>
- parameter.</td>
-</tr>
-<tr>
- <td><code>{bbox-epsg-3857}</code></td>
- <td>The tile’s bounding box, expressed as a comma-separated list of the
- tile’s western, southern, eastern, and northern extents according to
- Spherical Mercator (EPSG:3857) projection. The bounding box is typically
- used with map services conforming to the
- <a href="http://www.opengeospatial.org/standards/wms">Web Map Service</a>
- protocol.</td>
-</tr>
-<tr>
- <td><code>{quadkey}</code></td>
- <td>A quadkey indicating both the tile’s location and its zoom level. The
- quadkey is typically used with
- <a href="https://msdn.microsoft.com/en-us/library/bb259689.aspx">Bing Maps</a>.
- </td>
-</tr>
-<tr>
- <td><code>{ratio}</code></td>
- <td>A suffix indicating the resolution of the tile image. The suffix is the
- empty string for standard resolution displays and <code>@2x</code> for
- Retina displays, including displays for which <code>UIScreen.scale</code>
- is 3.
- </td>
-</tr>
-<tr>
- <td><code>{prefix}</code></td>
- <td>Two hexadecimal digits chosen such that each visible tile has a
- different prefix. The prefix is typically used for domain sharding.</td>
-</tr>
-</tbody>
-</table>
-
-For more information about the `{x}`, `{y}`, and `{z}` placeholder strings,
-consult the
-[OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames).
diff --git a/platform/ios/docs/img/screenshot.png b/platform/ios/docs/img/screenshot.png
deleted file mode 100644
index 62c04746d4..0000000000
--- a/platform/ios/docs/img/screenshot.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/docs/img/user-interaction/RotateSydney.gif b/platform/ios/docs/img/user-interaction/RotateSydney.gif
deleted file mode 100644
index 59d44d5636..0000000000
--- a/platform/ios/docs/img/user-interaction/RotateSydney.gif
+++ /dev/null
Binary files differ
diff --git a/platform/ios/docs/img/user-interaction/quickzoom.gif b/platform/ios/docs/img/user-interaction/quickzoom.gif
deleted file mode 100644
index ce4515825c..0000000000
--- a/platform/ios/docs/img/user-interaction/quickzoom.gif
+++ /dev/null
Binary files differ
diff --git a/platform/ios/docs/pod-README.md b/platform/ios/docs/pod-README.md
deleted file mode 100644
index 8a3080055d..0000000000
--- a/platform/ios/docs/pod-README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/)
-
-The Mapbox Maps SDK for iOS is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 9.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL.
-
-For more information, check out the [Mapbox Maps SDK for iOS homepage](https://www.mapbox.com/ios-sdk/) and the [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) online.
-
-[![](https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/ios/docs/img/screenshot.png)]()
-
-## Installation
-
-The Mapbox Maps SDK for iOS may be installed as either a dynamic framework or a static framework. (To reduce the download size, the static framework is omitted from some distributions; you may need to download the full package from the [release page](https://github.com/mapbox/mapbox-gl-native/releases/).)
-
-Integrating the Mapbox Maps SDK for iOS requires Xcode 8.0 or higher.
-
-{{DYNAMIC}}
-
-### Dynamic framework
-
-This is the recommended workflow for manually integrating the SDK into an application:
-
-1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework from the `dynamic` folder into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish.
-
-1. In the Build Phases tab, click the + button at the top and select “New Run Script Phase”. Enter the following code into the script text field:
-
-```bash
-bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework/strip-frameworks.sh"
-```
-
-(The last step, courtesy of [Realm](https://github.com/realm/realm-cocoa/), is required for working around an [iOS App Store bug](http://www.openradar.me/radar?id=6409498411401216) when archiving universal binaries.)
-
-{{/DYNAMIC}}
-{{STATIC}}
-
-### Static framework
-
-You can alternatively install the SDK as a static framework:
-
-1. Drag Mapbox.bundle and Mapbox.framework from the `static` folder into the Project navigator. In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. Open the project editor and select your application target to verify that the following changes occurred automatically:
-
- - In the General tab, Mapbox.framework is listed in the “Linked Frameworks and Libraries” section.
- - In the Build Settings tab, the “Framework Search Paths” (`FRAMEWORK_SEARCH_PATHS`) build setting includes the directory that contains Mapbox.framework. For most projects, the default value of `$(inherited) $(PROJECT_DIR)` should be sufficient.
- - In the Build Phases tab, Mapbox.bundle is listed in the “Copy Bundle Resources” build phase.
-
-1. Add the following Cocoa Touch frameworks and libraries to the “Linked Frameworks and Libraries” section:
-
- - GLKit.framework
- - ImageIO.framework
- - MobileCoreServices.framework
- - QuartzCore.framework
- - SystemConfiguration.framework
- - libc++.tbd
- - libsqlite3.tbd
- - libz.tbd
-
-1. In the Build Settings tab, find the Other Linker Flags setting and add `-ObjC`.
-
-{{/STATIC}}
-
-## Configuration
-
-1. Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target, then go to the Info tab. Under the “Custom iOS Target Properties” section, set `MGLMapboxAccessToken` to your access token. You can obtain an access token from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/).
-
-1. In order to show the user’s current location on the map, the SDK must ask for the user’s permission to access Location Services. Go to the Info tab of the project editor. If your application supports iOS 7, set the `NSLocationUsageDescription` key to a message that explains to the user what their location is used for. If your application supports iOS 8 and above, set the `NSLocationAlwaysUsageDescription` and/or `NSLocationWhenInUseUsageDescription` key to this message instead.
-
-1. _(Optional)_ Mapbox Telemetry is a [powerful location analytics platform](https://www.mapbox.com/telemetry/) included in this SDK. By default, anonymized location and usage data is sent to Mapbox whenever the host application causes it to be gathered. This SDK provides users with a way to individually opt out of Mapbox Telemetry. You can also add this opt-out setting to your application’s Settings screen using a Settings bundle. An example Settings.bundle is provided with this SDK; drag it into the Project navigator, checking “Copy items if needed” when prompted. In the project editor, verify that the following change occurred automatically:
-
- - In the General tab, Settings.bundle is listed in the “Copy Bundle Resources” build phase.
-
-## Usage
-
-In a storyboard or XIB, add a view to your view controller. (Drag View from the Object library to the View Controller scene on the Interface Builder canvas.) In the Identity inspector, set the view’s custom class to `MGLMapView`. If you need to manipulate the map view programmatically:
-
-1. Switch to the Assistant Editor.
-1. Import the `Mapbox` module.
-1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this:
-
-```objc
-// ViewController.m
-@import Mapbox;
-
-@interface ViewController : UIViewController
-
-@property (strong) IBOutlet MGLMapView *mapView;
-
-@end
-```
-
-```swift
-// ViewController.swift
-import Mapbox
-
-class ViewController: UIViewController {
- @IBOutlet var mapView: MGLMapView!
-}
-```
-
-Full API documentation is included in this package, within the `documentation` folder. For more details, read “[First steps with the Mapbox Maps SDK for iOS](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/).
-
-If you have any questions, please see [our help page](https://www.mapbox.com/help/). We welcome your [bug reports, feature requests, and contributions](https://github.com/mapbox/mapbox-gl-native/issues/).
diff --git a/platform/ios/framework/Info-static.plist b/platform/ios/framework/Info-static.plist
deleted file mode 100644
index b42a23322d..0000000000
--- a/platform/ios/framework/Info-static.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundleShortVersionString</key>
- <string>$(CURRENT_SHORT_VERSION)</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>$(CURRENT_PROJECT_VERSION)</string>
- <key>MGLCommitHash</key>
- <string>$(CURRENT_COMMIT_HASH)</string>
- <key>MGLSemanticVersionString</key>
- <string>$(CURRENT_SEMANTIC_VERSION)</string>
- <key>NSPrincipalClass</key>
- <string></string>
-</dict>
-</plist>
diff --git a/platform/ios/framework/Info.plist b/platform/ios/framework/Info.plist
deleted file mode 100644
index d8962c53ab..0000000000
--- a/platform/ios/framework/Info.plist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>$(CURRENT_SHORT_VERSION)</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>$(CURRENT_PROJECT_VERSION)</string>
- <key>MGLCommitHash</key>
- <string>$(CURRENT_COMMIT_HASH)</string>
- <key>MGLSemanticVersionString</key>
- <string>$(CURRENT_SEMANTIC_VERSION)</string>
- <key>NSPrincipalClass</key>
- <string></string>
-</dict>
-</plist>
diff --git a/platform/ios/framework/Mapbox-static.h b/platform/ios/framework/Mapbox-static.h
deleted file mode 100644
index 864a3fd5b6..0000000000
--- a/platform/ios/framework/Mapbox-static.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <GLKit/GLKit.h>
-#import <ImageIO/ImageIO.h>
-#import <MobileCoreServices/MobileCoreServices.h>
-#import <QuartzCore/QuartzCore.h>
-#import <SystemConfiguration/SystemConfiguration.h>
diff --git a/platform/ios/framework/modulemap b/platform/ios/framework/modulemap
deleted file mode 100644
index 122db0c2b1..0000000000
--- a/platform/ios/framework/modulemap
+++ /dev/null
@@ -1,8 +0,0 @@
-framework module Mapbox {
- umbrella header "Mapbox.h"
- export *
- module * { export * }
- link "c++"
- link "sqlite3"
- link "z"
-}
diff --git a/platform/ios/framework/strip-frameworks.sh b/platform/ios/framework/strip-frameworks.sh
deleted file mode 100755
index 686541566a..0000000000
--- a/platform/ios/framework/strip-frameworks.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-################################################################################
-#
-# Copyright 2015 Realm Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# This script strips all non-valid architectures from dynamic libraries in
-# the application's `Frameworks` directory.
-#
-# The following environment variables are required:
-#
-# BUILT_PRODUCTS_DIR
-# FRAMEWORKS_FOLDER_PATH
-# VALID_ARCHS
-# EXPANDED_CODE_SIGN_IDENTITY
-
-
-# Signs a framework with the provided identity
-code_sign() {
- # Use the current code_sign_identitiy
- echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
- echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1"
- /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1"
-}
-
-# Set working directory to product’s embedded frameworks
-cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
-
-if [ "$ACTION" = "install" ]; then
- echo "Copy .bcsymbolmap files to .xcarchive"
- find . -name '*.bcsymbolmap' -type f -exec mv {} "${CONFIGURATION_BUILD_DIR}" \;
-else
- # Delete *.bcsymbolmap files from framework bundle unless archiving
- find . -name '*.bcsymbolmap' -type f -exec rm -rf "{}" +\;
-fi
-
-echo "Stripping frameworks"
-
-for file in $(find . -type f -perm +111); do
- # Skip non-dynamic libraries
- if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then
- continue
- fi
- # Get architectures for current file
- archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)"
- stripped=""
- for arch in $archs; do
- if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
- # Strip non-valid architectures in-place
- lipo -remove "$arch" -output "$file" "$file" || exit 1
- stripped="$stripped $arch"
- fi
- done
- if [[ "$stripped" != "" ]]; then
- echo "Stripped $file of architectures:$stripped"
- if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then
- code_sign "${file}"
- fi
- fi
-done
-
diff --git a/platform/ios/ios.cmake b/platform/ios/ios.cmake
index a662cac13f..c4cfa10e8c 100644
--- a/platform/ios/ios.cmake
+++ b/platform/ios/ios.cmake
@@ -40,7 +40,6 @@ target_sources(
${PROJECT_SOURCE_DIR}/platform/darwin/src/native_apple_interface.m
${PROJECT_SOURCE_DIR}/platform/darwin/src/nsthread.mm
${PROJECT_SOURCE_DIR}/platform/darwin/src/number_format.mm
- ${PROJECT_SOURCE_DIR}/platform/darwin/src/reachability.m
${PROJECT_SOURCE_DIR}/platform/darwin/src/run_loop.cpp
${PROJECT_SOURCE_DIR}/platform/darwin/src/string_nsstring.mm
${PROJECT_SOURCE_DIR}/platform/darwin/src/timer.cpp
diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj
deleted file mode 100644
index 4db9409081..0000000000
--- a/platform/ios/ios.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,4768 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 071BBAFF1EE7613E001FB02A /* MGLImageSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 071BBAFD1EE75CD4001FB02A /* MGLImageSource.mm */; };
- 071BBB001EE7613F001FB02A /* MGLImageSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 071BBAFD1EE75CD4001FB02A /* MGLImageSource.mm */; };
- 071BBB031EE76146001FB02A /* MGLImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 071BBAFC1EE75CD4001FB02A /* MGLImageSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 071BBB041EE76147001FB02A /* MGLImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 071BBAFC1EE75CD4001FB02A /* MGLImageSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 071BBB071EE77631001FB02A /* MGLImageSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 071BBB051EE7761A001FB02A /* MGLImageSourceTests.m */; };
- 075AF842227B6762008D7A4C /* MBXState.m in Sources */ = {isa = PBXBuildFile; fileRef = 075AF841227B6762008D7A4C /* MBXState.m */; };
- 075AF845227B67C6008D7A4C /* MBXStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 075AF844227B67C6008D7A4C /* MBXStateManager.m */; };
- 076171C32139C70900668A35 /* MGLMapViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 076171C22139C70900668A35 /* MGLMapViewTests.m */; };
- 076171C72141A91700668A35 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 076171C62141A91700668A35 /* Settings.bundle */; };
- 077061DA215DA00E000FEF62 /* MGLTestLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 077061D9215DA00E000FEF62 /* MGLTestLocationManager.m */; };
- 0778DD431F67556700A73B34 /* MGLComputedShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0778DD401F67555F00A73B34 /* MGLComputedShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0778DD441F67556C00A73B34 /* MGLComputedShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0778DD411F67555F00A73B34 /* MGLComputedShapeSource.mm */; };
- 07D8C6FB1F67560100381808 /* MGLComputedShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0778DD411F67555F00A73B34 /* MGLComputedShapeSource.mm */; };
- 07D8C6FF1F67562C00381808 /* MGLComputedShapeSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D8C6FD1F67562800381808 /* MGLComputedShapeSourceTests.m */; };
- 07D947531F67488E00E37934 /* MGLComputedShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D9474E1F67487E00E37934 /* MGLComputedShapeSource_Private.h */; };
- 16376B0A1FFD9DAF0000563E /* MBGLIntegrationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16376B091FFD9DAF0000563E /* MBGLIntegrationTests.mm */; };
- 16376B331FFDB4B40000563E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 16376B321FFDB4B40000563E /* AppDelegate.m */; };
- 16376B3B1FFDB4B40000563E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16376B3A1FFDB4B40000563E /* Assets.xcassets */; };
- 16376B3E1FFDB4B40000563E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 16376B3C1FFDB4B40000563E /* LaunchScreen.storyboard */; };
- 16376B411FFDB4B40000563E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 16376B401FFDB4B40000563E /* main.m */; };
- 16376B471FFDB92B0000563E /* one-liner.json in Resources */ = {isa = PBXBuildFile; fileRef = DA35D0871E1A6309007DED41 /* one-liner.json */; };
- 16376B491FFEED010000563E /* MGLMapViewLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 16376B481FFEED010000563E /* MGLMapViewLayoutTests.m */; };
- 170C437C2029D96F00863DF0 /* MGLHeatmapColorTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 170C43782028D49800863DF0 /* MGLHeatmapColorTests.mm */; };
- 170C437D2029D97900863DF0 /* MGLHeatmapStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 170C43792028D49800863DF0 /* MGLHeatmapStyleLayerTests.mm */; };
- 1753ED421E53CE6F00A9FD90 /* MGLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1753ED411E53CE6F00A9FD90 /* MGLConversion.h */; };
- 1753ED431E53CE6F00A9FD90 /* MGLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1753ED411E53CE6F00A9FD90 /* MGLConversion.h */; };
- 1F0196AA23174B0700F5C819 /* MGLMapViewContentInsetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F0196A923174B0700F5C819 /* MGLMapViewContentInsetTests.m */; };
- 1F06668A1EC64F8E001C16D7 /* MGLLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0666881EC64F8E001C16D7 /* MGLLight.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1F06668D1EC64F8E001C16D7 /* MGLLight.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F0666891EC64F8E001C16D7 /* MGLLight.mm */; };
- 1F26B6C120E189C9007BCC21 /* MBXCustomLocationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F26B6C020E189C9007BCC21 /* MBXCustomLocationViewController.m */; };
- 1F26B6C320E1A351007BCC21 /* simple_route.json in Resources */ = {isa = PBXBuildFile; fileRef = 1F26B6C220E1A351007BCC21 /* simple_route.json */; };
- 1F2B94C0221636D900210640 /* MGLNetworkConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B94BF221636D800210640 /* MGLNetworkConfiguration_Private.h */; };
- 1F2B94C1221636D900210640 /* MGLNetworkConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B94BF221636D800210640 /* MGLNetworkConfiguration_Private.h */; };
- 1F6A82A221360F9D00BA5B41 /* MGLLoggingConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A021360F9C00BA5B41 /* MGLLoggingConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1F6A82A321360F9D00BA5B41 /* MGLLoggingConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A021360F9C00BA5B41 /* MGLLoggingConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1F6A82A82138871900BA5B41 /* MGLLoggingConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A62138871900BA5B41 /* MGLLoggingConfiguration_Private.h */; };
- 1F6A82A92138871900BA5B41 /* MGLLoggingConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A62138871900BA5B41 /* MGLLoggingConfiguration_Private.h */; };
- 1F7454921ECBB42C00021D39 /* MGLLight.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F0666891EC64F8E001C16D7 /* MGLLight.mm */; };
- 1F7454931ECBB43F00021D39 /* MGLLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0666881EC64F8E001C16D7 /* MGLLight.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1F7454961ECD450D00021D39 /* MGLLight_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7454941ECD450D00021D39 /* MGLLight_Private.h */; };
- 1F7454971ECD450D00021D39 /* MGLLight_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7454941ECD450D00021D39 /* MGLLight_Private.h */; };
- 1F7454A91ED08AB400021D39 /* MGLLightTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F7454A61ED08AB400021D39 /* MGLLightTest.mm */; };
- 1F8A59F72165326D004DFE75 /* sideload_sat.db in Resources */ = {isa = PBXBuildFile; fileRef = 1F8A59F62165326C004DFE75 /* sideload_sat.db */; };
- 1F8A59F821653275004DFE75 /* sideload_sat.db in Resources */ = {isa = PBXBuildFile; fileRef = 1F8A59F62165326C004DFE75 /* sideload_sat.db */; };
- 1F8E8A81233A9FD9009B51ED /* MGLMapViewGestureRecognizerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F8E8A80233A9FD9009B51ED /* MGLMapViewGestureRecognizerTests.mm */; };
- 1F95931D1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F95931C1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm */; };
- 1FC4817D2098CBC0000D09B4 /* NSPredicate+MGLPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC4817B2098CBC0000D09B4 /* NSPredicate+MGLPrivateAdditions.h */; };
- 1FC4817F2098CD80000D09B4 /* NSPredicate+MGLPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC4817B2098CBC0000D09B4 /* NSPredicate+MGLPrivateAdditions.h */; };
- 1FCAE2A220B872A400C577DD /* MGLLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A020B872A400C577DD /* MGLLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1FCAE2A320B872A400C577DD /* MGLLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A020B872A400C577DD /* MGLLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1FCAE2A420B872A400C577DD /* MGLLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCAE2A120B872A400C577DD /* MGLLocationManager.m */; };
- 1FCAE2A520B872A400C577DD /* MGLLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCAE2A120B872A400C577DD /* MGLLocationManager.m */; };
- 1FCAE2A820B88B3800C577DD /* MGLLocationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A620B88B3800C577DD /* MGLLocationManager_Private.h */; };
- 1FCAE2A920B88B3800C577DD /* MGLLocationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A620B88B3800C577DD /* MGLLocationManager_Private.h */; };
- 1FCCEC34222605C400302E3B /* MGLSDKMetricsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCCEC32222605C400302E3B /* MGLSDKMetricsManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1FCCEC35222605C400302E3B /* MGLSDKMetricsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCCEC32222605C400302E3B /* MGLSDKMetricsManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1FCCEC36222605C400302E3B /* MGLSDKMetricsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCCEC33222605C400302E3B /* MGLSDKMetricsManager.m */; };
- 1FCCEC37222605C400302E3B /* MGLSDKMetricsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCCEC33222605C400302E3B /* MGLSDKMetricsManager.m */; };
- 1FCCEC3A222607A500302E3B /* MGLSDKMetricsManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCCEC38222607A500302E3B /* MGLSDKMetricsManager_Private.h */; };
- 1FCCEC3B222607A500302E3B /* MGLSDKMetricsManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCCEC38222607A500302E3B /* MGLSDKMetricsManager_Private.h */; };
- 1FF48587223710BE00F19727 /* MGLAttributedExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF48585223710BE00F19727 /* MGLAttributedExpression.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1FF48588223710BE00F19727 /* MGLAttributedExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF48585223710BE00F19727 /* MGLAttributedExpression.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1FF48589223710BE00F19727 /* MGLAttributedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF48586223710BE00F19727 /* MGLAttributedExpression.m */; };
- 1FF4858A223710BE00F19727 /* MGLAttributedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF48586223710BE00F19727 /* MGLAttributedExpression.m */; };
- 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 */; };
- 30E5781A1DAA855E0050F07E /* UIImage+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 30E578121DAA7D690050F07E /* UIImage+MGLAdditions.mm */; };
- 350098BB1D480108004B2AF0 /* MGLVectorTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098B91D480108004B2AF0 /* MGLVectorTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 350098BC1D480108004B2AF0 /* MGLVectorTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098B91D480108004B2AF0 /* MGLVectorTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 350098BD1D480108004B2AF0 /* MGLVectorTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098BA1D480108004B2AF0 /* MGLVectorTileSource.mm */; };
- 350098BE1D480108004B2AF0 /* MGLVectorTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098BA1D480108004B2AF0 /* MGLVectorTileSource.mm */; };
- 350098DC1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098DA1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h */; };
- 350098DD1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098DA1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h */; };
- 350098DE1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098DB1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm */; };
- 350098DF1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098DB1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm */; };
- 3502D6CC22AE88D5006BDFCE /* MGLAccountManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3502D6CB22AE88D5006BDFCE /* MGLAccountManagerTests.m */; };
- 3510FFEA1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h */; };
- 3510FFEB1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h */; };
- 3510FFEC1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm */; };
- 3510FFED1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm */; };
- 3510FFF01D6D9D8C00F413B2 /* NSExpression+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3510FFF21D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm */; };
- 3510FFF31D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm */; };
- 3510FFF91D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h */; };
- 3510FFFA1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h */; };
- 3510FFFB1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm */; };
- 3510FFFC1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm */; };
- 35136D391D42271A00C20EFD /* MGLBackgroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D381D42271A00C20EFD /* MGLBackgroundStyleLayer.mm */; };
- 35136D3A1D42271A00C20EFD /* MGLBackgroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D381D42271A00C20EFD /* MGLBackgroundStyleLayer.mm */; };
- 35136D3C1D42272500C20EFD /* MGLCircleStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3B1D42272500C20EFD /* MGLCircleStyleLayer.mm */; };
- 35136D3D1D42272500C20EFD /* MGLCircleStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3B1D42272500C20EFD /* MGLCircleStyleLayer.mm */; };
- 35136D3F1D42273000C20EFD /* MGLLineStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3E1D42273000C20EFD /* MGLLineStyleLayer.mm */; };
- 35136D401D42273000C20EFD /* MGLLineStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3E1D42273000C20EFD /* MGLLineStyleLayer.mm */; };
- 35136D421D42274500C20EFD /* MGLRasterStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D411D42274500C20EFD /* MGLRasterStyleLayer.mm */; };
- 35136D431D42274500C20EFD /* MGLRasterStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D411D42274500C20EFD /* MGLRasterStyleLayer.mm */; };
- 35136D451D42275100C20EFD /* MGLSymbolStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D441D42275100C20EFD /* MGLSymbolStyleLayer.mm */; };
- 35136D461D42275100C20EFD /* MGLSymbolStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D441D42275100C20EFD /* MGLSymbolStyleLayer.mm */; };
- 35136D4C1D4277FC00C20EFD /* MGLSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 35136D4A1D4277FC00C20EFD /* MGLSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35136D4D1D4277FC00C20EFD /* MGLSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 35136D4A1D4277FC00C20EFD /* MGLSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35136D4E1D4277FC00C20EFD /* MGLSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D4B1D4277FC00C20EFD /* MGLSource.mm */; };
- 35136D4F1D4277FC00C20EFD /* MGLSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D4B1D4277FC00C20EFD /* MGLSource.mm */; };
- 3538AA1D1D542239008EC33D /* MGLForegroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3538AA1B1D542239008EC33D /* MGLForegroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3538AA1E1D542239008EC33D /* MGLForegroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3538AA1B1D542239008EC33D /* MGLForegroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3538AA1F1D542239008EC33D /* MGLForegroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3538AA1C1D542239008EC33D /* MGLForegroundStyleLayer.mm */; };
- 3538AA201D542239008EC33D /* MGLForegroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3538AA1C1D542239008EC33D /* MGLForegroundStyleLayer.mm */; };
- 353933F21D3FB753003F57D7 /* MGLCircleStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F11D3FB753003F57D7 /* MGLCircleStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933F31D3FB753003F57D7 /* MGLCircleStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F11D3FB753003F57D7 /* MGLCircleStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933F51D3FB785003F57D7 /* MGLBackgroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F41D3FB785003F57D7 /* MGLBackgroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933F61D3FB785003F57D7 /* MGLBackgroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F41D3FB785003F57D7 /* MGLBackgroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933F81D3FB79F003F57D7 /* MGLLineStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F71D3FB79F003F57D7 /* MGLLineStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933F91D3FB79F003F57D7 /* MGLLineStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F71D3FB79F003F57D7 /* MGLLineStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933FB1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FA1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933FC1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FA1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933FE1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FD1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353933FF1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FD1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 353AFA141D65AB17005A69F4 /* NSDate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 353AFA121D65AB17005A69F4 /* NSDate+MGLAdditions.h */; };
- 353AFA151D65AB17005A69F4 /* NSDate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 353AFA121D65AB17005A69F4 /* NSDate+MGLAdditions.h */; };
- 353AFA161D65AB17005A69F4 /* NSDate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 353AFA131D65AB17005A69F4 /* NSDate+MGLAdditions.mm */; };
- 353AFA171D65AB17005A69F4 /* NSDate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 353AFA131D65AB17005A69F4 /* NSDate+MGLAdditions.mm */; };
- 353BAEF61D646370009A8DA9 /* amsterdam.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 353BAEF51D646370009A8DA9 /* amsterdam.geojson */; };
- 353BAEF71D646370009A8DA9 /* amsterdam.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 353BAEF51D646370009A8DA9 /* amsterdam.geojson */; };
- 353D23961D0B0DFE002BE09D /* MGLAnnotationViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 353D23951D0B0DFE002BE09D /* MGLAnnotationViewTests.m */; };
- 354B83961D2E873E005D9406 /* MGLUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 354B83941D2E873E005D9406 /* MGLUserLocationAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 354B83971D2E873E005D9406 /* MGLUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 354B83941D2E873E005D9406 /* MGLUserLocationAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 354B83981D2E873E005D9406 /* MGLUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 354B83951D2E873E005D9406 /* MGLUserLocationAnnotationView.m */; };
- 354B83991D2E873E005D9406 /* MGLUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 354B83951D2E873E005D9406 /* MGLUserLocationAnnotationView.m */; };
- 354B839C1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 354B839B1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m */; };
- 3557F7B01E1D27D300CCA5E6 /* MGLDistanceFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3557F7AE1E1D27D300CCA5E6 /* MGLDistanceFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3557F7B21E1D27D300CCA5E6 /* MGLDistanceFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3557F7AF1E1D27D300CCA5E6 /* MGLDistanceFormatter.m */; };
- 35599DED1D46F14E0048254D /* MGLStyleValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35599DEA1D46F14E0048254D /* MGLStyleValue.mm */; };
- 35599DEE1D46F14E0048254D /* MGLStyleValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35599DEA1D46F14E0048254D /* MGLStyleValue.mm */; };
- 355AE0011E9281DA00F3939D /* MGLScaleBar.mm in Sources */ = {isa = PBXBuildFile; fileRef = 355ADFFC1E9281DA00F3939D /* MGLScaleBar.mm */; };
- 355AE0021E9281DA00F3939D /* MGLScaleBar.mm in Sources */ = {isa = PBXBuildFile; fileRef = 355ADFFC1E9281DA00F3939D /* MGLScaleBar.mm */; };
- 3566C7661D4A77BA008152BC /* MGLShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7641D4A77BA008152BC /* MGLShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3566C7671D4A77BA008152BC /* MGLShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7641D4A77BA008152BC /* MGLShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3566C7681D4A77BA008152BC /* MGLShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C7651D4A77BA008152BC /* MGLShapeSource.mm */; };
- 3566C7691D4A77BA008152BC /* MGLShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C7651D4A77BA008152BC /* MGLShapeSource.mm */; };
- 3566C76C1D4A8DFA008152BC /* MGLRasterTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C76A1D4A8DFA008152BC /* MGLRasterTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3566C76D1D4A8DFA008152BC /* MGLRasterTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C76A1D4A8DFA008152BC /* MGLRasterTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3566C76E1D4A8DFA008152BC /* MGLRasterTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C76B1D4A8DFA008152BC /* MGLRasterTileSource.mm */; };
- 3566C76F1D4A8DFA008152BC /* MGLRasterTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C76B1D4A8DFA008152BC /* MGLRasterTileSource.mm */; };
- 3566C7711D4A9198008152BC /* MGLSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7701D4A9198008152BC /* MGLSource_Private.h */; };
- 3566C7721D4A9198008152BC /* MGLSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7701D4A9198008152BC /* MGLSource_Private.h */; };
- 357579801D501E09000B822E /* MGLFillStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3575797F1D501E09000B822E /* MGLFillStyleLayerTests.mm */; };
- 357579831D502AE6000B822E /* MGLRasterStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579821D502AE6000B822E /* MGLRasterStyleLayerTests.mm */; };
- 357579851D502AF5000B822E /* MGLSymbolStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579841D502AF5000B822E /* MGLSymbolStyleLayerTests.mm */; };
- 357579871D502AFE000B822E /* MGLLineStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579861D502AFE000B822E /* MGLLineStyleLayerTests.mm */; };
- 357579891D502B06000B822E /* MGLCircleStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579881D502B06000B822E /* MGLCircleStyleLayerTests.mm */; };
- 3575798B1D502B0C000B822E /* MGLBackgroundStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3575798A1D502B0C000B822E /* MGLBackgroundStyleLayerTests.mm */; };
- 357FE2DD1E02D2B20068B753 /* NSCoder+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 357FE2DB1E02D2B20068B753 /* NSCoder+MGLAdditions.h */; };
- 357FE2DE1E02D2B20068B753 /* NSCoder+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 357FE2DB1E02D2B20068B753 /* NSCoder+MGLAdditions.h */; };
- 357FE2DF1E02D2B20068B753 /* NSCoder+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357FE2DC1E02D2B20068B753 /* NSCoder+MGLAdditions.mm */; };
- 357FE2E01E02D2B20068B753 /* NSCoder+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357FE2DC1E02D2B20068B753 /* NSCoder+MGLAdditions.mm */; };
- 3598544D1E1D38AA00B29F84 /* MGLDistanceFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3598544C1E1D38AA00B29F84 /* MGLDistanceFormatterTests.m */; };
- 359F57461D2FDDA6005217F1 /* MGLUserLocationAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 359F57451D2FDBD5005217F1 /* MGLUserLocationAnnotationView_Private.h */; };
- 35B82BF81D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35B82BF61D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35B82BF91D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35B82BF61D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35B82BFA1D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35B82BF71D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm */; };
- 35B82BFB1D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35B82BF71D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm */; };
- 35B8E08C1D6C8B5100E768D2 /* MGLPredicateTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35B8E08B1D6C8B5100E768D2 /* MGLPredicateTests.mm */; };
- 35CE61821D4165D9004F2359 /* UIColor+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35CE61801D4165D9004F2359 /* UIColor+MGLAdditions.h */; };
- 35CE61831D4165D9004F2359 /* UIColor+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35CE61801D4165D9004F2359 /* UIColor+MGLAdditions.h */; };
- 35CE61841D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35CE61811D4165D9004F2359 /* UIColor+MGLAdditions.mm */; };
- 35CE61851D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35CE61811D4165D9004F2359 /* UIColor+MGLAdditions.mm */; };
- 35D13AB71D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35D13AB81D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35D13AB91D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */; };
- 35D13ABA1D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */; };
- 35D13AC31D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35D13AC41D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35D13AC51D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */; };
- 35D13AC61D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */; };
- 35D3A1E61E9BE7EB002B38EE /* MGLScaleBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 355ADFFB1E9281DA00F3939D /* MGLScaleBar.h */; };
- 35D3A1E71E9BE7EC002B38EE /* MGLScaleBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 355ADFFB1E9281DA00F3939D /* MGLScaleBar.h */; };
- 35D9DDE21DA25EEC00DAAD69 /* MGLCodingTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D9DDE11DA25EEC00DAAD69 /* MGLCodingTests.mm */; };
- 35E0CFE61D3E501500188327 /* MGLStyle_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE51D3E501500188327 /* MGLStyle_Private.h */; };
- 35E0CFE71D3E501500188327 /* MGLStyle_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE51D3E501500188327 /* MGLStyle_Private.h */; };
- 35E1A4D81D74336F007AA97F /* MGLValueEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E1A4D71D74336F007AA97F /* MGLValueEvaluator.h */; };
- 35E1A4D91D74336F007AA97F /* MGLValueEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E1A4D71D74336F007AA97F /* MGLValueEvaluator.h */; };
- 35E79F201D41266300957B9E /* MGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E79F1F1D41266300957B9E /* MGLStyleLayer_Private.h */; };
- 35E79F211D41266300957B9E /* MGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E79F1F1D41266300957B9E /* MGLStyleLayer_Private.h */; };
- 3E6465D62065767A00685536 /* LimeGreenStyleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6465D42065767A00685536 /* LimeGreenStyleLayer.m */; };
- 3E8770612074297100B7E842 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 554180411D2E97DE00012372 /* OpenGLES.framework */; };
- 3EA93369F61CF70AFA50465D /* MGLRendererConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */; };
- 3EA934623AD0000B7D99C3FB /* MGLRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */; };
- 3EA9363147E77DD29FA06063 /* MGLRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */; };
- 3EA9366247780E4F252652A8 /* MGLRendererConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */; };
- 400533011DB0862B0069F638 /* NSArray+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 400532FF1DB0862B0069F638 /* NSArray+MGLAdditions.h */; };
- 400533021DB0862B0069F638 /* NSArray+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 400533001DB0862B0069F638 /* NSArray+MGLAdditions.mm */; };
- 400533031DB086490069F638 /* NSArray+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 400533001DB0862B0069F638 /* NSArray+MGLAdditions.mm */; };
- 4018B1C81CDC287F00F666AF /* MGLAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */; };
- 4018B1C91CDC288A00F666AF /* MGLAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */; };
- 4018B1CA1CDC288E00F666AF /* MGLAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4018B1CB1CDC288E00F666AF /* MGLAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4031ACFF1E9FD29F00A3EA26 /* MGLSDKTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4031ACFE1E9FD29F00A3EA26 /* MGLSDKTestHelpers.swift */; };
- 404326891D5B9B27007111BD /* MGLAnnotationContainerView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404326881D5B9B1A007111BD /* MGLAnnotationContainerView_Private.h */; };
- 4049C29D1DB6CD6C00B3F799 /* MGLPointCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C29B1DB6CD6C00B3F799 /* MGLPointCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4049C29E1DB6CD6C00B3F799 /* MGLPointCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C29B1DB6CD6C00B3F799 /* MGLPointCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4049C29F1DB6CD6C00B3F799 /* MGLPointCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4049C29C1DB6CD6C00B3F799 /* MGLPointCollection.mm */; };
- 4049C2A01DB6CD6C00B3F799 /* MGLPointCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4049C29C1DB6CD6C00B3F799 /* MGLPointCollection.mm */; };
- 4049C2AC1DB6E05500B3F799 /* MGLPointCollection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C2AB1DB6E05500B3F799 /* MGLPointCollection_Private.h */; };
- 404C26E21D89B877000AA13D /* MGLTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E01D89B877000AA13D /* MGLTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 404C26E31D89B877000AA13D /* MGLTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E01D89B877000AA13D /* MGLTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 404C26E41D89B877000AA13D /* MGLTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 404C26E11D89B877000AA13D /* MGLTileSource.mm */; };
- 404C26E51D89B877000AA13D /* MGLTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 404C26E11D89B877000AA13D /* MGLTileSource.mm */; };
- 404C26E71D89C55D000AA13D /* MGLTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E61D89C515000AA13D /* MGLTileSource_Private.h */; };
- 404C26E81D89C55D000AA13D /* MGLTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E61D89C515000AA13D /* MGLTileSource_Private.h */; };
- 406E99B91FFEFF1B00D9FFCC /* MMEEventLogReportViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 406E99B11FFEFED500D9FFCC /* MMEEventLogReportViewController.m */; };
- 406E99BA1FFEFF1B00D9FFCC /* MMEEventLogReportViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 406E99B11FFEFED500D9FFCC /* MMEEventLogReportViewController.m */; };
- 406E99BB1FFF006C00D9FFCC /* MMEUINavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 406E99B21FFEFED500D9FFCC /* MMEUINavigation.m */; };
- 406E99BC1FFF006D00D9FFCC /* MMEUINavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 406E99B21FFEFED500D9FFCC /* MMEUINavigation.m */; };
- 40834BE71FE05E1800C1BD0D /* MMEAPIClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BA51FE05D6B00C1BD0D /* MMEAPIClient.m */; };
- 40834BE91FE05E1800C1BD0D /* MMECommonEventData.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BCE1FE05D7100C1BD0D /* MMECommonEventData.m */; };
- 40834BEA1FE05E1800C1BD0D /* MMEConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BC01FE05D6E00C1BD0D /* MMEConstants.m */; };
- 40834BEB1FE05E1800C1BD0D /* MMEDependencyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB41FE05D6D00C1BD0D /* MMEDependencyManager.m */; };
- 40834BEC1FE05E1800C1BD0D /* MMEEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BC71FE05D7000C1BD0D /* MMEEvent.m */; };
- 40834BED1FE05E1800C1BD0D /* MMEEventLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB71FE05D6D00C1BD0D /* MMEEventLogger.m */; };
- 40834BEE1FE05E1800C1BD0D /* MMEEventsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB21FE05D6D00C1BD0D /* MMEEventsConfiguration.m */; };
- 40834BEF1FE05E1800C1BD0D /* MMEEventsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BA41FE05D6B00C1BD0D /* MMEEventsManager.m */; };
- 40834BF01FE05E1800C1BD0D /* MMELocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB81FE05D6D00C1BD0D /* MMELocationManager.m */; };
- 40834BF21FE05E1800C1BD0D /* MMENSURLSessionWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BC61FE05D7000C1BD0D /* MMENSURLSessionWrapper.m */; };
- 40834BF31FE05E1800C1BD0D /* MMETimerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB91FE05D6E00C1BD0D /* MMETimerManager.m */; };
- 40834BF61FE05E1800C1BD0D /* MMEUIApplicationWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BCA1FE05D7000C1BD0D /* MMEUIApplicationWrapper.m */; };
- 40834BF71FE05E1800C1BD0D /* MMEUniqueIdentifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BAD1FE05D6C00C1BD0D /* MMEUniqueIdentifier.m */; };
- 40834BF91FE05E1800C1BD0D /* MMEReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BCD1FE05D7100C1BD0D /* MMEReachability.m */; };
- 40834BFB1FE05E1800C1BD0D /* MMEAPIClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BA51FE05D6B00C1BD0D /* MMEAPIClient.m */; };
- 40834BFD1FE05E1800C1BD0D /* MMECommonEventData.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BCE1FE05D7100C1BD0D /* MMECommonEventData.m */; };
- 40834BFE1FE05E1800C1BD0D /* MMEConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BC01FE05D6E00C1BD0D /* MMEConstants.m */; };
- 40834BFF1FE05E1800C1BD0D /* MMEDependencyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB41FE05D6D00C1BD0D /* MMEDependencyManager.m */; };
- 40834C001FE05E1800C1BD0D /* MMEEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BC71FE05D7000C1BD0D /* MMEEvent.m */; };
- 40834C011FE05E1800C1BD0D /* MMEEventLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB71FE05D6D00C1BD0D /* MMEEventLogger.m */; };
- 40834C021FE05E1800C1BD0D /* MMEEventsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB21FE05D6D00C1BD0D /* MMEEventsConfiguration.m */; };
- 40834C031FE05E1800C1BD0D /* MMEEventsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BA41FE05D6B00C1BD0D /* MMEEventsManager.m */; };
- 40834C041FE05E1800C1BD0D /* MMELocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB81FE05D6D00C1BD0D /* MMELocationManager.m */; };
- 40834C051FE05E1800C1BD0D /* MMEDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BBC1FE05D6E00C1BD0D /* MMEDate.m */; };
- 40834C061FE05E1800C1BD0D /* MMENSURLSessionWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BC61FE05D7000C1BD0D /* MMENSURLSessionWrapper.m */; };
- 40834C071FE05E1800C1BD0D /* MMETimerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BB91FE05D6E00C1BD0D /* MMETimerManager.m */; };
- 40834C0A1FE05E1800C1BD0D /* MMEUIApplicationWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BCA1FE05D7000C1BD0D /* MMEUIApplicationWrapper.m */; };
- 40834C0B1FE05E1800C1BD0D /* MMEUniqueIdentifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BAD1FE05D6C00C1BD0D /* MMEUniqueIdentifier.m */; };
- 40834C0D1FE05E1800C1BD0D /* MMEReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BCD1FE05D7100C1BD0D /* MMEReachability.m */; };
- 4085AF091D933DEA00F11B22 /* MGLTileSetTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4085AF081D933DEA00F11B22 /* MGLTileSetTests.mm */; };
- 408AA8571DAEDA1700022900 /* NSDictionary+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 408AA8551DAEDA0800022900 /* NSDictionary+MGLAdditions.h */; };
- 408AA8581DAEDA1E00022900 /* NSDictionary+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 408AA8561DAEDA0800022900 /* NSDictionary+MGLAdditions.mm */; };
- 408AA8591DAEDA1E00022900 /* NSDictionary+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 408AA8561DAEDA0800022900 /* NSDictionary+MGLAdditions.mm */; };
- 409D0A0D1ED614CE00C95D0C /* MGLAnnotationViewIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 409D0A0C1ED614CE00C95D0C /* MGLAnnotationViewIntegrationTests.swift */; };
- 409F43FD1E9E781C0048729D /* MGLMapViewDelegateIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 409F43FC1E9E781C0048729D /* MGLMapViewDelegateIntegrationTests.swift */; };
- 40CF6DBB1DAC3C6600A4D18B /* MGLShape_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40CF6DBA1DAC3C1800A4D18B /* MGLShape_Private.h */; };
- 40CFA6511D7875BB008103BD /* MGLShapeSourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 40CFA6501D787579008103BD /* MGLShapeSourceTests.mm */; };
- 40EDA1C01CFE0E0200D9EA68 /* MGLAnnotationContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40EDA1BD1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.h */; };
- 40EDA1C11CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */; };
- 40EDA1C21CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */; };
- 40F887701D7A1E58008ECB67 /* MGLShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40F8876F1D7A1DB8008ECB67 /* MGLShapeSource_Private.h */; };
- 40F887711D7A1E59008ECB67 /* MGLShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40F8876F1D7A1DB8008ECB67 /* MGLShapeSource_Private.h */; };
- 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */; };
- 550570C622958FB400228ECF /* MGLMapView+Impl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 550570C422958FB300228ECF /* MGLMapView+Impl.mm */; };
- 550570C722958FB400228ECF /* MGLMapView+Impl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 550570C422958FB300228ECF /* MGLMapView+Impl.mm */; };
- 550570C822958FB400228ECF /* MGLMapView+Impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 550570C522958FB400228ECF /* MGLMapView+Impl.h */; };
- 550570C922958FB400228ECF /* MGLMapView+Impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 550570C522958FB400228ECF /* MGLMapView+Impl.h */; };
- 550570D22296E96E00228ECF /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA27C24D1CBB3811000B0ECD /* GLKit.framework */; };
- 556660CA1E1BF3A900E2C41B /* MGLFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 556660C91E1BF3A900E2C41B /* MGLFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 556660D81E1D085500E2C41B /* MGLVersionNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 556660D71E1D085500E2C41B /* MGLVersionNumber.m */; };
- 556660DB1E1D8E8D00E2C41B /* MGLFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 556660C91E1BF3A900E2C41B /* MGLFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5580B45B229570A10091291B /* MGLMapView+OpenGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5580B459229570A00091291B /* MGLMapView+OpenGL.h */; };
- 5580B45C229570A10091291B /* MGLMapView+OpenGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5580B459229570A00091291B /* MGLMapView+OpenGL.h */; };
- 5580B45D229570A10091291B /* MGLMapView+OpenGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5580B45A229570A10091291B /* MGLMapView+OpenGL.mm */; };
- 5580B45E229570A10091291B /* MGLMapView+OpenGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5580B45A229570A10091291B /* MGLMapView+OpenGL.mm */; };
- 558DE7A01E5615E400C7916D /* MGLFoundation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 558DE79E1E5615E400C7916D /* MGLFoundation_Private.h */; };
- 558DE7A11E5615E400C7916D /* MGLFoundation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 558DE79E1E5615E400C7916D /* MGLFoundation_Private.h */; };
- 558DE7A21E5615E400C7916D /* MGLFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE79F1E5615E400C7916D /* MGLFoundation.mm */; };
- 558DE7A31E5615E400C7916D /* MGLFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE79F1E5615E400C7916D /* MGLFoundation.mm */; };
- 55CF752F213ED92000ED86C4 /* libmbgl-vendor-icu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CF752E213ED92000ED86C4 /* libmbgl-vendor-icu.a */; };
- 55CF7531213ED92A00ED86C4 /* libmbgl-vendor-icu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CF7530213ED92A00ED86C4 /* libmbgl-vendor-icu.a */; };
- 55D120A61F791007004B6D81 /* libmbgl-loop-darwin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A71F791007004B6D81 /* libmbgl-loop-darwin.a */; };
- 55D120A81F79100C004B6D81 /* libmbgl-filesource.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A91F79100C004B6D81 /* libmbgl-filesource.a */; };
- 55E2AD131E5B125400E8C587 /* MGLOfflineStorageTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55E2AD121E5B125400E8C587 /* MGLOfflineStorageTests.mm */; };
- 55E5665121C2A1C20008B8B5 /* MMEReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BCC1FE05D7100C1BD0D /* MMEReachability.h */; };
- 55E5665221C2A2080008B8B5 /* MMENamespacedDependencies.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BC81FE05D7000C1BD0D /* MMENamespacedDependencies.h */; };
- 55E5665321C2A2080008B8B5 /* MapboxMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAC1FE05D6C00C1BD0D /* MapboxMobileEvents.h */; };
- 55E5665521C2A2080008B8B5 /* MMEAPIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAB1FE05D6C00C1BD0D /* MMEAPIClient.h */; };
- 55E5665721C2A2080008B8B5 /* MMECommonEventData.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAE1FE05D6C00C1BD0D /* MMECommonEventData.h */; };
- 55E5665821C2A2080008B8B5 /* MMEConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB01FE05D6C00C1BD0D /* MMEConstants.h */; };
- 55E5665921C2A2080008B8B5 /* MMEDependencyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB11FE05D6D00C1BD0D /* MMEDependencyManager.h */; };
- 55E5665A21C2A2080008B8B5 /* MMEEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBA1FE05D6E00C1BD0D /* MMEEvent.h */; };
- 55E5665B21C2A2080008B8B5 /* MMEEventLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BA61FE05D6B00C1BD0D /* MMEEventLogger.h */; };
- 55E5665C21C2A2080008B8B5 /* MMEEventLogReportViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 406E99B51FFEFED600D9FFCC /* MMEEventLogReportViewController.h */; };
- 55E5665D21C2A2080008B8B5 /* MMEEventsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBB1FE05D6E00C1BD0D /* MMEEventsConfiguration.h */; };
- 55E5666021C2A2080008B8B5 /* MMEConfigurator.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA65F4F214066E200537748 /* MMEConfigurator.h */; };
- 55E5666121C2A2080008B8B5 /* MMEEventsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BA31FE05D6B00C1BD0D /* MMEEventsManager.h */; };
- 55E5666221C2A2080008B8B5 /* MMELocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB31FE05D6D00C1BD0D /* MMELocationManager.h */; };
- 55E5666321C2A2080008B8B5 /* MMEMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = ACD024552187EAAF00D8C8A7 /* MMEMetrics.h */; };
- 55E5666421C2A2080008B8B5 /* MMEMetricsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ACD024562187EAAF00D8C8A7 /* MMEMetricsManager.h */; };
- 55E5666621C2A2080008B8B5 /* MMENSURLSessionWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAA1FE05D6C00C1BD0D /* MMENSURLSessionWrapper.h */; };
- 55E5666721C2A2080008B8B5 /* MMETimerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BC91FE05D7000C1BD0D /* MMETimerManager.h */; };
- 55E5666821C2A2080008B8B5 /* MMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB61FE05D6D00C1BD0D /* MMETypes.h */; };
- 55E5666921C2A2080008B8B5 /* MMEUIApplicationWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBE1FE05D6E00C1BD0D /* MMEUIApplicationWrapper.h */; };
- 55E5666A21C2A2080008B8B5 /* MMEUINavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 406E99B31FFEFED600D9FFCC /* MMEUINavigation.h */; };
- 55E5666B21C2A2080008B8B5 /* MMEUniqueIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBF1FE05D6E00C1BD0D /* MMEUniqueIdentifier.h */; };
- 55E5666C21C2A2080008B8B5 /* MMEDispatchManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA65F552140696B00537748 /* MMEDispatchManager.h */; };
- 632281DF1E6F855900D75A5D /* MBXEmbeddedMapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 632281DE1E6F855900D75A5D /* MBXEmbeddedMapViewController.m */; };
- 6407D6701E0085FD00F6A9C3 /* MGLDocumentationExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6407D66F1E0085FD00F6A9C3 /* MGLDocumentationExampleTests.swift */; };
- 6F018BAE220031B8003E7269 /* UIView+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAFA29B220023840088709E /* UIView+MGLAdditions.m */; };
- 6F018BAF220031BF003E7269 /* UIView+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAFA29A220023840088709E /* UIView+MGLAdditions.h */; };
- 6F018BB0220031BF003E7269 /* UIView+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAFA29A220023840088709E /* UIView+MGLAdditions.h */; };
- 6F018BB1220031C1003E7269 /* UIView+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAFA29B220023840088709E /* UIView+MGLAdditions.m */; };
- 6FA9341721EF372100AA9CA8 /* MBXOrnamentsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FA9341521EF372100AA9CA8 /* MBXOrnamentsViewController.m */; };
- 74CB5EB1219B252C00102936 /* MGLStyleLayerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EAF219B252C00102936 /* MGLStyleLayerManager.h */; };
- 74CB5EB2219B252C00102936 /* MGLStyleLayerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EAF219B252C00102936 /* MGLStyleLayerManager.h */; };
- 74CB5EB3219B252C00102936 /* MGLStyleLayerManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 74CB5EB0219B252C00102936 /* MGLStyleLayerManager.mm */; };
- 74CB5EB4219B252C00102936 /* MGLStyleLayerManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 74CB5EB0219B252C00102936 /* MGLStyleLayerManager.mm */; };
- 74CB5EB9219B280400102936 /* MGLHillshadeStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB5219B280300102936 /* MGLHillshadeStyleLayer_Private.h */; };
- 74CB5EBA219B280400102936 /* MGLHillshadeStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB5219B280300102936 /* MGLHillshadeStyleLayer_Private.h */; };
- 74CB5EBB219B280400102936 /* MGLFillExtrusionStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB6219B280300102936 /* MGLFillExtrusionStyleLayer_Private.h */; };
- 74CB5EBC219B280400102936 /* MGLFillExtrusionStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB6219B280300102936 /* MGLFillExtrusionStyleLayer_Private.h */; };
- 74CB5EBD219B280400102936 /* MGLFillStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB7219B280300102936 /* MGLFillStyleLayer_Private.h */; };
- 74CB5EBE219B280400102936 /* MGLFillStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB7219B280300102936 /* MGLFillStyleLayer_Private.h */; };
- 74CB5EBF219B280400102936 /* MGLHeatmapStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB8219B280300102936 /* MGLHeatmapStyleLayer_Private.h */; };
- 74CB5EC0219B280400102936 /* MGLHeatmapStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB8219B280300102936 /* MGLHeatmapStyleLayer_Private.h */; };
- 74CB5EC3219B282500102936 /* MGLCircleStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC1219B282500102936 /* MGLCircleStyleLayer_Private.h */; };
- 74CB5EC4219B282500102936 /* MGLCircleStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC1219B282500102936 /* MGLCircleStyleLayer_Private.h */; };
- 74CB5EC5219B282500102936 /* MGLBackgroundStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC2219B282500102936 /* MGLBackgroundStyleLayer_Private.h */; };
- 74CB5EC6219B282500102936 /* MGLBackgroundStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC2219B282500102936 /* MGLBackgroundStyleLayer_Private.h */; };
- 74CB5ECA219B285000102936 /* MGLLineStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC7219B285000102936 /* MGLLineStyleLayer_Private.h */; };
- 74CB5ECB219B285000102936 /* MGLLineStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC7219B285000102936 /* MGLLineStyleLayer_Private.h */; };
- 74CB5ECC219B285000102936 /* MGLOpenGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC8219B285000102936 /* MGLOpenGLStyleLayer_Private.h */; };
- 74CB5ECD219B285000102936 /* MGLOpenGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC8219B285000102936 /* MGLOpenGLStyleLayer_Private.h */; };
- 74CB5ECE219B285000102936 /* MGLRasterStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC9219B285000102936 /* MGLRasterStyleLayer_Private.h */; };
- 74CB5ECF219B285000102936 /* MGLRasterStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC9219B285000102936 /* MGLRasterStyleLayer_Private.h */; };
- 74CB5ED1219B286400102936 /* MGLSymbolStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5ED0219B286400102936 /* MGLSymbolStyleLayer_Private.h */; };
- 74CB5ED2219B286400102936 /* MGLSymbolStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5ED0219B286400102936 /* MGLSymbolStyleLayer_Private.h */; };
- 8989B17C201A48EB0081CF59 /* MGLHeatmapStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8989B17A201A48EA0081CF59 /* MGLHeatmapStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8989B17D201A48EB0081CF59 /* MGLHeatmapStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8989B17A201A48EA0081CF59 /* MGLHeatmapStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8989B17E201A48EB0081CF59 /* MGLHeatmapStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8989B17B201A48EA0081CF59 /* MGLHeatmapStyleLayer.mm */; };
- 8989B17F201A48EB0081CF59 /* MGLHeatmapStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8989B17B201A48EA0081CF59 /* MGLHeatmapStyleLayer.mm */; };
- 920A3E5D1E6F995200C16EFC /* MGLSourceQueryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 920A3E5C1E6F995200C16EFC /* MGLSourceQueryTests.m */; };
- 9221BAAD2069843A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9221BAAC2069843A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h */; };
- 9221BAB020699F8A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9221BAAC2069843A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h */; };
- 927FBCFC1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 927FBCFB1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m */; };
- 927FBCFF1F4DB05500F8BF1F /* MGLMapSnapshotter.h in Headers */ = {isa = PBXBuildFile; fileRef = 927FBCFD1F4DB05500F8BF1F /* MGLMapSnapshotter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 927FBD001F4DB05500F8BF1F /* MGLMapSnapshotter.h in Headers */ = {isa = PBXBuildFile; fileRef = 927FBCFD1F4DB05500F8BF1F /* MGLMapSnapshotter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 927FBD011F4DB05500F8BF1F /* MGLMapSnapshotter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 927FBCFE1F4DB05500F8BF1F /* MGLMapSnapshotter.mm */; };
- 927FBD021F4DB05500F8BF1F /* MGLMapSnapshotter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 927FBCFE1F4DB05500F8BF1F /* MGLMapSnapshotter.mm */; };
- 929EFFAB1F56DCD4003A77D5 /* MGLAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */; };
- 92F2C3ED1F0E3C3A00268EC0 /* MGLRendererFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F2C3EC1F0E3C3A00268EC0 /* MGLRendererFrontend.h */; };
- 92FC0AEA207CEE16007B6B54 /* MGLShapeOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE7207CEE16007B6B54 /* MGLShapeOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 92FC0AEB207CEE16007B6B54 /* MGLShapeOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE7207CEE16007B6B54 /* MGLShapeOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 92FC0AEC207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE8207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h */; };
- 92FC0AED207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE8207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h */; };
- 92FC0AEE207CEE16007B6B54 /* MGLShapeOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92FC0AE9207CEE16007B6B54 /* MGLShapeOfflineRegion.mm */; };
- 92FC0AEF207CEE16007B6B54 /* MGLShapeOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92FC0AE9207CEE16007B6B54 /* MGLShapeOfflineRegion.mm */; };
- 96036A01200565C700510F3D /* NSOrthography+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 960369FF200565C700510F3D /* NSOrthography+MGLAdditions.h */; };
- 96036A02200565C700510F3D /* NSOrthography+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 960369FF200565C700510F3D /* NSOrthography+MGLAdditions.h */; };
- 96036A03200565C700510F3D /* NSOrthography+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96036A00200565C700510F3D /* NSOrthography+MGLAdditions.m */; };
- 96036A04200565C700510F3D /* NSOrthography+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96036A00200565C700510F3D /* NSOrthography+MGLAdditions.m */; };
- 96036A0620059BBA00510F3D /* MGLNSOrthographyAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 96036A0520059BBA00510F3D /* MGLNSOrthographyAdditionsTests.m */; };
- 960D0C361ECF5AAF008E151F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 960D0C351ECF5AAF008E151F /* Images.xcassets */; };
- 960D0C371ECF5AAF008E151F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 960D0C351ECF5AAF008E151F /* Images.xcassets */; };
- 9620BB381E69FE1700705A1D /* MGLSDKUpdateChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9620BB361E69FE1700705A1D /* MGLSDKUpdateChecker.h */; };
- 9620BB391E69FE1700705A1D /* MGLSDKUpdateChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9620BB361E69FE1700705A1D /* MGLSDKUpdateChecker.h */; };
- 9620BB3A1E69FE1700705A1D /* MGLSDKUpdateChecker.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9620BB371E69FE1700705A1D /* MGLSDKUpdateChecker.mm */; };
- 9620BB3B1E69FE1700705A1D /* MGLSDKUpdateChecker.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9620BB371E69FE1700705A1D /* MGLSDKUpdateChecker.mm */; };
- 9621F2502091020E005B3800 /* NSExpression+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 96381C0222C6F3950053497D /* MGLMapViewPitchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 96381C0122C6F3950053497D /* MGLMapViewPitchTests.m */; };
- 9641771F22D546DA00332422 /* MGLCompassButton_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9641771E22D546DA00332422 /* MGLCompassButton_Private.h */; };
- 9641772022D546DA00332422 /* MGLCompassButton_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9641771E22D546DA00332422 /* MGLCompassButton_Private.h */; };
- 9654C1261FFC1AB900DB6A19 /* MGLPolyline_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1251FFC1AB900DB6A19 /* MGLPolyline_Private.h */; };
- 9654C1291FFC1CCD00DB6A19 /* MGLPolygon_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1271FFC1CC000DB6A19 /* MGLPolygon_Private.h */; };
- 9658C155204761FC00D8A674 /* MGLMapViewScaleBarTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9658C154204761FC00D8A674 /* MGLMapViewScaleBarTests.m */; };
- 965DF51120F9430500438AAC /* MBXFrameTimeGraphView.m in Sources */ = {isa = PBXBuildFile; fileRef = 965DF51020F9430500438AAC /* MBXFrameTimeGraphView.m */; };
- 966FCF4C1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF4A1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.h */; };
- 966FCF4E1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF4B1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m */; };
- 966FCF4F1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF4B1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m */; };
- 966FCF531F3C322400F2B6DE /* MGLUserLocationHeadingArrowLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF501F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.h */; };
- 966FCF541F3C323300F2B6DE /* MGLUserLocationHeadingArrowLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF511F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.m */; };
- 966FCF551F3C323500F2B6DE /* MGLUserLocationHeadingArrowLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF511F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.m */; };
- 967C864B210A9D3C004DF794 /* UIDevice+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 967C8649210A9D3C004DF794 /* UIDevice+MGLAdditions.h */; };
- 967C864C210A9D3C004DF794 /* UIDevice+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 967C8649210A9D3C004DF794 /* UIDevice+MGLAdditions.h */; };
- 967C864D210A9D3C004DF794 /* UIDevice+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 967C864A210A9D3C004DF794 /* UIDevice+MGLAdditions.m */; };
- 967C864E210A9D3C004DF794 /* UIDevice+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 967C864A210A9D3C004DF794 /* UIDevice+MGLAdditions.m */; };
- 9680273F22653B84006BA4A1 /* MBXSKUToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 9680273E22653B84006BA4A1 /* MBXSKUToken.h */; };
- 9680274022653B84006BA4A1 /* MBXSKUToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 9680273E22653B84006BA4A1 /* MBXSKUToken.h */; };
- 9680276422655696006BA4A1 /* libmbxaccounts.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9680274122653C3E006BA4A1 /* libmbxaccounts.a */; };
- 96802766226556C5006BA4A1 /* libmbxaccounts.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9680274122653C3E006BA4A1 /* libmbxaccounts.a */; };
- 9686D1BD22D9357700194EA0 /* MGLMapViewZoomTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9686D1BC22D9357700194EA0 /* MGLMapViewZoomTests.mm */; };
- 968F36B51E4D128D003A5522 /* MGLDistanceFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3557F7AE1E1D27D300CCA5E6 /* MGLDistanceFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 96E027231E57C76E004B8E66 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 96E027251E57C76E004B8E66 /* Localizable.strings */; };
- 96E516DC2000547000A02306 /* MGLPolyline_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1251FFC1AB900DB6A19 /* MGLPolyline_Private.h */; };
- 96E516DD200054F200A02306 /* MGLPolygon_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1271FFC1CC000DB6A19 /* MGLPolygon_Private.h */; };
- 96E516DE200054F700A02306 /* MGLGeometry_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */; };
- 96E516DF200054FB00A02306 /* MGLShape_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40CF6DBA1DAC3C1800A4D18B /* MGLShape_Private.h */; };
- 96E516E02000550C00A02306 /* MGLFeature_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD1656A1CF41981001FF4B9 /* MGLFeature_Private.h */; };
- 96E516E12000551100A02306 /* MGLMultiPoint_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848041CBAFA6200AB86E3 /* MGLMultiPoint_Private.h */; };
- 96E516E22000551900A02306 /* MGLPointCollection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C2AB1DB6E05500B3F799 /* MGLPointCollection_Private.h */; };
- 96E516E32000552A00A02306 /* MGLAccountManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */; };
- 96E516E42000560B00A02306 /* MGLComputedShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D9474E1F67487E00E37934 /* MGLComputedShapeSource_Private.h */; };
- 96E516E52000560B00A02306 /* MGLOfflinePack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848061CBAFA6200AB86E3 /* MGLOfflinePack_Private.h */; };
- 96E516E62000560B00A02306 /* MGLOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848081CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h */; };
- 96E516E72000560B00A02306 /* MGLOfflineStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848091CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h */; };
- 96E516E82000560B00A02306 /* MGLAnnotationContainerView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404326881D5B9B1A007111BD /* MGLAnnotationContainerView_Private.h */; };
- 96E516E92000560B00A02306 /* MGLAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848401CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h */; };
- 96E516EA2000560B00A02306 /* MGLAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */; };
- 96E516EB2000560B00A02306 /* MGLUserLocation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484B1CBAFB9800AB86E3 /* MGLUserLocation_Private.h */; };
- 96E516EC2000560B00A02306 /* MGLUserLocationAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 359F57451D2FDBD5005217F1 /* MGLUserLocationAnnotationView_Private.h */; };
- 96E516ED200058A200A02306 /* MGLComputedShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0778DD401F67555F00A73B34 /* MGLComputedShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 96E516EF2000594F00A02306 /* NSArray+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 400532FF1DB0862B0069F638 /* NSArray+MGLAdditions.h */; };
- 96E516F02000595800A02306 /* NSBundle+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848121CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h */; };
- 96E516F12000596800A02306 /* NSString+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848171CBAFA6200AB86E3 /* NSString+MGLAdditions.h */; };
- 96E516F22000596D00A02306 /* NSException+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848141CBAFA6200AB86E3 /* NSException+MGLAdditions.h */; };
- 96E516F32000597100A02306 /* NSDictionary+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 408AA8551DAEDA0800022900 /* NSDictionary+MGLAdditions.h */; };
- 96E516F5200059B100A02306 /* MGLNetworkConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0902A41DB18F1B00C5BDCE /* MGLNetworkConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 96E516F6200059EC00A02306 /* MGLRendererFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F2C3EC1F0E3C3A00268EC0 /* MGLRendererFrontend.h */; };
- 96E516F720005A2700A02306 /* MGLAnnotationContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40EDA1BD1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.h */; };
- 96E516F820005A3000A02306 /* MGLCompactCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848441CBAFB9800AB86E3 /* MGLCompactCalloutView.h */; };
- 96E516F920005A3500A02306 /* MGLFaux3DUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484D1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.h */; };
- 96E516FA20005A3D00A02306 /* MGLUserLocationHeadingArrowLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF501F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.h */; };
- 96E516FB20005A4000A02306 /* MGLUserLocationHeadingBeamLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF4A1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.h */; };
- 96E516FC20005A4400A02306 /* MGLUserLocationHeadingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 96F3F73B1F5711F1003E2D2C /* MGLUserLocationHeadingIndicator.h */; };
- 96E5170420005A6B00A02306 /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848891CBB037E00AB86E3 /* SMCalloutView.h */; };
- 96E6145622CC135200109F14 /* MGLMapViewCompassViewTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96E6145522CC135200109F14 /* MGLMapViewCompassViewTests.mm */; };
- 96E6145922CC169000109F14 /* MGLCompassButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E6145722CC169000109F14 /* MGLCompassButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 96E6145A22CC169000109F14 /* MGLCompassButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E6145722CC169000109F14 /* MGLCompassButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 96E6145B22CC169000109F14 /* MGLCompassButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96E6145822CC169000109F14 /* MGLCompassButton.mm */; };
- 96E6145C22CC169000109F14 /* MGLCompassButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96E6145822CC169000109F14 /* MGLCompassButton.mm */; };
- 96ED34DE22374C0900E9FCA9 /* MGLMapViewDirectionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96ED34DD22374C0900E9FCA9 /* MGLMapViewDirectionTests.mm */; };
- 96F3F73C1F57124B003E2D2C /* MGLUserLocationHeadingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 96F3F73B1F5711F1003E2D2C /* MGLUserLocationHeadingIndicator.h */; };
- 9C188C4F2242C95A0022FA55 /* MMEDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 40834BBC1FE05D6E00C1BD0D /* MMEDate.m */; };
- 9C188C502242C96F0022FA55 /* MMEDate.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BC51FE05D6F00C1BD0D /* MMEDate.h */; };
- 9C6E281322A97FDC0056B7BE /* MMECategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280922A97FDB0056B7BE /* MMECategoryLoader.m */; };
- 9C6E281422A97FDC0056B7BE /* UIKit+MMEMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E280A22A97FDB0056B7BE /* UIKit+MMEMobileEvents.h */; };
- 9C6E281522A97FDC0056B7BE /* CLLocation+MMEMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E280B22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.h */; };
- 9C6E281622A97FDC0056B7BE /* NSData+MMEGZIP.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E280C22A97FDB0056B7BE /* NSData+MMEGZIP.h */; };
- 9C6E281722A97FDC0056B7BE /* NSData+MMEGZIP.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280D22A97FDB0056B7BE /* NSData+MMEGZIP.m */; };
- 9C6E281822A97FDC0056B7BE /* CLLocation+MMEMobileEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280E22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.m */; };
- 9C6E281922A97FDC0056B7BE /* UIKit+MMEMobileEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280F22A97FDB0056B7BE /* UIKit+MMEMobileEvents.m */; };
- 9C6E281A22A97FDC0056B7BE /* CLLocationManager+MMEMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E281022A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.h */; };
- 9C6E281B22A97FDC0056B7BE /* MMECategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E281122A97FDB0056B7BE /* MMECategoryLoader.h */; };
- 9C6E281C22A97FDC0056B7BE /* CLLocationManager+MMEMobileEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E281222A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.m */; };
- 9C6E281E22A980AC0056B7BE /* CLLocation+MMEMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E280B22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.h */; };
- 9C6E281F22A980AC0056B7BE /* CLLocation+MMEMobileEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280E22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.m */; };
- 9C6E282022A980AC0056B7BE /* CLLocationManager+MMEMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E281022A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.h */; };
- 9C6E282122A980AC0056B7BE /* CLLocationManager+MMEMobileEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E281222A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.m */; };
- 9C6E282222A980AC0056B7BE /* MMECategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E281122A97FDB0056B7BE /* MMECategoryLoader.h */; };
- 9C6E282322A980AC0056B7BE /* MMECategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280922A97FDB0056B7BE /* MMECategoryLoader.m */; };
- 9C6E282422A980AC0056B7BE /* NSData+MMEGZIP.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E280C22A97FDB0056B7BE /* NSData+MMEGZIP.h */; };
- 9C6E282522A980AC0056B7BE /* NSData+MMEGZIP.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280D22A97FDB0056B7BE /* NSData+MMEGZIP.m */; };
- 9C6E282622A980AC0056B7BE /* UIKit+MMEMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E280A22A97FDB0056B7BE /* UIKit+MMEMobileEvents.h */; };
- 9C6E282722A980AC0056B7BE /* UIKit+MMEMobileEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E280F22A97FDB0056B7BE /* UIKit+MMEMobileEvents.m */; };
- 9C6E282822A980B40056B7BE /* MMEReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BCC1FE05D7100C1BD0D /* MMEReachability.h */; };
- 9C6E282B22A981570056B7BE /* MGLMapboxEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E282A22A980E50056B7BE /* MGLMapboxEvents.m */; };
- 9C6E282C22A981580056B7BE /* MGLMapboxEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E282A22A980E50056B7BE /* MGLMapboxEvents.m */; };
- 9C6E282D22A9815D0056B7BE /* MGLMapboxEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E282922A980E50056B7BE /* MGLMapboxEvents.h */; };
- 9C6E282F22A9824B0056B7BE /* MGLTelemetryConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */; };
- 9C6E283022A9824F0056B7BE /* MGLMapboxEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E282922A980E50056B7BE /* MGLMapboxEvents.h */; };
- 9C6E283122A982530056B7BE /* MapboxMobileEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAC1FE05D6C00C1BD0D /* MapboxMobileEvents.h */; };
- 9C6E283222A982570056B7BE /* MMENamespacedDependencies.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BC81FE05D7000C1BD0D /* MMENamespacedDependencies.h */; };
- 9C6E283322A982670056B7BE /* MMEAPIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAB1FE05D6C00C1BD0D /* MMEAPIClient.h */; };
- 9C6E283422A982670056B7BE /* MMECommonEventData.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAE1FE05D6C00C1BD0D /* MMECommonEventData.h */; };
- 9C6E283522A982670056B7BE /* MMEConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB01FE05D6C00C1BD0D /* MMEConstants.h */; };
- 9C6E283622A982670056B7BE /* MMEDependencyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB11FE05D6D00C1BD0D /* MMEDependencyManager.h */; };
- 9C6E283722A982670056B7BE /* MMEEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBA1FE05D6E00C1BD0D /* MMEEvent.h */; };
- 9C6E283822A982670056B7BE /* MMEEventLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BA61FE05D6B00C1BD0D /* MMEEventLogger.h */; };
- 9C6E283922A982670056B7BE /* MMEEventLogReportViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 406E99B51FFEFED600D9FFCC /* MMEEventLogReportViewController.h */; };
- 9C6E283A22A982670056B7BE /* MMEEventsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBB1FE05D6E00C1BD0D /* MMEEventsConfiguration.h */; };
- 9C6E283B22A982670056B7BE /* MMEConfigurator.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA65F4F214066E200537748 /* MMEConfigurator.h */; };
- 9C6E283C22A982670056B7BE /* MMEEventsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BA31FE05D6B00C1BD0D /* MMEEventsManager.h */; };
- 9C6E283D22A982670056B7BE /* MMELocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB31FE05D6D00C1BD0D /* MMELocationManager.h */; };
- 9C6E283E22A982670056B7BE /* MMEMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = ACD024552187EAAF00D8C8A7 /* MMEMetrics.h */; };
- 9C6E283F22A982670056B7BE /* MMEMetricsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ACD024562187EAAF00D8C8A7 /* MMEMetricsManager.h */; };
- 9C6E284022A982670056B7BE /* MMEDate.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BC51FE05D6F00C1BD0D /* MMEDate.h */; };
- 9C6E284122A982670056B7BE /* MMENSURLSessionWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BAA1FE05D6C00C1BD0D /* MMENSURLSessionWrapper.h */; };
- 9C6E284222A982670056B7BE /* MMETimerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BC91FE05D7000C1BD0D /* MMETimerManager.h */; };
- 9C6E284322A982670056B7BE /* MMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BB61FE05D6D00C1BD0D /* MMETypes.h */; };
- 9C6E284422A982670056B7BE /* MMEUIApplicationWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBE1FE05D6E00C1BD0D /* MMEUIApplicationWrapper.h */; };
- 9C6E284522A982670056B7BE /* MMEUINavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 406E99B31FFEFED600D9FFCC /* MMEUINavigation.h */; };
- 9C6E284622A982670056B7BE /* MMEUniqueIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 40834BBF1FE05D6E00C1BD0D /* MMEUniqueIdentifier.h */; };
- 9C6E284722A982670056B7BE /* MMEDispatchManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA65F552140696B00537748 /* MMEDispatchManager.h */; };
- A4DE3DCB23038C98005B3473 /* MGLMockGestureRecognizers.h in Sources */ = {isa = PBXBuildFile; fileRef = A4DE3DCA23038A7F005B3473 /* MGLMockGestureRecognizers.h */; };
- A4DE3DCC23038CCA005B3473 /* MGLMockGestureRecognizers.m in Sources */ = {isa = PBXBuildFile; fileRef = A4DE3DC823038A07005B3473 /* MGLMockGestureRecognizers.m */; };
- A4F3FB1D2254865900A30170 /* missing_icon.json in Resources */ = {isa = PBXBuildFile; fileRef = A4F3FB1C2254865900A30170 /* missing_icon.json */; };
- AC46EB59225E600A0039C013 /* MMECertPin.h in Headers */ = {isa = PBXBuildFile; fileRef = AC46EB57225E60090039C013 /* MMECertPin.h */; };
- AC46EB5A225E600A0039C013 /* MMECertPin.h in Headers */ = {isa = PBXBuildFile; fileRef = AC46EB57225E60090039C013 /* MMECertPin.h */; };
- AC46EB5B225E600A0039C013 /* MMECertPin.m in Sources */ = {isa = PBXBuildFile; fileRef = AC46EB58225E60090039C013 /* MMECertPin.m */; };
- AC46EB5C225E600A0039C013 /* MMECertPin.m in Sources */ = {isa = PBXBuildFile; fileRef = AC46EB58225E60090039C013 /* MMECertPin.m */; };
- AC46EB5F225E60510039C013 /* MMEPinningConfigurationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = AC46EB5D225E60510039C013 /* MMEPinningConfigurationProvider.m */; };
- AC46EB60225E60510039C013 /* MMEPinningConfigurationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = AC46EB5D225E60510039C013 /* MMEPinningConfigurationProvider.m */; };
- AC46EB61225E60510039C013 /* MMEPinningConfigurationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = AC46EB5E225E60510039C013 /* MMEPinningConfigurationProvider.h */; };
- AC46EB62225E60510039C013 /* MMEPinningConfigurationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = AC46EB5E225E60510039C013 /* MMEPinningConfigurationProvider.h */; };
- AC518DFF201BB55A00EBC820 /* MGLTelemetryConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */; };
- AC518E03201BB56000EBC820 /* MGLTelemetryConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */; };
- AC518E04201BB56100EBC820 /* MGLTelemetryConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */; };
- ACA65F53214066E600537748 /* MMEConfigurator.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA65F50214066E600537748 /* MMEConfigurator.m */; };
- ACA65F54214066E600537748 /* MMEConfigurator.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA65F50214066E600537748 /* MMEConfigurator.m */; };
- ACA65F592140697200537748 /* MMEDispatchManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA65F562140697100537748 /* MMEDispatchManager.m */; };
- ACA65F5A2140697200537748 /* MMEDispatchManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA65F562140697100537748 /* MMEDispatchManager.m */; };
- ACD0245A2187EABA00D8C8A7 /* MMEMetricsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ACD024542187EAAF00D8C8A7 /* MMEMetricsManager.m */; };
- ACD0245B2187EABA00D8C8A7 /* MMEMetricsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ACD024542187EAAF00D8C8A7 /* MMEMetricsManager.m */; };
- ACD0245E2187EACB00D8C8A7 /* MMEMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = ACD024572187EAAF00D8C8A7 /* MMEMetrics.m */; };
- ACD0245F2187EACB00D8C8A7 /* MMEMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = ACD024572187EAAF00D8C8A7 /* MMEMetrics.m */; };
- CA0B3C022329DE9A00E4B493 /* MGLTestAssertionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAA65D82321BBA900F08A39 /* MGLTestAssertionHandler.m */; };
- CA0C27922076C804001CE5B7 /* MGLShapeSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA0C27912076C804001CE5B7 /* MGLShapeSourceTests.m */; };
- CA0C27942076CA19001CE5B7 /* MGLMapViewIntegrationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA0C27932076CA19001CE5B7 /* MGLMapViewIntegrationTest.m */; };
- CA1B4A512099FB2200EDD491 /* MGLMapSnapshotterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1B4A502099FB2200EDD491 /* MGLMapSnapshotterTest.m */; };
- CA4C54FE2324948100A81659 /* MGLSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA4C54FD2324948100A81659 /* MGLSourceTests.swift */; };
- CA4EB8C720863487006AB465 /* MGLStyleLayerIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4EB8C620863487006AB465 /* MGLStyleLayerIntegrationTests.m */; };
- CA4F3BDE230F74C3008BAFEA /* MGLMapViewPendingBlockTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4F3BDD230F74C3008BAFEA /* MGLMapViewPendingBlockTests.m */; };
- CA4F3BE223107793008BAFEA /* MGLCameraTransitionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA4F3BE123107793008BAFEA /* MGLCameraTransitionTests.mm */; };
- CA4F3BE4231077B9008BAFEA /* MGLCameraTransitionFinishTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA4F3BE3231077B9008BAFEA /* MGLCameraTransitionFinishTests.mm */; };
- CA55CD41202C16AA00CE7095 /* MGLCameraChangeReason.h in Headers */ = {isa = PBXBuildFile; fileRef = CA55CD3E202C16AA00CE7095 /* MGLCameraChangeReason.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CA55CD42202C16AA00CE7095 /* MGLCameraChangeReason.h in Headers */ = {isa = PBXBuildFile; fileRef = CA55CD3E202C16AA00CE7095 /* MGLCameraChangeReason.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CA65C4F821E9BB080068B0D4 /* MGLCluster.h in Headers */ = {isa = PBXBuildFile; fileRef = CA65C4F721E9BB080068B0D4 /* MGLCluster.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CA65C4F921E9BB080068B0D4 /* MGLCluster.h in Headers */ = {isa = PBXBuildFile; fileRef = CA65C4F721E9BB080068B0D4 /* MGLCluster.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CA6914B520E67F50002DB0EE /* MGLAnnotationViewIntegrationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA6914B420E67F50002DB0EE /* MGLAnnotationViewIntegrationTests.mm */; };
- CA7766832229C10E0008DE9E /* MGLCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */; };
- CA7766842229C11A0008DE9E /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; };
- CA86FF0E22D8D5A0009EB14A /* MGLNetworkConfigurationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA86FF0D22D8D5A0009EB14A /* MGLNetworkConfigurationTests.m */; };
- CA88DC3021C85D900059ED5A /* MGLStyleURLIntegrationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA88DC2F21C85D900059ED5A /* MGLStyleURLIntegrationTest.m */; };
- CA8FBC0921A47BB100D1203C /* MGLRendererConfigurationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA8FBC0821A47BB100D1203C /* MGLRendererConfigurationTests.mm */; };
- CAA69DA4206DCD0E007279CD /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4A26961CB6E795000B7809 /* Mapbox.framework */; };
- CAA69DA5206DCD0E007279CD /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA4A26961CB6E795000B7809 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- CAAA65D92321BBA900F08A39 /* MGLTestAssertionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAA65D82321BBA900F08A39 /* MGLTestAssertionHandler.m */; };
- CABE5DAD2072FAB40003AF3C /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
- CAD9D0AA22A86D6F001B25EE /* MGLResourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CAD9D0A922A86D6F001B25EE /* MGLResourceTests.mm */; };
- CAE7AD5520F46EF5003B6782 /* MGLMapSnapshotterSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAE7AD5420F46EF5003B6782 /* MGLMapSnapshotterSwiftTests.swift */; };
- CAFB3C14234505D500399265 /* MGLMapSnapshotter_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CAFB3C13234505D500399265 /* MGLMapSnapshotter_Private.h */; };
- CAFB3C15234505D500399265 /* MGLMapSnapshotter_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CAFB3C13234505D500399265 /* MGLMapSnapshotter_Private.h */; };
- CF75A91522D85E860058A5C4 /* MGLLoggingConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = CF75A91422D85E860058A5C4 /* MGLLoggingConfiguration.mm */; };
- CF75A91622D85E860058A5C4 /* MGLLoggingConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = CF75A91422D85E860058A5C4 /* MGLLoggingConfiguration.mm */; };
- CFF9F98623A24BF500B0DE92 /* MGLNetworkIntegrationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF9F98423A24BF400B0DE92 /* MGLNetworkIntegrationManager.h */; };
- CFF9F98723A24BF500B0DE92 /* MGLNetworkIntegrationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF9F98423A24BF400B0DE92 /* MGLNetworkIntegrationManager.h */; };
- CFF9F98823A24BF500B0DE92 /* MGLNetworkIntegrationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CFF9F98523A24BF400B0DE92 /* MGLNetworkIntegrationManager.m */; };
- CFF9F98923A24BF500B0DE92 /* MGLNetworkIntegrationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CFF9F98523A24BF400B0DE92 /* MGLNetworkIntegrationManager.m */; };
- DA00FC8E1D5EEB0D009AABC8 /* MGLAttributionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA00FC8C1D5EEB0D009AABC8 /* MGLAttributionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA00FC8F1D5EEB0D009AABC8 /* MGLAttributionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA00FC8C1D5EEB0D009AABC8 /* MGLAttributionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA00FC901D5EEB0D009AABC8 /* MGLAttributionInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA00FC8D1D5EEB0D009AABC8 /* MGLAttributionInfo.mm */; };
- DA00FC911D5EEB0D009AABC8 /* MGLAttributionInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA00FC8D1D5EEB0D009AABC8 /* MGLAttributionInfo.mm */; };
- DA0CD5901CF56F6A00A5F5A5 /* MGLFeatureTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA0CD58F1CF56F6A00A5F5A5 /* MGLFeatureTests.mm */; };
- DA17BE301CC4BAC300402C41 /* MGLMapView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA17BE2F1CC4BAC300402C41 /* MGLMapView_Private.h */; };
- DA17BE311CC4BDAA00402C41 /* MGLMapView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA17BE2F1CC4BAC300402C41 /* MGLMapView_Private.h */; };
- DA1DC96A1CB6C6B7006E619F /* MBXCustomCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */; };
- DA1DC96B1CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */; };
- DA1DC9701CB6C6CE006E619F /* points.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96C1CB6C6CE006E619F /* points.geojson */; };
- DA1DC9711CB6C6CE006E619F /* polyline.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96D1CB6C6CE006E619F /* polyline.geojson */; };
- DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96F1CB6C6CE006E619F /* threestates.geojson */; };
- DA1DC9971CB6E046006E619F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9961CB6E046006E619F /* main.m */; };
- DA1DC9991CB6E054006E619F /* MBXAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */; };
- DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC99A1CB6E064006E619F /* MBXViewController.m */; };
- DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC99E1CB6E088006E619F /* Assets.xcassets */; };
- DA1F8F3D1EBD287B00367E42 /* MGLDocumentationGuideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1F8F3C1EBD287B00367E42 /* MGLDocumentationGuideTests.swift */; };
- DA2784FC1DF02FF4001D5B8D /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA2784FB1DF02FF4001D5B8D /* Media.xcassets */; };
- DA27C24E1CBB3811000B0ECD /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA27C24D1CBB3811000B0ECD /* GLKit.framework */; };
- DA27C24F1CBB4C11000B0ECD /* MGLAccountManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */; };
- DA2DBBCE1D51E80400D38FF9 /* MGLStyleLayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2DBBCD1D51E80400D38FF9 /* MGLStyleLayerTests.m */; };
- DA2E88561CC036F400F24E7B /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
- DA2E88611CC0382C00F24E7B /* MGLGeometryTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885C1CC0382C00F24E7B /* MGLGeometryTests.mm */; };
- DA2E88621CC0382C00F24E7B /* MGLOfflinePackTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885D1CC0382C00F24E7B /* MGLOfflinePackTests.mm */; };
- DA2E88631CC0382C00F24E7B /* MGLOfflineRegionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885E1CC0382C00F24E7B /* MGLOfflineRegionTests.m */; };
- DA2E88651CC0382C00F24E7B /* MGLStyleTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E88601CC0382C00F24E7B /* MGLStyleTests.mm */; };
- DA35A29E1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A29F1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2A11CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */; };
- DA35A2A21CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */; };
- DA35A2AA1CCA058D00E826B2 /* MGLCoordinateFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */; };
- DA35A2B11CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2B21CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2B31CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */; };
- DA35A2B41CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */; };
- DA35A2B81CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */; };
- DA35A2B91CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */; };
- DA35A2BB1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2BC1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2C51CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */; };
- DA35A2C61CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */; };
- DA35A2C91CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2CA1CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2CB1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */; };
- DA35A2CC1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */; };
- DA35D0881E1A6309007DED41 /* one-liner.json in Resources */ = {isa = PBXBuildFile; fileRef = DA35D0871E1A6309007DED41 /* one-liner.json */; };
- DA5DB12A1FABF1EE001C2326 /* MGLMapAccessibilityElementTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5DB1291FABF1EE001C2326 /* MGLMapAccessibilityElementTests.m */; };
- DA6408DB1DA4E7D300908C90 /* MGLVectorStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6408D91DA4E7D300908C90 /* MGLVectorStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA6408DC1DA4E7D300908C90 /* MGLVectorStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6408D91DA4E7D300908C90 /* MGLVectorStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA6408DD1DA4E7D300908C90 /* MGLVectorStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA6408DA1DA4E7D300908C90 /* MGLVectorStyleLayer.mm */; };
- DA6408DE1DA4E7D300908C90 /* MGLVectorStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA6408DA1DA4E7D300908C90 /* MGLVectorStyleLayer.mm */; };
- DA695426215B1E76002041A4 /* MGLMapCameraTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA695425215B1E75002041A4 /* MGLMapCameraTests.m */; };
- DA704CC21F65A475004B3F28 /* MGLMapAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = DA704CC01F65A475004B3F28 /* MGLMapAccessibilityElement.h */; };
- DA704CC31F65A475004B3F28 /* MGLMapAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = DA704CC01F65A475004B3F28 /* MGLMapAccessibilityElement.h */; };
- DA704CC41F65A475004B3F28 /* MGLMapAccessibilityElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA704CC11F65A475004B3F28 /* MGLMapAccessibilityElement.mm */; };
- DA704CC51F65A475004B3F28 /* MGLMapAccessibilityElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA704CC11F65A475004B3F28 /* MGLMapAccessibilityElement.mm */; };
- DA72620B1DEEE3480043BB89 /* MGLOpenGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7262091DEEE3480043BB89 /* MGLOpenGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA72620C1DEEE3480043BB89 /* MGLOpenGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7262091DEEE3480043BB89 /* MGLOpenGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA72620D1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA72620A1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm */; };
- DA72620E1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA72620A1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm */; };
- DA737EE11D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA737EE21D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */; };
- DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA821D051CCC6D59007508D4 /* Main.storyboard */; };
- DA8847D91CBAF91600AB86E3 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
- DA8847DA1CBAF91600AB86E3 /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- DA8847EF1CBAFA5100AB86E3 /* MGLAccountManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F01CBAFA5100AB86E3 /* MGLAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F11CBAFA5100AB86E3 /* MGLGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F21CBAFA5100AB86E3 /* MGLMapCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F31CBAFA5100AB86E3 /* MGLMultiPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F41CBAFA5100AB86E3 /* MGLOfflinePack.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F51CBAFA5100AB86E3 /* MGLOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F61CBAFA5100AB86E3 /* MGLOfflineStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F71CBAFA5100AB86E3 /* MGLOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F81CBAFA5100AB86E3 /* MGLPointAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847F91CBAFA5100AB86E3 /* MGLPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847FA1CBAFA5100AB86E3 /* MGLPolyline.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847FB1CBAFA5100AB86E3 /* MGLShape.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847FC1CBAFA5100AB86E3 /* MGLStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847FD1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8847FE1CBAFA5100AB86E3 /* MGLTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA88481A1CBAFA6200AB86E3 /* MGLAccountManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */; };
- DA88481B1CBAFA6200AB86E3 /* MGLGeometry_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */; };
- DA88481C1CBAFA6200AB86E3 /* MGLGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */; };
- DA88481D1CBAFA6200AB86E3 /* MGLMapCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */; };
- DA88481E1CBAFA6200AB86E3 /* MGLMultiPoint_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848041CBAFA6200AB86E3 /* MGLMultiPoint_Private.h */; };
- DA88481F1CBAFA6200AB86E3 /* MGLMultiPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */; };
- DA8848201CBAFA6200AB86E3 /* MGLOfflinePack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848061CBAFA6200AB86E3 /* MGLOfflinePack_Private.h */; };
- DA8848211CBAFA6200AB86E3 /* MGLOfflinePack.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */; };
- DA8848221CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848081CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h */; };
- DA8848231CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848091CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h */; };
- DA8848241CBAFA6200AB86E3 /* MGLOfflineStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */; };
- DA8848251CBAFA6200AB86E3 /* MGLPointAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.mm */; };
- DA8848261CBAFA6200AB86E3 /* MGLPolygon.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */; };
- DA8848271CBAFA6200AB86E3 /* MGLPolyline.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */; };
- DA8848281CBAFA6200AB86E3 /* MGLShape.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480E1CBAFA6200AB86E3 /* MGLShape.mm */; };
- DA8848291CBAFA6200AB86E3 /* MGLStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */; };
- DA88482A1CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */; };
- DA88482B1CBAFA6200AB86E3 /* MGLTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848111CBAFA6200AB86E3 /* MGLTypes.m */; };
- DA88482C1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848121CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h */; };
- DA88482D1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */; };
- DA88482E1CBAFA6200AB86E3 /* NSException+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848141CBAFA6200AB86E3 /* NSException+MGLAdditions.h */; };
- DA8848311CBAFA6200AB86E3 /* NSString+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848171CBAFA6200AB86E3 /* NSString+MGLAdditions.h */; };
- DA8848321CBAFA6200AB86E3 /* NSString+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */; };
- DA88483A1CBAFB8500AB86E3 /* MGLAnnotationImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA88483B1CBAFB8500AB86E3 /* MGLCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA88483C1CBAFB8500AB86E3 /* MGLMapView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848361CBAFB8500AB86E3 /* MGLMapView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA88483D1CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA88483F1CBAFB8500AB86E3 /* MGLUserLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA88484F1CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848401CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h */; };
- DA8848501CBAFB9800AB86E3 /* MGLAnnotationImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */; };
- DA8848531CBAFB9800AB86E3 /* MGLCompactCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848441CBAFB9800AB86E3 /* MGLCompactCalloutView.h */; };
- DA8848541CBAFB9800AB86E3 /* MGLCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */; };
- DA8848591CBAFB9800AB86E3 /* MGLMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */; };
- DA88485A1CBAFB9800AB86E3 /* MGLUserLocation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484B1CBAFB9800AB86E3 /* MGLUserLocation_Private.h */; };
- DA88485B1CBAFB9800AB86E3 /* MGLUserLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */; };
- DA88485C1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484D1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.h */; };
- DA88485D1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484E1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.m */; };
- DA8848601CBAFC2E00AB86E3 /* Mapbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA88488B1CBB037E00AB86E3 /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848891CBB037E00AB86E3 /* SMCalloutView.h */; };
- DA88488C1CBB037E00AB86E3 /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; };
- DA8933A31CCC95B000E68420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA89339F1CCC951200E68420 /* Localizable.strings */; };
- DA8933BC1CCD2CA100E68420 /* Foundation.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BA1CCD2CA100E68420 /* Foundation.strings */; };
- DA8933BF1CCD2CAD00E68420 /* Foundation.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */; };
- DA8933DB1CCD31D400E68420 /* Foundation.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BA1CCD2CA100E68420 /* Foundation.strings */; };
- DA8933DC1CCD31D400E68420 /* Foundation.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */; };
- DA8933E01CCD31DF00E68420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA89339F1CCC951200E68420 /* Localizable.strings */; };
- DA8933F01CCD387900E68420 /* strip-frameworks.sh in Resources */ = {isa = PBXBuildFile; fileRef = DA8933EF1CCD387900E68420 /* strip-frameworks.sh */; };
- DA8963371CC549A100684375 /* glyphs in Resources */ = {isa = PBXBuildFile; fileRef = DA8963331CC549A100684375 /* glyphs */; };
- DA8963381CC549A100684375 /* sprites in Resources */ = {isa = PBXBuildFile; fileRef = DA8963341CC549A100684375 /* sprites */; };
- DA8963391CC549A100684375 /* styles in Resources */ = {isa = PBXBuildFile; fileRef = DA8963351CC549A100684375 /* styles */; };
- DA89633A1CC549A100684375 /* tiles in Resources */ = {isa = PBXBuildFile; fileRef = DA8963361CC549A100684375 /* tiles */; };
- DAA32CC31E4C6B65006F8D24 /* MGLDistanceFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3557F7AF1E1D27D300CCA5E6 /* MGLDistanceFormatter.m */; };
- DAA4E4081CBB6C9500178DFB /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
- DAA4E4091CBB6C9500178DFB /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- DAA4E41C1CBB730400178DFB /* MGLAccountManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */; };
- DAA4E41D1CBB730400178DFB /* MGLGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */; };
- DAA4E41E1CBB730400178DFB /* MGLMapCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */; };
- DAA4E41F1CBB730400178DFB /* MGLMultiPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */; };
- DAA4E4201CBB730400178DFB /* MGLOfflinePack.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */; };
- DAA4E4211CBB730400178DFB /* MGLOfflineStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */; };
- DAA4E4221CBB730400178DFB /* MGLPointAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.mm */; };
- DAA4E4231CBB730400178DFB /* MGLPolygon.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */; };
- DAA4E4241CBB730400178DFB /* MGLPolyline.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */; };
- DAA4E4251CBB730400178DFB /* MGLShape.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480E1CBAFA6200AB86E3 /* MGLShape.mm */; };
- DAA4E4261CBB730400178DFB /* MGLStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */; };
- DAA4E4271CBB730400178DFB /* MGLTilePyramidOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */; };
- DAA4E4281CBB730400178DFB /* MGLTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848111CBAFA6200AB86E3 /* MGLTypes.m */; };
- DAA4E4291CBB730400178DFB /* NSBundle+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */; };
- DAA4E42B1CBB730400178DFB /* NSString+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */; };
- DAA4E42D1CBB730400178DFB /* MGLAnnotationImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */; };
- DAA4E42F1CBB730400178DFB /* MGLCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */; };
- DAA4E4321CBB730400178DFB /* MGLMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */; };
- DAA4E4331CBB730400178DFB /* MGLUserLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */; };
- DAA4E4341CBB730400178DFB /* MGLFaux3DUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484E1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.m */; };
- DAA4E4351CBB730400178DFB /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; };
- DAABF73D1CBC59BB005B1825 /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */; };
- DAAE5F8720F046E60089D85B /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */; };
- DAAE5F8820F046FE0089D85B /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */; };
- DAAE5F8920F047240089D85B /* libmbgl-filesource.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A91F79100C004B6D81 /* libmbgl-filesource.a */; };
- DAAE5F8A20F0472E0089D85B /* libmbgl-loop-darwin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A71F791007004B6D81 /* libmbgl-loop-darwin.a */; };
- DAAF722B1DA903C700312FA4 /* MGLStyleValue.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF72291DA903C700312FA4 /* MGLStyleValue.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAAF722C1DA903C700312FA4 /* MGLStyleValue.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF72291DA903C700312FA4 /* MGLStyleValue.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAAF722D1DA903C700312FA4 /* MGLStyleValue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF722A1DA903C700312FA4 /* MGLStyleValue_Private.h */; };
- DAAF722E1DA903C700312FA4 /* MGLStyleValue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF722A1DA903C700312FA4 /* MGLStyleValue_Private.h */; };
- DABCABAC1CB80692000A7C39 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DABCABAB1CB80692000A7C39 /* main.m */; };
- DABCABAF1CB80692000A7C39 /* MBXBenchAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */; };
- DABCABB21CB80692000A7C39 /* MBXBenchViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */; };
- DABCABB71CB80692000A7C39 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DABCABB61CB80692000A7C39 /* Assets.xcassets */; };
- DABCABBA1CB80692000A7C39 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */; };
- DABCABC21CB8071D000A7C39 /* locations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DABCABBF1CB80717000A7C39 /* locations.cpp */; };
- DABFB85D1CBE99E500D62B32 /* MGLAccountManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB85E1CBE99E500D62B32 /* MGLAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB85F1CBE99E500D62B32 /* MGLGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8601CBE99E500D62B32 /* MGLMapCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8611CBE99E500D62B32 /* MGLMultiPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8621CBE99E500D62B32 /* MGLOfflinePack.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8631CBE99E500D62B32 /* MGLOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8641CBE99E500D62B32 /* MGLOfflineStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8651CBE99E500D62B32 /* MGLOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8661CBE99E500D62B32 /* MGLPointAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8671CBE99E500D62B32 /* MGLPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8681CBE99E500D62B32 /* MGLPolyline.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8691CBE99E500D62B32 /* MGLShape.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB86A1CBE99E500D62B32 /* MGLStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB86B1CBE99E500D62B32 /* MGLTilePyramidOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB86C1CBE99E500D62B32 /* MGLTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB86D1CBE9A0F00D62B32 /* MGLAnnotationImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB86E1CBE9A0F00D62B32 /* MGLCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB86F1CBE9A0F00D62B32 /* MGLMapView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848361CBAFB8500AB86E3 /* MGLMapView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8701CBE9A0F00D62B32 /* MGLMapView+IBAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8721CBE9A0F00D62B32 /* MGLUserLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DABFB8731CBE9A9900D62B32 /* Mapbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAC25FCC200FD83F009BE98E /* NSExpression+MGLPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC25FCB200FD83E009BE98E /* NSExpression+MGLPrivateAdditions.h */; };
- DAC25FCD200FD83F009BE98E /* NSExpression+MGLPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC25FCB200FD83E009BE98E /* NSExpression+MGLPrivateAdditions.h */; };
- DAC49C5C1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */; };
- DAC49C5D1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */; };
- DACA86262019218600E9693A /* MGLRasterDEMSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA86242019218500E9693A /* MGLRasterDEMSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DACA86272019218600E9693A /* MGLRasterDEMSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA86242019218500E9693A /* MGLRasterDEMSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DACA86282019218600E9693A /* MGLRasterDEMSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACA86252019218500E9693A /* MGLRasterDEMSource.mm */; };
- DACA86292019218600E9693A /* MGLRasterDEMSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACA86252019218500E9693A /* MGLRasterDEMSource.mm */; };
- DAD1656C1CF41981001FF4B9 /* MGLFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165691CF41981001FF4B9 /* MGLFeature.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAD1656D1CF41981001FF4B9 /* MGLFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165691CF41981001FF4B9 /* MGLFeature.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAD1656E1CF41981001FF4B9 /* MGLFeature_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD1656A1CF41981001FF4B9 /* MGLFeature_Private.h */; };
- DAD165701CF41981001FF4B9 /* MGLFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */; };
- DAD165711CF41981001FF4B9 /* MGLFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */; };
- DAD165781CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAD165791CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAD1657A1CF4CDFF001FF4B9 /* MGLShapeCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.mm */; };
- DAD1657B1CF4CDFF001FF4B9 /* MGLShapeCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.mm */; };
- DAE7DEC21E245455007505A6 /* MGLNSStringAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE7DEC11E245455007505A6 /* MGLNSStringAdditionsTests.m */; };
- DAED38631D62D0FC00D7640F /* NSURL+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAED38611D62D0FC00D7640F /* NSURL+MGLAdditions.h */; };
- DAED38641D62D0FC00D7640F /* NSURL+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAED38611D62D0FC00D7640F /* NSURL+MGLAdditions.h */; };
- DAED38651D62D0FC00D7640F /* NSURL+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAED38621D62D0FC00D7640F /* NSURL+MGLAdditions.m */; };
- DAED38661D62D0FC00D7640F /* NSURL+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAED38621D62D0FC00D7640F /* NSURL+MGLAdditions.m */; };
- DAEDC4341D603417000224FF /* MGLAttributionInfoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEDC4331D603417000224FF /* MGLAttributionInfoTests.m */; };
- DAF0D8101DFE0EA000B28378 /* MGLRasterTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D80F1DFE0EA000B28378 /* MGLRasterTileSource_Private.h */; };
- DAF0D8111DFE0EA000B28378 /* MGLRasterTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D80F1DFE0EA000B28378 /* MGLRasterTileSource_Private.h */; };
- DAF0D8131DFE0EC500B28378 /* MGLVectorTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8121DFE0EC500B28378 /* MGLVectorTileSource_Private.h */; };
- DAF0D8141DFE0EC500B28378 /* MGLVectorTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8121DFE0EC500B28378 /* MGLVectorTileSource_Private.h */; };
- DAF0D8181DFE6B2800B28378 /* MGLAttributionInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8171DFE6B2800B28378 /* MGLAttributionInfo_Private.h */; };
- DAF0D8191DFE6B2800B28378 /* MGLAttributionInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8171DFE6B2800B28378 /* MGLAttributionInfo_Private.h */; };
- DAF25719201901E200367EF5 /* MGLHillshadeStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF25717201901E100367EF5 /* MGLHillshadeStyleLayer.mm */; };
- DAF2571A201901E200367EF5 /* MGLHillshadeStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF25717201901E100367EF5 /* MGLHillshadeStyleLayer.mm */; };
- DAF2571B201901E200367EF5 /* MGLHillshadeStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF25718201901E200367EF5 /* MGLHillshadeStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAF2571C201901E200367EF5 /* MGLHillshadeStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF25718201901E200367EF5 /* MGLHillshadeStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAF25720201902BC00367EF5 /* MGLHillshadeStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF2571F201902BB00367EF5 /* MGLHillshadeStyleLayerTests.mm */; };
- DD0902A91DB1929D00C5BDCE /* MGLNetworkConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = DD0902A21DB18DE700C5BDCE /* MGLNetworkConfiguration.m */; };
- DD0902AA1DB1929D00C5BDCE /* MGLNetworkConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = DD0902A21DB18DE700C5BDCE /* MGLNetworkConfiguration.m */; };
- DD0902AB1DB192A800C5BDCE /* MGLNetworkConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0902A41DB18F1B00C5BDCE /* MGLNetworkConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DD4823751D94AE6C00EB71B7 /* fill_filter_style.json in Resources */ = {isa = PBXBuildFile; fileRef = DD4823721D94AE6C00EB71B7 /* fill_filter_style.json */; };
- DD4823761D94AE6C00EB71B7 /* line_filter_style.json in Resources */ = {isa = PBXBuildFile; fileRef = DD4823731D94AE6C00EB71B7 /* line_filter_style.json */; };
- DD4823771D94AE6C00EB71B7 /* numeric_filter_style.json in Resources */ = {isa = PBXBuildFile; fileRef = DD4823741D94AE6C00EB71B7 /* numeric_filter_style.json */; };
- DD58A4C61D822BD000E1F038 /* MGLExpressionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD58A4C51D822BD000E1F038 /* MGLExpressionTests.mm */; };
- DD9BE4F71EB263C50079A3AF /* UIViewController+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9BE4F51EB263C50079A3AF /* UIViewController+MGLAdditions.h */; };
- DD9BE4F81EB263C50079A3AF /* UIViewController+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9BE4F61EB263C50079A3AF /* UIViewController+MGLAdditions.m */; };
- DD9BE4F91EB263D20079A3AF /* UIViewController+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9BE4F51EB263C50079A3AF /* UIViewController+MGLAdditions.h */; };
- DD9BE4FA1EB263F40079A3AF /* UIViewController+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9BE4F61EB263C50079A3AF /* UIViewController+MGLAdditions.m */; };
- FA68F14A1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = FA68F1481E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- FA68F14B1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = FA68F1481E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- FA68F14D1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA68F1491E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm */; };
- FA68F14E1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA68F1491E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm */; };
- FAE1CDCB1E9D79CB00C40B5B /* MGLFillExtrusionStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAE1CDC81E9D79C600C40B5B /* MGLFillExtrusionStyleLayerTests.mm */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 165D0CE520005351009A3C66 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = DA8847D11CBAF91600AB86E3;
- remoteInfo = dynamic;
- };
- CABE5DAB2072FA660003AF3C /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 16376B2E1FFDB4B40000563E;
- remoteInfo = "Integration Test Harness";
- };
- DA25D5C91CCDA0CC00607828 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = DA8933D41CCD306400E68420;
- remoteInfo = bundle;
- };
- DA2E88571CC036F400F24E7B /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = DA8847D11CBAF91600AB86E3;
- remoteInfo = dynamic;
- };
- DA8847D71CBAF91600AB86E3 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = DA8847D11CBAF91600AB86E3;
- remoteInfo = framework;
- };
- DAA4E40A1CBB6C9500178DFB /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = DA8847D11CBAF91600AB86E3;
- remoteInfo = framework;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- CAA69DA6206DCD0E007279CD /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- CAA69DA5206DCD0E007279CD /* Mapbox.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA4A269A1CB6F5D3000B7809 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- DA8847DA1CBAF91600AB86E3 /* Mapbox.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAA4E40C1CBB6C9600178DFB /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- DAA4E4091CBB6C9500178DFB /* Mapbox.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAA4E4111CBB71D400178DFB /* CopyFiles */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "include/$(PRODUCT_NAME)";
- dstSubfolderSpec = 16;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 071BBAFC1EE75CD4001FB02A /* MGLImageSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLImageSource.h; sourceTree = "<group>"; };
- 071BBAFD1EE75CD4001FB02A /* MGLImageSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLImageSource.mm; sourceTree = "<group>"; };
- 071BBB051EE7761A001FB02A /* MGLImageSourceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLImageSourceTests.m; path = ../../darwin/test/MGLImageSourceTests.m; sourceTree = "<group>"; };
- 074A7F0C2277C093001A62D1 /* insert_access_token.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = insert_access_token.sh; sourceTree = "<group>"; };
- 075AF840227B6762008D7A4C /* MBXState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXState.h; sourceTree = "<group>"; };
- 075AF841227B6762008D7A4C /* MBXState.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXState.m; sourceTree = "<group>"; };
- 075AF843227B67C5008D7A4C /* MBXStateManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXStateManager.h; sourceTree = "<group>"; };
- 075AF844227B67C6008D7A4C /* MBXStateManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXStateManager.m; sourceTree = "<group>"; };
- 076171C22139C70900668A35 /* MGLMapViewTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLMapViewTests.m; path = ../../darwin/test/MGLMapViewTests.m; sourceTree = "<group>"; };
- 076171C62141A91700668A35 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = app/Settings.bundle; sourceTree = SOURCE_ROOT; };
- 077061D9215DA00E000FEF62 /* MGLTestLocationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLTestLocationManager.m; sourceTree = "<group>"; };
- 077061DB215DA11F000FEF62 /* MGLTestLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLTestLocationManager.h; sourceTree = "<group>"; };
- 0778DD401F67555F00A73B34 /* MGLComputedShapeSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLComputedShapeSource.h; sourceTree = "<group>"; };
- 0778DD411F67555F00A73B34 /* MGLComputedShapeSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLComputedShapeSource.mm; sourceTree = "<group>"; };
- 07D8C6FD1F67562800381808 /* MGLComputedShapeSourceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLComputedShapeSourceTests.m; path = ../../darwin/test/MGLComputedShapeSourceTests.m; sourceTree = "<group>"; };
- 07D9474E1F67487E00E37934 /* MGLComputedShapeSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLComputedShapeSource_Private.h; sourceTree = "<group>"; };
- 16376B071FFD9DAF0000563E /* integration.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = integration.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 16376B091FFD9DAF0000563E /* MBGLIntegrationTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MBGLIntegrationTests.mm; sourceTree = "<group>"; };
- 16376B0B1FFD9DAF0000563E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 16376B2F1FFDB4B40000563E /* Integration Test Harness.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Integration Test Harness.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 16376B311FFDB4B40000563E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
- 16376B321FFDB4B40000563E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
- 16376B3A1FFDB4B40000563E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
- 16376B3D1FFDB4B40000563E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
- 16376B3F1FFDB4B40000563E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 16376B401FFDB4B40000563E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 16376B481FFEED010000563E /* MGLMapViewLayoutTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLMapViewLayoutTests.m; sourceTree = "<group>"; };
- 170C43782028D49800863DF0 /* MGLHeatmapColorTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLHeatmapColorTests.mm; path = ../../darwin/test/MGLHeatmapColorTests.mm; sourceTree = "<group>"; };
- 170C43792028D49800863DF0 /* MGLHeatmapStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLHeatmapStyleLayerTests.mm; path = ../../darwin/test/MGLHeatmapStyleLayerTests.mm; sourceTree = "<group>"; };
- 1753ED411E53CE6F00A9FD90 /* MGLConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLConversion.h; sourceTree = "<group>"; };
- 1F0196A923174B0700F5C819 /* MGLMapViewContentInsetTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLMapViewContentInsetTests.m; sourceTree = "<group>"; };
- 1F0666881EC64F8E001C16D7 /* MGLLight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLight.h; sourceTree = "<group>"; };
- 1F0666891EC64F8E001C16D7 /* MGLLight.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLight.mm; sourceTree = "<group>"; };
- 1F26B6BF20E189C9007BCC21 /* MBXCustomLocationViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXCustomLocationViewController.h; sourceTree = "<group>"; };
- 1F26B6C020E189C9007BCC21 /* MBXCustomLocationViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXCustomLocationViewController.m; sourceTree = "<group>"; };
- 1F26B6C220E1A351007BCC21 /* simple_route.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = simple_route.json; sourceTree = "<group>"; };
- 1F2B94BF221636D800210640 /* MGLNetworkConfiguration_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLNetworkConfiguration_Private.h; sourceTree = "<group>"; };
- 1F6A82A021360F9C00BA5B41 /* MGLLoggingConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLLoggingConfiguration.h; sourceTree = "<group>"; };
- 1F6A82A62138871900BA5B41 /* MGLLoggingConfiguration_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLLoggingConfiguration_Private.h; sourceTree = "<group>"; };
- 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>"; };
- 1F8A59F62165326C004DFE75 /* sideload_sat.db */ = {isa = PBXFileReference; lastKnownFileType = file; name = sideload_sat.db; path = ../../../test/fixtures/offline_database/sideload_sat.db; sourceTree = "<group>"; };
- 1F8E8A80233A9FD9009B51ED /* MGLMapViewGestureRecognizerTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapViewGestureRecognizerTests.mm; sourceTree = "<group>"; };
- 1F95931C1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLNSDateAdditionsTests.mm; path = ../../darwin/test/MGLNSDateAdditionsTests.mm; sourceTree = "<group>"; };
- 1FC4817B2098CBC0000D09B4 /* NSPredicate+MGLPrivateAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+MGLPrivateAdditions.h"; sourceTree = "<group>"; };
- 1FCAE2A020B872A400C577DD /* MGLLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLLocationManager.h; sourceTree = "<group>"; };
- 1FCAE2A120B872A400C577DD /* MGLLocationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLLocationManager.m; sourceTree = "<group>"; };
- 1FCAE2A620B88B3800C577DD /* MGLLocationManager_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLLocationManager_Private.h; sourceTree = "<group>"; };
- 1FCCEC32222605C400302E3B /* MGLSDKMetricsManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLSDKMetricsManager.h; sourceTree = "<group>"; };
- 1FCCEC33222605C400302E3B /* MGLSDKMetricsManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLSDKMetricsManager.m; sourceTree = "<group>"; };
- 1FCCEC38222607A500302E3B /* MGLSDKMetricsManager_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLSDKMetricsManager_Private.h; sourceTree = "<group>"; };
- 1FDB00C721F8F14E00D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
- 1FDB00C821F8F14F00D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Foundation.strings; sourceTree = "<group>"; };
- 1FDB00C921F8F15000D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- 1FDB00CA21F8F15100D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
- 1FDB00CB21F8F15300D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- 1FF48585223710BE00F19727 /* MGLAttributedExpression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLAttributedExpression.h; sourceTree = "<group>"; };
- 1FF48586223710BE00F19727 /* MGLAttributedExpression.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLAttributedExpression.m; 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>"; };
- 30E578111DAA7D690050F07E /* UIImage+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIImage+MGLAdditions.h"; path = "src/UIImage+MGLAdditions.h"; sourceTree = SOURCE_ROOT; };
- 30E578121DAA7D690050F07E /* UIImage+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "UIImage+MGLAdditions.mm"; path = "src/UIImage+MGLAdditions.mm"; sourceTree = SOURCE_ROOT; };
- 350098B91D480108004B2AF0 /* MGLVectorTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLVectorTileSource.h; sourceTree = "<group>"; };
- 350098BA1D480108004B2AF0 /* MGLVectorTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLVectorTileSource.mm; sourceTree = "<group>"; };
- 350098DA1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+MGLStyleAttributeAdditions.h"; sourceTree = "<group>"; };
- 350098DB1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSValue+MGLStyleAttributeAdditions.mm"; sourceTree = "<group>"; };
- 3502D6CB22AE88D5006BDFCE /* MGLAccountManagerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLAccountManagerTests.m; sourceTree = "<group>"; };
- 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSComparisonPredicate+MGLAdditions.h"; sourceTree = "<group>"; };
- 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSComparisonPredicate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSExpression+MGLAdditions.h"; sourceTree = "<group>"; };
- 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSExpression+MGLAdditions.mm"; sourceTree = "<group>"; };
- 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSCompoundPredicate+MGLAdditions.h"; sourceTree = "<group>"; };
- 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSCompoundPredicate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 35136D381D42271A00C20EFD /* MGLBackgroundStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLBackgroundStyleLayer.mm; sourceTree = "<group>"; };
- 35136D3B1D42272500C20EFD /* MGLCircleStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLCircleStyleLayer.mm; sourceTree = "<group>"; };
- 35136D3E1D42273000C20EFD /* MGLLineStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLineStyleLayer.mm; sourceTree = "<group>"; };
- 35136D411D42274500C20EFD /* MGLRasterStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRasterStyleLayer.mm; sourceTree = "<group>"; };
- 35136D441D42275100C20EFD /* MGLSymbolStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLSymbolStyleLayer.mm; sourceTree = "<group>"; };
- 35136D4A1D4277FC00C20EFD /* MGLSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSource.h; sourceTree = "<group>"; };
- 35136D4B1D4277FC00C20EFD /* MGLSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLSource.mm; sourceTree = "<group>"; };
- 3538AA1B1D542239008EC33D /* MGLForegroundStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLForegroundStyleLayer.h; sourceTree = "<group>"; };
- 3538AA1C1D542239008EC33D /* MGLForegroundStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLForegroundStyleLayer.mm; sourceTree = "<group>"; };
- 353933F11D3FB753003F57D7 /* MGLCircleStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCircleStyleLayer.h; sourceTree = "<group>"; };
- 353933F41D3FB785003F57D7 /* MGLBackgroundStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLBackgroundStyleLayer.h; sourceTree = "<group>"; };
- 353933F71D3FB79F003F57D7 /* MGLLineStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLineStyleLayer.h; sourceTree = "<group>"; };
- 353933FA1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterStyleLayer.h; sourceTree = "<group>"; };
- 353933FD1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSymbolStyleLayer.h; sourceTree = "<group>"; };
- 353AFA121D65AB17005A69F4 /* NSDate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+MGLAdditions.h"; sourceTree = "<group>"; };
- 353AFA131D65AB17005A69F4 /* NSDate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSDate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 353BAEF51D646370009A8DA9 /* amsterdam.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = amsterdam.geojson; path = ../../darwin/test/amsterdam.geojson; sourceTree = "<group>"; };
- 353D23951D0B0DFE002BE09D /* MGLAnnotationViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAnnotationViewTests.m; sourceTree = "<group>"; };
- 354B83941D2E873E005D9406 /* MGLUserLocationAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationAnnotationView.h; sourceTree = "<group>"; };
- 354B83951D2E873E005D9406 /* MGLUserLocationAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLUserLocationAnnotationView.m; sourceTree = "<group>"; };
- 354B839A1D2E9B48005D9406 /* MBXUserLocationAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXUserLocationAnnotationView.h; sourceTree = "<group>"; };
- 354B839B1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXUserLocationAnnotationView.m; sourceTree = "<group>"; };
- 3557F7AE1E1D27D300CCA5E6 /* MGLDistanceFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLDistanceFormatter.h; sourceTree = "<group>"; };
- 3557F7AF1E1D27D300CCA5E6 /* MGLDistanceFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLDistanceFormatter.m; sourceTree = "<group>"; };
- 35599DEA1D46F14E0048254D /* MGLStyleValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyleValue.mm; sourceTree = "<group>"; };
- 355ADFFB1E9281DA00F3939D /* MGLScaleBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLScaleBar.h; sourceTree = "<group>"; };
- 355ADFFC1E9281DA00F3939D /* MGLScaleBar.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLScaleBar.mm; sourceTree = "<group>"; };
- 3566C7641D4A77BA008152BC /* MGLShapeSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeSource.h; sourceTree = "<group>"; };
- 3566C7651D4A77BA008152BC /* MGLShapeSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShapeSource.mm; sourceTree = "<group>"; };
- 3566C76A1D4A8DFA008152BC /* MGLRasterTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterTileSource.h; sourceTree = "<group>"; };
- 3566C76B1D4A8DFA008152BC /* MGLRasterTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRasterTileSource.mm; sourceTree = "<group>"; };
- 3566C7701D4A9198008152BC /* MGLSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSource_Private.h; sourceTree = "<group>"; };
- 3575797F1D501E09000B822E /* MGLFillStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLFillStyleLayerTests.mm; path = ../../darwin/test/MGLFillStyleLayerTests.mm; sourceTree = "<group>"; };
- 357579821D502AE6000B822E /* MGLRasterStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLRasterStyleLayerTests.mm; path = ../../darwin/test/MGLRasterStyleLayerTests.mm; sourceTree = "<group>"; };
- 357579841D502AF5000B822E /* MGLSymbolStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLSymbolStyleLayerTests.mm; path = ../../darwin/test/MGLSymbolStyleLayerTests.mm; sourceTree = "<group>"; };
- 357579861D502AFE000B822E /* MGLLineStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLLineStyleLayerTests.mm; path = ../../darwin/test/MGLLineStyleLayerTests.mm; sourceTree = "<group>"; };
- 357579881D502B06000B822E /* MGLCircleStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLCircleStyleLayerTests.mm; path = ../../darwin/test/MGLCircleStyleLayerTests.mm; sourceTree = "<group>"; };
- 3575798A1D502B0C000B822E /* MGLBackgroundStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLBackgroundStyleLayerTests.mm; path = ../../darwin/test/MGLBackgroundStyleLayerTests.mm; sourceTree = "<group>"; };
- 357FE2DB1E02D2B20068B753 /* NSCoder+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSCoder+MGLAdditions.h"; path = "../../darwin/src/NSCoder+MGLAdditions.h"; sourceTree = "<group>"; };
- 357FE2DC1E02D2B20068B753 /* NSCoder+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "NSCoder+MGLAdditions.mm"; path = "../../darwin/src/NSCoder+MGLAdditions.mm"; sourceTree = "<group>"; };
- 3598544C1E1D38AA00B29F84 /* MGLDistanceFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLDistanceFormatterTests.m; path = ../../darwin/test/MGLDistanceFormatterTests.m; sourceTree = "<group>"; };
- 359F57451D2FDBD5005217F1 /* MGLUserLocationAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationAnnotationView_Private.h; sourceTree = "<group>"; };
- 35B82BF61D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+MGLAdditions.h"; sourceTree = "<group>"; };
- 35B82BF71D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSPredicate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 35B8E08B1D6C8B5100E768D2 /* MGLPredicateTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLPredicateTests.mm; path = ../../darwin/test/MGLPredicateTests.mm; sourceTree = "<group>"; };
- 35CE61801D4165D9004F2359 /* UIColor+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+MGLAdditions.h"; sourceTree = "<group>"; };
- 35CE61811D4165D9004F2359 /* UIColor+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "UIColor+MGLAdditions.mm"; sourceTree = "<group>"; };
- 35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayer.h; sourceTree = "<group>"; };
- 35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyleLayer.mm; sourceTree = "<group>"; };
- 35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillStyleLayer.h; sourceTree = "<group>"; };
- 35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillStyleLayer.mm; sourceTree = "<group>"; };
- 35D9DDE11DA25EEC00DAAD69 /* MGLCodingTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLCodingTests.mm; path = ../../darwin/test/MGLCodingTests.mm; sourceTree = "<group>"; };
- 35DE35531EB7CBA8004917C5 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- 35E0CFE51D3E501500188327 /* MGLStyle_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyle_Private.h; sourceTree = "<group>"; };
- 35E1A4D71D74336F007AA97F /* MGLValueEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLValueEvaluator.h; sourceTree = "<group>"; };
- 35E79F1F1D41266300957B9E /* MGLStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayer_Private.h; sourceTree = "<group>"; };
- 36F1153C1D46080700878E1A /* libmbgl-platform-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libmbgl-platform-ios.a"; path = "build/Debug-iphoneos/libmbgl-platform-ios.a"; sourceTree = "<group>"; };
- 3E6465D42065767A00685536 /* LimeGreenStyleLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LimeGreenStyleLayer.m; path = ../../darwin/app/LimeGreenStyleLayer.m; sourceTree = "<group>"; };
- 3E6465D52065767A00685536 /* LimeGreenStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LimeGreenStyleLayer.h; path = ../../darwin/app/LimeGreenStyleLayer.h; sourceTree = "<group>"; };
- 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRendererConfiguration.mm; sourceTree = "<group>"; };
- 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRendererConfiguration.h; sourceTree = "<group>"; };
- 400532FF1DB0862B0069F638 /* NSArray+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+MGLAdditions.h"; sourceTree = "<group>"; };
- 400533001DB0862B0069F638 /* NSArray+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSArray+MGLAdditions.mm"; sourceTree = "<group>"; };
- 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationView_Private.h; sourceTree = "<group>"; };
- 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLAnnotationView.mm; sourceTree = "<group>"; };
- 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationView.h; sourceTree = "<group>"; };
- 402E9DE01CD2C76200FD4519 /* Mapbox.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Mapbox.playground; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
- 4031ACFE1E9FD29F00A3EA26 /* MGLSDKTestHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MGLSDKTestHelpers.swift; path = ../../darwin/test/MGLSDKTestHelpers.swift; sourceTree = "<group>"; };
- 404326881D5B9B1A007111BD /* MGLAnnotationContainerView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationContainerView_Private.h; sourceTree = "<group>"; };
- 4049C29B1DB6CD6C00B3F799 /* MGLPointCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointCollection.h; sourceTree = "<group>"; };
- 4049C29C1DB6CD6C00B3F799 /* MGLPointCollection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPointCollection.mm; sourceTree = "<group>"; };
- 4049C2AB1DB6E05500B3F799 /* MGLPointCollection_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointCollection_Private.h; sourceTree = "<group>"; };
- 404C26E01D89B877000AA13D /* MGLTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTileSource.h; sourceTree = "<group>"; };
- 404C26E11D89B877000AA13D /* MGLTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLTileSource.mm; sourceTree = "<group>"; };
- 404C26E61D89C515000AA13D /* MGLTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTileSource_Private.h; sourceTree = "<group>"; };
- 406E99B11FFEFED500D9FFCC /* MMEEventLogReportViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEEventLogReportViewController.m; sourceTree = "<group>"; };
- 406E99B21FFEFED500D9FFCC /* MMEUINavigation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEUINavigation.m; sourceTree = "<group>"; };
- 406E99B31FFEFED600D9FFCC /* MMEUINavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEUINavigation.h; sourceTree = "<group>"; };
- 406E99B51FFEFED600D9FFCC /* MMEEventLogReportViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEEventLogReportViewController.h; sourceTree = "<group>"; };
- 40834AEF1FDF4F0100C1BD0D /* Mapbox-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Mapbox-Prefix.pch"; path = "src/Mapbox-Prefix.pch"; sourceTree = SOURCE_ROOT; };
- 40834BA31FE05D6B00C1BD0D /* MMEEventsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEEventsManager.h; sourceTree = "<group>"; };
- 40834BA41FE05D6B00C1BD0D /* MMEEventsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEEventsManager.m; sourceTree = "<group>"; };
- 40834BA51FE05D6B00C1BD0D /* MMEAPIClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEAPIClient.m; sourceTree = "<group>"; };
- 40834BA61FE05D6B00C1BD0D /* MMEEventLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEEventLogger.h; sourceTree = "<group>"; };
- 40834BAA1FE05D6C00C1BD0D /* MMENSURLSessionWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMENSURLSessionWrapper.h; sourceTree = "<group>"; };
- 40834BAB1FE05D6C00C1BD0D /* MMEAPIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEAPIClient.h; sourceTree = "<group>"; };
- 40834BAC1FE05D6C00C1BD0D /* MapboxMobileEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapboxMobileEvents.h; sourceTree = "<group>"; };
- 40834BAD1FE05D6C00C1BD0D /* MMEUniqueIdentifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEUniqueIdentifier.m; sourceTree = "<group>"; };
- 40834BAE1FE05D6C00C1BD0D /* MMECommonEventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMECommonEventData.h; sourceTree = "<group>"; };
- 40834BB01FE05D6C00C1BD0D /* MMEConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEConstants.h; sourceTree = "<group>"; };
- 40834BB11FE05D6D00C1BD0D /* MMEDependencyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEDependencyManager.h; sourceTree = "<group>"; };
- 40834BB21FE05D6D00C1BD0D /* MMEEventsConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEEventsConfiguration.m; sourceTree = "<group>"; };
- 40834BB31FE05D6D00C1BD0D /* MMELocationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMELocationManager.h; sourceTree = "<group>"; };
- 40834BB41FE05D6D00C1BD0D /* MMEDependencyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEDependencyManager.m; sourceTree = "<group>"; };
- 40834BB61FE05D6D00C1BD0D /* MMETypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMETypes.h; sourceTree = "<group>"; };
- 40834BB71FE05D6D00C1BD0D /* MMEEventLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEEventLogger.m; sourceTree = "<group>"; };
- 40834BB81FE05D6D00C1BD0D /* MMELocationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMELocationManager.m; sourceTree = "<group>"; };
- 40834BB91FE05D6E00C1BD0D /* MMETimerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMETimerManager.m; sourceTree = "<group>"; };
- 40834BBA1FE05D6E00C1BD0D /* MMEEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEEvent.h; sourceTree = "<group>"; };
- 40834BBB1FE05D6E00C1BD0D /* MMEEventsConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEEventsConfiguration.h; sourceTree = "<group>"; };
- 40834BBC1FE05D6E00C1BD0D /* MMEDate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEDate.m; sourceTree = "<group>"; };
- 40834BBE1FE05D6E00C1BD0D /* MMEUIApplicationWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEUIApplicationWrapper.h; sourceTree = "<group>"; };
- 40834BBF1FE05D6E00C1BD0D /* MMEUniqueIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEUniqueIdentifier.h; sourceTree = "<group>"; };
- 40834BC01FE05D6E00C1BD0D /* MMEConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEConstants.m; sourceTree = "<group>"; };
- 40834BC51FE05D6F00C1BD0D /* MMEDate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEDate.h; sourceTree = "<group>"; };
- 40834BC61FE05D7000C1BD0D /* MMENSURLSessionWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMENSURLSessionWrapper.m; sourceTree = "<group>"; };
- 40834BC71FE05D7000C1BD0D /* MMEEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEEvent.m; sourceTree = "<group>"; };
- 40834BC81FE05D7000C1BD0D /* MMENamespacedDependencies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMENamespacedDependencies.h; sourceTree = "<group>"; };
- 40834BC91FE05D7000C1BD0D /* MMETimerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMETimerManager.h; sourceTree = "<group>"; };
- 40834BCA1FE05D7000C1BD0D /* MMEUIApplicationWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEUIApplicationWrapper.m; sourceTree = "<group>"; };
- 40834BCC1FE05D7100C1BD0D /* MMEReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEReachability.h; sourceTree = "<group>"; };
- 40834BCD1FE05D7100C1BD0D /* MMEReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEReachability.m; sourceTree = "<group>"; };
- 40834BCE1FE05D7100C1BD0D /* MMECommonEventData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMECommonEventData.m; sourceTree = "<group>"; };
- 4085AF081D933DEA00F11B22 /* MGLTileSetTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLTileSetTests.mm; path = ../../darwin/test/MGLTileSetTests.mm; sourceTree = "<group>"; };
- 408AA8551DAEDA0800022900 /* NSDictionary+MGLAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+MGLAdditions.h"; sourceTree = "<group>"; };
- 408AA8561DAEDA0800022900 /* NSDictionary+MGLAdditions.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSDictionary+MGLAdditions.mm"; sourceTree = "<group>"; };
- 409D0A0C1ED614CE00C95D0C /* MGLAnnotationViewIntegrationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MGLAnnotationViewIntegrationTests.swift; sourceTree = "<group>"; };
- 409F43FC1E9E781C0048729D /* MGLMapViewDelegateIntegrationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MGLMapViewDelegateIntegrationTests.swift; sourceTree = "<group>"; };
- 40CF6DBA1DAC3C1800A4D18B /* MGLShape_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShape_Private.h; sourceTree = "<group>"; };
- 40CFA6501D787579008103BD /* MGLShapeSourceTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLShapeSourceTests.mm; path = ../../darwin/test/MGLShapeSourceTests.mm; sourceTree = "<group>"; };
- 40EDA1BD1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationContainerView.h; sourceTree = "<group>"; };
- 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAnnotationContainerView.m; sourceTree = "<group>"; };
- 40F8876F1D7A1DB8008ECB67 /* MGLShapeSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeSource_Private.h; sourceTree = "<group>"; };
- 40FDA7691CCAAA6800442548 /* MBXAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXAnnotationView.h; sourceTree = "<group>"; };
- 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXAnnotationView.m; sourceTree = "<group>"; };
- 550570C422958FB300228ECF /* MGLMapView+Impl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MGLMapView+Impl.mm"; sourceTree = "<group>"; };
- 550570C522958FB400228ECF /* MGLMapView+Impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+Impl.h"; sourceTree = "<group>"; };
- 554180411D2E97DE00012372 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
- 556660C91E1BF3A900E2C41B /* MGLFoundation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLFoundation.h; sourceTree = "<group>"; wrapsLines = 0; };
- 556660D71E1D085500E2C41B /* MGLVersionNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLVersionNumber.m; path = ../../darwin/test/MGLVersionNumber.m; sourceTree = "<group>"; };
- 5580B459229570A00091291B /* MGLMapView+OpenGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+OpenGL.h"; sourceTree = "<group>"; };
- 5580B45A229570A10091291B /* MGLMapView+OpenGL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MGLMapView+OpenGL.mm"; sourceTree = "<group>"; };
- 558DE79E1E5615E400C7916D /* MGLFoundation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFoundation_Private.h; sourceTree = "<group>"; };
- 558DE79F1E5615E400C7916D /* MGLFoundation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFoundation.mm; sourceTree = "<group>"; };
- 55CF752E213ED92000ED86C4 /* libmbgl-vendor-icu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-vendor-icu.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 55CF7530213ED92A00ED86C4 /* libmbgl-vendor-icu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-vendor-icu.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 55D120A71F791007004B6D81 /* libmbgl-loop-darwin.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-loop-darwin.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 55D120A91F79100C004B6D81 /* libmbgl-filesource.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-filesource.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 55D8C9941D0F133500F42F10 /* config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = config.xcconfig; path = ../../build/ios/config.xcconfig; sourceTree = "<group>"; };
- 55D8C9951D0F18CE00F42F10 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
- 55E2AD121E5B125400E8C587 /* MGLOfflineStorageTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLOfflineStorageTests.mm; path = ../../darwin/test/MGLOfflineStorageTests.mm; sourceTree = "<group>"; };
- 632281DD1E6F855900D75A5D /* MBXEmbeddedMapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXEmbeddedMapViewController.h; sourceTree = "<group>"; };
- 632281DE1E6F855900D75A5D /* MBXEmbeddedMapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXEmbeddedMapViewController.m; sourceTree = "<group>"; };
- 6407D66F1E0085FD00F6A9C3 /* MGLDocumentationExampleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MGLDocumentationExampleTests.swift; path = ../../darwin/test/MGLDocumentationExampleTests.swift; sourceTree = "<group>"; };
- 6FA9341521EF372100AA9CA8 /* MBXOrnamentsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXOrnamentsViewController.m; sourceTree = "<group>"; };
- 6FA9341621EF372100AA9CA8 /* MBXOrnamentsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXOrnamentsViewController.h; sourceTree = "<group>"; };
- 6FAFA29A220023840088709E /* UIView+MGLAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+MGLAdditions.h"; sourceTree = "<group>"; };
- 6FAFA29B220023840088709E /* UIView+MGLAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+MGLAdditions.m"; sourceTree = "<group>"; };
- 74CB5EAF219B252C00102936 /* MGLStyleLayerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayerManager.h; sourceTree = "<group>"; };
- 74CB5EB0219B252C00102936 /* MGLStyleLayerManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyleLayerManager.mm; sourceTree = "<group>"; };
- 74CB5EB5219B280300102936 /* MGLHillshadeStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHillshadeStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EB6219B280300102936 /* MGLFillExtrusionStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillExtrusionStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EB7219B280300102936 /* MGLFillStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EB8219B280300102936 /* MGLHeatmapStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHeatmapStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EC1219B282500102936 /* MGLCircleStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCircleStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EC2219B282500102936 /* MGLBackgroundStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLBackgroundStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EC7219B285000102936 /* MGLLineStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLineStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EC8219B285000102936 /* MGLOpenGLStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOpenGLStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5EC9219B285000102936 /* MGLRasterStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterStyleLayer_Private.h; sourceTree = "<group>"; };
- 74CB5ED0219B286400102936 /* MGLSymbolStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSymbolStyleLayer_Private.h; sourceTree = "<group>"; };
- 8989B17A201A48EA0081CF59 /* MGLHeatmapStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHeatmapStyleLayer.h; sourceTree = "<group>"; };
- 8989B17B201A48EA0081CF59 /* MGLHeatmapStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLHeatmapStyleLayer.mm; sourceTree = "<group>"; };
- 920A3E5C1E6F995200C16EFC /* MGLSourceQueryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLSourceQueryTests.m; path = ../../darwin/test/MGLSourceQueryTests.m; sourceTree = "<group>"; };
- 9221BAAC2069843A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTilePyramidOfflineRegion_Private.h; sourceTree = "<group>"; };
- 927FBCFA1F4DAA8300F8BF1F /* MBXSnapshotsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXSnapshotsViewController.h; sourceTree = "<group>"; };
- 927FBCFB1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXSnapshotsViewController.m; sourceTree = "<group>"; };
- 927FBCFD1F4DB05500F8BF1F /* MGLMapSnapshotter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapSnapshotter.h; sourceTree = "<group>"; };
- 927FBCFE1F4DB05500F8BF1F /* MGLMapSnapshotter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapSnapshotter.mm; sourceTree = "<group>"; wrapsLines = 0; };
- 92F2C3EC1F0E3C3A00268EC0 /* MGLRendererFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRendererFrontend.h; sourceTree = "<group>"; };
- 92FC0AE7207CEE16007B6B54 /* MGLShapeOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeOfflineRegion.h; sourceTree = "<group>"; };
- 92FC0AE8207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeOfflineRegion_Private.h; sourceTree = "<group>"; };
- 92FC0AE9207CEE16007B6B54 /* MGLShapeOfflineRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShapeOfflineRegion.mm; sourceTree = "<group>"; };
- 960369FF200565C700510F3D /* NSOrthography+MGLAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSOrthography+MGLAdditions.h"; sourceTree = "<group>"; };
- 96036A00200565C700510F3D /* NSOrthography+MGLAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSOrthography+MGLAdditions.m"; sourceTree = "<group>"; };
- 96036A0520059BBA00510F3D /* MGLNSOrthographyAdditionsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLNSOrthographyAdditionsTests.m; sourceTree = "<group>"; };
- 960D0C351ECF5AAF008E151F /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
- 9620BB361E69FE1700705A1D /* MGLSDKUpdateChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSDKUpdateChecker.h; sourceTree = "<group>"; };
- 9620BB371E69FE1700705A1D /* MGLSDKUpdateChecker.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = MGLSDKUpdateChecker.mm; sourceTree = "<group>"; };
- 96381C0122C6F3950053497D /* MGLMapViewPitchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLMapViewPitchTests.m; sourceTree = "<group>"; };
- 9641771E22D546DA00332422 /* MGLCompassButton_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLCompassButton_Private.h; sourceTree = "<group>"; };
- 9654C1251FFC1AB900DB6A19 /* MGLPolyline_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolyline_Private.h; sourceTree = "<group>"; };
- 9654C1271FFC1CC000DB6A19 /* MGLPolygon_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolygon_Private.h; sourceTree = "<group>"; };
- 9658C154204761FC00D8A674 /* MGLMapViewScaleBarTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLMapViewScaleBarTests.m; sourceTree = "<group>"; };
- 965DF50F20F9430500438AAC /* MBXFrameTimeGraphView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXFrameTimeGraphView.h; sourceTree = "<group>"; };
- 965DF51020F9430500438AAC /* MBXFrameTimeGraphView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXFrameTimeGraphView.m; sourceTree = "<group>"; };
- 9660916B1E5BBFD700A9A03B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
- 9660916C1E5BBFD900A9A03B /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
- 9660916D1E5BBFDB00A9A03B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
- 9660916E1E5BBFDC00A9A03B /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = "<group>"; };
- 9660916F1E5BBFDE00A9A03B /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Localizable.strings; sourceTree = "<group>"; };
- 966FCF4A1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationHeadingBeamLayer.h; sourceTree = "<group>"; };
- 966FCF4B1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLUserLocationHeadingBeamLayer.m; sourceTree = "<group>"; };
- 966FCF501F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationHeadingArrowLayer.h; sourceTree = "<group>"; };
- 966FCF511F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLUserLocationHeadingArrowLayer.m; sourceTree = "<group>"; };
- 967C8649210A9D3C004DF794 /* UIDevice+MGLAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIDevice+MGLAdditions.h"; sourceTree = "<group>"; };
- 967C864A210A9D3C004DF794 /* UIDevice+MGLAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+MGLAdditions.m"; sourceTree = "<group>"; };
- 9680273E22653B84006BA4A1 /* MBXSKUToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MBXSKUToken.h; path = "../vendor/mapbox-accounts-ios/MBXSKUToken.h"; sourceTree = "<group>"; };
- 9680274122653C3E006BA4A1 /* libmbxaccounts.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmbxaccounts.a; path = "vendor/mapbox-accounts-ios/libmbxaccounts.a"; sourceTree = SOURCE_ROOT; };
- 9686D1BC22D9357700194EA0 /* MGLMapViewZoomTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapViewZoomTests.mm; sourceTree = "<group>"; };
- 968F36B41E4D0FC6003A5522 /* ja */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027241E57C76E004B8E66 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027271E57C77A004B8E66 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027281E57C7DB004B8E66 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
- 96E027291E57C7DE004B8E66 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
- 96E0272A1E57C7DF004B8E66 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E0272B1E57C7E3004B8E66 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E0272C1E57C7E5004B8E66 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E0272D1E57C7E6004B8E66 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E0272E1E57C7E7004B8E66 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
- 96E6145522CC135200109F14 /* MGLMapViewCompassViewTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapViewCompassViewTests.mm; sourceTree = "<group>"; };
- 96E6145722CC169000109F14 /* MGLCompassButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLCompassButton.h; sourceTree = "<group>"; };
- 96E6145822CC169000109F14 /* MGLCompassButton.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLCompassButton.mm; sourceTree = "<group>"; };
- 96ED34DD22374C0900E9FCA9 /* MGLMapViewDirectionTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapViewDirectionTests.mm; sourceTree = "<group>"; };
- 96F017292118FBAE00892778 /* MGLMapView_Experimental.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView_Experimental.h; sourceTree = "<group>"; };
- 96F3F73B1F5711F1003E2D2C /* MGLUserLocationHeadingIndicator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationHeadingIndicator.h; sourceTree = "<group>"; };
- 9C6E280922A97FDB0056B7BE /* MMECategoryLoader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMECategoryLoader.m; sourceTree = "<group>"; };
- 9C6E280A22A97FDB0056B7BE /* UIKit+MMEMobileEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIKit+MMEMobileEvents.h"; sourceTree = "<group>"; };
- 9C6E280B22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CLLocation+MMEMobileEvents.h"; sourceTree = "<group>"; };
- 9C6E280C22A97FDB0056B7BE /* NSData+MMEGZIP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+MMEGZIP.h"; sourceTree = "<group>"; };
- 9C6E280D22A97FDB0056B7BE /* NSData+MMEGZIP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+MMEGZIP.m"; sourceTree = "<group>"; };
- 9C6E280E22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CLLocation+MMEMobileEvents.m"; sourceTree = "<group>"; };
- 9C6E280F22A97FDB0056B7BE /* UIKit+MMEMobileEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIKit+MMEMobileEvents.m"; sourceTree = "<group>"; };
- 9C6E281022A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CLLocationManager+MMEMobileEvents.h"; sourceTree = "<group>"; };
- 9C6E281122A97FDB0056B7BE /* MMECategoryLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMECategoryLoader.h; sourceTree = "<group>"; };
- 9C6E281222A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CLLocationManager+MMEMobileEvents.m"; sourceTree = "<group>"; };
- 9C6E282922A980E50056B7BE /* MGLMapboxEvents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MGLMapboxEvents.h; path = src/MGLMapboxEvents.h; sourceTree = SOURCE_ROOT; };
- 9C6E282A22A980E50056B7BE /* MGLMapboxEvents.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLMapboxEvents.m; path = src/MGLMapboxEvents.m; sourceTree = SOURCE_ROOT; };
- 9C6E284822A984120056B7BE /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../Makefile; sourceTree = "<group>"; };
- 9C6E285A22A9849E0056B7BE /* install-packaging-dependencies.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-packaging-dependencies.sh"; sourceTree = "<group>"; };
- 9C6E285B22A9849E0056B7BE /* ios-code-coverage.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "ios-code-coverage.sh"; sourceTree = "<group>"; };
- 9C6E285C22A9849E0056B7BE /* release-notes-github.md.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = "release-notes-github.md.ejs"; sourceTree = "<group>"; };
- 9C6E285D22A9849E0056B7BE /* document.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = document.sh; sourceTree = "<group>"; };
- 9C6E285E22A9849E0056B7BE /* check-events-symbols.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "check-events-symbols.sh"; sourceTree = "<group>"; };
- 9C6E285F22A9849E0056B7BE /* deploy-packages.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "deploy-packages.sh"; sourceTree = "<group>"; };
- 9C6E286022A9849E0056B7BE /* publish.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = publish.sh; sourceTree = "<group>"; };
- 9C6E286122A9849E0056B7BE /* validate-framework-zip.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "validate-framework-zip.sh"; sourceTree = "<group>"; };
- 9C6E286222A9849E0056B7BE /* metrics.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = metrics.sh; sourceTree = "<group>"; };
- 9C6E286322A9849E0056B7BE /* package.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package.sh; sourceTree = "<group>"; };
- 9C6E286422A9849E0056B7BE /* trigger-external-deploy-steps.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "trigger-external-deploy-steps.sh"; sourceTree = "<group>"; };
- 9C6E286522A9849E0056B7BE /* release-notes-jazzy.md.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = "release-notes-jazzy.md.ejs"; sourceTree = "<group>"; };
- 9C6E286622A9849E0056B7BE /* deploy-snapshot.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "deploy-snapshot.sh"; sourceTree = "<group>"; };
- 9C6E286722A9849E0056B7BE /* release-notes.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "release-notes.js"; sourceTree = "<group>"; };
- A4DE3DC823038A07005B3473 /* MGLMockGestureRecognizers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLMockGestureRecognizers.m; sourceTree = "<group>"; };
- A4DE3DCA23038A7F005B3473 /* MGLMockGestureRecognizers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMockGestureRecognizers.h; sourceTree = "<group>"; };
- A4F3FB1C2254865900A30170 /* missing_icon.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = missing_icon.json; sourceTree = "<group>"; };
- AC46EB57225E60090039C013 /* MMECertPin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMECertPin.h; sourceTree = "<group>"; };
- AC46EB58225E60090039C013 /* MMECertPin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMECertPin.m; sourceTree = "<group>"; };
- AC46EB5D225E60510039C013 /* MMEPinningConfigurationProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEPinningConfigurationProvider.m; sourceTree = "<group>"; };
- AC46EB5E225E60510039C013 /* MMEPinningConfigurationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEPinningConfigurationProvider.h; sourceTree = "<group>"; };
- AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLTelemetryConfig.h; sourceTree = "<group>"; };
- AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLTelemetryConfig.m; sourceTree = "<group>"; };
- ACA65F4F214066E200537748 /* MMEConfigurator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEConfigurator.h; sourceTree = "<group>"; };
- ACA65F50214066E600537748 /* MMEConfigurator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEConfigurator.m; sourceTree = "<group>"; };
- ACA65F552140696B00537748 /* MMEDispatchManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEDispatchManager.h; sourceTree = "<group>"; };
- ACA65F562140697100537748 /* MMEDispatchManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEDispatchManager.m; sourceTree = "<group>"; };
- ACD024542187EAAF00D8C8A7 /* MMEMetricsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEMetricsManager.m; sourceTree = "<group>"; };
- ACD024552187EAAF00D8C8A7 /* MMEMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEMetrics.h; sourceTree = "<group>"; };
- ACD024562187EAAF00D8C8A7 /* MMEMetricsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMEMetricsManager.h; sourceTree = "<group>"; };
- ACD024572187EAAF00D8C8A7 /* MMEMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMEMetrics.m; sourceTree = "<group>"; };
- CA0C27912076C804001CE5B7 /* MGLShapeSourceTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLShapeSourceTests.m; sourceTree = "<group>"; };
- CA0C27932076CA19001CE5B7 /* MGLMapViewIntegrationTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLMapViewIntegrationTest.m; sourceTree = "<group>"; wrapsLines = 0; };
- CA0C27952076CA50001CE5B7 /* MGLMapViewIntegrationTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLMapViewIntegrationTest.h; sourceTree = "<group>"; };
- CA1B4A502099FB2200EDD491 /* MGLMapSnapshotterTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLMapSnapshotterTest.m; sourceTree = "<group>"; };
- CA4C54FD2324948100A81659 /* MGLSourceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MGLSourceTests.swift; sourceTree = "<group>"; };
- CA4EB8C620863487006AB465 /* MGLStyleLayerIntegrationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLStyleLayerIntegrationTests.m; sourceTree = "<group>"; };
- CA4F3BDD230F74C3008BAFEA /* MGLMapViewPendingBlockTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLMapViewPendingBlockTests.m; sourceTree = "<group>"; };
- CA4F3BE123107793008BAFEA /* MGLCameraTransitionTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLCameraTransitionTests.mm; sourceTree = "<group>"; };
- CA4F3BE3231077B9008BAFEA /* MGLCameraTransitionFinishTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLCameraTransitionFinishTests.mm; sourceTree = "<group>"; };
- CA55CD3E202C16AA00CE7095 /* MGLCameraChangeReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCameraChangeReason.h; sourceTree = "<group>"; };
- CA5E5042209BDC5F001A8A81 /* MGLTestUtility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MGLTestUtility.h; path = ../../darwin/test/MGLTestUtility.h; sourceTree = "<group>"; };
- CA65C4F721E9BB080068B0D4 /* MGLCluster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCluster.h; sourceTree = "<group>"; };
- CA6914B420E67F50002DB0EE /* MGLAnnotationViewIntegrationTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLAnnotationViewIntegrationTests.mm; path = "Annotation Tests/MGLAnnotationViewIntegrationTests.mm"; sourceTree = "<group>"; };
- CA86FF0D22D8D5A0009EB14A /* MGLNetworkConfigurationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLNetworkConfigurationTests.m; sourceTree = "<group>"; };
- CA88DC2F21C85D900059ED5A /* MGLStyleURLIntegrationTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLStyleURLIntegrationTest.m; sourceTree = "<group>"; };
- CA8FBC0821A47BB100D1203C /* MGLRendererConfigurationTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLRendererConfigurationTests.mm; path = ../../darwin/test/MGLRendererConfigurationTests.mm; sourceTree = "<group>"; };
- CAAA65D72321BBA900F08A39 /* MGLTestAssertionHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MGLTestAssertionHandler.h; path = ../../darwin/test/MGLTestAssertionHandler.h; sourceTree = "<group>"; };
- CAAA65D82321BBA900F08A39 /* MGLTestAssertionHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLTestAssertionHandler.m; path = ../../darwin/test/MGLTestAssertionHandler.m; sourceTree = "<group>"; };
- CAD9D0A922A86D6F001B25EE /* MGLResourceTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLResourceTests.mm; path = ../../darwin/test/MGLResourceTests.mm; sourceTree = "<group>"; };
- CAE7AD5320F46EF5003B6782 /* integration-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "integration-Bridging-Header.h"; sourceTree = "<group>"; };
- CAE7AD5420F46EF5003B6782 /* MGLMapSnapshotterSwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MGLMapSnapshotterSwiftTests.swift; sourceTree = "<group>"; };
- CAFB3C13234505D500399265 /* MGLMapSnapshotter_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLMapSnapshotter_Private.h; sourceTree = "<group>"; };
- CF75A91422D85E860058A5C4 /* MGLLoggingConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLoggingConfiguration.mm; sourceTree = "<group>"; };
- CFF9F98423A24BF400B0DE92 /* MGLNetworkIntegrationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLNetworkIntegrationManager.h; path = ../../darwin/src/MGLNetworkIntegrationManager.h; sourceTree = "<group>"; };
- CFF9F98523A24BF400B0DE92 /* MGLNetworkIntegrationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLNetworkIntegrationManager.m; path = ../../darwin/src/MGLNetworkIntegrationManager.m; sourceTree = "<group>"; };
- DA00FC8C1D5EEB0D009AABC8 /* MGLAttributionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAttributionInfo.h; sourceTree = "<group>"; };
- DA00FC8D1D5EEB0D009AABC8 /* MGLAttributionInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLAttributionInfo.mm; sourceTree = "<group>"; };
- DA0CD58F1CF56F6A00A5F5A5 /* MGLFeatureTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLFeatureTests.mm; path = ../../darwin/test/MGLFeatureTests.mm; sourceTree = "<group>"; };
- DA17BE2F1CC4BAC300402C41 /* MGLMapView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView_Private.h; sourceTree = "<group>"; };
- DA1AC01B1E5B8774006DF1D6 /* lt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA1AC0201E5B8917006DF1D6 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mapbox GL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- DA1DC9501CB6C1C2006E619F /* MBXAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXAppDelegate.h; sourceTree = "<group>"; };
- DA1DC9531CB6C1C2006E619F /* MBXViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXViewController.h; sourceTree = "<group>"; };
- DA1DC95E1CB6C1C2006E619F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- DA1DC9661CB6C6B7006E619F /* MBXCustomCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXCustomCalloutView.h; sourceTree = "<group>"; };
- DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXCustomCalloutView.m; sourceTree = "<group>"; };
- DA1DC9681CB6C6B7006E619F /* MBXOfflinePacksTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXOfflinePacksTableViewController.h; sourceTree = "<group>"; };
- DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXOfflinePacksTableViewController.m; sourceTree = "<group>"; };
- DA1DC96C1CB6C6CE006E619F /* points.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = points.geojson; sourceTree = "<group>"; };
- DA1DC96D1CB6C6CE006E619F /* polyline.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = polyline.geojson; sourceTree = "<group>"; };
- DA1DC96F1CB6C6CE006E619F /* threestates.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = threestates.geojson; sourceTree = "<group>"; };
- DA1DC9961CB6E046006E619F /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXAppDelegate.m; sourceTree = "<group>"; };
- DA1DC99A1CB6E064006E619F /* MBXViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXViewController.m; sourceTree = "<group>"; };
- DA1DC99E1CB6E088006E619F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
- DA1F8F3C1EBD287B00367E42 /* MGLDocumentationGuideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MGLDocumentationGuideTests.swift; path = ../../darwin/test/MGLDocumentationGuideTests.swift; sourceTree = "<group>"; };
- DA2784FB1DF02FF4001D5B8D /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Media.xcassets; path = ../../darwin/test/Media.xcassets; sourceTree = "<group>"; };
- DA27C24D1CBB3811000B0ECD /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
- DA2DBBCC1D51E80400D38FF9 /* MGLStyleLayerTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLStyleLayerTests.h; path = ../../darwin/test/MGLStyleLayerTests.h; sourceTree = "<group>"; };
- DA2DBBCD1D51E80400D38FF9 /* MGLStyleLayerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLStyleLayerTests.m; path = ../../darwin/test/MGLStyleLayerTests.m; sourceTree = "<group>"; };
- DA2E88511CC036F400F24E7B /* test.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = test.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- DA2E88551CC036F400F24E7B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- DA2E885C1CC0382C00F24E7B /* MGLGeometryTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLGeometryTests.mm; path = ../../darwin/test/MGLGeometryTests.mm; sourceTree = "<group>"; };
- DA2E885D1CC0382C00F24E7B /* MGLOfflinePackTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLOfflinePackTests.mm; path = ../../darwin/test/MGLOfflinePackTests.mm; sourceTree = "<group>"; };
- DA2E885E1CC0382C00F24E7B /* MGLOfflineRegionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLOfflineRegionTests.m; path = ../../darwin/test/MGLOfflineRegionTests.m; sourceTree = "<group>"; };
- DA2E88601CC0382C00F24E7B /* MGLStyleTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLStyleTests.mm; path = ../../darwin/test/MGLStyleTests.mm; sourceTree = "<group>"; };
- DA33895F1FA3EAB7001EA329 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Foundation.strings"; sourceTree = "<group>"; };
- DA3389651FA3EE1B001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA3389661FA3EE28001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA3389671FA3EE2F001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = bg; path = bg.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA3389681FA3EE48001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA3389691FA3EE50001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = bg; path = bg.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DA33896B1FA3EF4A001EA329 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = hu; path = hu.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCoordinateFormatter.h; sourceTree = "<group>"; };
- DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCoordinateFormatter.m; sourceTree = "<group>"; };
- DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCoordinateFormatterTests.m; path = ../../darwin/test/MGLCoordinateFormatterTests.m; sourceTree = "<group>"; };
- DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCompassDirectionFormatter.h; sourceTree = "<group>"; };
- DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCompassDirectionFormatter.m; sourceTree = "<group>"; };
- DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLClockDirectionFormatter.m; sourceTree = "<group>"; };
- DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLClockDirectionFormatter.h; sourceTree = "<group>"; };
- DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLClockDirectionFormatterTests.m; path = ../../darwin/test/MGLClockDirectionFormatterTests.m; sourceTree = "<group>"; };
- DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCompassDirectionFormatterTests.m; path = ../../darwin/test/MGLCompassDirectionFormatterTests.m; sourceTree = "<group>"; };
- DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+MGLAdditions.h"; sourceTree = "<group>"; };
- DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValue+MGLAdditions.m"; sourceTree = "<group>"; };
- DA35A2D11CCAB25200E826B2 /* jazzy.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = jazzy.yml; sourceTree = "<group>"; };
- DA35D0871E1A6309007DED41 /* one-liner.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "one-liner.json"; path = "../../darwin/test/one-liner.json"; sourceTree = "<group>"; };
- DA3C6FF21E2859E700F962BE /* test-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "test-Bridging-Header.h"; path = "../../darwin/test/test-Bridging-Header.h"; sourceTree = "<group>"; };
- DA4A26961CB6E795000B7809 /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- DA57D4AA1EBA8ED300793288 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DA57D4AB1EBA909900793288 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = lt; path = lt.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DA57D4AC1EBA922A00793288 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = vi; path = vi.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DA5C09BA1EFC48550056B178 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA5C09BB1EFC486C0056B178 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA5DB1291FABF1EE001C2326 /* MGLMapAccessibilityElementTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MGLMapAccessibilityElementTests.m; sourceTree = "<group>"; };
- DA6023F11E4CE94300DBFF23 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA6023F21E4CE94800DBFF23 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA618B111E68823600CB7F44 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DA618B191E68883700CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ca; path = ca.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DA618B1A1E68883900CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA618B1B1E68884E00CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA618B1C1E6888EC00CB7F44 /* ca */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA618B1D1E6888F500CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ca; path = ca.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA618B251E68920500CB7F44 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA618B261E68920D00CB7F44 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = lt; path = lt.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA618B2B1E68932D00CB7F44 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA6408D91DA4E7D300908C90 /* MGLVectorStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLVectorStyleLayer.h; sourceTree = "<group>"; };
- DA6408DA1DA4E7D300908C90 /* MGLVectorStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLVectorStyleLayer.mm; sourceTree = "<group>"; };
- DA695425215B1E75002041A4 /* MGLMapCameraTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLMapCameraTests.m; path = ../../darwin/test/MGLMapCameraTests.m; sourceTree = "<group>"; };
- DA704CBB1F637311004B3F28 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA704CBC1F637405004B3F28 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DA704CBD1F63746E004B3F28 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.stringsdict"; sourceTree = "<group>"; };
- DA704CC01F65A475004B3F28 /* MGLMapAccessibilityElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapAccessibilityElement.h; sourceTree = "<group>"; };
- DA704CC11F65A475004B3F28 /* MGLMapAccessibilityElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapAccessibilityElement.mm; sourceTree = "<group>"; };
- DA704CC71F6663A3004B3F28 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA7262091DEEE3480043BB89 /* MGLOpenGLStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOpenGLStyleLayer.h; sourceTree = "<group>"; };
- DA72620A1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOpenGLStyleLayer.mm; sourceTree = "<group>"; };
- DA737ADA1E59139D00AD2CDE /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA737ADB1E5913BA00AD2CDE /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA737AE01E59150A00AD2CDE /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = pl; path = pl.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA737AE51E5916D400AD2CDE /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA737AE71E59172C00AD2CDE /* ru */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA737AE91E5917C300AD2CDE /* uk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapViewDelegate.h; sourceTree = "<group>"; };
- DA80E9601FE84AD90065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA80E9611FE84AEF0065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
- DA821D051CCC6D59007508D4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
- DA8847D21CBAF91600AB86E3 /* Mapbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- DA8847D61CBAF91600AB86E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAccountManager.h; sourceTree = "<group>"; };
- DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotation.h; sourceTree = "<group>"; };
- DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLGeometry.h; sourceTree = "<group>"; };
- DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapCamera.h; sourceTree = "<group>"; };
- DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMultiPoint.h; sourceTree = "<group>"; };
- DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflinePack.h; sourceTree = "<group>"; };
- DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineRegion.h; sourceTree = "<group>"; };
- DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineStorage.h; sourceTree = "<group>"; };
- DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOverlay.h; sourceTree = "<group>"; };
- DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointAnnotation.h; sourceTree = "<group>"; };
- DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolygon.h; sourceTree = "<group>"; };
- DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolyline.h; sourceTree = "<group>"; };
- DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShape.h; sourceTree = "<group>"; };
- DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyle.h; sourceTree = "<group>"; };
- DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTilePyramidOfflineRegion.h; sourceTree = "<group>"; };
- DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTypes.h; sourceTree = "<group>"; };
- DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAccountManager_Private.h; sourceTree = "<group>"; };
- DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAccountManager.m; sourceTree = "<group>"; };
- DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLGeometry_Private.h; sourceTree = "<group>"; };
- DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLGeometry.mm; sourceTree = "<group>"; };
- DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapCamera.mm; sourceTree = "<group>"; };
- DA8848041CBAFA6200AB86E3 /* MGLMultiPoint_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMultiPoint_Private.h; sourceTree = "<group>"; };
- DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMultiPoint.mm; sourceTree = "<group>"; };
- DA8848061CBAFA6200AB86E3 /* MGLOfflinePack_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflinePack_Private.h; sourceTree = "<group>"; };
- DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOfflinePack.mm; sourceTree = "<group>"; };
- DA8848081CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineRegion_Private.h; sourceTree = "<group>"; };
- DA8848091CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineStorage_Private.h; sourceTree = "<group>"; };
- DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOfflineStorage.mm; sourceTree = "<group>"; };
- DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPointAnnotation.mm; sourceTree = "<group>"; };
- DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPolygon.mm; sourceTree = "<group>"; };
- DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPolyline.mm; sourceTree = "<group>"; };
- DA88480E1CBAFA6200AB86E3 /* MGLShape.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShape.mm; sourceTree = "<group>"; };
- DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyle.mm; sourceTree = "<group>"; };
- DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLTilePyramidOfflineRegion.mm; sourceTree = "<group>"; };
- DA8848111CBAFA6200AB86E3 /* MGLTypes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLTypes.m; sourceTree = "<group>"; };
- DA8848121CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+MGLAdditions.h"; sourceTree = "<group>"; };
- DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+MGLAdditions.m"; sourceTree = "<group>"; };
- DA8848141CBAFA6200AB86E3 /* NSException+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSException+MGLAdditions.h"; sourceTree = "<group>"; };
- DA8848171CBAFA6200AB86E3 /* NSString+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MGLAdditions.h"; sourceTree = "<group>"; };
- DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MGLAdditions.m"; sourceTree = "<group>"; };
- DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage.h; sourceTree = "<group>"; };
- DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCalloutView.h; sourceTree = "<group>"; };
- DA8848361CBAFB8500AB86E3 /* MGLMapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView.h; sourceTree = "<group>"; };
- DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+IBAdditions.h"; sourceTree = "<group>"; };
- DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocation.h; sourceTree = "<group>"; };
- DA8848401CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage_Private.h; sourceTree = "<group>"; };
- DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAnnotationImage.m; sourceTree = "<group>"; };
- DA8848441CBAFB9800AB86E3 /* MGLCompactCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCompactCalloutView.h; sourceTree = "<group>"; };
- DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCompactCalloutView.m; sourceTree = "<group>"; };
- DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapView.mm; sourceTree = "<group>"; };
- DA88484B1CBAFB9800AB86E3 /* MGLUserLocation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocation_Private.h; sourceTree = "<group>"; };
- DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLUserLocation.m; sourceTree = "<group>"; };
- DA88484D1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFaux3DUserLocationAnnotationView.h; sourceTree = "<group>"; };
- DA88484E1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLFaux3DUserLocationAnnotationView.m; sourceTree = "<group>"; };
- DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mapbox.h; path = src/Mapbox.h; sourceTree = SOURCE_ROOT; };
- DA8848891CBB037E00AB86E3 /* SMCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = "<group>"; };
- DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMCalloutView.m; sourceTree = "<group>"; };
- DA8933A01CCC951200E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA8933BB1CCD2CA100E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA8933BE1CCD2CAD00E68420 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA8933D51CCD306400E68420 /* Mapbox.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Mapbox.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
- DA8933EF1CCD387900E68420 /* strip-frameworks.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "strip-frameworks.sh"; path = "framework/strip-frameworks.sh"; sourceTree = SOURCE_ROOT; };
- DA8933F11CCD3FD700E68420 /* Info-static.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-static.plist"; sourceTree = "<group>"; };
- DA8963331CC549A100684375 /* glyphs */ = {isa = PBXFileReference; lastKnownFileType = folder; path = glyphs; sourceTree = "<group>"; };
- DA8963341CC549A100684375 /* sprites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = sprites; sourceTree = "<group>"; };
- DA8963351CC549A100684375 /* styles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = styles; sourceTree = "<group>"; };
- DA8963361CC549A100684375 /* tiles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = tiles; sourceTree = "<group>"; };
- DA8F25B91D51D2570010E6B5 /* MGLStyleLayerTests.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; name = MGLStyleLayerTests.mm.ejs; path = ../test/MGLStyleLayerTests.mm.ejs; sourceTree = "<group>"; };
- DA8F25BA1D51D2570010E6B5 /* MGLStyleLayer.h.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.h.ejs; sourceTree = "<group>"; };
- DA8F25BB1D51D2570010E6B5 /* MGLStyleLayer.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.mm.ejs; sourceTree = "<group>"; };
- DA93409B208562EB0059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DA93409C2085630C0059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-PT"; path = "pt-PT.lproj/Foundation.stringsdict"; sourceTree = "<group>"; };
- DA93409D208563220059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DA93409E208563360059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-PT"; path = "pt-PT.lproj/Localizable.stringsdict"; sourceTree = "<group>"; };
- DA9C012B1E4C7AD900C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-BR"; path = "pt-BR.lproj/Localizable.stringsdict"; sourceTree = "<group>"; };
- DA9C012C1E4C7ADB00C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-BR"; path = "pt-BR.lproj/Foundation.stringsdict"; sourceTree = "<group>"; };
- DA9C012D1E4C7B1F00C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DAA32CA11E4C44DB006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAA32CA21E4C44DD006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DAA32CA31E4C44F1006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAA32CA41E4C4502006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CA91E4C4919006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DAA32CAB1E4C491A006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAA32CAC1E4C4971006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CB51E4C4CF4006F8D24 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAA32CB71E4C4ED8006F8D24 /* sv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CBC1E4C4F5D006F8D24 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CBD1E4C4F62006F8D24 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAA4E4021CBB5C2F00178DFB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
- DAA4E4041CBB5C9E00178DFB /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
- DAA4E4061CBB5CBF00178DFB /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
- DAA4E4131CBB71D400178DFB /* libMapbox.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMapbox.a; sourceTree = BUILT_PRODUCTS_DIR; };
- DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libmbgl-core.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- DAAE9B1C213A636B00F7D722 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DAAF72291DA903C700312FA4 /* MGLStyleValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleValue.h; sourceTree = "<group>"; };
- DAAF722A1DA903C700312FA4 /* MGLStyleValue_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleValue_Private.h; sourceTree = "<group>"; };
- DABCABA81CB80692000A7C39 /* Bench GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Bench GL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- DABCABAB1CB80692000A7C39 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- DABCABAD1CB80692000A7C39 /* MBXBenchAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXBenchAppDelegate.h; sourceTree = "<group>"; };
- DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXBenchAppDelegate.m; sourceTree = "<group>"; };
- DABCABB01CB80692000A7C39 /* MBXBenchViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXBenchViewController.h; sourceTree = "<group>"; };
- DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MBXBenchViewController.mm; sourceTree = "<group>"; };
- DABCABB61CB80692000A7C39 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
- DABCABB91CB80692000A7C39 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
- DABCABBB1CB80692000A7C39 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- DABCABBF1CB80717000A7C39 /* locations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = locations.cpp; sourceTree = "<group>"; };
- DABCABC01CB80717000A7C39 /* locations.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = locations.hpp; sourceTree = "<group>"; };
- DAC25FCB200FD83E009BE98E /* NSExpression+MGLPrivateAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSExpression+MGLPrivateAdditions.h"; sourceTree = "<group>"; };
- DAC49C621CD07D74009E1AA3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DACA86242019218500E9693A /* MGLRasterDEMSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterDEMSource.h; sourceTree = "<group>"; };
- DACA86252019218500E9693A /* MGLRasterDEMSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRasterDEMSource.mm; sourceTree = "<group>"; };
- DACBC60B20118ABE00C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
- DACBC60C20118AD000C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Foundation.strings; sourceTree = "<group>"; };
- DACBC60D20118ADE00C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
- DACFE7981F66EA2100630DA8 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = vi; path = vi.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAD165691CF41981001FF4B9 /* MGLFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature.h; sourceTree = "<group>"; };
- DAD1656A1CF41981001FF4B9 /* MGLFeature_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature_Private.h; sourceTree = "<group>"; };
- DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFeature.mm; sourceTree = "<group>"; };
- DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeCollection.h; sourceTree = "<group>"; };
- DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShapeCollection.mm; sourceTree = "<group>"; };
- DAD88E07202ACFE800AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAD88E08202AD01300AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAD88E09202AD01F00AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = da; path = da.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAD88E0A202AD03C00AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAD88E0B202AD04D00AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = da; path = da.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DAE7DEC11E245455007505A6 /* MGLNSStringAdditionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLNSStringAdditionsTests.m; path = ../../darwin/test/MGLNSStringAdditionsTests.m; sourceTree = "<group>"; };
- DAE8CCAD1E6E8C70009B5CB0 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAE9E0F11EB7BF1B001E8E8B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAE9ED572238990A00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAE9ED582238992900C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAE9ED592238992E00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = gl; path = gl.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAE9ED5A2238993A00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAE9ED5B2238995A00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = gl; path = gl.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DAED38611D62D0FC00D7640F /* NSURL+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+MGLAdditions.h"; sourceTree = "<group>"; };
- DAED38621D62D0FC00D7640F /* NSURL+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+MGLAdditions.m"; sourceTree = "<group>"; };
- DAEDC4331D603417000224FF /* MGLAttributionInfoTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLAttributionInfoTests.m; path = ../../darwin/test/MGLAttributionInfoTests.m; sourceTree = "<group>"; };
- DAF0D80F1DFE0EA000B28378 /* MGLRasterTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterTileSource_Private.h; sourceTree = "<group>"; };
- DAF0D8121DFE0EC500B28378 /* MGLVectorTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLVectorTileSource_Private.h; sourceTree = "<group>"; };
- DAF0D8171DFE6B2800B28378 /* MGLAttributionInfo_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAttributionInfo_Private.h; sourceTree = "<group>"; };
- DAF25717201901E100367EF5 /* MGLHillshadeStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLHillshadeStyleLayer.mm; sourceTree = "<group>"; };
- DAF25718201901E200367EF5 /* MGLHillshadeStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHillshadeStyleLayer.h; sourceTree = "<group>"; };
- DAF2571F201902BB00367EF5 /* MGLHillshadeStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLHillshadeStyleLayerTests.mm; path = ../../darwin/test/MGLHillshadeStyleLayerTests.mm; sourceTree = "<group>"; };
- DAFBD0D21E3FA7A1000CD6BF /* zh-Hant */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Foundation.strings"; sourceTree = "<group>"; };
- DAFBD0D31E3FA7A1000CD6BF /* zh-Hant */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DAFEB3742093AE3700A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAFEB3752093AE4800A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAFEB3762093AE6800A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ko; path = ko.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAFEB3772093AE7900A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAFEB3782093AE9200A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ko; path = ko.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
- DD0902A21DB18DE700C5BDCE /* MGLNetworkConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLNetworkConfiguration.m; sourceTree = "<group>"; };
- DD0902A41DB18F1B00C5BDCE /* MGLNetworkConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLNetworkConfiguration.h; sourceTree = "<group>"; };
- DD4823721D94AE6C00EB71B7 /* fill_filter_style.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = fill_filter_style.json; sourceTree = "<group>"; };
- DD4823731D94AE6C00EB71B7 /* line_filter_style.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = line_filter_style.json; sourceTree = "<group>"; };
- DD4823741D94AE6C00EB71B7 /* numeric_filter_style.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = numeric_filter_style.json; sourceTree = "<group>"; };
- DD58A4C51D822BD000E1F038 /* MGLExpressionTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLExpressionTests.mm; path = ../../darwin/test/MGLExpressionTests.mm; sourceTree = "<group>"; };
- DD9BE4F51EB263C50079A3AF /* UIViewController+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+MGLAdditions.h"; sourceTree = "<group>"; };
- DD9BE4F61EB263C50079A3AF /* UIViewController+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+MGLAdditions.m"; sourceTree = "<group>"; };
- FA68F1481E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillExtrusionStyleLayer.h; sourceTree = "<group>"; };
- FA68F1491E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillExtrusionStyleLayer.mm; sourceTree = "<group>"; };
- FAE1CDC81E9D79C600C40B5B /* MGLFillExtrusionStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLFillExtrusionStyleLayerTests.mm; path = ../../darwin/test/MGLFillExtrusionStyleLayerTests.mm; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 16376B041FFD9DAF0000563E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CABE5DAD2072FAB40003AF3C /* Mapbox.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 16376B2C1FFDB4B40000563E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CAA69DA4206DCD0E007279CD /* Mapbox.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA1DC9471CB6C1C2006E619F /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA8847D91CBAF91600AB86E3 /* Mapbox.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA2E884E1CC036F400F24E7B /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DAAE5F8820F046FE0089D85B /* libmbgl-core.a in Frameworks */,
- DA2E88561CC036F400F24E7B /* Mapbox.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA8847CE1CBAF91600AB86E3 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 96802766226556C5006BA4A1 /* libmbxaccounts.a in Frameworks */,
- DAABF73D1CBC59BB005B1825 /* libmbgl-core.a in Frameworks */,
- 55D120A61F791007004B6D81 /* libmbgl-loop-darwin.a in Frameworks */,
- 55D120A81F79100C004B6D81 /* libmbgl-filesource.a in Frameworks */,
- 55CF752F213ED92000ED86C4 /* libmbgl-vendor-icu.a in Frameworks */,
- DA27C24E1CBB3811000B0ECD /* GLKit.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAA4E4101CBB71D400178DFB /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DAAE5F8720F046E60089D85B /* libmbgl-core.a in Frameworks */,
- 9680276422655696006BA4A1 /* libmbxaccounts.a in Frameworks */,
- DAAE5F8920F047240089D85B /* libmbgl-filesource.a in Frameworks */,
- DAAE5F8A20F0472E0089D85B /* libmbgl-loop-darwin.a in Frameworks */,
- 55CF7531213ED92A00ED86C4 /* libmbgl-vendor-icu.a in Frameworks */,
- 550570D22296E96E00228ECF /* GLKit.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DABCABA51CB80692000A7C39 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DAA4E4081CBB6C9500178DFB /* Mapbox.framework in Frameworks */,
- 3E8770612074297100B7E842 /* OpenGLES.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 16376B081FFD9DAF0000563E /* Integration Tests */ = {
- isa = PBXGroup;
- children = (
- CA4F3BE023107793008BAFEA /* Camera Tests */,
- CA6914B320E67F07002DB0EE /* Annotations */,
- CAE7AD5320F46EF5003B6782 /* integration-Bridging-Header.h */,
- CA1B4A4F2099FA2800EDD491 /* Snapshotter Tests */,
- 16376B091FFD9DAF0000563E /* MBGLIntegrationTests.mm */,
- 16376B0B1FFD9DAF0000563E /* Info.plist */,
- CA0C27912076C804001CE5B7 /* MGLShapeSourceTests.m */,
- CA0C27932076CA19001CE5B7 /* MGLMapViewIntegrationTest.m */,
- CA0C27952076CA50001CE5B7 /* MGLMapViewIntegrationTest.h */,
- CA4EB8C620863487006AB465 /* MGLStyleLayerIntegrationTests.m */,
- CA88DC2F21C85D900059ED5A /* MGLStyleURLIntegrationTest.m */,
- 077061DB215DA11F000FEF62 /* MGLTestLocationManager.h */,
- 077061D9215DA00E000FEF62 /* MGLTestLocationManager.m */,
- CA4F3BDD230F74C3008BAFEA /* MGLMapViewPendingBlockTests.m */,
- CA4C54FD2324948100A81659 /* MGLSourceTests.swift */,
- );
- path = "Integration Tests";
- sourceTree = "<group>";
- };
- 16376B301FFDB4B40000563E /* Integration Test Harness */ = {
- isa = PBXGroup;
- children = (
- 16376B311FFDB4B40000563E /* AppDelegate.h */,
- 16376B321FFDB4B40000563E /* AppDelegate.m */,
- 16376B3A1FFDB4B40000563E /* Assets.xcassets */,
- 16376B3C1FFDB4B40000563E /* LaunchScreen.storyboard */,
- 16376B3F1FFDB4B40000563E /* Info.plist */,
- 16376B401FFDB4B40000563E /* main.m */,
- );
- path = "Integration Test Harness";
- sourceTree = "<group>";
- };
- 35136D491D4277EA00C20EFD /* Sources */ = {
- isa = PBXGroup;
- children = (
- 0778DD401F67555F00A73B34 /* MGLComputedShapeSource.h */,
- 07D9474E1F67487E00E37934 /* MGLComputedShapeSource_Private.h */,
- 0778DD411F67555F00A73B34 /* MGLComputedShapeSource.mm */,
- 071BBAFC1EE75CD4001FB02A /* MGLImageSource.h */,
- 071BBAFD1EE75CD4001FB02A /* MGLImageSource.mm */,
- 3566C76A1D4A8DFA008152BC /* MGLRasterTileSource.h */,
- DAF0D80F1DFE0EA000B28378 /* MGLRasterTileSource_Private.h */,
- 3566C76B1D4A8DFA008152BC /* MGLRasterTileSource.mm */,
- DACA86242019218500E9693A /* MGLRasterDEMSource.h */,
- DACA86252019218500E9693A /* MGLRasterDEMSource.mm */,
- 3566C7641D4A77BA008152BC /* MGLShapeSource.h */,
- 40F8876F1D7A1DB8008ECB67 /* MGLShapeSource_Private.h */,
- 3566C7651D4A77BA008152BC /* MGLShapeSource.mm */,
- 35136D4A1D4277FC00C20EFD /* MGLSource.h */,
- 3566C7701D4A9198008152BC /* MGLSource_Private.h */,
- 35136D4B1D4277FC00C20EFD /* MGLSource.mm */,
- 404C26E01D89B877000AA13D /* MGLTileSource.h */,
- 404C26E61D89C515000AA13D /* MGLTileSource_Private.h */,
- 404C26E11D89B877000AA13D /* MGLTileSource.mm */,
- 350098B91D480108004B2AF0 /* MGLVectorTileSource.h */,
- DAF0D8121DFE0EC500B28378 /* MGLVectorTileSource_Private.h */,
- 350098BA1D480108004B2AF0 /* MGLVectorTileSource.mm */,
- );
- name = Sources;
- sourceTree = "<group>";
- };
- 353933F01D3FB6BA003F57D7 /* Layers */ = {
- isa = PBXGroup;
- children = (
- 74CB5ED0219B286400102936 /* MGLSymbolStyleLayer_Private.h */,
- 74CB5EC7219B285000102936 /* MGLLineStyleLayer_Private.h */,
- 74CB5EC8219B285000102936 /* MGLOpenGLStyleLayer_Private.h */,
- 74CB5EC9219B285000102936 /* MGLRasterStyleLayer_Private.h */,
- 74CB5EC2219B282500102936 /* MGLBackgroundStyleLayer_Private.h */,
- 74CB5EC1219B282500102936 /* MGLCircleStyleLayer_Private.h */,
- 74CB5EB6219B280300102936 /* MGLFillExtrusionStyleLayer_Private.h */,
- 74CB5EB7219B280300102936 /* MGLFillStyleLayer_Private.h */,
- 74CB5EB8219B280300102936 /* MGLHeatmapStyleLayer_Private.h */,
- 74CB5EB5219B280300102936 /* MGLHillshadeStyleLayer_Private.h */,
- 74CB5EAF219B252C00102936 /* MGLStyleLayerManager.h */,
- 74CB5EB0219B252C00102936 /* MGLStyleLayerManager.mm */,
- 353933F41D3FB785003F57D7 /* MGLBackgroundStyleLayer.h */,
- 35136D381D42271A00C20EFD /* MGLBackgroundStyleLayer.mm */,
- 353933F11D3FB753003F57D7 /* MGLCircleStyleLayer.h */,
- 35136D3B1D42272500C20EFD /* MGLCircleStyleLayer.mm */,
- FA68F1481E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h */,
- FA68F1491E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm */,
- 35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */,
- 8989B17A201A48EA0081CF59 /* MGLHeatmapStyleLayer.h */,
- 8989B17B201A48EA0081CF59 /* MGLHeatmapStyleLayer.mm */,
- 35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */,
- 3538AA1B1D542239008EC33D /* MGLForegroundStyleLayer.h */,
- 3538AA1C1D542239008EC33D /* MGLForegroundStyleLayer.mm */,
- DAF25718201901E200367EF5 /* MGLHillshadeStyleLayer.h */,
- DAF25717201901E100367EF5 /* MGLHillshadeStyleLayer.mm */,
- 353933F71D3FB79F003F57D7 /* MGLLineStyleLayer.h */,
- 35136D3E1D42273000C20EFD /* MGLLineStyleLayer.mm */,
- DA7262091DEEE3480043BB89 /* MGLOpenGLStyleLayer.h */,
- DA72620A1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm */,
- 353933FA1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h */,
- 35136D411D42274500C20EFD /* MGLRasterStyleLayer.mm */,
- 35E79F1F1D41266300957B9E /* MGLStyleLayer_Private.h */,
- 35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */,
- 35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */,
- 353933FD1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h */,
- 35136D441D42275100C20EFD /* MGLSymbolStyleLayer.mm */,
- DA6408D91DA4E7D300908C90 /* MGLVectorStyleLayer.h */,
- DA6408DA1DA4E7D300908C90 /* MGLVectorStyleLayer.mm */,
- );
- name = Layers;
- sourceTree = "<group>";
- };
- 35599DA21D4682B60048254D /* Styling */ = {
- isa = PBXGroup;
- children = (
- 1753ED411E53CE6F00A9FD90 /* MGLConversion.h */,
- 35599DB81D46AD7F0048254D /* Categories */,
- 353933F01D3FB6BA003F57D7 /* Layers */,
- 35136D491D4277EA00C20EFD /* Sources */,
- 1F0666881EC64F8E001C16D7 /* MGLLight.h */,
- 1F0666891EC64F8E001C16D7 /* MGLLight.mm */,
- 1F7454941ECD450D00021D39 /* MGLLight_Private.h */,
- DAAF72291DA903C700312FA4 /* MGLStyleValue.h */,
- DAAF722A1DA903C700312FA4 /* MGLStyleValue_Private.h */,
- 35599DEA1D46F14E0048254D /* MGLStyleValue.mm */,
- );
- name = Styling;
- sourceTree = "<group>";
- };
- 35599DB81D46AD7F0048254D /* Categories */ = {
- isa = PBXGroup;
- children = (
- 350098DA1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h */,
- 350098DB1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm */,
- );
- name = Categories;
- sourceTree = "<group>";
- };
- 355ADFF91E9281C300F3939D /* Views */ = {
- isa = PBXGroup;
- children = (
- 96E6145722CC169000109F14 /* MGLCompassButton.h */,
- 9641771E22D546DA00332422 /* MGLCompassButton_Private.h */,
- 96E6145822CC169000109F14 /* MGLCompassButton.mm */,
- 355ADFFB1E9281DA00F3939D /* MGLScaleBar.h */,
- 355ADFFC1E9281DA00F3939D /* MGLScaleBar.mm */,
- );
- name = Views;
- sourceTree = "<group>";
- };
- 357579811D502AD4000B822E /* Styling */ = {
- isa = PBXGroup;
- children = (
- 3575798F1D513EF1000B822E /* Layers */,
- 40CFA64E1D78754A008103BD /* Sources */,
- 1F7454A61ED08AB400021D39 /* MGLLightTest.mm */,
- );
- name = Styling;
- sourceTree = "<group>";
- };
- 3575798F1D513EF1000B822E /* Layers */ = {
- isa = PBXGroup;
- children = (
- 170C43782028D49800863DF0 /* MGLHeatmapColorTests.mm */,
- 170C43792028D49800863DF0 /* MGLHeatmapStyleLayerTests.mm */,
- DA2DBBCC1D51E80400D38FF9 /* MGLStyleLayerTests.h */,
- DA2DBBCD1D51E80400D38FF9 /* MGLStyleLayerTests.m */,
- DA3C6FF21E2859E700F962BE /* test-Bridging-Header.h */,
- FAE1CDC81E9D79C600C40B5B /* MGLFillExtrusionStyleLayerTests.mm */,
- 3575797F1D501E09000B822E /* MGLFillStyleLayerTests.mm */,
- DAF2571F201902BB00367EF5 /* MGLHillshadeStyleLayerTests.mm */,
- 357579821D502AE6000B822E /* MGLRasterStyleLayerTests.mm */,
- 357579841D502AF5000B822E /* MGLSymbolStyleLayerTests.mm */,
- 357579861D502AFE000B822E /* MGLLineStyleLayerTests.mm */,
- 357579881D502B06000B822E /* MGLCircleStyleLayerTests.mm */,
- 3575798A1D502B0C000B822E /* MGLBackgroundStyleLayerTests.mm */,
- );
- name = Layers;
- sourceTree = "<group>";
- };
- 35CE617F1D4165C2004F2359 /* Categories */ = {
- isa = PBXGroup;
- children = (
- 357FE2DB1E02D2B20068B753 /* NSCoder+MGLAdditions.h */,
- 357FE2DC1E02D2B20068B753 /* NSCoder+MGLAdditions.mm */,
- 960369FF200565C700510F3D /* NSOrthography+MGLAdditions.h */,
- 96036A00200565C700510F3D /* NSOrthography+MGLAdditions.m */,
- 35CE61801D4165D9004F2359 /* UIColor+MGLAdditions.h */,
- 35CE61811D4165D9004F2359 /* UIColor+MGLAdditions.mm */,
- 967C8649210A9D3C004DF794 /* UIDevice+MGLAdditions.h */,
- 967C864A210A9D3C004DF794 /* UIDevice+MGLAdditions.m */,
- 30E578111DAA7D690050F07E /* UIImage+MGLAdditions.h */,
- 30E578121DAA7D690050F07E /* UIImage+MGLAdditions.mm */,
- DD9BE4F51EB263C50079A3AF /* UIViewController+MGLAdditions.h */,
- DD9BE4F61EB263C50079A3AF /* UIViewController+MGLAdditions.m */,
- 6FAFA29A220023840088709E /* UIView+MGLAdditions.h */,
- 6FAFA29B220023840088709E /* UIView+MGLAdditions.m */,
- );
- name = Categories;
- sourceTree = "<group>";
- };
- 402E9DE21CD3A56500FD4519 /* Playground */ = {
- isa = PBXGroup;
- children = (
- 402E9DE01CD2C76200FD4519 /* Mapbox.playground */,
- );
- name = Playground;
- sourceTree = "<group>";
- };
- 4031ACFD1E9FD26900A3EA26 /* Test Helpers */ = {
- isa = PBXGroup;
- children = (
- CA5E5042209BDC5F001A8A81 /* MGLTestUtility.h */,
- 4031ACFE1E9FD29F00A3EA26 /* MGLSDKTestHelpers.swift */,
- A4DE3DCA23038A7F005B3473 /* MGLMockGestureRecognizers.h */,
- A4DE3DC823038A07005B3473 /* MGLMockGestureRecognizers.m */,
- CAAA65D72321BBA900F08A39 /* MGLTestAssertionHandler.h */,
- CAAA65D82321BBA900F08A39 /* MGLTestAssertionHandler.m */,
- );
- name = "Test Helpers";
- sourceTree = "<group>";
- };
- 40834BA11FE05CFD00C1BD0D /* Development */ = {
- isa = PBXGroup;
- children = (
- 9620BB361E69FE1700705A1D /* MGLSDKUpdateChecker.h */,
- 9620BB371E69FE1700705A1D /* MGLSDKUpdateChecker.mm */,
- );
- name = Development;
- sourceTree = "<group>";
- };
- 40834BA21FE05D3100C1BD0D /* Runtime */ = {
- isa = PBXGroup;
- children = (
- 40834BAC1FE05D6C00C1BD0D /* MapboxMobileEvents.h */,
- 40834BC81FE05D7000C1BD0D /* MMENamespacedDependencies.h */,
- 40834BAB1FE05D6C00C1BD0D /* MMEAPIClient.h */,
- 40834BA51FE05D6B00C1BD0D /* MMEAPIClient.m */,
- 40834BAE1FE05D6C00C1BD0D /* MMECommonEventData.h */,
- 40834BCE1FE05D7100C1BD0D /* MMECommonEventData.m */,
- 40834BB01FE05D6C00C1BD0D /* MMEConstants.h */,
- 40834BC01FE05D6E00C1BD0D /* MMEConstants.m */,
- 40834BB11FE05D6D00C1BD0D /* MMEDependencyManager.h */,
- 40834BB41FE05D6D00C1BD0D /* MMEDependencyManager.m */,
- 40834BBA1FE05D6E00C1BD0D /* MMEEvent.h */,
- 40834BC71FE05D7000C1BD0D /* MMEEvent.m */,
- 40834BA61FE05D6B00C1BD0D /* MMEEventLogger.h */,
- 40834BB71FE05D6D00C1BD0D /* MMEEventLogger.m */,
- 406E99B51FFEFED600D9FFCC /* MMEEventLogReportViewController.h */,
- 406E99B11FFEFED500D9FFCC /* MMEEventLogReportViewController.m */,
- 40834BBB1FE05D6E00C1BD0D /* MMEEventsConfiguration.h */,
- 40834BB21FE05D6D00C1BD0D /* MMEEventsConfiguration.m */,
- ACA65F4F214066E200537748 /* MMEConfigurator.h */,
- ACA65F50214066E600537748 /* MMEConfigurator.m */,
- 40834BA31FE05D6B00C1BD0D /* MMEEventsManager.h */,
- 40834BA41FE05D6B00C1BD0D /* MMEEventsManager.m */,
- 40834BB31FE05D6D00C1BD0D /* MMELocationManager.h */,
- 40834BB81FE05D6D00C1BD0D /* MMELocationManager.m */,
- AC46EB57225E60090039C013 /* MMECertPin.h */,
- AC46EB58225E60090039C013 /* MMECertPin.m */,
- AC46EB5E225E60510039C013 /* MMEPinningConfigurationProvider.h */,
- AC46EB5D225E60510039C013 /* MMEPinningConfigurationProvider.m */,
- ACD024552187EAAF00D8C8A7 /* MMEMetrics.h */,
- ACD024572187EAAF00D8C8A7 /* MMEMetrics.m */,
- ACD024562187EAAF00D8C8A7 /* MMEMetricsManager.h */,
- ACD024542187EAAF00D8C8A7 /* MMEMetricsManager.m */,
- 40834BC51FE05D6F00C1BD0D /* MMEDate.h */,
- 40834BBC1FE05D6E00C1BD0D /* MMEDate.m */,
- 40834BAA1FE05D6C00C1BD0D /* MMENSURLSessionWrapper.h */,
- 40834BC61FE05D7000C1BD0D /* MMENSURLSessionWrapper.m */,
- 40834BC91FE05D7000C1BD0D /* MMETimerManager.h */,
- 40834BB91FE05D6E00C1BD0D /* MMETimerManager.m */,
- 40834BB61FE05D6D00C1BD0D /* MMETypes.h */,
- 40834BBE1FE05D6E00C1BD0D /* MMEUIApplicationWrapper.h */,
- 40834BCA1FE05D7000C1BD0D /* MMEUIApplicationWrapper.m */,
- 406E99B31FFEFED600D9FFCC /* MMEUINavigation.h */,
- 406E99B21FFEFED500D9FFCC /* MMEUINavigation.m */,
- 40834BBF1FE05D6E00C1BD0D /* MMEUniqueIdentifier.h */,
- 40834BAD1FE05D6C00C1BD0D /* MMEUniqueIdentifier.m */,
- ACA65F552140696B00537748 /* MMEDispatchManager.h */,
- ACA65F562140697100537748 /* MMEDispatchManager.m */,
- 9C6E280822A97F6B0056B7BE /* Categories */,
- 40834BCB1FE05D7100C1BD0D /* Reachability */,
- );
- name = Runtime;
- path = "../vendor/mapbox-events-ios/MapboxMobileEvents";
- sourceTree = "<group>";
- };
- 40834BCB1FE05D7100C1BD0D /* Reachability */ = {
- isa = PBXGroup;
- children = (
- 40834BCC1FE05D7100C1BD0D /* MMEReachability.h */,
- 40834BCD1FE05D7100C1BD0D /* MMEReachability.m */,
- );
- name = Reachability;
- path = "vendor/mapbox-events-ios/MapboxMobileEvents/Reachability";
- sourceTree = SOURCE_ROOT;
- };
- 409F43FB1E9E77D10048729D /* Swift Integration */ = {
- isa = PBXGroup;
- children = (
- 409F43FC1E9E781C0048729D /* MGLMapViewDelegateIntegrationTests.swift */,
- 409D0A0C1ED614CE00C95D0C /* MGLAnnotationViewIntegrationTests.swift */,
- );
- name = "Swift Integration";
- sourceTree = "<group>";
- };
- 40CFA64E1D78754A008103BD /* Sources */ = {
- isa = PBXGroup;
- children = (
- 07D8C6FD1F67562800381808 /* MGLComputedShapeSourceTests.m */,
- 071BBB051EE7761A001FB02A /* MGLImageSourceTests.m */,
- 40CFA6501D787579008103BD /* MGLShapeSourceTests.mm */,
- 920A3E5C1E6F995200C16EFC /* MGLSourceQueryTests.m */,
- 4085AF081D933DEA00F11B22 /* MGLTileSetTests.mm */,
- );
- name = Sources;
- sourceTree = "<group>";
- };
- 9604FC341F313A5E003EEA02 /* Fixtures */ = {
- isa = PBXGroup;
- children = (
- 353BAEF51D646370009A8DA9 /* amsterdam.geojson */,
- DA1DC96C1CB6C6CE006E619F /* points.geojson */,
- A4F3FB1C2254865900A30170 /* missing_icon.json */,
- DA1DC96D1CB6C6CE006E619F /* polyline.geojson */,
- 1F26B6C220E1A351007BCC21 /* simple_route.json */,
- DA1DC96F1CB6C6CE006E619F /* threestates.geojson */,
- DD4823721D94AE6C00EB71B7 /* fill_filter_style.json */,
- DD4823731D94AE6C00EB71B7 /* line_filter_style.json */,
- DD4823741D94AE6C00EB71B7 /* numeric_filter_style.json */,
- );
- name = Fixtures;
- sourceTree = "<group>";
- };
- 9680276322655623006BA4A1 /* Accounts */ = {
- isa = PBXGroup;
- children = (
- 9680273E22653B84006BA4A1 /* MBXSKUToken.h */,
- );
- name = Accounts;
- sourceTree = "<group>";
- };
- 9C6E280822A97F6B0056B7BE /* Categories */ = {
- isa = PBXGroup;
- children = (
- 9C6E280B22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.h */,
- 9C6E280E22A97FDB0056B7BE /* CLLocation+MMEMobileEvents.m */,
- 9C6E281022A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.h */,
- 9C6E281222A97FDB0056B7BE /* CLLocationManager+MMEMobileEvents.m */,
- 9C6E281122A97FDB0056B7BE /* MMECategoryLoader.h */,
- 9C6E280922A97FDB0056B7BE /* MMECategoryLoader.m */,
- 9C6E280C22A97FDB0056B7BE /* NSData+MMEGZIP.h */,
- 9C6E280D22A97FDB0056B7BE /* NSData+MMEGZIP.m */,
- 9C6E280A22A97FDB0056B7BE /* UIKit+MMEMobileEvents.h */,
- 9C6E280F22A97FDB0056B7BE /* UIKit+MMEMobileEvents.m */,
- );
- path = Categories;
- sourceTree = "<group>";
- };
- 9C6E285922A9849E0056B7BE /* Scripts */ = {
- isa = PBXGroup;
- children = (
- 9C6E285A22A9849E0056B7BE /* install-packaging-dependencies.sh */,
- 9C6E285B22A9849E0056B7BE /* ios-code-coverage.sh */,
- 9C6E285C22A9849E0056B7BE /* release-notes-github.md.ejs */,
- 9C6E285D22A9849E0056B7BE /* document.sh */,
- 9C6E285E22A9849E0056B7BE /* check-events-symbols.sh */,
- 9C6E285F22A9849E0056B7BE /* deploy-packages.sh */,
- 9C6E286022A9849E0056B7BE /* publish.sh */,
- 9C6E286122A9849E0056B7BE /* validate-framework-zip.sh */,
- 9C6E286222A9849E0056B7BE /* metrics.sh */,
- 9C6E286322A9849E0056B7BE /* package.sh */,
- 9C6E286422A9849E0056B7BE /* trigger-external-deploy-steps.sh */,
- 9C6E286522A9849E0056B7BE /* release-notes-jazzy.md.ejs */,
- 9C6E286622A9849E0056B7BE /* deploy-snapshot.sh */,
- 9C6E286722A9849E0056B7BE /* release-notes.js */,
- );
- name = Scripts;
- path = scripts;
- sourceTree = "<group>";
- };
- CA1B4A4F2099FA2800EDD491 /* Snapshotter Tests */ = {
- isa = PBXGroup;
- children = (
- CA1B4A502099FB2200EDD491 /* MGLMapSnapshotterTest.m */,
- CAE7AD5420F46EF5003B6782 /* MGLMapSnapshotterSwiftTests.swift */,
- );
- path = "Snapshotter Tests";
- sourceTree = "<group>";
- };
- CA4F3BE023107793008BAFEA /* Camera Tests */ = {
- isa = PBXGroup;
- children = (
- CA4F3BE123107793008BAFEA /* MGLCameraTransitionTests.mm */,
- CA4F3BE3231077B9008BAFEA /* MGLCameraTransitionFinishTests.mm */,
- );
- path = "Camera Tests";
- sourceTree = "<group>";
- };
- CA6914B320E67F07002DB0EE /* Annotations */ = {
- isa = PBXGroup;
- children = (
- CA6914B420E67F50002DB0EE /* MGLAnnotationViewIntegrationTests.mm */,
- );
- name = Annotations;
- sourceTree = "<group>";
- };
- CF85C39E23A249FC00BEBFFF /* Interface */ = {
- isa = PBXGroup;
- children = (
- CFF9F98423A24BF400B0DE92 /* MGLNetworkIntegrationManager.h */,
- CFF9F98523A24BF400B0DE92 /* MGLNetworkIntegrationManager.m */,
- );
- name = Interface;
- sourceTree = "<group>";
- };
- DA1DC9411CB6C1C2006E619F = {
- isa = PBXGroup;
- children = (
- 402E9DE21CD3A56500FD4519 /* Playground */,
- DA1DC94C1CB6C1C2006E619F /* Demo App */,
- DABCABA91CB80692000A7C39 /* Benchmarking App */,
- DA8847D31CBAF91600AB86E3 /* SDK */,
- DA2E88521CC036F400F24E7B /* SDK Tests */,
- 16376B301FFDB4B40000563E /* Integration Test Harness */,
- 16376B081FFD9DAF0000563E /* Integration Tests */,
- DA1DC9921CB6DF24006E619F /* Frameworks */,
- DAC07C951CBB2CAD000CB309 /* Configuration */,
- DA1DC94B1CB6C1C2006E619F /* Products */,
- 9C6E285922A9849E0056B7BE /* Scripts */,
- );
- sourceTree = "<group>";
- };
- DA1DC94B1CB6C1C2006E619F /* Products */ = {
- isa = PBXGroup;
- children = (
- DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */,
- DABCABA81CB80692000A7C39 /* Bench GL.app */,
- DA8847D21CBAF91600AB86E3 /* Mapbox.framework */,
- DAA4E4131CBB71D400178DFB /* libMapbox.a */,
- DA2E88511CC036F400F24E7B /* test.xctest */,
- DA8933D51CCD306400E68420 /* Mapbox.bundle */,
- 16376B071FFD9DAF0000563E /* integration.xctest */,
- 16376B2F1FFDB4B40000563E /* Integration Test Harness.app */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- DA1DC94C1CB6C1C2006E619F /* Demo App */ = {
- isa = PBXGroup;
- children = (
- 3E6465D52065767A00685536 /* LimeGreenStyleLayer.h */,
- 3E6465D42065767A00685536 /* LimeGreenStyleLayer.m */,
- DA1DC9501CB6C1C2006E619F /* MBXAppDelegate.h */,
- DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */,
- 40FDA7691CCAAA6800442548 /* MBXAnnotationView.h */,
- 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */,
- DA1DC9661CB6C6B7006E619F /* MBXCustomCalloutView.h */,
- DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */,
- 354B839A1D2E9B48005D9406 /* MBXUserLocationAnnotationView.h */,
- 354B839B1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m */,
- DA1DC9681CB6C6B7006E619F /* MBXOfflinePacksTableViewController.h */,
- DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */,
- 927FBCFA1F4DAA8300F8BF1F /* MBXSnapshotsViewController.h */,
- 927FBCFB1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m */,
- 1F26B6BF20E189C9007BCC21 /* MBXCustomLocationViewController.h */,
- 1F26B6C020E189C9007BCC21 /* MBXCustomLocationViewController.m */,
- DA1DC9531CB6C1C2006E619F /* MBXViewController.h */,
- DA1DC99A1CB6E064006E619F /* MBXViewController.m */,
- 965DF50F20F9430500438AAC /* MBXFrameTimeGraphView.h */,
- 965DF51020F9430500438AAC /* MBXFrameTimeGraphView.m */,
- 632281DD1E6F855900D75A5D /* MBXEmbeddedMapViewController.h */,
- 632281DE1E6F855900D75A5D /* MBXEmbeddedMapViewController.m */,
- 6FA9341621EF372100AA9CA8 /* MBXOrnamentsViewController.h */,
- 6FA9341521EF372100AA9CA8 /* MBXOrnamentsViewController.m */,
- DA821D051CCC6D59007508D4 /* Main.storyboard */,
- DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */,
- DA1DC99E1CB6E088006E619F /* Assets.xcassets */,
- DA1DC95E1CB6C1C2006E619F /* Info.plist */,
- 074A7F0C2277C093001A62D1 /* insert_access_token.sh */,
- 96E027251E57C76E004B8E66 /* Localizable.strings */,
- 076171C62141A91700668A35 /* Settings.bundle */,
- 9604FC341F313A5E003EEA02 /* Fixtures */,
- DA1DC94D1CB6C1C2006E619F /* Supporting Files */,
- 075AF840227B6762008D7A4C /* MBXState.h */,
- 075AF841227B6762008D7A4C /* MBXState.m */,
- 075AF843227B67C5008D7A4C /* MBXStateManager.h */,
- 075AF844227B67C6008D7A4C /* MBXStateManager.m */,
- );
- name = "Demo App";
- path = app;
- sourceTree = "<group>";
- };
- DA1DC94D1CB6C1C2006E619F /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- DA1DC9961CB6E046006E619F /* main.m */,
- );
- name = "Supporting Files";
- sourceTree = "<group>";
- };
- DA1DC9921CB6DF24006E619F /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 9680274122653C3E006BA4A1 /* libmbxaccounts.a */,
- 55CF7530213ED92A00ED86C4 /* libmbgl-vendor-icu.a */,
- 55CF752E213ED92000ED86C4 /* libmbgl-vendor-icu.a */,
- 55D120A91F79100C004B6D81 /* libmbgl-filesource.a */,
- 55D120A71F791007004B6D81 /* libmbgl-loop-darwin.a */,
- 36F1153C1D46080700878E1A /* libmbgl-platform-ios.a */,
- 554180411D2E97DE00012372 /* OpenGLES.framework */,
- 55D8C9951D0F18CE00F42F10 /* libsqlite3.tbd */,
- DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */,
- DAA4E4021CBB5C2F00178DFB /* CoreGraphics.framework */,
- DA27C24D1CBB3811000B0ECD /* GLKit.framework */,
- DAA4E4041CBB5C9E00178DFB /* ImageIO.framework */,
- DAA4E4061CBB5CBF00178DFB /* MobileCoreServices.framework */,
- DA4A26961CB6E795000B7809 /* Mapbox.framework */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- DA2E88521CC036F400F24E7B /* SDK Tests */ = {
- isa = PBXGroup;
- children = (
- DA2E88551CC036F400F24E7B /* Info.plist */,
- DA2784FB1DF02FF4001D5B8D /* Media.xcassets */,
- 3502D6CB22AE88D5006BDFCE /* MGLAccountManagerTests.m */,
- 353D23951D0B0DFE002BE09D /* MGLAnnotationViewTests.m */,
- DAEDC4331D603417000224FF /* MGLAttributionInfoTests.m */,
- DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */,
- 35D9DDE11DA25EEC00DAAD69 /* MGLCodingTests.mm */,
- DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */,
- DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */,
- 3598544C1E1D38AA00B29F84 /* MGLDistanceFormatterTests.m */,
- 6407D66F1E0085FD00F6A9C3 /* MGLDocumentationExampleTests.swift */,
- DA1F8F3C1EBD287B00367E42 /* MGLDocumentationGuideTests.swift */,
- DD58A4C51D822BD000E1F038 /* MGLExpressionTests.mm */,
- DA0CD58F1CF56F6A00A5F5A5 /* MGLFeatureTests.mm */,
- DA2E885C1CC0382C00F24E7B /* MGLGeometryTests.mm */,
- DA5DB1291FABF1EE001C2326 /* MGLMapAccessibilityElementTests.m */,
- DA695425215B1E75002041A4 /* MGLMapCameraTests.m */,
- 96E6145522CC135200109F14 /* MGLMapViewCompassViewTests.mm */,
- 1F0196A923174B0700F5C819 /* MGLMapViewContentInsetTests.m */,
- 96ED34DD22374C0900E9FCA9 /* MGLMapViewDirectionTests.mm */,
- 1F8E8A80233A9FD9009B51ED /* MGLMapViewGestureRecognizerTests.mm */,
- 16376B481FFEED010000563E /* MGLMapViewLayoutTests.m */,
- 96381C0122C6F3950053497D /* MGLMapViewPitchTests.m */,
- 9658C154204761FC00D8A674 /* MGLMapViewScaleBarTests.m */,
- 076171C22139C70900668A35 /* MGLMapViewTests.m */,
- 9686D1BC22D9357700194EA0 /* MGLMapViewZoomTests.mm */,
- 1F95931C1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm */,
- 96036A0520059BBA00510F3D /* MGLNSOrthographyAdditionsTests.m */,
- DAE7DEC11E245455007505A6 /* MGLNSStringAdditionsTests.m */,
- DA2E885D1CC0382C00F24E7B /* MGLOfflinePackTests.mm */,
- DA2E885E1CC0382C00F24E7B /* MGLOfflineRegionTests.m */,
- 55E2AD121E5B125400E8C587 /* MGLOfflineStorageTests.mm */,
- 35B8E08B1D6C8B5100E768D2 /* MGLPredicateTests.mm */,
- CA8FBC0821A47BB100D1203C /* MGLRendererConfigurationTests.mm */,
- CAD9D0A922A86D6F001B25EE /* MGLResourceTests.mm */,
- DA2E88601CC0382C00F24E7B /* MGLStyleTests.mm */,
- 556660D71E1D085500E2C41B /* MGLVersionNumber.m */,
- DA35D0871E1A6309007DED41 /* one-liner.json */,
- 1F8A59F62165326C004DFE75 /* sideload_sat.db */,
- 357579811D502AD4000B822E /* Styling */,
- 409F43FB1E9E77D10048729D /* Swift Integration */,
- 4031ACFD1E9FD26900A3EA26 /* Test Helpers */,
- CA86FF0D22D8D5A0009EB14A /* MGLNetworkConfigurationTests.m */,
- );
- name = "SDK Tests";
- path = test;
- sourceTree = "<group>";
- };
- DA8847D31CBAF91600AB86E3 /* SDK */ = {
- isa = PBXGroup;
- children = (
- DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */,
- 40834AEF1FDF4F0100C1BD0D /* Mapbox-Prefix.pch */,
- DA8847DE1CBAFA3E00AB86E3 /* Foundation */,
- DA8F25BC1D51D2570010E6B5 /* Foundation Templates */,
- DA8933B91CCD2C6700E68420 /* Foundation Resources */,
- DA8848331CBAFB2A00AB86E3 /* Kit */,
- DA8848621CBAFCC100AB86E3 /* Kit Resources */,
- DA8847D61CBAF91600AB86E3 /* Info.plist */,
- DA8933F11CCD3FD700E68420 /* Info-static.plist */,
- );
- name = SDK;
- path = framework;
- sourceTree = "<group>";
- };
- DA8847DE1CBAFA3E00AB86E3 /* Foundation */ = {
- isa = PBXGroup;
- children = (
- 35599DA21D4682B60048254D /* Styling */,
- DAD165831CF4CFED001FF4B9 /* Categories */,
- DAD165801CF4CF9A001FF4B9 /* Formatters */,
- DAD165811CF4CFC4001FF4B9 /* Geometry */,
- DAD165821CF4CFE3001FF4B9 /* Offline Maps */,
- DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */,
- DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */,
- DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */,
- DA00FC8C1D5EEB0D009AABC8 /* MGLAttributionInfo.h */,
- DAF0D8171DFE6B2800B28378 /* MGLAttributionInfo_Private.h */,
- DA00FC8D1D5EEB0D009AABC8 /* MGLAttributionInfo.mm */,
- 1FCCEC32222605C400302E3B /* MGLSDKMetricsManager.h */,
- 1FF48585223710BE00F19727 /* MGLAttributedExpression.h */,
- 1FF48586223710BE00F19727 /* MGLAttributedExpression.m */,
- 1FCCEC38222607A500302E3B /* MGLSDKMetricsManager_Private.h */,
- 1FCCEC33222605C400302E3B /* MGLSDKMetricsManager.m */,
- 556660C91E1BF3A900E2C41B /* MGLFoundation.h */,
- 558DE79E1E5615E400C7916D /* MGLFoundation_Private.h */,
- 558DE79F1E5615E400C7916D /* MGLFoundation.mm */,
- DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */,
- DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */,
- 927FBCFD1F4DB05500F8BF1F /* MGLMapSnapshotter.h */,
- CAFB3C13234505D500399265 /* MGLMapSnapshotter_Private.h */,
- 927FBCFE1F4DB05500F8BF1F /* MGLMapSnapshotter.mm */,
- DD0902A41DB18F1B00C5BDCE /* MGLNetworkConfiguration.h */,
- 1F2B94BF221636D800210640 /* MGLNetworkConfiguration_Private.h */,
- DD0902A21DB18DE700C5BDCE /* MGLNetworkConfiguration.m */,
- 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */,
- 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */,
- 92F2C3EC1F0E3C3A00268EC0 /* MGLRendererFrontend.h */,
- DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */,
- 35E0CFE51D3E501500188327 /* MGLStyle_Private.h */,
- DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */,
- DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */,
- DA8848111CBAFA6200AB86E3 /* MGLTypes.m */,
- 35E1A4D71D74336F007AA97F /* MGLValueEvaluator.h */,
- 1FCAE2A020B872A400C577DD /* MGLLocationManager.h */,
- 1FCAE2A620B88B3800C577DD /* MGLLocationManager_Private.h */,
- 1FCAE2A120B872A400C577DD /* MGLLocationManager.m */,
- 1F6A82A021360F9C00BA5B41 /* MGLLoggingConfiguration.h */,
- CF75A91422D85E860058A5C4 /* MGLLoggingConfiguration.mm */,
- 1F6A82A62138871900BA5B41 /* MGLLoggingConfiguration_Private.h */,
- );
- name = Foundation;
- path = ../darwin/src;
- sourceTree = SOURCE_ROOT;
- };
- DA8848331CBAFB2A00AB86E3 /* Kit */ = {
- isa = PBXGroup;
- children = (
- CF85C39E23A249FC00BEBFFF /* Interface */,
- DAD165841CF4D06B001FF4B9 /* Annotations */,
- 35CE617F1D4165C2004F2359 /* Categories */,
- DA8848881CBB036000AB86E3 /* SMCalloutView */,
- DAD165851CF4D08B001FF4B9 /* Telemetry */,
- 355ADFF91E9281C300F3939D /* Views */,
- CA55CD3E202C16AA00CE7095 /* MGLCameraChangeReason.h */,
- DA704CC01F65A475004B3F28 /* MGLMapAccessibilityElement.h */,
- DA704CC11F65A475004B3F28 /* MGLMapAccessibilityElement.mm */,
- 96F017292118FBAE00892778 /* MGLMapView_Experimental.h */,
- DA17BE2F1CC4BAC300402C41 /* MGLMapView_Private.h */,
- DA8848361CBAFB8500AB86E3 /* MGLMapView.h */,
- DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */,
- 550570C522958FB400228ECF /* MGLMapView+Impl.h */,
- 550570C422958FB300228ECF /* MGLMapView+Impl.mm */,
- 5580B459229570A00091291B /* MGLMapView+OpenGL.h */,
- 5580B45A229570A10091291B /* MGLMapView+OpenGL.mm */,
- DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */,
- DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */,
- );
- name = Kit;
- path = src;
- sourceTree = SOURCE_ROOT;
- };
- DA8848621CBAFCC100AB86E3 /* Kit Resources */ = {
- isa = PBXGroup;
- children = (
- 960D0C351ECF5AAF008E151F /* Images.xcassets */,
- DA89339F1CCC951200E68420 /* Localizable.strings */,
- DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */,
- DA8933EF1CCD387900E68420 /* strip-frameworks.sh */,
- );
- name = "Kit Resources";
- path = resources;
- sourceTree = SOURCE_ROOT;
- };
- DA8848881CBB036000AB86E3 /* SMCalloutView */ = {
- isa = PBXGroup;
- children = (
- DA8848891CBB037E00AB86E3 /* SMCalloutView.h */,
- DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */,
- );
- name = SMCalloutView;
- path = ../vendor/SMCalloutView;
- sourceTree = "<group>";
- };
- DA8933B91CCD2C6700E68420 /* Foundation Resources */ = {
- isa = PBXGroup;
- children = (
- DA8933BA1CCD2CA100E68420 /* Foundation.strings */,
- DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */,
- );
- name = "Foundation Resources";
- path = ../../darwin/resources;
- sourceTree = "<group>";
- };
- DA8963321CC5498400684375 /* Fixtures */ = {
- isa = PBXGroup;
- children = (
- DA8963331CC549A100684375 /* glyphs */,
- DA8963341CC549A100684375 /* sprites */,
- DA8963351CC549A100684375 /* styles */,
- DA8963361CC549A100684375 /* tiles */,
- );
- name = Fixtures;
- path = assets;
- sourceTree = "<group>";
- };
- DA8F25BC1D51D2570010E6B5 /* Foundation Templates */ = {
- isa = PBXGroup;
- children = (
- DA8F25BA1D51D2570010E6B5 /* MGLStyleLayer.h.ejs */,
- DA8F25BB1D51D2570010E6B5 /* MGLStyleLayer.mm.ejs */,
- DA8F25B91D51D2570010E6B5 /* MGLStyleLayerTests.mm.ejs */,
- );
- name = "Foundation Templates";
- path = ../../darwin/src;
- sourceTree = "<group>";
- };
- DABCABA91CB80692000A7C39 /* Benchmarking App */ = {
- isa = PBXGroup;
- children = (
- DABCABAD1CB80692000A7C39 /* MBXBenchAppDelegate.h */,
- DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */,
- DABCABB01CB80692000A7C39 /* MBXBenchViewController.h */,
- DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */,
- DABCABBF1CB80717000A7C39 /* locations.cpp */,
- DABCABC01CB80717000A7C39 /* locations.hpp */,
- DABCABB61CB80692000A7C39 /* Assets.xcassets */,
- DA8963321CC5498400684375 /* Fixtures */,
- DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */,
- DABCABBB1CB80692000A7C39 /* Info.plist */,
- DABCABAA1CB80692000A7C39 /* Supporting Files */,
- );
- name = "Benchmarking App";
- path = benchmark;
- sourceTree = "<group>";
- };
- DABCABAA1CB80692000A7C39 /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- DABCABAB1CB80692000A7C39 /* main.m */,
- );
- name = "Supporting Files";
- sourceTree = "<group>";
- };
- DAC07C951CBB2CAD000CB309 /* Configuration */ = {
- isa = PBXGroup;
- children = (
- 9C6E284822A984120056B7BE /* Makefile */,
- DA35A2D11CCAB25200E826B2 /* jazzy.yml */,
- 55D8C9941D0F133500F42F10 /* config.xcconfig */,
- );
- name = Configuration;
- sourceTree = "<group>";
- };
- DAD165801CF4CF9A001FF4B9 /* Formatters */ = {
- isa = PBXGroup;
- children = (
- DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */,
- DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */,
- DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */,
- DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */,
- DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */,
- DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */,
- 3557F7AE1E1D27D300CCA5E6 /* MGLDistanceFormatter.h */,
- 3557F7AF1E1D27D300CCA5E6 /* MGLDistanceFormatter.m */,
- );
- name = Formatters;
- sourceTree = "<group>";
- };
- DAD165811CF4CFC4001FF4B9 /* Geometry */ = {
- isa = PBXGroup;
- children = (
- CA65C4F721E9BB080068B0D4 /* MGLCluster.h */,
- DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */,
- DAD1656A1CF41981001FF4B9 /* MGLFeature_Private.h */,
- DAD165691CF41981001FF4B9 /* MGLFeature.h */,
- DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */,
- DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */,
- DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */,
- DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */,
- DA8848041CBAFA6200AB86E3 /* MGLMultiPoint_Private.h */,
- DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */,
- DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */,
- DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */,
- DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */,
- DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.mm */,
- 4049C2AB1DB6E05500B3F799 /* MGLPointCollection_Private.h */,
- 4049C29B1DB6CD6C00B3F799 /* MGLPointCollection.h */,
- 4049C29C1DB6CD6C00B3F799 /* MGLPointCollection.mm */,
- 9654C1271FFC1CC000DB6A19 /* MGLPolygon_Private.h */,
- DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */,
- DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */,
- 9654C1251FFC1AB900DB6A19 /* MGLPolyline_Private.h */,
- DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */,
- DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */,
- 40CF6DBA1DAC3C1800A4D18B /* MGLShape_Private.h */,
- DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */,
- DA88480E1CBAFA6200AB86E3 /* MGLShape.mm */,
- DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */,
- DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.mm */,
- );
- name = Geometry;
- sourceTree = "<group>";
- };
- DAD165821CF4CFE3001FF4B9 /* Offline Maps */ = {
- isa = PBXGroup;
- children = (
- DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */,
- DA8848061CBAFA6200AB86E3 /* MGLOfflinePack_Private.h */,
- DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */,
- DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */,
- DA8848081CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h */,
- DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */,
- DA8848091CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h */,
- DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */,
- 92FC0AE8207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h */,
- 92FC0AE7207CEE16007B6B54 /* MGLShapeOfflineRegion.h */,
- 92FC0AE9207CEE16007B6B54 /* MGLShapeOfflineRegion.mm */,
- DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */,
- 9221BAAC2069843A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h */,
- DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */,
- );
- name = "Offline Maps";
- sourceTree = "<group>";
- };
- DAD165831CF4CFED001FF4B9 /* Categories */ = {
- isa = PBXGroup;
- children = (
- 400532FF1DB0862B0069F638 /* NSArray+MGLAdditions.h */,
- 400533001DB0862B0069F638 /* NSArray+MGLAdditions.mm */,
- DA8848121CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h */,
- DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */,
- 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h */,
- 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm */,
- 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h */,
- 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm */,
- 353AFA121D65AB17005A69F4 /* NSDate+MGLAdditions.h */,
- 353AFA131D65AB17005A69F4 /* NSDate+MGLAdditions.mm */,
- 408AA8551DAEDA0800022900 /* NSDictionary+MGLAdditions.h */,
- 408AA8561DAEDA0800022900 /* NSDictionary+MGLAdditions.mm */,
- DA8848141CBAFA6200AB86E3 /* NSException+MGLAdditions.h */,
- 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.h */,
- DAC25FCB200FD83E009BE98E /* NSExpression+MGLPrivateAdditions.h */,
- 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm */,
- 35B82BF61D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h */,
- 35B82BF71D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm */,
- 1FC4817B2098CBC0000D09B4 /* NSPredicate+MGLPrivateAdditions.h */,
- DA8848171CBAFA6200AB86E3 /* NSString+MGLAdditions.h */,
- DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */,
- DAED38611D62D0FC00D7640F /* NSURL+MGLAdditions.h */,
- DAED38621D62D0FC00D7640F /* NSURL+MGLAdditions.m */,
- DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */,
- DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */,
- );
- name = Categories;
- sourceTree = "<group>";
- };
- DAD165841CF4D06B001FF4B9 /* Annotations */ = {
- isa = PBXGroup;
- children = (
- 404326881D5B9B1A007111BD /* MGLAnnotationContainerView_Private.h */,
- 40EDA1BD1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.h */,
- 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */,
- DA8848401CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h */,
- DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */,
- DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */,
- 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */,
- 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */,
- 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */,
- DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */,
- DA8848441CBAFB9800AB86E3 /* MGLCompactCalloutView.h */,
- DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */,
- DA88484D1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.h */,
- DA88484E1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.m */,
- DA88484B1CBAFB9800AB86E3 /* MGLUserLocation_Private.h */,
- DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */,
- DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */,
- 359F57451D2FDBD5005217F1 /* MGLUserLocationAnnotationView_Private.h */,
- 354B83941D2E873E005D9406 /* MGLUserLocationAnnotationView.h */,
- 354B83951D2E873E005D9406 /* MGLUserLocationAnnotationView.m */,
- 966FCF501F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.h */,
- 966FCF511F3C321000F2B6DE /* MGLUserLocationHeadingArrowLayer.m */,
- 966FCF4A1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.h */,
- 966FCF4B1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m */,
- 96F3F73B1F5711F1003E2D2C /* MGLUserLocationHeadingIndicator.h */,
- );
- name = Annotations;
- sourceTree = "<group>";
- };
- DAD165851CF4D08B001FF4B9 /* Telemetry */ = {
- isa = PBXGroup;
- children = (
- 9680276322655623006BA4A1 /* Accounts */,
- 40834BA11FE05CFD00C1BD0D /* Development */,
- AC518DFD201BB55A00EBC820 /* MGLTelemetryConfig.h */,
- AC518DFE201BB55A00EBC820 /* MGLTelemetryConfig.m */,
- 9C6E282922A980E50056B7BE /* MGLMapboxEvents.h */,
- 9C6E282A22A980E50056B7BE /* MGLMapboxEvents.m */,
- 40834BA21FE05D3100C1BD0D /* Runtime */,
- );
- name = Telemetry;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- DA8847CF1CBAF91600AB86E3 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 556660DB1E1D8E8D00E2C41B /* MGLFoundation.h in Headers */,
- 92FC0AEA207CEE16007B6B54 /* MGLShapeOfflineRegion.h in Headers */,
- 35D13AC31D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */,
- DA88483A1CBAFB8500AB86E3 /* MGLAnnotationImage.h in Headers */,
- 74CB5EBD219B280400102936 /* MGLFillStyleLayer_Private.h in Headers */,
- DAF2571B201901E200367EF5 /* MGLHillshadeStyleLayer.h in Headers */,
- CA65C4F821E9BB080068B0D4 /* MGLCluster.h in Headers */,
- DA35A2BB1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
- 353933FE1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h in Headers */,
- DA8848201CBAFA6200AB86E3 /* MGLOfflinePack_Private.h in Headers */,
- 9641771F22D546DA00332422 /* MGLCompassButton_Private.h in Headers */,
- DA00FC8E1D5EEB0D009AABC8 /* MGLAttributionInfo.h in Headers */,
- DA8847FA1CBAFA5100AB86E3 /* MGLPolyline.h in Headers */,
- 3566C7711D4A9198008152BC /* MGLSource_Private.h in Headers */,
- 4018B1C91CDC288A00F666AF /* MGLAnnotationView_Private.h in Headers */,
- 35E1A4D81D74336F007AA97F /* MGLValueEvaluator.h in Headers */,
- DA88482C1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h in Headers */,
- 74CB5EC5219B282500102936 /* MGLBackgroundStyleLayer_Private.h in Headers */,
- 74CB5EB9219B280400102936 /* MGLHillshadeStyleLayer_Private.h in Headers */,
- 357FE2DD1E02D2B20068B753 /* NSCoder+MGLAdditions.h in Headers */,
- 35D13AB71D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */,
- 07D947531F67488E00E37934 /* MGLComputedShapeSource_Private.h in Headers */,
- 9654C1261FFC1AB900DB6A19 /* MGLPolyline_Private.h in Headers */,
- 40F887701D7A1E58008ECB67 /* MGLShapeSource_Private.h in Headers */,
- 9C6E281622A97FDC0056B7BE /* NSData+MMEGZIP.h in Headers */,
- 350098DC1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h in Headers */,
- 74CB5ECA219B285000102936 /* MGLLineStyleLayer_Private.h in Headers */,
- 74CB5ECE219B285000102936 /* MGLRasterStyleLayer_Private.h in Headers */,
- DA8848231CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h in Headers */,
- 404326891D5B9B27007111BD /* MGLAnnotationContainerView_Private.h in Headers */,
- CA55CD41202C16AA00CE7095 /* MGLCameraChangeReason.h in Headers */,
- DA88483B1CBAFB8500AB86E3 /* MGLCalloutView.h in Headers */,
- 35E0CFE61D3E501500188327 /* MGLStyle_Private.h in Headers */,
- 3510FFF01D6D9D8C00F413B2 /* NSExpression+MGLAdditions.h in Headers */,
- 9C6E281B22A97FDC0056B7BE /* MMECategoryLoader.h in Headers */,
- 74CB5EBF219B280400102936 /* MGLHeatmapStyleLayer_Private.h in Headers */,
- 1FC4817D2098CBC0000D09B4 /* NSPredicate+MGLPrivateAdditions.h in Headers */,
- 1FCCEC3A222607A500302E3B /* MGLSDKMetricsManager_Private.h in Headers */,
- 1F2B94C0221636D900210640 /* MGLNetworkConfiguration_Private.h in Headers */,
- 353AFA141D65AB17005A69F4 /* NSDate+MGLAdditions.h in Headers */,
- DA8848531CBAFB9800AB86E3 /* MGLCompactCalloutView.h in Headers */,
- 74CB5EB1219B252C00102936 /* MGLStyleLayerManager.h in Headers */,
- DA8847FB1CBAFA5100AB86E3 /* MGLShape.h in Headers */,
- 353933F51D3FB785003F57D7 /* MGLBackgroundStyleLayer.h in Headers */,
- DA88485A1CBAFB9800AB86E3 /* MGLUserLocation_Private.h in Headers */,
- 966FCF531F3C322400F2B6DE /* MGLUserLocationHeadingArrowLayer.h in Headers */,
- DA27C24F1CBB4C11000B0ECD /* MGLAccountManager_Private.h in Headers */,
- DA8847FC1CBAFA5100AB86E3 /* MGLStyle.h in Headers */,
- DD9BE4F71EB263C50079A3AF /* UIViewController+MGLAdditions.h in Headers */,
- DAF0D8131DFE0EC500B28378 /* MGLVectorTileSource_Private.h in Headers */,
- 354B83961D2E873E005D9406 /* MGLUserLocationAnnotationView.h in Headers */,
- 74CB5EC3219B282500102936 /* MGLCircleStyleLayer_Private.h in Headers */,
- DA8847F01CBAFA5100AB86E3 /* MGLAnnotation.h in Headers */,
- 400533011DB0862B0069F638 /* NSArray+MGLAdditions.h in Headers */,
- 96E6145922CC169000109F14 /* MGLCompassButton.h in Headers */,
- 1F06668A1EC64F8E001C16D7 /* MGLLight.h in Headers */,
- 4049C29D1DB6CD6C00B3F799 /* MGLPointCollection.h in Headers */,
- 40CF6DBB1DAC3C6600A4D18B /* MGLShape_Private.h in Headers */,
- 4018B1CA1CDC288E00F666AF /* MGLAnnotationView.h in Headers */,
- 9654C1291FFC1CCD00DB6A19 /* MGLPolygon_Private.h in Headers */,
- 35E79F201D41266300957B9E /* MGLStyleLayer_Private.h in Headers */,
- FA68F14A1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h in Headers */,
- 353933FB1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h in Headers */,
- 6F018BB0220031BF003E7269 /* UIView+MGLAdditions.h in Headers */,
- 1FCAE2A820B88B3800C577DD /* MGLLocationManager_Private.h in Headers */,
- 5580B45B229570A10091291B /* MGLMapView+OpenGL.h in Headers */,
- DA8847EF1CBAFA5100AB86E3 /* MGLAccountManager.h in Headers */,
- DA35A2C91CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */,
- 1F6A82A82138871900BA5B41 /* MGLLoggingConfiguration_Private.h in Headers */,
- 3510FFEA1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h in Headers */,
- DA6408DB1DA4E7D300908C90 /* MGLVectorStyleLayer.h in Headers */,
- DA704CC21F65A475004B3F28 /* MGLMapAccessibilityElement.h in Headers */,
- DD0902AB1DB192A800C5BDCE /* MGLNetworkConfiguration.h in Headers */,
- 35D3A1E61E9BE7EB002B38EE /* MGLScaleBar.h in Headers */,
- 0778DD431F67556700A73B34 /* MGLComputedShapeSource.h in Headers */,
- 9C188C502242C96F0022FA55 /* MMEDate.h in Headers */,
- 1FCCEC34222605C400302E3B /* MGLSDKMetricsManager.h in Headers */,
- 1F6A82A221360F9D00BA5B41 /* MGLLoggingConfiguration.h in Headers */,
- DA8848311CBAFA6200AB86E3 /* NSString+MGLAdditions.h in Headers */,
- 967C864B210A9D3C004DF794 /* UIDevice+MGLAdditions.h in Headers */,
- CAFB3C14234505D500399265 /* MGLMapSnapshotter_Private.h in Headers */,
- 1FCAE2A220B872A400C577DD /* MGLLocationManager.h in Headers */,
- DACA86262019218600E9693A /* MGLRasterDEMSource.h in Headers */,
- 353933F81D3FB79F003F57D7 /* MGLLineStyleLayer.h in Headers */,
- 92F2C3ED1F0E3C3A00268EC0 /* MGLRendererFrontend.h in Headers */,
- DAAF722D1DA903C700312FA4 /* MGLStyleValue_Private.h in Headers */,
- 071BBB031EE76146001FB02A /* MGLImageSource.h in Headers */,
- 74CB5EBB219B280400102936 /* MGLFillExtrusionStyleLayer_Private.h in Headers */,
- DA8847F41CBAFA5100AB86E3 /* MGLOfflinePack.h in Headers */,
- DA88482E1CBAFA6200AB86E3 /* NSException+MGLAdditions.h in Headers */,
- 74CB5ED1219B286400102936 /* MGLSymbolStyleLayer_Private.h in Headers */,
- 9221BAAD2069843A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h in Headers */,
- 96F3F73C1F57124B003E2D2C /* MGLUserLocationHeadingIndicator.h in Headers */,
- 408AA8571DAEDA1700022900 /* NSDictionary+MGLAdditions.h in Headers */,
- 9C6E281422A97FDC0056B7BE /* UIKit+MMEMobileEvents.h in Headers */,
- DA88483F1CBAFB8500AB86E3 /* MGLUserLocation.h in Headers */,
- 558DE7A01E5615E400C7916D /* MGLFoundation_Private.h in Headers */,
- 966FCF4C1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.h in Headers */,
- AC46EB59225E600A0039C013 /* MMECertPin.h in Headers */,
- DA88483D1CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h in Headers */,
- DA17BE301CC4BAC300402C41 /* MGLMapView_Private.h in Headers */,
- DAD165781CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */,
- 9C6E282D22A9815D0056B7BE /* MGLMapboxEvents.h in Headers */,
- DAED38631D62D0FC00D7640F /* NSURL+MGLAdditions.h in Headers */,
- DA88481E1CBAFA6200AB86E3 /* MGLMultiPoint_Private.h in Headers */,
- 3566C7661D4A77BA008152BC /* MGLShapeSource.h in Headers */,
- 35CE61821D4165D9004F2359 /* UIColor+MGLAdditions.h in Headers */,
- 35B82BF81D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h in Headers */,
- 927FBCFF1F4DB05500F8BF1F /* MGLMapSnapshotter.h in Headers */,
- DA35A29E1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */,
- DAF0D8181DFE6B2800B28378 /* MGLAttributionInfo_Private.h in Headers */,
- DAAF722B1DA903C700312FA4 /* MGLStyleValue.h in Headers */,
- 9680273F22653B84006BA4A1 /* MBXSKUToken.h in Headers */,
- DA8847F71CBAFA5100AB86E3 /* MGLOverlay.h in Headers */,
- DA35A2B11CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
- DA88488B1CBB037E00AB86E3 /* SMCalloutView.h in Headers */,
- DA8847FE1CBAFA5100AB86E3 /* MGLTypes.h in Headers */,
- DA8847F11CBAFA5100AB86E3 /* MGLGeometry.h in Headers */,
- DA8848221CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h in Headers */,
- 35136D4C1D4277FC00C20EFD /* MGLSource.h in Headers */,
- 3566C76C1D4A8DFA008152BC /* MGLRasterTileSource.h in Headers */,
- AC46EB61225E60510039C013 /* MMEPinningConfigurationProvider.h in Headers */,
- DA8847F91CBAFA5100AB86E3 /* MGLPolygon.h in Headers */,
- 4049C2AC1DB6E05500B3F799 /* MGLPointCollection_Private.h in Headers */,
- DA8847F81CBAFA5100AB86E3 /* MGLPointAnnotation.h in Headers */,
- 8989B17C201A48EB0081CF59 /* MGLHeatmapStyleLayer.h in Headers */,
- 353933F21D3FB753003F57D7 /* MGLCircleStyleLayer.h in Headers */,
- DA8847F31CBAFA5100AB86E3 /* MGLMultiPoint.h in Headers */,
- 30E578171DAA85520050F07E /* UIImage+MGLAdditions.h in Headers */,
- 96036A01200565C700510F3D /* NSOrthography+MGLAdditions.h in Headers */,
- 1F7454961ECD450D00021D39 /* MGLLight_Private.h in Headers */,
- 1FF48587223710BE00F19727 /* MGLAttributedExpression.h in Headers */,
- DAD1656C1CF41981001FF4B9 /* MGLFeature.h in Headers */,
- 40EDA1C01CFE0E0200D9EA68 /* MGLAnnotationContainerView.h in Headers */,
- 9620BB381E69FE1700705A1D /* MGLSDKUpdateChecker.h in Headers */,
- DA88484F1CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h in Headers */,
- 1753ED421E53CE6F00A9FD90 /* MGLConversion.h in Headers */,
- DA8847F21CBAFA5100AB86E3 /* MGLMapCamera.h in Headers */,
- 3538AA1D1D542239008EC33D /* MGLForegroundStyleLayer.h in Headers */,
- DA8847F51CBAFA5100AB86E3 /* MGLOfflineRegion.h in Headers */,
- DA737EE11D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */,
- 92FC0AEC207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h in Headers */,
- AC518DFF201BB55A00EBC820 /* MGLTelemetryConfig.h in Headers */,
- DA88481B1CBAFA6200AB86E3 /* MGLGeometry_Private.h in Headers */,
- 3510FFF91D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h in Headers */,
- 3557F7B01E1D27D300CCA5E6 /* MGLDistanceFormatter.h in Headers */,
- DAC25FCC200FD83F009BE98E /* NSExpression+MGLPrivateAdditions.h in Headers */,
- 74CB5ECC219B285000102936 /* MGLOpenGLStyleLayer_Private.h in Headers */,
- DA72620B1DEEE3480043BB89 /* MGLOpenGLStyleLayer.h in Headers */,
- 404C26E71D89C55D000AA13D /* MGLTileSource_Private.h in Headers */,
- DA88485C1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.h in Headers */,
- 359F57461D2FDDA6005217F1 /* MGLUserLocationAnnotationView_Private.h in Headers */,
- 404C26E21D89B877000AA13D /* MGLTileSource.h in Headers */,
- DA8847FD1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h in Headers */,
- DA8848601CBAFC2E00AB86E3 /* Mapbox.h in Headers */,
- DAF0D8101DFE0EA000B28378 /* MGLRasterTileSource_Private.h in Headers */,
- 350098BB1D480108004B2AF0 /* MGLVectorTileSource.h in Headers */,
- DA8847F61CBAFA5100AB86E3 /* MGLOfflineStorage.h in Headers */,
- DAD1656E1CF41981001FF4B9 /* MGLFeature_Private.h in Headers */,
- DA88483C1CBAFB8500AB86E3 /* MGLMapView.h in Headers */,
- 3EA9363147E77DD29FA06063 /* MGLRendererConfiguration.h in Headers */,
- 55E5665121C2A1C20008B8B5 /* MMEReachability.h in Headers */,
- 55E5665221C2A2080008B8B5 /* MMENamespacedDependencies.h in Headers */,
- 55E5665321C2A2080008B8B5 /* MapboxMobileEvents.h in Headers */,
- 55E5665521C2A2080008B8B5 /* MMEAPIClient.h in Headers */,
- 55E5665721C2A2080008B8B5 /* MMECommonEventData.h in Headers */,
- 55E5665821C2A2080008B8B5 /* MMEConstants.h in Headers */,
- 55E5665921C2A2080008B8B5 /* MMEDependencyManager.h in Headers */,
- 55E5665A21C2A2080008B8B5 /* MMEEvent.h in Headers */,
- 9C6E281522A97FDC0056B7BE /* CLLocation+MMEMobileEvents.h in Headers */,
- 55E5665B21C2A2080008B8B5 /* MMEEventLogger.h in Headers */,
- 55E5665C21C2A2080008B8B5 /* MMEEventLogReportViewController.h in Headers */,
- 55E5665D21C2A2080008B8B5 /* MMEEventsConfiguration.h in Headers */,
- CFF9F98623A24BF500B0DE92 /* MGLNetworkIntegrationManager.h in Headers */,
- 55E5666021C2A2080008B8B5 /* MMEConfigurator.h in Headers */,
- 55E5666221C2A2080008B8B5 /* MMELocationManager.h in Headers */,
- 55E5666321C2A2080008B8B5 /* MMEMetrics.h in Headers */,
- 55E5666421C2A2080008B8B5 /* MMEMetricsManager.h in Headers */,
- 55E5666621C2A2080008B8B5 /* MMENSURLSessionWrapper.h in Headers */,
- 550570C822958FB400228ECF /* MGLMapView+Impl.h in Headers */,
- 55E5666721C2A2080008B8B5 /* MMETimerManager.h in Headers */,
- 55E5666821C2A2080008B8B5 /* MMETypes.h in Headers */,
- 9C6E281A22A97FDC0056B7BE /* CLLocationManager+MMEMobileEvents.h in Headers */,
- 55E5666921C2A2080008B8B5 /* MMEUIApplicationWrapper.h in Headers */,
- 55E5666A21C2A2080008B8B5 /* MMEUINavigation.h in Headers */,
- 55E5666B21C2A2080008B8B5 /* MMEUniqueIdentifier.h in Headers */,
- 55E5666C21C2A2080008B8B5 /* MMEDispatchManager.h in Headers */,
- 55E5666121C2A2080008B8B5 /* MMEEventsManager.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DABFB85C1CBE99DE00D62B32 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 556660CA1E1BF3A900E2C41B /* MGLFoundation.h in Headers */,
- 96E516ED200058A200A02306 /* MGLComputedShapeSource.h in Headers */,
- 35B82BF91D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h in Headers */,
- 92FC0AEB207CEE16007B6B54 /* MGLShapeOfflineRegion.h in Headers */,
- DA35A2CA1CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */,
- 350098BC1D480108004B2AF0 /* MGLVectorTileSource.h in Headers */,
- FA68F14B1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h in Headers */,
- 96E516DE200054F700A02306 /* MGLGeometry_Private.h in Headers */,
- 353933FC1D3FB7C0003F57D7 /* MGLRasterStyleLayer.h in Headers */,
- 3566C76D1D4A8DFA008152BC /* MGLRasterTileSource.h in Headers */,
- 9641772022D546DA00332422 /* MGLCompassButton_Private.h in Headers */,
- DAED38641D62D0FC00D7640F /* NSURL+MGLAdditions.h in Headers */,
- DABFB85E1CBE99E500D62B32 /* MGLAnnotation.h in Headers */,
- DABFB8641CBE99E500D62B32 /* MGLOfflineStorage.h in Headers */,
- 9C6E283E22A982670056B7BE /* MMEMetrics.h in Headers */,
- 96E516E32000552A00A02306 /* MGLAccountManager_Private.h in Headers */,
- 96E5170420005A6B00A02306 /* SMCalloutView.h in Headers */,
- 9C6E282822A980B40056B7BE /* MMEReachability.h in Headers */,
- 96036A02200565C700510F3D /* NSOrthography+MGLAdditions.h in Headers */,
- 9C6E284122A982670056B7BE /* MMENSURLSessionWrapper.h in Headers */,
- DAD165791CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */,
- 4049C29E1DB6CD6C00B3F799 /* MGLPointCollection.h in Headers */,
- 3566C7671D4A77BA008152BC /* MGLShapeSource.h in Headers */,
- DA35A29F1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */,
- 967C864C210A9D3C004DF794 /* UIDevice+MGLAdditions.h in Headers */,
- 404C26E31D89B877000AA13D /* MGLTileSource.h in Headers */,
- 96E516F6200059EC00A02306 /* MGLRendererFrontend.h in Headers */,
- 9C6E284022A982670056B7BE /* MMEDate.h in Headers */,
- 071BBB041EE76147001FB02A /* MGLImageSource.h in Headers */,
- 74CB5EC0219B280400102936 /* MGLHeatmapStyleLayer_Private.h in Headers */,
- 74CB5ECB219B285000102936 /* MGLLineStyleLayer_Private.h in Headers */,
- CA65C4F921E9BB080068B0D4 /* MGLCluster.h in Headers */,
- DABFB8611CBE99E500D62B32 /* MGLMultiPoint.h in Headers */,
- 74CB5ECD219B285000102936 /* MGLOpenGLStyleLayer_Private.h in Headers */,
- 74CB5ECF219B285000102936 /* MGLRasterStyleLayer_Private.h in Headers */,
- 35D3A1E71E9BE7EC002B38EE /* MGLScaleBar.h in Headers */,
- 96E516EF2000594F00A02306 /* NSArray+MGLAdditions.h in Headers */,
- AC46EB62225E60510039C013 /* MMEPinningConfigurationProvider.h in Headers */,
- 96E516F12000596800A02306 /* NSString+MGLAdditions.h in Headers */,
- 35E0CFE71D3E501500188327 /* MGLStyle_Private.h in Headers */,
- CA55CD42202C16AA00CE7095 /* MGLCameraChangeReason.h in Headers */,
- DABFB86D1CBE9A0F00D62B32 /* MGLAnnotationImage.h in Headers */,
- DABFB8721CBE9A0F00D62B32 /* MGLUserLocation.h in Headers */,
- 92FC0AED207CEE16007B6B54 /* MGLShapeOfflineRegion_Private.h in Headers */,
- 9C6E284222A982670056B7BE /* MMETimerManager.h in Headers */,
- 1FCCEC35222605C400302E3B /* MGLSDKMetricsManager.h in Headers */,
- 927FBD001F4DB05500F8BF1F /* MGLMapSnapshotter.h in Headers */,
- 3566C7721D4A9198008152BC /* MGLSource_Private.h in Headers */,
- 9C6E283D22A982670056B7BE /* MMELocationManager.h in Headers */,
- 353933FF1D3FB7DD003F57D7 /* MGLSymbolStyleLayer.h in Headers */,
- DAAF722E1DA903C700312FA4 /* MGLStyleValue_Private.h in Headers */,
- 9C6E283922A982670056B7BE /* MMEEventLogReportViewController.h in Headers */,
- 1F6A82A92138871900BA5B41 /* MGLLoggingConfiguration_Private.h in Headers */,
- DABFB8661CBE99E500D62B32 /* MGLPointAnnotation.h in Headers */,
- 96E6145A22CC169000109F14 /* MGLCompassButton.h in Headers */,
- 96E516E42000560B00A02306 /* MGLComputedShapeSource_Private.h in Headers */,
- 96E516E92000560B00A02306 /* MGLAnnotationImage_Private.h in Headers */,
- 96E516E52000560B00A02306 /* MGLOfflinePack_Private.h in Headers */,
- DD9BE4F91EB263D20079A3AF /* UIViewController+MGLAdditions.h in Headers */,
- 9680274022653B84006BA4A1 /* MBXSKUToken.h in Headers */,
- DAF2571C201901E200367EF5 /* MGLHillshadeStyleLayer.h in Headers */,
- 74CB5EC4219B282500102936 /* MGLCircleStyleLayer_Private.h in Headers */,
- DABFB8621CBE99E500D62B32 /* MGLOfflinePack.h in Headers */,
- 96E516FA20005A3D00A02306 /* MGLUserLocationHeadingArrowLayer.h in Headers */,
- 96E516E62000560B00A02306 /* MGLOfflineRegion_Private.h in Headers */,
- DAD1656D1CF41981001FF4B9 /* MGLFeature.h in Headers */,
- 550570C922958FB400228ECF /* MGLMapView+Impl.h in Headers */,
- 9C6E284622A982670056B7BE /* MMEUniqueIdentifier.h in Headers */,
- 5580B45C229570A10091291B /* MGLMapView+OpenGL.h in Headers */,
- 96E516E72000560B00A02306 /* MGLOfflineStorage_Private.h in Headers */,
- DA17BE311CC4BDAA00402C41 /* MGLMapView_Private.h in Headers */,
- 9C6E284522A982670056B7BE /* MMEUINavigation.h in Headers */,
- DABFB86C1CBE99E500D62B32 /* MGLTypes.h in Headers */,
- 96E516F720005A2700A02306 /* MGLAnnotationContainerView.h in Headers */,
- DABFB8691CBE99E500D62B32 /* MGLShape.h in Headers */,
- 9620BB391E69FE1700705A1D /* MGLSDKUpdateChecker.h in Headers */,
- 3510FFEB1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.h in Headers */,
- 35E1A4D91D74336F007AA97F /* MGLValueEvaluator.h in Headers */,
- DABFB8701CBE9A0F00D62B32 /* MGLMapView+IBAdditions.h in Headers */,
- 9C6E283822A982670056B7BE /* MMEEventLogger.h in Headers */,
- CAFB3C15234505D500399265 /* MGLMapSnapshotter_Private.h in Headers */,
- 6F018BAF220031BF003E7269 /* UIView+MGLAdditions.h in Headers */,
- 96E516EA2000560B00A02306 /* MGLAnnotationView_Private.h in Headers */,
- 96E516FB20005A4000A02306 /* MGLUserLocationHeadingBeamLayer.h in Headers */,
- 96E516DC2000547000A02306 /* MGLPolyline_Private.h in Headers */,
- 353AFA151D65AB17005A69F4 /* NSDate+MGLAdditions.h in Headers */,
- 3510FFFA1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.h in Headers */,
- 1FF48588223710BE00F19727 /* MGLAttributedExpression.h in Headers */,
- DA72620C1DEEE3480043BB89 /* MGLOpenGLStyleLayer.h in Headers */,
- 1F2B94C1221636D900210640 /* MGLNetworkConfiguration_Private.h in Headers */,
- 35CE61831D4165D9004F2359 /* UIColor+MGLAdditions.h in Headers */,
- 96E516F32000597100A02306 /* NSDictionary+MGLAdditions.h in Headers */,
- 1FCAE2A920B88B3800C577DD /* MGLLocationManager_Private.h in Headers */,
- 9C6E283422A982670056B7BE /* MMECommonEventData.h in Headers */,
- 9C6E281E22A980AC0056B7BE /* CLLocation+MMEMobileEvents.h in Headers */,
- 96E516F02000595800A02306 /* NSBundle+MGLAdditions.h in Headers */,
- 96E516F920005A3500A02306 /* MGLFaux3DUserLocationAnnotationView.h in Headers */,
- 96E516F22000596D00A02306 /* NSException+MGLAdditions.h in Headers */,
- 9C6E282222A980AC0056B7BE /* MMECategoryLoader.h in Headers */,
- 96E516EC2000560B00A02306 /* MGLUserLocationAnnotationView_Private.h in Headers */,
- 1FC4817F2098CD80000D09B4 /* NSPredicate+MGLPrivateAdditions.h in Headers */,
- DABFB8671CBE99E500D62B32 /* MGLPolygon.h in Headers */,
- 404C26E81D89C55D000AA13D /* MGLTileSource_Private.h in Headers */,
- 74CB5EBC219B280400102936 /* MGLFillExtrusionStyleLayer_Private.h in Headers */,
- 9C6E282F22A9824B0056B7BE /* MGLTelemetryConfig.h in Headers */,
- 1F7454931ECBB43F00021D39 /* MGLLight.h in Headers */,
- DAAF722C1DA903C700312FA4 /* MGLStyleValue.h in Headers */,
- DABFB8651CBE99E500D62B32 /* MGLOverlay.h in Headers */,
- 35E79F211D41266300957B9E /* MGLStyleLayer_Private.h in Headers */,
- 350098DD1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.h in Headers */,
- 74CB5EBE219B280400102936 /* MGLFillStyleLayer_Private.h in Headers */,
- 9C6E283122A982530056B7BE /* MapboxMobileEvents.h in Headers */,
- DABFB8681CBE99E500D62B32 /* MGLPolyline.h in Headers */,
- 9C6E283022A9824F0056B7BE /* MGLMapboxEvents.h in Headers */,
- 9C6E283522A982670056B7BE /* MMEConstants.h in Headers */,
- 96E516DF200054FB00A02306 /* MGLShape_Private.h in Headers */,
- DABFB86F1CBE9A0F00D62B32 /* MGLMapView.h in Headers */,
- DA6408DC1DA4E7D300908C90 /* MGLVectorStyleLayer.h in Headers */,
- 353933F31D3FB753003F57D7 /* MGLCircleStyleLayer.h in Headers */,
- 9C6E284722A982670056B7BE /* MMEDispatchManager.h in Headers */,
- 558DE7A11E5615E400C7916D /* MGLFoundation_Private.h in Headers */,
- 96E516F820005A3000A02306 /* MGLCompactCalloutView.h in Headers */,
- 96E516E22000551900A02306 /* MGLPointCollection_Private.h in Headers */,
- 3538AA1E1D542239008EC33D /* MGLForegroundStyleLayer.h in Headers */,
- 30E578181DAA85520050F07E /* UIImage+MGLAdditions.h in Headers */,
- DA704CC31F65A475004B3F28 /* MGLMapAccessibilityElement.h in Headers */,
- 40F887711D7A1E59008ECB67 /* MGLShapeSource_Private.h in Headers */,
- 9C6E283622A982670056B7BE /* MMEDependencyManager.h in Headers */,
- DABFB8631CBE99E500D62B32 /* MGLOfflineRegion.h in Headers */,
- DA35A2B21CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
- DAF0D8141DFE0EC500B28378 /* MGLVectorTileSource_Private.h in Headers */,
- 9C6E283F22A982670056B7BE /* MMEMetricsManager.h in Headers */,
- 8989B17D201A48EB0081CF59 /* MGLHeatmapStyleLayer.h in Headers */,
- 74CB5EC6219B282500102936 /* MGLBackgroundStyleLayer_Private.h in Headers */,
- DABFB8731CBE9A9900D62B32 /* Mapbox.h in Headers */,
- 74CB5EBA219B280400102936 /* MGLHillshadeStyleLayer_Private.h in Headers */,
- 357FE2DE1E02D2B20068B753 /* NSCoder+MGLAdditions.h in Headers */,
- 1753ED431E53CE6F00A9FD90 /* MGLConversion.h in Headers */,
- DAC25FCD200FD83F009BE98E /* NSExpression+MGLPrivateAdditions.h in Headers */,
- 74CB5ED2219B286400102936 /* MGLSymbolStyleLayer_Private.h in Headers */,
- 354B83971D2E873E005D9406 /* MGLUserLocationAnnotationView.h in Headers */,
- DAF0D8111DFE0EA000B28378 /* MGLRasterTileSource_Private.h in Headers */,
- 1F6A82A321360F9D00BA5B41 /* MGLLoggingConfiguration.h in Headers */,
- DABFB86B1CBE99E500D62B32 /* MGLTilePyramidOfflineRegion.h in Headers */,
- 968F36B51E4D128D003A5522 /* MGLDistanceFormatter.h in Headers */,
- 4018B1CB1CDC288E00F666AF /* MGLAnnotationView.h in Headers */,
- DABFB85F1CBE99E500D62B32 /* MGLGeometry.h in Headers */,
- 1FCAE2A320B872A400C577DD /* MGLLocationManager.h in Headers */,
- 9C6E283A22A982670056B7BE /* MMEEventsConfiguration.h in Headers */,
- 96E516E02000550C00A02306 /* MGLFeature_Private.h in Headers */,
- 9C6E284422A982670056B7BE /* MMEUIApplicationWrapper.h in Headers */,
- 9C6E283322A982670056B7BE /* MMEAPIClient.h in Headers */,
- 353933F61D3FB785003F57D7 /* MGLBackgroundStyleLayer.h in Headers */,
- 9C6E283222A982570056B7BE /* MMENamespacedDependencies.h in Headers */,
- 9C6E282422A980AC0056B7BE /* NSData+MMEGZIP.h in Headers */,
- DABFB85D1CBE99E500D62B32 /* MGLAccountManager.h in Headers */,
- 74CB5EB2219B252C00102936 /* MGLStyleLayerManager.h in Headers */,
- 9221BAB020699F8A0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h in Headers */,
- 96E516F5200059B100A02306 /* MGLNetworkConfiguration.h in Headers */,
- 96E516DD200054F200A02306 /* MGLPolygon_Private.h in Headers */,
- 353933F91D3FB79F003F57D7 /* MGLLineStyleLayer.h in Headers */,
- 9C6E282622A980AC0056B7BE /* UIKit+MMEMobileEvents.h in Headers */,
- 96E516EB2000560B00A02306 /* MGLUserLocation_Private.h in Headers */,
- 9C6E282022A980AC0056B7BE /* CLLocationManager+MMEMobileEvents.h in Headers */,
- 35D13AB81D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */,
- 1FCCEC3B222607A500302E3B /* MGLSDKMetricsManager_Private.h in Headers */,
- 35136D4D1D4277FC00C20EFD /* MGLSource.h in Headers */,
- DA35A2BC1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
- 96E516E82000560B00A02306 /* MGLAnnotationContainerView_Private.h in Headers */,
- 9C6E283722A982670056B7BE /* MMEEvent.h in Headers */,
- 35D13AC41D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */,
- 9C6E284322A982670056B7BE /* MMETypes.h in Headers */,
- DABFB86E1CBE9A0F00D62B32 /* MGLCalloutView.h in Headers */,
- CFF9F98723A24BF500B0DE92 /* MGLNetworkIntegrationManager.h in Headers */,
- 96E516FC20005A4400A02306 /* MGLUserLocationHeadingIndicator.h in Headers */,
- 1F7454971ECD450D00021D39 /* MGLLight_Private.h in Headers */,
- 9C6E283C22A982670056B7BE /* MMEEventsManager.h in Headers */,
- 9C6E283B22A982670056B7BE /* MMEConfigurator.h in Headers */,
- DABFB8601CBE99E500D62B32 /* MGLMapCamera.h in Headers */,
- DA737EE21D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */,
- DAF0D8191DFE6B2800B28378 /* MGLAttributionInfo_Private.h in Headers */,
- DABFB86A1CBE99E500D62B32 /* MGLStyle.h in Headers */,
- DA00FC8F1D5EEB0D009AABC8 /* MGLAttributionInfo.h in Headers */,
- 96E516E12000551100A02306 /* MGLMultiPoint_Private.h in Headers */,
- 3EA934623AD0000B7D99C3FB /* MGLRendererConfiguration.h in Headers */,
- DACA86272019218600E9693A /* MGLRasterDEMSource.h in Headers */,
- AC46EB5A225E600A0039C013 /* MMECertPin.h in Headers */,
- 9621F2502091020E005B3800 /* NSExpression+MGLAdditions.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 16376B061FFD9DAF0000563E /* integration */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 16376B101FFD9DAF0000563E /* Build configuration list for PBXNativeTarget "integration" */;
- buildPhases = (
- 16376B031FFD9DAF0000563E /* Sources */,
- 16376B041FFD9DAF0000563E /* Frameworks */,
- 16376B051FFD9DAF0000563E /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 165D0CE620005351009A3C66 /* PBXTargetDependency */,
- CABE5DAC2072FA660003AF3C /* PBXTargetDependency */,
- );
- name = integration;
- productName = "integration-tests";
- productReference = 16376B071FFD9DAF0000563E /* integration.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- 16376B2E1FFDB4B40000563E /* Integration Test Harness */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 16376B421FFDB4B40000563E /* Build configuration list for PBXNativeTarget "Integration Test Harness" */;
- buildPhases = (
- 16376B2B1FFDB4B40000563E /* Sources */,
- 16376B2C1FFDB4B40000563E /* Frameworks */,
- 16376B2D1FFDB4B40000563E /* Resources */,
- CAA69DA6206DCD0E007279CD /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Integration Test Harness";
- productName = "Integration Test Harness";
- productReference = 16376B2F1FFDB4B40000563E /* Integration Test Harness.app */;
- productType = "com.apple.product-type.application";
- };
- DA1DC9491CB6C1C2006E619F /* iosapp */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DA1DC9611CB6C1C2006E619F /* Build configuration list for PBXNativeTarget "iosapp" */;
- buildPhases = (
- DA1DC9461CB6C1C2006E619F /* Sources */,
- DA1DC9471CB6C1C2006E619F /* Frameworks */,
- DA1DC9481CB6C1C2006E619F /* Resources */,
- DA4A269A1CB6F5D3000B7809 /* Embed Frameworks */,
- 074A7F0B2277BD67001A62D1 /* Insert Mapbox Access Token */,
- );
- buildRules = (
- );
- dependencies = (
- DA8847D81CBAF91600AB86E3 /* PBXTargetDependency */,
- );
- name = iosapp;
- productName = iosapp;
- productReference = DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */;
- productType = "com.apple.product-type.application";
- };
- DA2E88501CC036F400F24E7B /* test */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DA2E88591CC036F400F24E7B /* Build configuration list for PBXNativeTarget "test" */;
- buildPhases = (
- DA2E884D1CC036F400F24E7B /* Sources */,
- DA2E884E1CC036F400F24E7B /* Frameworks */,
- DA2E884F1CC036F400F24E7B /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- DA2E88581CC036F400F24E7B /* PBXTargetDependency */,
- );
- name = test;
- productName = test;
- productReference = DA2E88511CC036F400F24E7B /* test.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- DA8847D11CBAF91600AB86E3 /* dynamic */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DA8847DD1CBAF91600AB86E3 /* Build configuration list for PBXNativeTarget "dynamic" */;
- buildPhases = (
- DA8847CD1CBAF91600AB86E3 /* Sources */,
- DA8847CE1CBAF91600AB86E3 /* Frameworks */,
- DA8847CF1CBAF91600AB86E3 /* Headers */,
- DA8847D01CBAF91600AB86E3 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = dynamic;
- productName = framework;
- productReference = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */;
- productType = "com.apple.product-type.framework";
- };
- DA8933D41CCD306400E68420 /* bundle */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DA8933D81CCD306400E68420 /* Build configuration list for PBXNativeTarget "bundle" */;
- buildPhases = (
- DA8933D31CCD306400E68420 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = bundle;
- productName = bundle;
- productReference = DA8933D51CCD306400E68420 /* Mapbox.bundle */;
- productType = "com.apple.product-type.bundle";
- };
- DAA4E4121CBB71D400178DFB /* static */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DAA4E4191CBB71D500178DFB /* Build configuration list for PBXNativeTarget "static" */;
- buildPhases = (
- DAA4E40F1CBB71D400178DFB /* Sources */,
- DAA4E4101CBB71D400178DFB /* Frameworks */,
- DAA4E4111CBB71D400178DFB /* CopyFiles */,
- DABFB85C1CBE99DE00D62B32 /* Headers */,
- );
- buildRules = (
- );
- dependencies = (
- DA25D5CA1CCDA0CC00607828 /* PBXTargetDependency */,
- );
- name = static;
- productName = static;
- productReference = DAA4E4131CBB71D400178DFB /* libMapbox.a */;
- productType = "com.apple.product-type.library.static";
- };
- DABCABA71CB80692000A7C39 /* bench */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DABCABBE1CB80692000A7C39 /* Build configuration list for PBXNativeTarget "bench" */;
- buildPhases = (
- DABCABA41CB80692000A7C39 /* Sources */,
- DABCABA51CB80692000A7C39 /* Frameworks */,
- DABCABA61CB80692000A7C39 /* Resources */,
- DAA4E40C1CBB6C9600178DFB /* Embed Frameworks */,
- 07796BA2227908CB0059CAF1 /* Insert Mapbox Access Token */,
- );
- buildRules = (
- );
- dependencies = (
- DAA4E40B1CBB6C9500178DFB /* PBXTargetDependency */,
- );
- name = bench;
- productName = bench;
- productReference = DABCABA81CB80692000A7C39 /* Bench GL.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- DA1DC9421CB6C1C2006E619F /* Project object */ = {
- isa = PBXProject;
- attributes = {
- CLASSPREFIX = MBX;
- LastUpgradeCheck = 0930;
- ORGANIZATIONNAME = Mapbox;
- TargetAttributes = {
- 16376B061FFD9DAF0000563E = {
- CreatedOnToolsVersion = 9.2;
- LastSwiftMigration = 0940;
- ProvisioningStyle = Automatic;
- TestTargetID = DA1DC9491CB6C1C2006E619F;
- };
- 16376B2E1FFDB4B40000563E = {
- CreatedOnToolsVersion = 9.2;
- DevelopmentTeam = GJZR2MEM28;
- ProvisioningStyle = Automatic;
- };
- DA1DC9491CB6C1C2006E619F = {
- CreatedOnToolsVersion = 7.3;
- DevelopmentTeam = GJZR2MEM28;
- LastSwiftMigration = 0820;
- };
- DA2E88501CC036F400F24E7B = {
- CreatedOnToolsVersion = 7.3;
- LastSwiftMigration = 1010;
- };
- DA8847D11CBAF91600AB86E3 = {
- CreatedOnToolsVersion = 7.3;
- LastSwiftMigration = 0820;
- };
- DA8933D41CCD306400E68420 = {
- CreatedOnToolsVersion = 7.3;
- };
- DAA4E4121CBB71D400178DFB = {
- CreatedOnToolsVersion = 7.3;
- };
- DABCABA71CB80692000A7C39 = {
- CreatedOnToolsVersion = 7.3;
- DevelopmentTeam = GJZR2MEM28;
- };
- };
- };
- buildConfigurationList = DA1DC9451CB6C1C2006E619F /* Build configuration list for PBXProject "ios" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- "zh-Hans",
- "zh-Hant",
- de,
- fr,
- ja,
- sv,
- vi,
- "pt-BR",
- es,
- pl,
- ru,
- uk,
- lt,
- ca,
- fi,
- nl,
- hu,
- bg,
- ar,
- he,
- da,
- "pt-PT",
- ko,
- cs,
- gl,
- );
- mainGroup = DA1DC9411CB6C1C2006E619F;
- productRefGroup = DA1DC94B1CB6C1C2006E619F /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- DA1DC9491CB6C1C2006E619F /* iosapp */,
- DABCABA71CB80692000A7C39 /* bench */,
- DA8847D11CBAF91600AB86E3 /* dynamic */,
- DAA4E4121CBB71D400178DFB /* static */,
- DA8933D41CCD306400E68420 /* bundle */,
- DA2E88501CC036F400F24E7B /* test */,
- 16376B061FFD9DAF0000563E /* integration */,
- 16376B2E1FFDB4B40000563E /* Integration Test Harness */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 16376B051FFD9DAF0000563E /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 16376B471FFDB92B0000563E /* one-liner.json in Resources */,
- 1F8A59F821653275004DFE75 /* sideload_sat.db in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 16376B2D1FFDB4B40000563E /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 16376B3E1FFDB4B40000563E /* LaunchScreen.storyboard in Resources */,
- 16376B3B1FFDB4B40000563E /* Assets.xcassets in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA1DC9481CB6C1C2006E619F /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DD4823771D94AE6C00EB71B7 /* numeric_filter_style.json in Resources */,
- A4F3FB1D2254865900A30170 /* missing_icon.json in Resources */,
- DA1DC9701CB6C6CE006E619F /* points.geojson in Resources */,
- 353BAEF61D646370009A8DA9 /* amsterdam.geojson in Resources */,
- DA1DC9711CB6C6CE006E619F /* polyline.geojson in Resources */,
- DD4823761D94AE6C00EB71B7 /* line_filter_style.json in Resources */,
- 076171C72141A91700668A35 /* Settings.bundle in Resources */,
- DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */,
- DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */,
- DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */,
- 96E027231E57C76E004B8E66 /* Localizable.strings in Resources */,
- 1F26B6C320E1A351007BCC21 /* simple_route.json in Resources */,
- DD4823751D94AE6C00EB71B7 /* fill_filter_style.json in Resources */,
- DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA2E884F1CC036F400F24E7B /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA2784FC1DF02FF4001D5B8D /* Media.xcassets in Resources */,
- 1F8A59F72165326D004DFE75 /* sideload_sat.db in Resources */,
- 353BAEF71D646370009A8DA9 /* amsterdam.geojson in Resources */,
- DA35D0881E1A6309007DED41 /* one-liner.json in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA8847D01CBAF91600AB86E3 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA8933BC1CCD2CA100E68420 /* Foundation.strings in Resources */,
- DA8933A31CCC95B000E68420 /* Localizable.strings in Resources */,
- 960D0C361ECF5AAF008E151F /* Images.xcassets in Resources */,
- DA8933F01CCD387900E68420 /* strip-frameworks.sh in Resources */,
- DAC49C5C1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */,
- DA8933BF1CCD2CAD00E68420 /* Foundation.stringsdict in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA8933D31CCD306400E68420 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA8933E01CCD31DF00E68420 /* Localizable.strings in Resources */,
- DA8933DB1CCD31D400E68420 /* Foundation.strings in Resources */,
- 960D0C371ECF5AAF008E151F /* Images.xcassets in Resources */,
- DA8933DC1CCD31D400E68420 /* Foundation.stringsdict in Resources */,
- DAC49C5D1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DABCABA61CB80692000A7C39 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA89633A1CC549A100684375 /* tiles in Resources */,
- DA8963391CC549A100684375 /* styles in Resources */,
- DABCABBA1CB80692000A7C39 /* LaunchScreen.storyboard in Resources */,
- DA8963381CC549A100684375 /* sprites in Resources */,
- DABCABB71CB80692000A7C39 /* Assets.xcassets in Resources */,
- DA8963371CC549A100684375 /* glyphs in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 074A7F0B2277BD67001A62D1 /* Insert Mapbox Access Token */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "$(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)",
- );
- name = "Insert Mapbox Access Token";
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "$SRCROOT/app/insert_access_token.sh\n";
- };
- 07796BA2227908CB0059CAF1 /* Insert Mapbox Access Token */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "$(SRCROOT)/$(INFOPLIST_PATH)",
- );
- name = "Insert Mapbox Access Token";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/(INFOPLIST_PATH)",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "$SRCROOT/app/insert_access_token.sh\n";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 16376B031FFD9DAF0000563E /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CA4EB8C720863487006AB465 /* MGLStyleLayerIntegrationTests.m in Sources */,
- CA7766842229C11A0008DE9E /* SMCalloutView.m in Sources */,
- 16376B0A1FFD9DAF0000563E /* MBGLIntegrationTests.mm in Sources */,
- CA4F3BDE230F74C3008BAFEA /* MGLMapViewPendingBlockTests.m in Sources */,
- CA88DC3021C85D900059ED5A /* MGLStyleURLIntegrationTest.m in Sources */,
- CA0C27942076CA19001CE5B7 /* MGLMapViewIntegrationTest.m in Sources */,
- CA7766832229C10E0008DE9E /* MGLCompactCalloutView.m in Sources */,
- CAE7AD5520F46EF5003B6782 /* MGLMapSnapshotterSwiftTests.swift in Sources */,
- CA0C27922076C804001CE5B7 /* MGLShapeSourceTests.m in Sources */,
- 077061DA215DA00E000FEF62 /* MGLTestLocationManager.m in Sources */,
- CA0B3C022329DE9A00E4B493 /* MGLTestAssertionHandler.m in Sources */,
- CA6914B520E67F50002DB0EE /* MGLAnnotationViewIntegrationTests.mm in Sources */,
- CA4F3BE223107793008BAFEA /* MGLCameraTransitionTests.mm in Sources */,
- CA4C54FE2324948100A81659 /* MGLSourceTests.swift in Sources */,
- CA1B4A512099FB2200EDD491 /* MGLMapSnapshotterTest.m in Sources */,
- CA4F3BE4231077B9008BAFEA /* MGLCameraTransitionFinishTests.mm in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 16376B2B1FFDB4B40000563E /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 16376B411FFDB4B40000563E /* main.m in Sources */,
- 16376B331FFDB4B40000563E /* AppDelegate.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA1DC9461CB6C1C2006E619F /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA1DC9971CB6E046006E619F /* main.m in Sources */,
- 354B839C1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m in Sources */,
- 965DF51120F9430500438AAC /* MBXFrameTimeGraphView.m in Sources */,
- DA1DC9991CB6E054006E619F /* MBXAppDelegate.m in Sources */,
- 6FA9341721EF372100AA9CA8 /* MBXOrnamentsViewController.m in Sources */,
- DA1DC96B1CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m in Sources */,
- 075AF845227B67C6008D7A4C /* MBXStateManager.m in Sources */,
- DA1DC96A1CB6C6B7006E619F /* MBXCustomCalloutView.m in Sources */,
- 075AF842227B6762008D7A4C /* MBXState.m in Sources */,
- 927FBCFC1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m in Sources */,
- DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */,
- 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */,
- 1F26B6C120E189C9007BCC21 /* MBXCustomLocationViewController.m in Sources */,
- 3E6465D62065767A00685536 /* LimeGreenStyleLayer.m in Sources */,
- 632281DF1E6F855900D75A5D /* MBXEmbeddedMapViewController.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA2E884D1CC036F400F24E7B /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- A4DE3DCC23038CCA005B3473 /* MGLMockGestureRecognizers.m in Sources */,
- A4DE3DCB23038C98005B3473 /* MGLMockGestureRecognizers.h in Sources */,
- CAAA65D92321BBA900F08A39 /* MGLTestAssertionHandler.m in Sources */,
- 6407D6701E0085FD00F6A9C3 /* MGLDocumentationExampleTests.swift in Sources */,
- DA2E88631CC0382C00F24E7B /* MGLOfflineRegionTests.m in Sources */,
- 409F43FD1E9E781C0048729D /* MGLMapViewDelegateIntegrationTests.swift in Sources */,
- DA2E88651CC0382C00F24E7B /* MGLStyleTests.mm in Sources */,
- DA2E88611CC0382C00F24E7B /* MGLGeometryTests.mm in Sources */,
- 170C437D2029D97900863DF0 /* MGLHeatmapStyleLayerTests.mm in Sources */,
- 170C437C2029D96F00863DF0 /* MGLHeatmapColorTests.mm in Sources */,
- 357579801D501E09000B822E /* MGLFillStyleLayerTests.mm in Sources */,
- 35D9DDE21DA25EEC00DAAD69 /* MGLCodingTests.mm in Sources */,
- DA1F8F3D1EBD287B00367E42 /* MGLDocumentationGuideTests.swift in Sources */,
- 076171C32139C70900668A35 /* MGLMapViewTests.m in Sources */,
- 3598544D1E1D38AA00B29F84 /* MGLDistanceFormatterTests.m in Sources */,
- 071BBB071EE77631001FB02A /* MGLImageSourceTests.m in Sources */,
- DA2DBBCE1D51E80400D38FF9 /* MGLStyleLayerTests.m in Sources */,
- DA35A2C61CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */,
- DAE7DEC21E245455007505A6 /* MGLNSStringAdditionsTests.m in Sources */,
- CA86FF0E22D8D5A0009EB14A /* MGLNetworkConfigurationTests.m in Sources */,
- 4085AF091D933DEA00F11B22 /* MGLTileSetTests.mm in Sources */,
- DAEDC4341D603417000224FF /* MGLAttributionInfoTests.m in Sources */,
- 1F7454A91ED08AB400021D39 /* MGLLightTest.mm in Sources */,
- 357579851D502AF5000B822E /* MGLSymbolStyleLayerTests.mm in Sources */,
- 357579871D502AFE000B822E /* MGLLineStyleLayerTests.mm in Sources */,
- 357579891D502B06000B822E /* MGLCircleStyleLayerTests.mm in Sources */,
- 40CFA6511D7875BB008103BD /* MGLShapeSourceTests.mm in Sources */,
- DA35A2C51CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m in Sources */,
- 35B8E08C1D6C8B5100E768D2 /* MGLPredicateTests.mm in Sources */,
- 96E6145622CC135200109F14 /* MGLMapViewCompassViewTests.mm in Sources */,
- 96036A0620059BBA00510F3D /* MGLNSOrthographyAdditionsTests.m in Sources */,
- 1F95931D1E6DE2E900D5B294 /* MGLNSDateAdditionsTests.mm in Sources */,
- DA695426215B1E76002041A4 /* MGLMapCameraTests.m in Sources */,
- 96381C0222C6F3950053497D /* MGLMapViewPitchTests.m in Sources */,
- CA8FBC0921A47BB100D1203C /* MGLRendererConfigurationTests.mm in Sources */,
- CAD9D0AA22A86D6F001B25EE /* MGLResourceTests.mm in Sources */,
- DD58A4C61D822BD000E1F038 /* MGLExpressionTests.mm in Sources */,
- 3575798B1D502B0C000B822E /* MGLBackgroundStyleLayerTests.mm in Sources */,
- 9658C155204761FC00D8A674 /* MGLMapViewScaleBarTests.m in Sources */,
- 409D0A0D1ED614CE00C95D0C /* MGLAnnotationViewIntegrationTests.swift in Sources */,
- 9686D1BD22D9357700194EA0 /* MGLMapViewZoomTests.mm in Sources */,
- DA2E88621CC0382C00F24E7B /* MGLOfflinePackTests.mm in Sources */,
- 55E2AD131E5B125400E8C587 /* MGLOfflineStorageTests.mm in Sources */,
- 07D8C6FF1F67562C00381808 /* MGLComputedShapeSourceTests.m in Sources */,
- 920A3E5D1E6F995200C16EFC /* MGLSourceQueryTests.m in Sources */,
- DA5DB12A1FABF1EE001C2326 /* MGLMapAccessibilityElementTests.m in Sources */,
- 96ED34DE22374C0900E9FCA9 /* MGLMapViewDirectionTests.mm in Sources */,
- 1F0196AA23174B0700F5C819 /* MGLMapViewContentInsetTests.m in Sources */,
- FAE1CDCB1E9D79CB00C40B5B /* MGLFillExtrusionStyleLayerTests.mm in Sources */,
- DA35A2AA1CCA058D00E826B2 /* MGLCoordinateFormatterTests.m in Sources */,
- 357579831D502AE6000B822E /* MGLRasterStyleLayerTests.mm in Sources */,
- 3502D6CC22AE88D5006BDFCE /* MGLAccountManagerTests.m in Sources */,
- DAF25720201902BC00367EF5 /* MGLHillshadeStyleLayerTests.mm in Sources */,
- 1F8E8A81233A9FD9009B51ED /* MGLMapViewGestureRecognizerTests.mm in Sources */,
- 353D23961D0B0DFE002BE09D /* MGLAnnotationViewTests.m in Sources */,
- DA0CD5901CF56F6A00A5F5A5 /* MGLFeatureTests.mm in Sources */,
- 556660D81E1D085500E2C41B /* MGLVersionNumber.m in Sources */,
- 4031ACFF1E9FD29F00A3EA26 /* MGLSDKTestHelpers.swift in Sources */,
- 16376B491FFEED010000563E /* MGLMapViewLayoutTests.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DA8847CD1CBAF91600AB86E3 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 9C188C4F2242C95A0022FA55 /* MMEDate.m in Sources */,
- 35136D391D42271A00C20EFD /* MGLBackgroundStyleLayer.mm in Sources */,
- 3510FFEC1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm in Sources */,
- DAED38651D62D0FC00D7640F /* NSURL+MGLAdditions.m in Sources */,
- 40834BEC1FE05E1800C1BD0D /* MMEEvent.m in Sources */,
- 9620BB3A1E69FE1700705A1D /* MGLSDKUpdateChecker.mm in Sources */,
- 354B83981D2E873E005D9406 /* MGLUserLocationAnnotationView.m in Sources */,
- 40834BEE1FE05E1800C1BD0D /* MMEEventsConfiguration.m in Sources */,
- DA88485D1CBAFB9800AB86E3 /* MGLFaux3DUserLocationAnnotationView.m in Sources */,
- DAD165701CF41981001FF4B9 /* MGLFeature.mm in Sources */,
- 30E578191DAA855E0050F07E /* UIImage+MGLAdditions.mm in Sources */,
- ACD0245A2187EABA00D8C8A7 /* MMEMetricsManager.m in Sources */,
- 550570C622958FB400228ECF /* MGLMapView+Impl.mm in Sources */,
- 40EDA1C11CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */,
- DA8848541CBAFB9800AB86E3 /* MGLCompactCalloutView.m in Sources */,
- 40834BEB1FE05E1800C1BD0D /* MMEDependencyManager.m in Sources */,
- DA8848251CBAFA6200AB86E3 /* MGLPointAnnotation.mm in Sources */,
- 5580B45D229570A10091291B /* MGLMapView+OpenGL.mm in Sources */,
- 40834BEA1FE05E1800C1BD0D /* MMEConstants.m in Sources */,
- AC46EB5F225E60510039C013 /* MMEPinningConfigurationProvider.m in Sources */,
- 929EFFAB1F56DCD4003A77D5 /* MGLAnnotationView.mm in Sources */,
- 35136D3C1D42272500C20EFD /* MGLCircleStyleLayer.mm in Sources */,
- DD9BE4F81EB263C50079A3AF /* UIViewController+MGLAdditions.m in Sources */,
- 350098DE1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */,
- DA6408DD1DA4E7D300908C90 /* MGLVectorStyleLayer.mm in Sources */,
- 40834BF71FE05E1800C1BD0D /* MMEUniqueIdentifier.m in Sources */,
- 3566C7681D4A77BA008152BC /* MGLShapeSource.mm in Sources */,
- 967C864D210A9D3C004DF794 /* UIDevice+MGLAdditions.m in Sources */,
- AC46EB5B225E600A0039C013 /* MMECertPin.m in Sources */,
- 400533021DB0862B0069F638 /* NSArray+MGLAdditions.mm in Sources */,
- 6F018BAE220031B8003E7269 /* UIView+MGLAdditions.m in Sources */,
- 96036A03200565C700510F3D /* NSOrthography+MGLAdditions.m in Sources */,
- ACA65F592140697200537748 /* MMEDispatchManager.m in Sources */,
- 40834BF31FE05E1800C1BD0D /* MMETimerManager.m in Sources */,
- 9C6E281822A97FDC0056B7BE /* CLLocation+MMEMobileEvents.m in Sources */,
- 35136D421D42274500C20EFD /* MGLRasterStyleLayer.mm in Sources */,
- 3538AA1F1D542239008EC33D /* MGLForegroundStyleLayer.mm in Sources */,
- 406E99B91FFEFF1B00D9FFCC /* MMEEventLogReportViewController.m in Sources */,
- ACA65F53214066E600537748 /* MMEConfigurator.m in Sources */,
- 9C6E281722A97FDC0056B7BE /* NSData+MMEGZIP.m in Sources */,
- DA00FC901D5EEB0D009AABC8 /* MGLAttributionInfo.mm in Sources */,
- DA88482D1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m in Sources */,
- 406E99BB1FFF006C00D9FFCC /* MMEUINavigation.m in Sources */,
- 966FCF541F3C323300F2B6DE /* MGLUserLocationHeadingArrowLayer.m in Sources */,
- DA88485B1CBAFB9800AB86E3 /* MGLUserLocation.m in Sources */,
- 927FBD011F4DB05500F8BF1F /* MGLMapSnapshotter.mm in Sources */,
- 350098BD1D480108004B2AF0 /* MGLVectorTileSource.mm in Sources */,
- 3566C76E1D4A8DFA008152BC /* MGLRasterTileSource.mm in Sources */,
- DA88488C1CBB037E00AB86E3 /* SMCalloutView.m in Sources */,
- 9C6E281322A97FDC0056B7BE /* MMECategoryLoader.m in Sources */,
- 35136D4E1D4277FC00C20EFD /* MGLSource.mm in Sources */,
- 1F06668D1EC64F8E001C16D7 /* MGLLight.mm in Sources */,
- DA35A2B81CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
- DAD1657A1CF4CDFF001FF4B9 /* MGLShapeCollection.mm in Sources */,
- DAF25719201901E200367EF5 /* MGLHillshadeStyleLayer.mm in Sources */,
- 9C6E281922A97FDC0056B7BE /* UIKit+MMEMobileEvents.m in Sources */,
- 35136D451D42275100C20EFD /* MGLSymbolStyleLayer.mm in Sources */,
- CF75A91522D85E860058A5C4 /* MGLLoggingConfiguration.mm in Sources */,
- 35599DED1D46F14E0048254D /* MGLStyleValue.mm in Sources */,
- CFF9F98823A24BF500B0DE92 /* MGLNetworkIntegrationManager.m in Sources */,
- DA8848211CBAFA6200AB86E3 /* MGLOfflinePack.mm in Sources */,
- 0778DD441F67556C00A73B34 /* MGLComputedShapeSource.mm in Sources */,
- 3557F7B21E1D27D300CCA5E6 /* MGLDistanceFormatter.m in Sources */,
- 9C6E282B22A981570056B7BE /* MGLMapboxEvents.m in Sources */,
- 1FCCEC36222605C400302E3B /* MGLSDKMetricsManager.m in Sources */,
- 96E6145B22CC169000109F14 /* MGLCompassButton.mm in Sources */,
- 40834BE71FE05E1800C1BD0D /* MMEAPIClient.m in Sources */,
- DA8848591CBAFB9800AB86E3 /* MGLMapView.mm in Sources */,
- DA8848501CBAFB9800AB86E3 /* MGLAnnotationImage.m in Sources */,
- 40834BF01FE05E1800C1BD0D /* MMELocationManager.m in Sources */,
- DA8848281CBAFA6200AB86E3 /* MGLShape.mm in Sources */,
- DA35A2B31CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
- DD0902A91DB1929D00C5BDCE /* MGLNetworkConfiguration.m in Sources */,
- 35D13AB91D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */,
- 74CB5EB3219B252C00102936 /* MGLStyleLayerManager.mm in Sources */,
- DA35A2CB1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */,
- 071BBB001EE7613F001FB02A /* MGLImageSource.mm in Sources */,
- DA8848321CBAFA6200AB86E3 /* NSString+MGLAdditions.m in Sources */,
- 408AA8581DAEDA1E00022900 /* NSDictionary+MGLAdditions.mm in Sources */,
- DA35A2A11CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
- 92FC0AEE207CEE16007B6B54 /* MGLShapeOfflineRegion.mm in Sources */,
- ACD0245E2187EACB00D8C8A7 /* MMEMetrics.m in Sources */,
- 40834BF61FE05E1800C1BD0D /* MMEUIApplicationWrapper.m in Sources */,
- DA8848291CBAFA6200AB86E3 /* MGLStyle.mm in Sources */,
- 357FE2DF1E02D2B20068B753 /* NSCoder+MGLAdditions.mm in Sources */,
- 1FF48589223710BE00F19727 /* MGLAttributedExpression.m in Sources */,
- DA88481C1CBAFA6200AB86E3 /* MGLGeometry.mm in Sources */,
- 558DE7A21E5615E400C7916D /* MGLFoundation.mm in Sources */,
- 40834BE91FE05E1800C1BD0D /* MMECommonEventData.m in Sources */,
- 3510FFF21D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm in Sources */,
- DA88481F1CBAFA6200AB86E3 /* MGLMultiPoint.mm in Sources */,
- DA88482B1CBAFA6200AB86E3 /* MGLTypes.m in Sources */,
- FA68F14D1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm in Sources */,
- 404C26E41D89B877000AA13D /* MGLTileSource.mm in Sources */,
- 355AE0011E9281DA00F3939D /* MGLScaleBar.mm in Sources */,
- DA88481D1CBAFA6200AB86E3 /* MGLMapCamera.mm in Sources */,
- DACA86282019218600E9693A /* MGLRasterDEMSource.mm in Sources */,
- DA8848261CBAFA6200AB86E3 /* MGLPolygon.mm in Sources */,
- 35B82BFA1D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm in Sources */,
- 40834BF91FE05E1800C1BD0D /* MMEReachability.m in Sources */,
- 40834BF21FE05E1800C1BD0D /* MMENSURLSessionWrapper.m in Sources */,
- 966FCF4E1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m in Sources */,
- 8989B17E201A48EB0081CF59 /* MGLHeatmapStyleLayer.mm in Sources */,
- 40834BED1FE05E1800C1BD0D /* MMEEventLogger.m in Sources */,
- 353AFA161D65AB17005A69F4 /* NSDate+MGLAdditions.mm in Sources */,
- 1FCAE2A420B872A400C577DD /* MGLLocationManager.m in Sources */,
- 9C6E281C22A97FDC0056B7BE /* CLLocationManager+MMEMobileEvents.m in Sources */,
- 40834BEF1FE05E1800C1BD0D /* MMEEventsManager.m in Sources */,
- 35D13AC51D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */,
- DA8848241CBAFA6200AB86E3 /* MGLOfflineStorage.mm in Sources */,
- DA88482A1CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm in Sources */,
- 4049C29F1DB6CD6C00B3F799 /* MGLPointCollection.mm in Sources */,
- 35136D3F1D42273000C20EFD /* MGLLineStyleLayer.mm in Sources */,
- DA704CC41F65A475004B3F28 /* MGLMapAccessibilityElement.mm in Sources */,
- DA72620D1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm in Sources */,
- DA88481A1CBAFA6200AB86E3 /* MGLAccountManager.m in Sources */,
- 3510FFFB1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm in Sources */,
- AC518E03201BB56000EBC820 /* MGLTelemetryConfig.m in Sources */,
- DA8848271CBAFA6200AB86E3 /* MGLPolyline.mm in Sources */,
- 35CE61841D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */,
- 3EA93369F61CF70AFA50465D /* MGLRendererConfiguration.mm in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAA4E40F1CBB71D400178DFB /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 35136D3A1D42271A00C20EFD /* MGLBackgroundStyleLayer.mm in Sources */,
- 3510FFED1D6D9C7A00F413B2 /* NSComparisonPredicate+MGLAdditions.mm in Sources */,
- 354B83991D2E873E005D9406 /* MGLUserLocationAnnotationView.m in Sources */,
- 40834C001FE05E1800C1BD0D /* MMEEvent.m in Sources */,
- 9620BB3B1E69FE1700705A1D /* MGLSDKUpdateChecker.mm in Sources */,
- DAA4E4221CBB730400178DFB /* MGLPointAnnotation.mm in Sources */,
- 40834C021FE05E1800C1BD0D /* MMEEventsConfiguration.m in Sources */,
- DAED38661D62D0FC00D7640F /* NSURL+MGLAdditions.m in Sources */,
- DAD165711CF41981001FF4B9 /* MGLFeature.mm in Sources */,
- 30E5781A1DAA855E0050F07E /* UIImage+MGLAdditions.mm in Sources */,
- ACD0245B2187EABA00D8C8A7 /* MMEMetricsManager.m in Sources */,
- 40EDA1C21CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */,
- 550570C722958FB400228ECF /* MGLMapView+Impl.mm in Sources */,
- DAA4E4291CBB730400178DFB /* NSBundle+MGLAdditions.m in Sources */,
- 40834BFF1FE05E1800C1BD0D /* MMEDependencyManager.m in Sources */,
- 40834BFE1FE05E1800C1BD0D /* MMEConstants.m in Sources */,
- 35136D3D1D42272500C20EFD /* MGLCircleStyleLayer.mm in Sources */,
- 5580B45E229570A10091291B /* MGLMapView+OpenGL.mm in Sources */,
- DD9BE4FA1EB263F40079A3AF /* UIViewController+MGLAdditions.m in Sources */,
- AC46EB60225E60510039C013 /* MMEPinningConfigurationProvider.m in Sources */,
- 350098DF1D484E60004B2AF0 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */,
- DA6408DE1DA4E7D300908C90 /* MGLVectorStyleLayer.mm in Sources */,
- 3566C7691D4A77BA008152BC /* MGLShapeSource.mm in Sources */,
- 9C6E282722A980AC0056B7BE /* UIKit+MMEMobileEvents.m in Sources */,
- 40834C0B1FE05E1800C1BD0D /* MMEUniqueIdentifier.m in Sources */,
- 400533031DB086490069F638 /* NSArray+MGLAdditions.mm in Sources */,
- 35136D431D42274500C20EFD /* MGLRasterStyleLayer.mm in Sources */,
- 9C6E282322A980AC0056B7BE /* MMECategoryLoader.m in Sources */,
- 967C864E210A9D3C004DF794 /* UIDevice+MGLAdditions.m in Sources */,
- 96036A04200565C700510F3D /* NSOrthography+MGLAdditions.m in Sources */,
- AC46EB5C225E600A0039C013 /* MMECertPin.m in Sources */,
- 6F018BB1220031C1003E7269 /* UIView+MGLAdditions.m in Sources */,
- 40834C071FE05E1800C1BD0D /* MMETimerManager.m in Sources */,
- ACA65F5A2140697200537748 /* MMEDispatchManager.m in Sources */,
- 3538AA201D542239008EC33D /* MGLForegroundStyleLayer.mm in Sources */,
- DA00FC911D5EEB0D009AABC8 /* MGLAttributionInfo.mm in Sources */,
- 40834C051FE05E1800C1BD0D /* MMEDate.m in Sources */,
- 9C6E282122A980AC0056B7BE /* CLLocationManager+MMEMobileEvents.m in Sources */,
- 406E99BA1FFEFF1B00D9FFCC /* MMEEventLogReportViewController.m in Sources */,
- ACA65F54214066E600537748 /* MMEConfigurator.m in Sources */,
- DAA4E4201CBB730400178DFB /* MGLOfflinePack.mm in Sources */,
- 966FCF551F3C323500F2B6DE /* MGLUserLocationHeadingArrowLayer.m in Sources */,
- DAA4E4331CBB730400178DFB /* MGLUserLocation.m in Sources */,
- 406E99BC1FFF006D00D9FFCC /* MMEUINavigation.m in Sources */,
- 927FBD021F4DB05500F8BF1F /* MGLMapSnapshotter.mm in Sources */,
- 350098BE1D480108004B2AF0 /* MGLVectorTileSource.mm in Sources */,
- 3566C76F1D4A8DFA008152BC /* MGLRasterTileSource.mm in Sources */,
- DAA4E4351CBB730400178DFB /* SMCalloutView.m in Sources */,
- 35136D4F1D4277FC00C20EFD /* MGLSource.mm in Sources */,
- DA35A2B91CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
- DAD1657B1CF4CDFF001FF4B9 /* MGLShapeCollection.mm in Sources */,
- DAA4E4251CBB730400178DFB /* MGLShape.mm in Sources */,
- 35136D461D42275100C20EFD /* MGLSymbolStyleLayer.mm in Sources */,
- DAF2571A201901E200367EF5 /* MGLHillshadeStyleLayer.mm in Sources */,
- 35599DEE1D46F14E0048254D /* MGLStyleValue.mm in Sources */,
- DAA4E42B1CBB730400178DFB /* NSString+MGLAdditions.m in Sources */,
- DAA4E4261CBB730400178DFB /* MGLStyle.mm in Sources */,
- CF75A91622D85E860058A5C4 /* MGLLoggingConfiguration.mm in Sources */,
- DAA32CC31E4C6B65006F8D24 /* MGLDistanceFormatter.m in Sources */,
- CFF9F98923A24BF500B0DE92 /* MGLNetworkIntegrationManager.m in Sources */,
- DAA4E41D1CBB730400178DFB /* MGLGeometry.mm in Sources */,
- 40834BFB1FE05E1800C1BD0D /* MMEAPIClient.m in Sources */,
- 1FCCEC37222605C400302E3B /* MGLSDKMetricsManager.m in Sources */,
- 9C6E282C22A981580056B7BE /* MGLMapboxEvents.m in Sources */,
- DAA4E41F1CBB730400178DFB /* MGLMultiPoint.mm in Sources */,
- 96E6145C22CC169000109F14 /* MGLCompassButton.mm in Sources */,
- DD0902AA1DB1929D00C5BDCE /* MGLNetworkConfiguration.m in Sources */,
- 40834C041FE05E1800C1BD0D /* MMELocationManager.m in Sources */,
- 9C6E281F22A980AC0056B7BE /* CLLocation+MMEMobileEvents.m in Sources */,
- DA35A2B41CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
- 9C6E282522A980AC0056B7BE /* NSData+MMEGZIP.m in Sources */,
- 35D13ABA1D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */,
- 071BBAFF1EE7613E001FB02A /* MGLImageSource.mm in Sources */,
- DA35A2CC1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */,
- 408AA8591DAEDA1E00022900 /* NSDictionary+MGLAdditions.mm in Sources */,
- 74CB5EB4219B252C00102936 /* MGLStyleLayerManager.mm in Sources */,
- DAA4E4281CBB730400178DFB /* MGLTypes.m in Sources */,
- DA35A2A21CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
- 357FE2E01E02D2B20068B753 /* NSCoder+MGLAdditions.mm in Sources */,
- 92FC0AEF207CEE16007B6B54 /* MGLShapeOfflineRegion.mm in Sources */,
- DAA4E42D1CBB730400178DFB /* MGLAnnotationImage.m in Sources */,
- ACD0245F2187EACB00D8C8A7 /* MMEMetrics.m in Sources */,
- 40834C0A1FE05E1800C1BD0D /* MMEUIApplicationWrapper.m in Sources */,
- 558DE7A31E5615E400C7916D /* MGLFoundation.mm in Sources */,
- 3510FFF31D6D9D8C00F413B2 /* NSExpression+MGLAdditions.mm in Sources */,
- DAA4E4321CBB730400178DFB /* MGLMapView.mm in Sources */,
- 1FF4858A223710BE00F19727 /* MGLAttributedExpression.m in Sources */,
- 40834BFD1FE05E1800C1BD0D /* MMECommonEventData.m in Sources */,
- DAA4E41E1CBB730400178DFB /* MGLMapCamera.mm in Sources */,
- FA68F14E1E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm in Sources */,
- 1F7454921ECBB42C00021D39 /* MGLLight.mm in Sources */,
- 404C26E51D89B877000AA13D /* MGLTileSource.mm in Sources */,
- 355AE0021E9281DA00F3939D /* MGLScaleBar.mm in Sources */,
- 4018B1C81CDC287F00F666AF /* MGLAnnotationView.mm in Sources */,
- 07D8C6FB1F67560100381808 /* MGLComputedShapeSource.mm in Sources */,
- DAA4E4341CBB730400178DFB /* MGLFaux3DUserLocationAnnotationView.m in Sources */,
- DACA86292019218600E9693A /* MGLRasterDEMSource.mm in Sources */,
- 35B82BFB1D6C5F8400B1B721 /* NSPredicate+MGLAdditions.mm in Sources */,
- 40834C0D1FE05E1800C1BD0D /* MMEReachability.m in Sources */,
- 40834C061FE05E1800C1BD0D /* MMENSURLSessionWrapper.m in Sources */,
- 966FCF4F1F3A5C9200F2B6DE /* MGLUserLocationHeadingBeamLayer.m in Sources */,
- DAA4E4231CBB730400178DFB /* MGLPolygon.mm in Sources */,
- 8989B17F201A48EB0081CF59 /* MGLHeatmapStyleLayer.mm in Sources */,
- 353AFA171D65AB17005A69F4 /* NSDate+MGLAdditions.mm in Sources */,
- 40834C011FE05E1800C1BD0D /* MMEEventLogger.m in Sources */,
- 35D13AC61D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */,
- 1FCAE2A520B872A400C577DD /* MGLLocationManager.m in Sources */,
- 40834C031FE05E1800C1BD0D /* MMEEventsManager.m in Sources */,
- DAA4E4211CBB730400178DFB /* MGLOfflineStorage.mm in Sources */,
- 4049C2A01DB6CD6C00B3F799 /* MGLPointCollection.mm in Sources */,
- 35136D401D42273000C20EFD /* MGLLineStyleLayer.mm in Sources */,
- DA704CC51F65A475004B3F28 /* MGLMapAccessibilityElement.mm in Sources */,
- DA72620E1DEEE3480043BB89 /* MGLOpenGLStyleLayer.mm in Sources */,
- DAA4E42F1CBB730400178DFB /* MGLCompactCalloutView.m in Sources */,
- 3510FFFC1D6DCC4700F413B2 /* NSCompoundPredicate+MGLAdditions.mm in Sources */,
- AC518E04201BB56100EBC820 /* MGLTelemetryConfig.m in Sources */,
- DAA4E4271CBB730400178DFB /* MGLTilePyramidOfflineRegion.mm in Sources */,
- DAA4E41C1CBB730400178DFB /* MGLAccountManager.m in Sources */,
- 35CE61851D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */,
- DAA4E4241CBB730400178DFB /* MGLPolyline.mm in Sources */,
- 3EA9366247780E4F252652A8 /* MGLRendererConfiguration.mm in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DABCABA41CB80692000A7C39 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DABCABB21CB80692000A7C39 /* MBXBenchViewController.mm in Sources */,
- DABCABAF1CB80692000A7C39 /* MBXBenchAppDelegate.m in Sources */,
- DABCABC21CB8071D000A7C39 /* locations.cpp in Sources */,
- DABCABAC1CB80692000A7C39 /* main.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 165D0CE620005351009A3C66 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = DA8847D11CBAF91600AB86E3 /* dynamic */;
- targetProxy = 165D0CE520005351009A3C66 /* PBXContainerItemProxy */;
- };
- CABE5DAC2072FA660003AF3C /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 16376B2E1FFDB4B40000563E /* Integration Test Harness */;
- targetProxy = CABE5DAB2072FA660003AF3C /* PBXContainerItemProxy */;
- };
- DA25D5CA1CCDA0CC00607828 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = DA8933D41CCD306400E68420 /* bundle */;
- targetProxy = DA25D5C91CCDA0CC00607828 /* PBXContainerItemProxy */;
- };
- DA2E88581CC036F400F24E7B /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = DA8847D11CBAF91600AB86E3 /* dynamic */;
- targetProxy = DA2E88571CC036F400F24E7B /* PBXContainerItemProxy */;
- };
- DA8847D81CBAF91600AB86E3 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = DA8847D11CBAF91600AB86E3 /* dynamic */;
- targetProxy = DA8847D71CBAF91600AB86E3 /* PBXContainerItemProxy */;
- };
- DAA4E40B1CBB6C9500178DFB /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = DA8847D11CBAF91600AB86E3 /* dynamic */;
- targetProxy = DAA4E40A1CBB6C9500178DFB /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 16376B3C1FFDB4B40000563E /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 16376B3D1FFDB4B40000563E /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "<group>";
- };
- 96E027251E57C76E004B8E66 /* Localizable.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 96E027241E57C76E004B8E66 /* Base */,
- 96E027271E57C77A004B8E66 /* ja */,
- 96E027281E57C7DB004B8E66 /* zh-Hans */,
- 96E027291E57C7DE004B8E66 /* zh-Hant */,
- 96E0272A1E57C7DF004B8E66 /* de */,
- 96E0272B1E57C7E3004B8E66 /* sv */,
- 96E0272C1E57C7E5004B8E66 /* fr */,
- 96E0272D1E57C7E6004B8E66 /* vi */,
- 96E0272E1E57C7E7004B8E66 /* pt-BR */,
- 9660916B1E5BBFD700A9A03B /* es */,
- 9660916C1E5BBFD900A9A03B /* pl */,
- 9660916D1E5BBFDB00A9A03B /* ru */,
- 9660916E1E5BBFDC00A9A03B /* uk */,
- 9660916F1E5BBFDE00A9A03B /* lt */,
- DA618B1A1E68883900CB7F44 /* ca */,
- DA618B2B1E68932D00CB7F44 /* fi */,
- DAE8CCAD1E6E8C70009B5CB0 /* nl */,
- DA5C09BA1EFC48550056B178 /* hu */,
- DA3389651FA3EE1B001EA329 /* bg */,
- DA80E9601FE84AD90065FC9B /* ar */,
- DACBC60B20118ABE00C4D7E2 /* he */,
- DAD88E07202ACFE800AAA536 /* da */,
- DA93409B208562EB0059919A /* pt-PT */,
- DAFEB3742093AE3700A86A83 /* ko */,
- 1FDB00C721F8F14E00D21389 /* cs */,
- DAE9ED572238990A00C01291 /* gl */,
- );
- name = Localizable.strings;
- sourceTree = "<group>";
- };
- DA89339F1CCC951200E68420 /* Localizable.strings */ = {
- isa = PBXVariantGroup;
- children = (
- DA8933A01CCC951200E68420 /* Base */,
- 20DABE881DF78148007AC5FF /* zh-Hans */,
- DAFBD0D31E3FA7A1000CD6BF /* zh-Hant */,
- DAA32CA41E4C4502006F8D24 /* de */,
- DAA32CAC1E4C4971006F8D24 /* fr */,
- DAA32CB71E4C4ED8006F8D24 /* sv */,
- DAA32CBC1E4C4F5D006F8D24 /* vi */,
- DA9C012D1E4C7B1F00C4742A /* pt-BR */,
- 968F36B41E4D0FC6003A5522 /* ja */,
- DA737ADB1E5913BA00AD2CDE /* es */,
- DA737AE71E59172C00AD2CDE /* ru */,
- DA737AE91E5917C300AD2CDE /* uk */,
- DA1AC01B1E5B8774006DF1D6 /* lt */,
- DA618B1B1E68884E00CB7F44 /* ca */,
- DA5C09BB1EFC486C0056B178 /* hu */,
- DA3389681FA3EE48001EA329 /* bg */,
- DACBC60D20118ADE00C4D7E2 /* he */,
- DAD88E0A202AD03C00AAA536 /* da */,
- DA93409D208563220059919A /* pt-PT */,
- DAFEB3772093AE7900A86A83 /* ko */,
- 1FDB00CA21F8F15100D21389 /* cs */,
- DAE9ED5A2238993A00C01291 /* gl */,
- );
- name = Localizable.strings;
- sourceTree = "<group>";
- };
- DA8933BA1CCD2CA100E68420 /* Foundation.strings */ = {
- isa = PBXVariantGroup;
- children = (
- DA8933BB1CCD2CA100E68420 /* Base */,
- 20DABE861DF78148007AC5FF /* zh-Hans */,
- DAFBD0D21E3FA7A1000CD6BF /* zh-Hant */,
- DAA32CA31E4C44F1006F8D24 /* de */,
- DAA32CB51E4C4CF4006F8D24 /* ja */,
- DAA32CBD1E4C4F62006F8D24 /* vi */,
- DA6023F11E4CE94300DBFF23 /* sv */,
- DA618B1C1E6888EC00CB7F44 /* ca */,
- DA618B251E68920500CB7F44 /* lt */,
- DAE9E0F11EB7BF1B001E8E8B /* es */,
- DA704CBB1F637311004B3F28 /* ru */,
- DA704CC71F6663A3004B3F28 /* uk */,
- DA33895F1FA3EAB7001EA329 /* pt-BR */,
- DA3389661FA3EE28001EA329 /* bg */,
- DACBC60C20118AD000C4D7E2 /* he */,
- DAD88E08202AD01300AAA536 /* da */,
- DAFEB3752093AE4800A86A83 /* ko */,
- 1FDB00C821F8F14F00D21389 /* cs */,
- DAE9ED582238992900C01291 /* gl */,
- );
- name = Foundation.strings;
- sourceTree = "<group>";
- };
- DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */ = {
- isa = PBXVariantGroup;
- children = (
- DA8933BE1CCD2CAD00E68420 /* en */,
- DAA32CA11E4C44DB006F8D24 /* de */,
- DAA32CAB1E4C491A006F8D24 /* fr */,
- DA9C012C1E4C7ADB00C4742A /* pt-BR */,
- DA6023F21E4CE94800DBFF23 /* sv */,
- DA737ADA1E59139D00AD2CDE /* es */,
- DA737AE01E59150A00AD2CDE /* pl */,
- DA737AE51E5916D400AD2CDE /* ru */,
- DA1AC0201E5B8917006DF1D6 /* uk */,
- DA618B1D1E6888F500CB7F44 /* ca */,
- DA618B261E68920D00CB7F44 /* lt */,
- DACFE7981F66EA2100630DA8 /* vi */,
- DA3389671FA3EE2F001EA329 /* bg */,
- DA33896B1FA3EF4A001EA329 /* hu */,
- DA80E9611FE84AEF0065FC9B /* ar */,
- DAD88E09202AD01F00AAA536 /* da */,
- DA93409C2085630C0059919A /* pt-PT */,
- DAFEB3762093AE6800A86A83 /* ko */,
- 1FDB00C921F8F15000D21389 /* cs */,
- DAE9ED592238992E00C01291 /* gl */,
- );
- name = Foundation.stringsdict;
- sourceTree = "<group>";
- };
- DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- DABCABB91CB80692000A7C39 /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "<group>";
- };
- DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */ = {
- isa = PBXVariantGroup;
- children = (
- DAC49C621CD07D74009E1AA3 /* en */,
- DAA32CA21E4C44DD006F8D24 /* de */,
- DAA32CA91E4C4919006F8D24 /* fr */,
- DA9C012B1E4C7AD900C4742A /* pt-BR */,
- DA618B111E68823600CB7F44 /* ru */,
- DA618B191E68883700CB7F44 /* ca */,
- 35DE35531EB7CBA8004917C5 /* sv */,
- DA57D4AA1EBA8ED300793288 /* es */,
- DA57D4AB1EBA909900793288 /* lt */,
- DA57D4AC1EBA922A00793288 /* vi */,
- DA704CBC1F637405004B3F28 /* uk */,
- DA704CBD1F63746E004B3F28 /* zh-Hant */,
- DA3389691FA3EE50001EA329 /* bg */,
- DAD88E0B202AD04D00AAA536 /* da */,
- DA93409E208563360059919A /* pt-PT */,
- DAFEB3782093AE9200A86A83 /* ko */,
- DAAE9B1C213A636B00F7D722 /* ar */,
- 1FDB00CB21F8F15300D21389 /* cs */,
- DAE9ED5B2238995A00C01291 /* gl */,
- );
- name = Localizable.stringsdict;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 16376B0E1FFD9DAF0000563E /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_ENABLE_MODULES = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- HEADER_SEARCH_PATHS = "$(mbgl_core_INCLUDE_DIRECTORIES)";
- INFOPLIST_FILE = "Integration Tests/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness";
- };
- name = Debug;
- };
- 16376B0F1FFD9DAF0000563E /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_ENABLE_MODULES = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- HEADER_SEARCH_PATHS = "$(mbgl_core_INCLUDE_DIRECTORIES)";
- INFOPLIST_FILE = "Integration Tests/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness";
- };
- name = Release;
- };
- 16376B431FFDB4B40000563E /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = "Integration Test Harness/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness";
- PRODUCT_NAME = "$(TARGET_NAME)";
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 16376B441FFDB4B40000563E /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = "Integration Test Harness/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness";
- PRODUCT_NAME = "$(TARGET_NAME)";
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Release;
- };
- 96AF1AA321B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_GCD_PERFORMANCE = YES;
- CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = YES;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES;
- CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "c++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- CURRENT_COMMIT_HASH = deadbeef;
- CURRENT_SEMANTIC_VERSION = 1.0.0;
- CURRENT_SHORT_VERSION = 1.0;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_ENABLE_CPP_RTTI = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_PREPROCESSOR_DEFINITIONS = "";
- "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "";
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
- GCC_WARN_SHADOW = YES;
- GCC_WARN_SIGN_COMPARE = YES;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNKNOWN_PRAGMAS = YES;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_LABEL = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SYMROOT = ../../build/ios;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = RelWithDebInfo;
- };
- 96AF1AA421B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- INFOPLIST_FILE = "$(SRCROOT)/app/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxGL;
- PRODUCT_NAME = "Mapbox GL";
- };
- name = RelWithDebInfo;
- };
- 96AF1AA521B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- HEADER_SEARCH_PATHS = "$(mbgl_core_INCLUDE_DIRECTORIES)";
- INFOPLIST_FILE = "$(SRCROOT)/benchmark/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.bench;
- PRODUCT_NAME = "Bench GL";
- };
- name = RelWithDebInfo;
- };
- 96AF1AA621B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_PREFIX_HEADER = "$SRCROOT/src/Mapbox-Prefix.pch";
- GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = framework/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)",
- "$(PROJECT_DIR)/vendor/mapbox-accounts-ios",
- );
- LLVM_LTO = YES;
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(sqlite_cflags)",
- "$(zlib_cflags)",
- "$(rapidjson_cflags)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = RelWithDebInfo;
- };
- 96AF1AA721B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
- DEFINES_MODULE = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)",
- "$(PROJECT_DIR)/vendor/mapbox-accounts-ios",
- );
- LLVM_LTO = YES;
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(sqlite_cflags)",
- "$(zlib_cflags)",
- "$(rapidjson_cflags)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "-ObjC",
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_NAME = Mapbox;
- PUBLIC_HEADERS_FOLDER_PATH = Headers;
- SKIP_INSTALL = YES;
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = RelWithDebInfo;
- };
- 96AF1AA821B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- INFOPLIST_FILE = "framework/Info-static.plist";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- WRAPPER_EXTENSION = bundle;
- };
- name = RelWithDebInfo;
- };
- 96AF1AA921B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = test/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- OTHER_SWIFT_FLAGS = "-warnings-as-errors";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- };
- name = RelWithDebInfo;
- };
- 96AF1AAA21B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_ENABLE_MODULES = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- HEADER_SEARCH_PATHS = "$(mbgl_core_INCLUDE_DIRECTORIES)";
- INFOPLIST_FILE = "Integration Tests/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness";
- };
- name = RelWithDebInfo;
- };
- 96AF1AAB21B615A3007CB696 /* RelWithDebInfo */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = "Integration Test Harness/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness";
- PRODUCT_NAME = "$(TARGET_NAME)";
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = RelWithDebInfo;
- };
- DA1DC95F1CB6C1C2006E619F /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_GCD_PERFORMANCE = YES;
- CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = YES;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES;
- CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "c++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- CURRENT_COMMIT_HASH = deadbeef;
- CURRENT_SEMANTIC_VERSION = 1.0.0;
- CURRENT_SHORT_VERSION = 1.0;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_CPP_RTTI = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
- GCC_WARN_SHADOW = YES;
- GCC_WARN_SIGN_COMPARE = YES;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNKNOWN_PRAGMAS = YES;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_LABEL = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- SYMROOT = ../../build/ios;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- DA1DC9601CB6C1C2006E619F /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_GCD_PERFORMANCE = YES;
- CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = YES;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES;
- CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "c++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- CURRENT_COMMIT_HASH = deadbeef;
- CURRENT_SEMANTIC_VERSION = 1.0.0;
- CURRENT_SHORT_VERSION = 1.0;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_ENABLE_CPP_RTTI = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_PREPROCESSOR_DEFINITIONS = "";
- "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "";
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
- GCC_WARN_SHADOW = YES;
- GCC_WARN_SIGN_COMPARE = YES;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNKNOWN_PRAGMAS = YES;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_LABEL = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SYMROOT = ../../build/ios;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- DA1DC9621CB6C1C2006E619F /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- INFOPLIST_FILE = "$(SRCROOT)/app/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxGL;
- PRODUCT_NAME = "Mapbox GL";
- };
- name = Debug;
- };
- DA1DC9631CB6C1C2006E619F /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- INFOPLIST_FILE = "$(SRCROOT)/app/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxGL;
- PRODUCT_NAME = "Mapbox GL";
- };
- name = Release;
- };
- DA2E885A1CC036F400F24E7B /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = test/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- OTHER_SWIFT_FLAGS = "-warnings-as-errors";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- };
- name = Debug;
- };
- DA2E885B1CC036F400F24E7B /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = test/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- OTHER_SWIFT_FLAGS = "-warnings-as-errors";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- };
- name = Release;
- };
- DA8847DB1CBAF91600AB86E3 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_PREFIX_HEADER = "$SRCROOT/src/Mapbox-Prefix.pch";
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = framework/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)",
- "$(PROJECT_DIR)/vendor/mapbox-accounts-ios",
- );
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(sqlite_cflags)",
- "$(zlib_cflags)",
- "$(rapidjson_cflags)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = Debug;
- };
- DA8847DC1CBAF91600AB86E3 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DEPLOYMENT_POSTPROCESSING = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_PREFIX_HEADER = "$SRCROOT/src/Mapbox-Prefix.pch";
- GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = framework/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)",
- "$(PROJECT_DIR)/vendor/mapbox-accounts-ios",
- );
- LLVM_LTO = YES;
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(sqlite_cflags)",
- "$(zlib_cflags)",
- "$(rapidjson_cflags)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- STRIP_STYLE = "non-global";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = Release;
- };
- DA8933D91CCD306400E68420 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- INFOPLIST_FILE = "framework/Info-static.plist";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- WRAPPER_EXTENSION = bundle;
- };
- name = Debug;
- };
- DA8933DA1CCD306400E68420 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- INFOPLIST_FILE = "framework/Info-static.plist";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- WRAPPER_EXTENSION = bundle;
- };
- name = Release;
- };
- DAA4E41A1CBB71D500178DFB /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
- DEFINES_MODULE = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)",
- "$(PROJECT_DIR)/vendor/mapbox-accounts-ios",
- );
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(sqlite_cflags)",
- "$(zlib_cflags)",
- "$(rapidjson_cflags)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "-ObjC",
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_NAME = Mapbox;
- PUBLIC_HEADERS_FOLDER_PATH = Headers;
- SKIP_INSTALL = YES;
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = Debug;
- };
- DAA4E41B1CBB71D500178DFB /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
- DEFINES_MODULE = YES;
- DEPLOYMENT_POSTPROCESSING = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)",
- "$(PROJECT_DIR)/vendor/mapbox-accounts-ios",
- );
- LLVM_LTO = YES;
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(sqlite_cflags)",
- "$(zlib_cflags)",
- "$(rapidjson_cflags)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "-ObjC",
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_NAME = Mapbox;
- PUBLIC_HEADERS_FOLDER_PATH = Headers;
- SKIP_INSTALL = YES;
- STRIP_STYLE = "non-global";
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = Release;
- };
- DABCABBC1CB80692000A7C39 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- HEADER_SEARCH_PATHS = "$(mbgl_core_INCLUDE_DIRECTORIES)";
- INFOPLIST_FILE = "$(SRCROOT)/benchmark/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.bench;
- PRODUCT_NAME = "Bench GL";
- };
- name = Debug;
- };
- DABCABBD1CB80692000A7C39 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55D8C9941D0F133500F42F10 /* config.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- DEVELOPMENT_TEAM = GJZR2MEM28;
- HEADER_SEARCH_PATHS = "$(mbgl_core_INCLUDE_DIRECTORIES)";
- INFOPLIST_FILE = "$(SRCROOT)/benchmark/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.bench;
- PRODUCT_NAME = "Bench GL";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 16376B101FFD9DAF0000563E /* Build configuration list for PBXNativeTarget "integration" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 16376B0E1FFD9DAF0000563E /* Debug */,
- 16376B0F1FFD9DAF0000563E /* Release */,
- 96AF1AAA21B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- 16376B421FFDB4B40000563E /* Build configuration list for PBXNativeTarget "Integration Test Harness" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 16376B431FFDB4B40000563E /* Debug */,
- 16376B441FFDB4B40000563E /* Release */,
- 96AF1AAB21B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- DA1DC9451CB6C1C2006E619F /* Build configuration list for PBXProject "ios" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DA1DC95F1CB6C1C2006E619F /* Debug */,
- DA1DC9601CB6C1C2006E619F /* Release */,
- 96AF1AA321B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- DA1DC9611CB6C1C2006E619F /* Build configuration list for PBXNativeTarget "iosapp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DA1DC9621CB6C1C2006E619F /* Debug */,
- DA1DC9631CB6C1C2006E619F /* Release */,
- 96AF1AA421B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- DA2E88591CC036F400F24E7B /* Build configuration list for PBXNativeTarget "test" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DA2E885A1CC036F400F24E7B /* Debug */,
- DA2E885B1CC036F400F24E7B /* Release */,
- 96AF1AA921B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- DA8847DD1CBAF91600AB86E3 /* Build configuration list for PBXNativeTarget "dynamic" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DA8847DB1CBAF91600AB86E3 /* Debug */,
- DA8847DC1CBAF91600AB86E3 /* Release */,
- 96AF1AA621B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- DA8933D81CCD306400E68420 /* Build configuration list for PBXNativeTarget "bundle" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DA8933D91CCD306400E68420 /* Debug */,
- DA8933DA1CCD306400E68420 /* Release */,
- 96AF1AA821B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- DAA4E4191CBB71D500178DFB /* Build configuration list for PBXNativeTarget "static" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DAA4E41A1CBB71D500178DFB /* Debug */,
- DAA4E41B1CBB71D500178DFB /* Release */,
- 96AF1AA721B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
- DABCABBE1CB80692000A7C39 /* Build configuration list for PBXNativeTarget "bench" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DABCABBC1CB80692000A7C39 /* Debug */,
- DABCABBD1CB80692000A7C39 /* Release */,
- 96AF1AA521B615A3007CB696 /* RelWithDebInfo */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = RelWithDebInfo;
- };
-/* End XCConfigurationList section */
- };
- rootObject = DA1DC9421CB6C1C2006E619F /* Project object */;
-}
diff --git a/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 92ad79b9dd..0000000000
--- a/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
- version = "1.0">
- <FileRef
- location = "self:ios.xcodeproj">
- </FileRef>
-</Workspace>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme
deleted file mode 100644
index ebe96ef82d..0000000000
--- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "4E8A9455A3A23B7FD2A8FC52"
- BuildableName = "All"
- BlueprintName = "All"
- ReferencedContainer = "container:../../build/ios/platform/ios/platform.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "NO"
- buildForProfiling = "NO"
- buildForArchiving = "NO"
- buildForAnalyzing = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- language = "en"
- region = "US"
- codeCoverageEnabled = "YES"
- onlyGenerateCoverageForSpecifiedTargets = "YES"
- shouldUseLaunchSchemeArgsEnv = "NO">
- <CodeCoverageTargets>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </CodeCoverageTargets>
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <EnvironmentVariables>
- <EnvironmentVariable
- key = "MAPBOX_RUN_PENDING_TESTS"
- value = "YES"
- isEnabled = "NO">
- </EnvironmentVariable>
- </EnvironmentVariables>
- <AdditionalOptions>
- </AdditionalOptions>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme
deleted file mode 100644
index ce264aa19a..0000000000
--- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "16376B2E1FFDB4B40000563E"
- BuildableName = "Integration Test Harness.app"
- BlueprintName = "Integration Test Harness"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "NO">
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "16376B061FFD9DAF0000563E"
- BuildableName = "integration.xctest"
- BlueprintName = "integration"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "16376B2E1FFDB4B40000563E"
- BuildableName = "Integration Test Harness.app"
- BlueprintName = "Integration Test Harness"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "16376B2E1FFDB4B40000563E"
- BuildableName = "Integration Test Harness.app"
- BlueprintName = "Integration Test Harness"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- <AdditionalOptions>
- </AdditionalOptions>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "16376B2E1FFDB4B40000563E"
- BuildableName = "Integration Test Harness.app"
- BlueprintName = "Integration Test Harness"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme
deleted file mode 100644
index 68e1c54ead..0000000000
--- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DABCABA71CB80692000A7C39"
- BuildableName = "Bench GL.app"
- BlueprintName = "bench"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES">
- <Testables>
- </Testables>
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DABCABA71CB80692000A7C39"
- BuildableName = "Bench GL.app"
- BlueprintName = "bench"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Release"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DABCABA71CB80692000A7C39"
- BuildableName = "Bench GL.app"
- BlueprintName = "bench"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- <AdditionalOptions>
- </AdditionalOptions>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DABCABA71CB80692000A7C39"
- BuildableName = "Bench GL.app"
- BlueprintName = "bench"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme
deleted file mode 100644
index 325b58d690..0000000000
--- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
- BuildableName = "libMapbox.a"
- BlueprintName = "static"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "NO"
- buildForProfiling = "NO"
- buildForArchiving = "NO"
- buildForAnalyzing = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES">
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme
deleted file mode 100644
index 4fdd896401..0000000000
--- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "NO"
- buildForProfiling = "NO"
- buildForArchiving = "NO"
- buildForAnalyzing = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES"
- language = "en"
- region = "US">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <Testables>
- <TestableReference
- skipped = "NO"
- testExecutionOrdering = "random">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme
deleted file mode 100644
index 1f8969faf7..0000000000
--- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES">
- <Testables>
- </Testables>
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- <AdditionalOptions>
- </AdditionalOptions>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "iosapp"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme
deleted file mode 100644
index f88ec1a04c..0000000000
--- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
- BuildableName = "libMapbox.a"
- BlueprintName = "static"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES">
- <Testables>
- </Testables>
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
- BuildableName = "libMapbox.a"
- BlueprintName = "static"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
- BuildableName = "libMapbox.a"
- BlueprintName = "static"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <AdditionalOptions>
- </AdditionalOptions>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
- BuildableName = "libMapbox.a"
- BlueprintName = "static"
- ReferencedContainer = "container:ios.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/ios/ios.xcworkspace/contents.xcworkspacedata b/platform/ios/ios.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 92247c14f1..0000000000
--- a/platform/ios/ios.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
- version = "1.0">
- <FileRef
- location = "group:ios.xcodeproj">
- </FileRef>
- <FileRef
- location = "group:../../build/ios/mbgl.xcodeproj">
- </FileRef>
-</Workspace>
diff --git a/platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d981003d..0000000000
--- a/platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IDEDidComputeMac32BitWarning</key>
- <true/>
-</dict>
-</plist>
diff --git a/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist b/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
deleted file mode 100644
index cb6ecad738..0000000000
--- a/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Bucket
- type = "3"
- version = "2.0">
- <Breakpoints>
- <BreakpointProxy
- BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
- <BreakpointContent
- shouldBeEnabled = "No"
- ignoreCount = "0"
- continueAfterRunningActions = "No"
- scope = "1"
- stopOnStyle = "0">
- <Actions>
- <BreakpointActionProxy
- ActionExtensionID = "Xcode.BreakpointAction.Sound">
- <ActionContent
- soundName = "Basso">
- </ActionContent>
- </BreakpointActionProxy>
- </Actions>
- </BreakpointContent>
- </BreakpointProxy>
- </Breakpoints>
-</Bucket>
diff --git a/platform/ios/jazzy.yml b/platform/ios/jazzy.yml
deleted file mode 100644
index f5d0040ea5..0000000000
--- a/platform/ios/jazzy.yml
+++ /dev/null
@@ -1,140 +0,0 @@
-module: Mapbox
-author: Mapbox
-author_url: https://www.mapbox.com/
-github_url: https://github.com/mapbox/mapbox-gl-native
-dash_url: https://docs.mapbox.com/ios/docsets/Mapbox.xml
-copyright: '© 2014–2019 [Mapbox](https://www.mapbox.com/). See [license](https://github.com/mapbox/mapbox-gl-native/blob/master/LICENSE.md) for more details.'
-
-head: |
- <link rel='shortcut icon' href='https://www.mapbox.com/img/favicon.ico' type='image/x-icon' />
-
-objc: Yes
-skip_undocumented: Yes
-hide_documentation_coverage: Yes
-umbrella_header: src/Mapbox.h
-framework_root: ../darwin/src
-
-custom_categories:
- - name: Appendices
- children:
- - Working with GeoJSON Data
- - Predicates and Expressions
- - Migrating to Expressions
- - For Style Authors
- - Tile URL Templates
- - Info.plist Keys
- - Gesture Recognizers
- - name: Maps
- children:
- - MGLAccountManager
- - MGLMapCamera
- - MGLMapView
- - MGLMapViewDelegate
- - MGLMapSnapshot
- - MGLMapSnapshotOptions
- - MGLMapSnapshotter
- - MGLUserTrackingMode
- - name: Primitive Shapes
- children:
- - MGLAnnotation
- - MGLOverlay
- - MGLShape
- - MGLMultiPoint
- - MGLPointAnnotation
- - MGLPointCollection
- - MGLPolygon
- - MGLPolyline
- - MGLMultiPolygon
- - MGLMultiPolyline
- - MGLShapeCollection
- - name: Annotations
- children:
- - MGLAnnotationImage
- - MGLAnnotationView
- - MGLUserLocation
- - MGLUserLocationAnnotationView
- - name: User Interaction
- children:
- - MGLCalloutView
- - MGLCalloutViewDelegate
- - MGLCompassButton
- - name: Location Updates
- children:
- - MGLLocationManager
- - MGLLocationManagerDelegate
- - name: Styling the Map
- children:
- - MGLStyle
- - MGLLight
- - name: Style Primitives
- children:
- - MGLFeature
- - MGLPointFeature
- - MGLPointFeatureCluster
- - MGLPolygonFeature
- - MGLPolylineFeature
- - MGLMultiPolygonFeature
- - MGLMultiPolylineFeature
- - MGLPointCollectionFeature
- - MGLShapeCollectionFeature
- - MGLEmptyFeature
- - name: Style Content
- children:
- - MGLSource
- - MGLShapeSource
- - MGLComputedShapeSource
- - MGLTileSource
- - MGLRasterTileSource
- - MGLRasterDEMSource
- - MGLVectorTileSource
- - MGLImageSource
- - name: Style Layers
- children:
- - MGLStyleLayer
- - MGLForegroundStyleLayer
- - MGLBackgroundStyleLayer
- - MGLRasterStyleLayer
- - MGLVectorStyleLayer
- - MGLCircleStyleLayer
- - MGLFillStyleLayer
- - MGLFillExtrusionStyleLayer
- - MGLHeatmapStyleLayer
- - MGLHillshadeStyleLayer
- - MGLLineStyleLayer
- - MGLSymbolStyleLayer
- - name: Offline Maps
- children:
- - MGLOfflineRegion
- - MGLOfflineStorage
- - MGLOfflinePack
- - MGLOfflinePackProgress
- - MGLOfflinePackState
- - MGLTilePyramidOfflineRegion
- - MGLShapeOfflineRegion
- - name: Geometry
- children:
- - MGLCoordinateBounds
- - MGLCoordinateBoundsEqualToCoordinateBounds
- - MGLCoordinateBoundsGetCoordinateSpan
- - MGLCoordinateBoundsIntersectsCoordinateBounds
- - MGLCoordinateBoundsIsEmpty
- - MGLCoordinateBoundsMake
- - MGLCoordinateBoundsOffset
- - MGLCoordinateInCoordinateBounds
- - MGLCoordinateQuad
- - MGLCoordinateQuadMake
- - MGLCoordinateQuadFromCoordinateBounds
- - MGLCoordinateSpan
- - MGLCoordinateSpanEqualToCoordinateSpan
- - MGLCoordinateSpanMake
- - MGLCoordinateSpanZero
- - MGLDegreesFromRadians
- - MGLRadiansFromDegrees
- - MGLStringFromCoordinateBounds
- - MGLStringFromCoordinateQuad
- - name: Formatters
- children:
- - MGLClockDirectionFormatter
- - MGLCompassDirectionFormatter
- - MGLCoordinateFormatter
- - MGLDistanceFormatter
diff --git a/platform/ios/originals/compass.sketch b/platform/ios/originals/compass.sketch
deleted file mode 100644
index f5b848cd96..0000000000
--- a/platform/ios/originals/compass.sketch
+++ /dev/null
Binary files differ
diff --git a/platform/ios/originals/screenshot.sketch b/platform/ios/originals/screenshot.sketch
deleted file mode 100644
index 6b938457f1..0000000000
--- a/platform/ios/originals/screenshot.sketch
+++ /dev/null
Binary files differ
diff --git a/platform/ios/resources/Base.lproj/Localizable.strings b/platform/ios/resources/Base.lproj/Localizable.strings
deleted file mode 100644
index e1bfc0b256..0000000000
--- a/platform/ios/resources/Base.lproj/Localizable.strings
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Shows more info";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Cancel";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Returns to the map";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Rotates the map to face due north";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Compass";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "To display a Mapbox-hosted map here, set %1$@ to your access token in %2$@\n\nFor detailed instructions, see:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "docs.mapbox.com/help/tutorials/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Shows credits, a feedback form, and more";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "About this map";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "The map failed to load because an unknown error occurred.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "The map failed to load because the style can't be loaded.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Map";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld annotation(s) visible.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Places visible: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld road(s) visible.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "The map failed to load because the style is corrupted.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ to %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Divided road";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "One way";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Route %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ is now available:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "The map failed to load because the style can’t be found or is incompatible.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Don’t Participate";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participate";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Stop Participating";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Keep Participating";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Tell Me More";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox Telemetry";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Make Mapbox Maps Better";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "You Are Here";
-
diff --git a/platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json b/platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json
deleted file mode 100644
index 6065a93b4e..0000000000
--- a/platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "compass.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdf b/platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdf
deleted file mode 100644
index 2048f96089..0000000000
--- a/platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/ios/resources/Images.xcassets/Contents.json b/platform/ios/resources/Images.xcassets/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/ios/resources/Images.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json b/platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json
deleted file mode 100644
index 9bef658a11..0000000000
--- a/platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "default_marker.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdf b/platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdf
deleted file mode 100644
index d3e0e2ce12..0000000000
--- a/platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json b/platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json
deleted file mode 100644
index b49c53da84..0000000000
--- a/platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "mapbox.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdf b/platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdf
deleted file mode 100644
index 45111c31a6..0000000000
--- a/platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json
deleted file mode 100644
index 86d3b9b169..0000000000
--- a/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "mapbox_helmet.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf
deleted file mode 100644
index 699b2ff293..0000000000
--- a/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf
+++ /dev/null
@@ -1,355 +0,0 @@
-%PDF-1.5 %
-1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 33 0 R]/Order 34 0 R/RBGroups[]>>/OCGs[5 0 R 33 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 16470/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c137 79.159768, 2016/08/11-13:24:42 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
- xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
- xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
- xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
- <xmp:CreatorTool>Adobe Illustrator CC 2017 (Macintosh)</xmp:CreatorTool>
- <xmp:CreateDate>2017-11-16T09:51:51-08:00</xmp:CreateDate>
- <xmp:ModifyDate>2017-11-16T10:04:52-08:00</xmp:ModifyDate>
- <xmp:MetadataDate>2017-11-16T10:04:52-08:00</xmp:MetadataDate>
- <xmp:Thumbnails>
- <rdf:Alt>
- <rdf:li rdf:parseType="Resource">
- <xmpGImg:width>256</xmpGImg:width>
- <xmpGImg:height>256</xmpGImg:height>
- <xmpGImg:format>JPEG</xmpGImg:format>
- <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FUPe6jYWMfqXdwkC9ubAE/IdT9GKsbv/wAx9HhqtpFJdMOjf3aH6W+L/hcVSC7/ADH1uUkW&#xA;8cNuvY0Lt97Gn/C4qlNx5q8xT19S/lFf99n0/wDiHHFUBJfXsprJcSOfFnY/rOKqOKuxVWjvr2I1&#xA;iuJIz/kuw/UcVR9v5q8xQU9O/lNP9+H1P+J8sVTa0/MfWoqC4jhuF7mhRvvU0/DFU/sPzH0eai3c&#xA;Ulqx6t/eIPpX4v8AhcVZJZajYX0fqWlwk69+DAkfMdR9OKojFXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYqlmr+ZNI0lT9amHrUqIE+KQ/R2+nFWDav+YWrXRaOyAs4ezD4pCP9Y7D6B9OK&#xA;sYmmmmkMk0jSSN9p3JZj8ycVWYq7FXYqujilkNI0Zz4KCf1YqiF0rVGFVs52HiI3P8MVc2laooq1&#xA;nOo8TG4/hiqHkiljNJEZD4MCP14qtxV2KuxVfDNNDIJIZGjkX7LoSrD5EYqyfSPzC1W1Kx3oF5D/&#xA;ADH4ZAP9YbH6R9OKs50fzJpOrKPqsw9alWgf4ZB9Hf6MVTPFXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYqpXV3bWkD3FzIsUKCrOxoMVYB5g/MG4nLW+lVgh6G5P943+qP2R+PyxVhzu7uXdizsaszGpJ&#xA;Pck4q1iqpb21xcyiK3ieaU9ERSx+4YqyXTvy71q5o10yWcZ7Meb/APArt95xVkdl+XWhw0Nw0t03&#xA;cM3BfuSh/wCGxVOrby/odsB6NjCpHRigZv8AgmqcVR6qqiigADoBsMVbxV2KtMqsKMAQeoO4xVAX&#xA;Pl/Q7kH1rGFierBArf8ABLQ4qk17+XWhzAm3aW1bsFbmv3PU/jirG9R/LvWrYFrVkvEHZfgf/gW2&#xA;+5sVY1cW1xbSmK4ieGUdUdSp+44qp4q2jujh0Yq6mqspoQR3BGKsx8v/AJg3MBW31as8PQXI/vF/&#xA;1h+1+v54qz+1u7a7gS4tpFlhcVV1NRiqrirsVdirsVdirsVdirsVdirsVdiqWa75gsNGtvVuG5St&#xA;/cwKfjc/wHicVeXa3r+oaxcepcvSNT+6gX7CD2Hj74qluKqtta3F1MsFvG0sz7KiCpOKs10T8uCQ&#xA;s2rSU7/VYj/xJ/8Amn78VZpZadY2MXpWcCQR9wgoT8z1P04qiMVdirsVdirsVdirsVdirsVdiqHv&#xA;dPsb6L0ruBJ4+wcVp8j1H0YqwzWvy4oGm0mSvf6rKf8AiL/81ffirCbq1ubWZoLmNopU+0jihxVS&#xA;xVMtE8waho9x6ls9Y2P72BvsOPcePvir1HQvMFhrNt6tu3GVf72Bvtof4jwOKpnirsVdirsVdirs&#xA;VdirsVdiqT+ZPMlrotryakl3ID6EFev+U3goxV5Tf393f3T3N1IZJn6k9APADsB4Yqh8VTzy75Tv&#xA;9Zf1B+4slPx3DDr7IP2jir0vSND07SoPSs4gpI+OU7u/+s2Ko/FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYqgdX0TTtVg9G8iDEfYlGzofFWxV5n5i8p3+juZN57In4LhR0r2cdj+GKpHiqIsNQu7C6S&#xA;6tJDHMnQjoR4EdwcVereW/MlrrVryWkd3GB68Fen+UvipxVOMVdirsVdirsVdirsVSzzBrtto1g1&#xA;xL8UrVWCHu7/ANB3OKvJL+/ur+7kurl+c0hqT2A7AeAHbFUPirLfKPkttQ432oApZdY4ujS+/sv6&#xA;8VejxRRxRrHEoSNAFRFFAAOgAGKrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq2SOOSNo5&#xA;FDxuKMjCoIPYg4q8582+Snsed9pyl7PdpYerRe47lf1YqxHFURp9/dWF3Hd2r8JozUHsR3BHcHFX&#xA;rmga5baxYLcxfDIvwzw90f8AoexxVMsVdirsVdirsVUru6gtLaS5uHCQxKWdj4DFXkGv63caxqD3&#xA;MlVjHwwRdkTsPn44qluKst8l+URqDDUL5T9SQ/uoz/u1h4/5I/HFXpIAAAAoB0GKuxV2KuxV2Kux&#xA;V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuIBFDuD1GKvN/OvlL6i7ajYp/oTn99EB/dMe4/ySfux&#xA;ViOKpl5f1y40fUEuY6tEfhni7On9R2xV6/a3UF3bR3MDB4ZVDIw7g4qq4q7FXYq7FXnf5g+YDPcf&#xA;oq3b9zAa3JH7UnZfkv6/lirDcVTvyp5dfWb+jgizho1w42r4ID4tir1mKKOKNYo1CRoAqIooABsA&#xA;Biq7FXYq7FXYq7FXYq7FXYqhb/VNO0+P1Ly4SBT0DHc/JRufoxVjN7+ZWmREraW0lwR+0xEa/wDG&#xA;x/DFUpl/MzVi37m1gRfB+bn7wyYqor+ZGvAmsVs1exR9vucYqjbf8zrgH/SbFGHcxuV/Bg2Kp7p/&#xA;n3y/dkLJI1pIdqTCi/8ABLVfvpirII5I5UEkbB0bdXUggj2IxVdirsVdirsVdiq2SOOWNo5FDxuC&#xA;rqdwQdiDiryfzZ5dfRr+kYJsp6tbue3ih91xVI8VZn+XvmD0Lg6TcN+5nPK2JP2ZO6/7L9fzxV6H&#xA;irsVdiqWeZNXXSdImuqj1qcIAe8jdPu64q8dd3d2dyWdiWZjuSTuScVX21vNc3EdvCvOWVgiL4km&#xA;mKvY9C0iDSdNis4qFlHKZ/55D9pv6e2Ko/FXYq7FXYq7FXYq7FWndEUu7BVUVZiaAAdycVYL5i/M&#xA;IhmttHpts14wr/yLU/rOKsIuLm4uZWmuJGllb7TuSxP0nFVPFXYq7FXYq7FUfpWu6ppUnOznKLWr&#xA;RHeNvmp2+nrir0Ty550sdVK28wFtfHYRk/C5/wAgn9R/HFWR4q7FXYq7FXYqgNc0iDVtNls5diwr&#xA;FJ14OPst/X2xV47dW01rcSW868JomKOp7EYqpo7xuroxV0IZWGxBG4IxV7F5c1hdW0mG629X7E6j&#xA;tIvX7+uKpnirsVeZ/mFq5utWFlG37mzFGHYyNu33Cg+/FWK4qzn8uNFDPJq0y7JWK2r40+Nvu2+/&#xA;FWe4q7FXYq7FXYq7FXYq0zKqlmIVVFSTsABirzPzh5ufUpGsrNiunoaMw2MpHc/5PgPpxVi2KuxV&#xA;2KuxV2KuxV2KuxVwJBBBoRuCMVeheTfObXLJpupPWc/Db3B/b/yX/wArwPf59VWaYq7FXYq7FXYq&#xA;wP8AMfRADHq8K/apFcgeP7D/APGv3YqwXFWV/l5q/wBV1VrGQ0hvBRa9BIu6/eKj7sVel4qh9RvY&#xA;7GwuLuT7MCM9PEgbD6TtirxSaaSaaSaQ8pJGLu3izGpOKt28EtxPHBEOUsrBEHiWNBir2nTbGKws&#xA;ILOL7ECBa9KnufpO+KonFXYq7FXYq7FXYq7FWC+f/MpFdHtHoSK3jjwO4j/5qxVgeKuxV2KuxV2K&#xA;ss0Lygb7y1d3jJ/pcu9j8ozv/wAGarirE8VdirsVdirgSCCDQjocVep+S/MZ1WxMFw1b62AEhPV0&#xA;6B/n2P8AbirI8VdirsVdiqG1Kxiv7Cezl+xOhWvgezfQd8VeLXNvLb3EtvKKSwsyOP8AKU0OKtQT&#xA;SQTRzRHjJEwdG8GU1GKva9PvI72xgu4/szorgeFRuPo6Yqxv8x7/ANHR4rRTRrqT4h4pH8R/4bji&#xA;rzXFWUfl7p31nWzcsKx2aF/bm3wr/E/Rir07FXYq7FXYq7FXYq7FUt8xawmk6VLdmhk+xAp7yN9n&#xA;7upxV47LLJNK8srF5JGLOx6kk1JOKrcVdirsVdiqK0rT5tR1CCyi+3MwUnwXqzfQN8Ve0W1vFb28&#xA;dvCvGKJQiL4BRQYq8v8APOj/AKP1lpY1pb3lZY/AN+2Pv3+nFWO4q7FXYq7FUdomqy6XqcN5HWiG&#xA;kqj9pDsy/dir2aKSOWNJY2DRuAyMOhBFQcVXYq7FXYq7FXmP5h6cLbWxcoKR3iBz4c1+Fv4H6cVY&#xA;vir0v8ub8z6NJasataSEKPBJPiH/AA3LFWP/AJj3Zl1uO3B+G3hFR/lOSx/DjirFMVel/lxZCHRZ&#xA;Lkj4rqUkH/Jj+Ef8NyxVleKuxV2KuxV2KuxV2KvM/wAwtWN1qoso2/c2Yo1OhkbdvuFB9+KsVxV2&#xA;KuxV2KuxVn/5b6Pwil1WUbyVit/9UH42+kin0YqzfFUl836ONU0WVEWtxB+9gp1LKN1/2Q2xV5Hi&#xA;rsVdirsVdir1PyDqBu9ASJzWS0YwmvXj9pfwNPoxVkeKuxV2KuxVin5jWXraIlyB8VrKCT/kP8J/&#xA;4bjirzTFWWflvdmLWZbcn4biI0H+UhBH4csVSjzVcev5iv5K1pKY/wDkX8H/ABriqVYq9l8uW31b&#xA;QrCGlCIUZh/lOOR/E4qmOKuxV2KuxV2KuxVQ1C8SysZ7t91gjaQjx4itPpxV4nPNJPNJNIeUkrF3&#xA;bxZjUnFVmKuxV2KpppHlnWNVINtARCTQ3Enwxj6T1+iuKs50f8v9Ks+Ml6frs43o20QP+r3+n7sV&#xA;ZQiIihEUKiiiqBQADwGKt4q7FUk1nyfouqEyPH6Fyd/XhopJ/wAodG/XirBtY8jazp5LxJ9ctx/u&#xA;yIHkB/lJ1+6uKsdxV2KuxVm35Y3JF3e21dnjWQD/AFDxP/E8VegYq7FXYq7FUu8x231nQr6GlSYX&#xA;ZR/lIOS/iMVeNYqmvlS49DzHp79KyiP/AJGAp/xtiqAvpDLe3Ep6ySO33sTiqkilmCjqxAH04q9z&#xA;jRY41RfsoAo+QFMVXYq7FXYq7FXYq7FWLfmLe+hoa26n4rqVVI/yU+I/iBirzLFXYq7FU38uahol&#xA;ndc9UsjdKSOD1qE+cZ+FvpxV6npuq6bqEIexnSVFAqq7FfmpoR92KozFXYq7FXYq7FVO4uLe3iaa&#xA;4kWKJftO5CgfScVedeb9c8s3xYWdr6t2f+P0ViH3dX+kYqxLFXYqyr8uGI1+QDo1u4P/AASH+GKv&#xA;TMVdirsVdirToroyN9lgQfkdsVeFupVip6qSD9GKq1jIYr63lHVJUb7mBxVQxVEacpbULZQKkyoA&#xA;PmwxV7dirsVdirsVdirsVdirzr8y7rnqdrag7QxFz/rSN/RBirDsVdirsVdiqpb3FxbyrNbyNFKv&#xA;2XQlSPpGKsv0f8x7uHjFqcX1hOnrx0WQfNdlb8MVZ3p+oWmoWiXVq/qQyV4tQg1BoQQcVRGKtMyq&#xA;pZiAqipJ6ADFWF6z+Y9vHWLSovWb/lolBCfQuzH6aYqwnUtX1HUpfVvZ2mYfZU7Kv+qo2GKoTFXY&#xA;q7FWX/lpCW1i5lpsluV+lnWn/ETir0fFXYq7FXYq7FXiOoqV1C6UihWWQEfJjiqHxV2KojTmK6hb&#xA;MDQiVCD8mGKvbsVdirsVdirsVdirsVeS+dZ/W8y3h7IVjH+xQA/jXFUjxV2KuxV2KuxV2Ksz/LjW&#xA;PRu5dMlb93cfvIK/78UfEP8AZKPwxV6HirGPP2s/UdJ+qxtS4vapt1EY+2fp+z9OKvMMVdirsVdi&#xA;rsVei/lpYmPTrm8YUNxIEX/VjHX72OKsxxV2KuxV2KuxV4jqLFtQuWJqWlck/NjiqHxVWvozFe3E&#xA;R6xyOv3MRiqkjFWDDqpBH0Yq9zjdZI1dfsuAw+RFcVXYq7FXYq7FXYq7FXi+uyGXWr+T+a4lp8uZ&#xA;piqBxV2KuxV2KuxV2KqlvcS29xHcQtxliYOjeBU1GKvZ9L1GHUNOgvYjRJU5EfykbMD8jtiryrzT&#xA;rH6V1ma4U1gT91b/AOovf/ZGpxVKcVdirsVdiq+CCWeeOCJeUsrBEUd2Y0AxV7RpOnpp+m29km4h&#xA;QKSO7dWP0sScVReKuxV2KuxVbI6xxs7fZQFj8gK4q8MdizFj1Ykn6cVVbGMy3tvEOskiL97AYqj/&#xA;ADVb+h5iv46UrKZP+Rnx/wDG2KpVir2Xy5c/WdCsJq1JhRWP+Ug4n8RiqY4q7FXYq7FXYq7FXh12&#xA;3O7melOUjGnzJxVSxV2KuxV2KuxV2KuxVOdN8y3Flod7pign6yR6T/yBtpP+CUbYqk2KuxV2KuxV&#xA;2Ks5/L3y6xf9MXK0Aqtop7k7NJ/AYqz3FXYq7FXYq7FUu8x3P1bQb+WtCIXVT/lOOI/E4q8axVNf&#xA;Ktv6/mKwjpWkok/5F/H/AMa4qm35j2hi1uO4A+G4hFT/AJSEqfw44qxTFXpf5cXom0WS2J+K1lIA&#xA;/wAmT4h/w3LFWV4q7FXYq7FXYq7FXhlx/fyf6zfrxVZirsVdirsVdirsVdirsVdirsVdirsVZN5S&#xA;8oS6rIt1dqY9OQ/Iykdl/wAnxP8AmFXp8caRoscahEQBVVRQADoAMVbxV2KuxV2KuxVin5j3oh0W&#xA;O2B+K6lAI/yY/iP/AA3HFXmmKsr/AC4tDLrclwR8NtESD/lOQo/Dliqf/mPYeto8V2oq1rJ8R8Ek&#xA;+E/8NxxV5rirKPy91H6trZtmNI7xCntzX4l/iPpxV6dirsVdirsVdirsVeHXa8LuZK14yMK/InFV&#xA;LFXYq7FXYq7FXYq7FXYq7FXYq2kbyOqRqXdjRVUVJJ7ADFWceW/y/YlbrWBReqWYO5/4yEfqGKs8&#xA;RERAiKFRRRVAoAB2AGKt4q7FXYq7FXYq7FXmP5haj9Z1sWymsdmgT25t8TfwH0YqxfFXpX5cWHo6&#xA;PLdsKNdyfCfFI/hH/DFsVZJqNlHfWFxaSfZnRkr4EjY/Qd8VeKTQyQzSQyDjJGxR18GU0IxVu3nl&#xA;t5454jxliYOh8CpqMVe06ZfRX9hBeRfYnQNTwPcfQdsVROKuxV2KuxV2KvFtci9LWr+P+W4lA+XM&#xA;0xVBYq7FXYq7FXYq7FXYq7FV0cUkriOJGeRtlRQSSfYDFWTaR+X+r3hV7yllAevPeQj2QdPpOKs6&#xA;0by1pOkr/osVZqUa4k+KQ/T2+jFU0xV2KuxV2KuxV2KuxVDalfRWFhPeS/YgQtTxPYfSdsVeLXE8&#xA;txPJPKeUsrF3PiWNTirUMUk0yQxjlJIwRF8WY0AxV7XptkljYW9om6wIqV8SBufpO+KojFXmf5ha&#xA;QbXVhexr+5vBVj2Ei7N94ofvxViuKs5/LjWgryaTM2z1ltq+NPjX7t/vxVnuKuxV2KuxV2KvNPNX&#xA;lfWpNbu7m2tHlt5WDo6UNaqC2wNftV7Yqx+XR9Xi/vbKdP8AWicfrGKqBtrlTQxOCOoKnFVPFVRb&#xA;a5YgLE5J6AKTiqIi0bV5aelY3D17rE5H6sVR0Hk3zLN9mxZR4yFU/wCJEHFU0tfy11aQg3NxDAv+&#xA;Tykb7qKPxxVPbH8uNGhIa6kkumHVSfTQ/Qvxf8NirIrLTNPsU4WdvHAD14KAT8z1P04qicVdirsV&#xA;dirsVdirsVdirsVYF+Y+tBni0mFtkpLc08f2F+7f7sVYNirKvy90k3WrG9cVhshUe8jVC/ducVem&#xA;Yq7FUs8yaQuraRNa0HrU5wE9pF6ff0xV466Ojsjgq6kqynYgjYg4qvtria2uI7iFuEsTB0YdiDXF&#xA;XsehavDq2mxXkdAzfDLGP2HH2l/p7Yqj8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi&#xA;rsVdirsVdiqA1zV4NJ02W8l3Zfhij/nc/ZX+vtirxy5uZrm4kuJm5yysXdj3JNcVWIjO6ogLOxAV&#xA;R1JOwGKvYfLWjrpOkw21P3x/eXDeMjDf7umKppirsVdirzv8wfL5guP0rbr+5nNLkD9mTs3yb9fz&#xA;xVhuKp35U8xPo2ocnq1nNRbhB2HZx7rir1mKWOWJJYmDxuAyOpqCDuCMVXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVssscUbSyMEjQFndjQADcknFXk3mvzE+s39UJFlDVbdDt&#xA;Xxc+7YqkmKsx/L7y/wDWLk6rcL+5tzS3B/ak/m/2P6/lir0XFXYq7FXYqpXdrBd20ltcIHhlUq6n&#xA;wOKvINf0S40fUHtpKtGfigl7OnY/PxxVLcVZZ5L82/o9xYXz/wChOf3Uh/3Ux/41P4Yq9KBDAMpq&#xA;DuCOhGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuJAFTsB1OKvNvOnm36+7afYt&#xA;/oSH97IP92sD2/yR+OKsSxVMdA0W41fUEtYqiP7U8vZEHU/PwxV7BaWkFpbRW1uoSGJQqKPAYqq4&#xA;q7FXYq7FXYqlnmDQrbWbBreX4ZVq0E3dH/oe4xV5Jf2F1YXclrcpwmjNCOxHYjxB7Yqh8VZZ5S86&#xA;Pp/CxvyXsukcvVov6r+rFXpEUsUsayxOHjcBkdTUEHuCMVXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FVssscUbSSsEjQFndjQADqSTirzjzb50e/5WOnMUsuksu4aX29l/XirEsVRFhYXV/dx&#xA;2tqhkmkNAOw8SfADFXrfl/QrbRrAW8XxStRp5u7t/QdhiqZ4q7FXYq7FXYq7FXYqk/mTy3a61a8W&#xA;pHdxg+hPTp/kt4qcVeU39hd2F09rdRmOZDuD3HiD3BxVD4qnfl3zXqGjOEX99Zk1e3Y7CvdD+ycV&#xA;emaRrum6tB6tnKGYD44W2kT/AFl/j0xVH4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUBq+uabpM&#xA;Hq3kvFj/AHcS7u/+qv8AHpirzTzF5sv9Zf0z+4slPwW6nr7uf2jiqR4qiLCwu7+6S1tYzJNIdgOw&#xA;8SewGKvVPLPlm20W2IBEt3KP303/ABqvgo/HFU6xV2KuxV2KuxV2KuxV2KuxVLNd8v2Gs23pXC8Z&#xA;V/uZ1Hxof4jxGKvLtb0DUNHuPTuUrGx/dTr9hx7Hx9sVS3FVS3ubi2mWa3kaKVPsuhII+7FWa6L+&#xA;Y7qFh1aPmOn1mICv+yTp933YqzSx1Kwv4vVs50nTvxO4r4jqPpxVE4q7FXYq7FXYq7FXYq7FXYq7&#xA;FUNfalYWEXq3k6QJ25Hc/wCqOp+jFWF63+Y7MGh0mPj2NzKN/wDYp/X7sVYVc3VxdTNPcSNLK/2n&#xA;ckk/fiqniqY6LoGoavcelap+7B/eztsiD3Pj7Yq9S0Ly/YaNbelbjlK399Ow+Jz/AAHgMVTPFXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FVK6tLa7ga3uYllhfZkYVGKsA8wfl9cwFrjSazw9TbH+8X/AFT+0Px+&#xA;eKsOdHRijqVdTRlIoQfcHFWsVVILie3lEsEjRSr0dCVI+kYqyTTvzC1u2otyEvIx/OOL0/1l/iDi&#xA;rI7L8x9FmoLmOW1buSPUX71+L/hcVTq28x6Fc09G/hJPRWcI33NQ4qj0kjkXkjB18VII/DFV2Kux&#xA;Vp5EjXk7BVHVmNB+OKpfc+Y9Cth++v4QR1VXDt/wK1OKpLe/mPosIIto5bpuxA9NPvb4v+FxVjmo&#xA;/mFrdzVbYJZxn+Qcnp/rN/ADFWN3FzcXEpluJWmlPV3Ys33nFVPFW0R3YIilnY0VQKkn2AxVmHl/&#xA;8vrm443Gqk28PUW4/vG/1v5f1/LFXoFpaW1pAtvbRLFCgoqKKDFVXFXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYqlmseW9J1ZT9ahAmpQXCfDIPp7/TirBtX/AC91a1LSWRF5D2UfDIB/qnY/QfoxVjE0&#xA;M0MhjmjaORftI4KsPmDiqzFXYq7FW1dlNVJU+INMVV11HUFIK3UqkdCJGH8cVc2o6gxJa6lYnqTI&#xA;x/jiqgzsxqxLHxJrirWKuxV2Kr4oZppBHCjSSN9lEBZj8gMVZPpP5e6tdEPekWUJ7H4pD/sQdvpO&#xA;Ks40fy1pOkqPq0NZv2riSjSH6e30YqmmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV&#xA;D3um2F8nC7t0nUdOagkfI9R9GKsbv/y40earWkslox6L/eIPoajf8NiqQXf5ca3ESbeSK5XsASjf&#xA;cwp/w2KpTceVfMUFfUsJTT/fY9T/AIhyxVASWN7EaS28kZ/ykYfrGKqOKuxVWjsb2U0it5JD/kox&#xA;/UMVR9v5V8xT09OwlFf9+D0/+J8cVTa0/LjW5SDcSRWy9wSXb7lFP+GxVP7D8uNHho13LJdMOq/3&#xA;aH6Fq3/DYqySy02wsU4WlukCnrwUAn5nqfpxVEYq7FXYq7FXYq7FXYq7FXYq7FX/2Q==</xmpGImg:image>
- </rdf:li>
- </rdf:Alt>
- </xmp:Thumbnails>
- <xmpTPg:NPages>1</xmpTPg:NPages>
- <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
- <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
- <xmpTPg:MaxPageSize rdf:parseType="Resource">
- <stDim:w>0.222222</stDim:w>
- <stDim:h>0.221944</stDim:h>
- <stDim:unit>Inches</stDim:unit>
- </xmpTPg:MaxPageSize>
- <xmpTPg:PlateNames>
- <rdf:Seq>
- <rdf:li>Cyan</rdf:li>
- <rdf:li>Magenta</rdf:li>
- <rdf:li>Yellow</rdf:li>
- <rdf:li>Black</rdf:li>
- </rdf:Seq>
- </xmpTPg:PlateNames>
- <xmpTPg:SwatchGroups>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Default Swatch Group</xmpG:groupName>
- <xmpG:groupType>0</xmpG:groupType>
- </rdf:li>
- </rdf:Seq>
- </xmpTPg:SwatchGroups>
- <dc:format>application/pdf</dc:format>
- <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
- <xmpMM:DocumentID>uuid:ad04dd96-0b1b-0043-88c6-2612e9f199e0</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:fd70734a-8143-0b42-928a-90f58b786320</xmpMM:InstanceID>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[7 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[0.0 0.0 16.0 15.98]/BleedBox[0.0 0.0 16.0 15.98]/Contents 35 0 R/Group 36 0 R/LastModified(D:20171116100452-08'00')/MediaBox[0.0 0.0 16.0 15.98]/Parent 3 0 R/PieceInfo<</Illustrator 37 0 R>>/Resources<</ExtGState<</GS0 38 0 R/GS1 39 0 R>>/Properties<</MC0 33 0 R>>/XObject<</Fm0 40 0 R/Fm1 41 0 R/Fm2 42 0 R/Fm3 43 0 R>>>>/Thumb 44 0 R/TrimBox[0.0 0.0 16.0 15.98]/Type/Page>> endobj 35 0 obj <</Filter/FlateDecode/Length 90>>stream
-HwVu6PprqV*2P04ճP04SЅRR
-@%!>n
-.\qC$qCFHC]}r
-8;Xp,*?`,t!f$f[~> endstream endobj 45 0 obj [/Indexed/DeviceRGB 255 46 0 R] endobj 46 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
-b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
-E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
-6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
-VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
-PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
-l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 40 0 obj <</BBox[0.952377 15.0476 15.0476 0.952377]/Group 47 0 R/Length 455/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-1 1 1 rg
-/GS0 gs
-q 1 0 0 1 11.3447 6.2625 cm
-0 0 m
--1.47 -1.47 -3.642 -1.76 -5.104 -1.76 c
--5.638 -1.76 -6.179 -1.722 -6.705 -1.638 c
--7.482 2.66 -5.074 5.075 v
--4.442 5.707 -3.588 6.05 -2.689 6.05 c
--1.722 6.05 -0.792 5.661 -0.106 4.968 c
-1.295 3.566 1.333 1.349 0 0 c
--3.345 8.785 m
--7.238 8.785 -10.393 5.623 -10.393 1.737 c
--10.393 -2.148 -7.23 -5.311 -3.345 -5.311 c
-0.541 -5.311 3.703 -2.148 3.703 1.737 c
-3.703 5.631 0.549 8.785 -3.345 8.785 c
-f
-Q
- endstream endobj 41 0 obj <</BBox[0.0 16.0 16.0 0.0]/Group 49 0 R/Length 339/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-0 0 0 rg
-/GS0 gs
-q 1 0 0 1 8 0.9519 cm
-0 0 m
--3.894 0 -7.048 3.162 -7.048 7.048 c
--7.048 10.934 -3.894 14.104 0 14.104 c
-3.894 14.104 7.048 10.941 7.048 7.056 c
-7.048 3.147 3.894 0 0 0 c
-0 15.048 m
--4.419 15.048 -8 11.459 -8 7.048 c
--8 2.637 -4.419 -0.952 0 -0.952 c
-4.419 -0.952 8 2.629 8 7.048 c
-7.992 11.459 4.419 15.048 0 15.048 c
-f
-Q
- endstream endobj 42 0 obj <</BBox[4.52039 12.3142 12.318 4.51277]/Group 50 0 R/Length 300/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-0 0 0 rg
-/GS0 gs
-q 1 0 0 1 9.501 8.1145 cm
-0 0 m
--0.693 -1.425 l
--1.379 0 l
--2.796 0.693 l
--1.379 1.379 l
--0.693 2.804 l
-0 1.379 l
-1.417 0.693 l
-h
-1.729 3.116 m
-0.328 4.518 -1.897 4.563 -3.23 3.23 c
--5.638 0.815 -4.861 -3.482 y
--0.564 -4.259 1.852 -1.852 v
-3.177 -0.503 3.139 1.714 1.729 3.116 c
-f
-Q
- endstream endobj 43 0 obj <</BBox[6.70476 10.9181 10.9181 6.68953]/Group 51 0 R/Length 158/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-1 1 1 rg
-/GS0 gs
-q 1 0 0 1 10.918 8.8074 cm
-0 0 m
--1.417 -0.693 l
--2.11 -2.118 l
--2.796 -0.693 l
--4.213 0 l
--2.796 0.686 l
--2.11 2.111 l
--1.417 0.686 l
-h
-f
-Q
- endstream endobj 51 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 48 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 50 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 49 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 47 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 33 0 obj <</Intent 52 0 R/Name(Layer 1)/Type/OCG/Usage 53 0 R>> endobj 52 0 obj [/View/Design] endobj 53 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 21.1)/Subtype/Artwork>>>> endobj 38 0 obj <</AIS false/BM/Normal/CA 0.899994/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.899994/op false>> endobj 39 0 obj <</AIS false/BM/Normal/CA 0.350006/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.350006/op false>> endobj 37 0 obj <</LastModified(D:20171116100452-08'00')/Private 54 0 R>> endobj 54 0 obj <</AIMetaData 55 0 R/AIPDFPrivateData1 56 0 R/AIPDFPrivateData2 57 0 R/AIPDFPrivateData3 58 0 R/ContainerVersion 11/CreatorVersion 21/NumBlock 3/RoundtripVersion 21>> endobj 55 0 obj <</Length 1253>>stream
-%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 21.1.0 %%For: (Angel) () %%Title: (mapboxgl-logo.pdf) %%CreationDate: 11/16/17 10:04 AM %%Canvassize: 16383 %%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 326 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 2.5 2.51000020160791 18.5 18.4899997983921 %AI3_TemplateBox: 42.5 10.5 42.5 10.5 %AI3_TileBox: -367.5 -277.5 366.5 298.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 0 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-65 -26 %AI7_GridSettings: 18 8 18 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 56 0 obj <</Length 11231>>stream
-%%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %AI7_Thumbnail: 128 128 8 %%BeginData: 11078 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD37FFFD04A87DA87DA87DA87DA87DA87DA8A8FFA8FD66FFFD04A8 %FD197DA8A8FD5EFFA8A8FD077DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA8FD057DA8A8FD58FFA8A8FD297DA8A8FD51FFA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87D7D7DA8A8FD4DFFA8FD337DA8A8FD48FFA8A87D7D7DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8FD077DA87D7D7DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD45FFA8FD197DA87DA8A8A87DA8A8 %A87DA8FD177DA8A8FD40FFA8A87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FFA8FD11FFA8A87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %7D7DFD3EFFA8FD127DA8A8FD19FFA8FFA8A8FD117DA8FD3BFF7D7D7DA87D %A87DA87DA87DA87DA87DA87DFD23FFA8A87D7D7DA87DA87DA87DA87DA87D %7D7DA8A8FD36FFA8A8FD0F7DA8A8FD27FFA8A8FD0F7DFD34FFA8A87DA87D %A87DA87DA87DA87DA87DA8A8FD2DFFA8A87DA87DA87DA87DA87DA87D7D7D %FD32FFA8FD0E7DFD31FFA8A8FD0D7DA8FD2FFFA87D7DA87DA87DA87DA87D %7D7DA8A8FD35FF7D7D7DA87DA87DA87DA87D7D7DA8FD2DFFFD0D7DA8FD38 %FFA8A8FD0B7DA8FD2BFF7D7D7DA87DA87DA87DA87DA8A8FD3CFFA87DA87D %A87DA87DA87DA87DA8FD29FFFD0C7DA8FD3FFFFD0C7DA8FD26FF7D7D7DA8 %7DA87DA87D7D7DA8FD42FFA87D7DA87DA87DA87DA87DA8FD25FFFD0B7DA8 %FD44FFA8FD0B7DA8FD22FF7DA87DA87DA87DA87DA87DFD47FFA8A87DA87D %A87DA87DA87DA8FD21FFFD0B7DFD49FFA8A8FD097DA8FD1FFF7D7D7DA87D %A87DA87D7D7DFD4CFFA87DA87DA87DA87DA87DA8FD1DFFA8FD0A7DFD4EFF %A8FD097DA8FD1BFFA87D7DA87DA87DA87D7D7DFD50FFA87DA87DA87DA87D %A87DFD1AFFA8FD0A7DFD52FFA8FD097DFD19FFA87DA87DA87DA87D7D7DFD %54FFA87DA87DA87DA87DA87DFD17FFA8FD097DFD55FFA8FD097DA8FD16FF %7DA87DA87DA87DA87DFD57FFA8A87DA87DA87DA87D7DA8FD14FFFD097DA8 %FD2CFFFD09A8FFA8FD21FFA8FD097DFD13FFA87D7DA87DA87DA87DA8FD2A %FFA8A87DA8FD077DA87DA87DA8A8FD1FFFA87D7DA87DA87DA87DA8FD11FF %A8FD097DA8FD27FFA8A8FD137DA8A8FD1DFFFD097DFD11FFA87DA87DA87D %A87DA8A8FD27FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FD1DFF7DA87DA87DA87D7D7DFD0FFFA8FD097DFD25FFA8FD1C7DA8A8 %FD1AFFA8FD087DA8FD0EFF7D7D7DA87DA87DA87DFD25FFA87D7DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DA8FD1AFFA8 %7DA87DA87DA87DA8FD0DFFA8FD087DA8FD24FFFD237DFD19FFA8FD087DA8 %FD0CFFA87DA87DA87DA87DA8FD24FF7D7D7DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD19FF7DA87DA87D %A87D7D7DFD0BFFA8FD087DA8FD23FFFD277DA8FD18FFFD087DA8FD0AFFA8 %7D7DA87DA87DA8A8FD23FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD18FFA87DA87DA8 %7DA87DA8FD09FFA8FD087DFD23FFFD2B7DFD17FFA8FD087DFD09FFA87DA8 %7DA87DA87DA8FD22FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD17FF7DA87D %A87DA87D7DA8FD08FFFD087DA8FD21FFA8FD167DA8A8FD167DFD16FFA8FD %087DFD07FFA87D7DA87DA87DA87DFD21FFA87D7DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87D7DA8FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7DA8FD16FFA87DA87DA87DA87DFD07FFA8FD077DA8FD20FFA8FD %187DFFFFFFFD167DA8FD15FFA8FD087DFD06FF7DA87DA87DA87DA8FD21FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FFFFFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD16FF7DA87DA87DA8 %7DA8FD05FFA8FD087DFD21FFFD177DA8FD05FFFD167DFD16FFA8FD077DA8 %FD04FFA87DA87DA87DA87DA8FD20FF7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7DA8FD05FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7D7DFD15FFA87D7DA87DA87D7DA8FD04FFFD087DA8FD1FFFA8FD %187DFD07FFFD167DA8FD15FFFD077DA8FD04FFA87DA87DA87DA87DFD20FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87D %A87DFFFFFFA8FD077DA8FD20FFFD187DA8FD07FFA8FD167DFD15FFA8FD07 %7DA8FFFFA87D7DA87DA87D7DA8FD1FFF7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87D7DA8FD09FFA87D7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87D7DA8FD15FF7D7D7DA87DA87DA8FFFFA8FD077DFD1FFFA8FD18 %7DFD0BFFFD157DA8FD14FFA8FD087DFFFF7DA87DA87DA87DA8FD1FFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD0DFFA8A87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DFD15FF7DA87DA87DA87DA8FFA8FD %077DA8FD1FFFFD157DA8A8FD0FFFA8A8FD127DA8FD14FFA8FD077DFFFF7D %7D7DA87DA87DFD1FFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8 %FD15FFA8A87DA87DA87DA87DA87DA87DA87DA87DFD15FFA87D7DA87DA87D %7DA8A8FD077DA8FD1EFFA8FD117DA8A8FD17FFA8A8FD0E7DA8FD14FFA8FD %077DA8A87DA87DA87DA87DFD1FFF7DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD1DFFA8A87DA87DA87DA87DA87DA87DA8FD14FFA8A87DA87DA87D7DA8 %FD087DA8FD1DFFA8FD0E7DA8A8FD1FFFA8A8FD0A7DA8FD15FFFD077DA8A8 %7DA87DA87DA87DFD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD1D %FFA8A87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8FD %1EFFFD137DA8A8FD17FFA8A8FD0F7DFD15FFFD077DA8A87DA87DA87DA8A8 %FD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD15FFA8A8 %7DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8 %FD1EFFFD177DA8A8FD0FFFA8A8FD127DA8FD15FFFD087DA87DA87DA87D7D %7DFD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD0DFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD16FFA87D %A87DA87DA8FD087DA8FD1DFFA8FD1B7DFD0BFFFD167DA8FD15FFFD087DA8 %7DA87DA87D7DA8FD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA8A8FD09FFA8A87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DFD16FFA87DA87DA87DA8FD087DA8FD1DFFA8FD1B7DA8FD09FF %FD167DA8FD16FFFD087DA87DA87DA87DA8A8FD1DFF7DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87D7DA8FD16FFA87DA87DA87DA8FD08 %7DA8FD1CFFA8FD1E7DFD07FFFD177DFD17FFFD087DA87DA87DA87DA87DFD %1DFF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA8A8FD05FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %FD17FFA87DA87DA87DA8FD087DA8FD1CFFA8FD1E7DA8FD05FFFD177DA8FD %17FFFD077DA8A87DA87DA87D7D7DFD1CFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD05FF7DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD18FFA87DA87DA8FD0B7DA8FD1BFF %FD217DFFFFFFFD177DA8FD18FFFD077DA8FF7DA87DA87DA87DFD1CFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD18FF %A8A87DA87DA87D7DA8A8FD077DA8FD1BFFFD217DA8FFA8FD167DA8FD18FF %A8FD077DA8FF7DA87DA87DA87DA8FD1BFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD19FFA87D7DA87DA87DA8FFA8FD08 %7DFD1BFFFD397DFD1AFFA8FD077DFFFF7DA87DA87DA87DA8FD1BFFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD1BFF7DA87DA8 %7DA87DA8FFFFA8FD077DA8FD1AFFFD377DFD1BFFA8FD087DFFFFA87D7DA8 %7DA87D7DA8FD1AFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DFD1CFFA87DA87DA87DA87DA8FFFFFFFD077DA8FD1AFFFD357DFD1DFF %FD087DA8FFFFFFA87DA87DA87DA87DFD1AFFA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7D7DFD1EFFA87DA87DA87DA87DFD04FFA8FD077DA8FD %19FFFD337DFD1EFFA8FD077DA8FD05FF7DA87DA87DA87DA8FD19FFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA8A8FD1FFF7DA87DA87DA87D7DA8FD %04FFA8FD087DFD19FFFD2F7DA8A8FD1FFFA8FD087DFD06FFA87D7DA87DA8 %7DA8A8FD18FFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD22FFA87DA87DA8 %7DA87DA8FD07FFFD077DA8FD18FFA8FD2A7DA8A8FD23FFFD087DA8FD07FF %A87DA87DA87DA87DFD19FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DA87DFD25FFA87D7DA87D %A87D7D7DFD08FFFD097DFD17FFA8FD267DA8A8FD26FFA8FD077DA8FD09FF %7DA87DA87DA87DA8A8FD17FF7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD29FF7DA87DA87DA87DA8 %A8FD09FFA8FD077DA8FD16FFA8FD207DA8A8FD2BFFFD097DFD0AFFA87D7D %A87DA87D7D7DFD17FF7DA8FD077DA87D7D7DA87D7D7DA8FD077DA87DA8A8 %FD2FFFA8A87DA87DA87DA87DFD0CFFFD097DFD17FFA8FFA8A87DA87DA87D %A8FD057DA87DA87DFD04A8FFA8FD32FFA8FD087DFD0DFF7DA87DA87DA87D %A8A8FD61FF7DA87DA87DA87D7DA8FD0DFFA8FD077DA8FD60FFFD097DFD0E %FFA87D7DA87DA87DA87DA8FD5EFFA87D7DA87DA87DA87DFD10FFFD097DFD %5DFFA8FD087DA8FD11FF7DA87DA87DA87DA87DFD5CFFA87DA87DA87DA87D %7DA8FD11FFA8FD097DFD5AFFA8FD087DA8FD13FFA87DA87DA87DA87D7DA8 %FD58FFA87DA87DA87DA87D7D7DFD14FFA8FD097DA8FD57FFFD097DA8FD15 %FFA87D7DA87DA87DA87DA8A8FD55FF7DA87DA87DA87DA87DA8FD17FFFD0A %7DA8FD53FFFD097DA8FD19FF7D7D7DA87DA87DA87DA8FD52FF7D7D7DA87D %A87DA87D7DA8FD19FFA8FD097DA8A8FD4FFFFD0A7DA8FD1BFFA87DA87DA8 %7DA87DA87DA8FD4EFF7DA87DA87DA87DA87DA8A8FD1DFFA8FD097DA8FD4C %FFFD0B7DFD1FFFA87DA87DA87DA87DA87DA8FD4AFF7D7D7DA87DA87DA87D %7D7DFD20FFA8FD0B7DA8FD47FFFD0B7DFD23FFA87DA87DA87DA87DA87D7D %A8FD45FF7DA87DA87DA87DA87D7D7DFD24FFA8A8FD0B7DFD42FFA8FD0B7D %FD27FFA87DA87DA87DA87DA87D7D7DFD3FFFA8A87DA87DA87DA87DA87D7D %7DFD28FFA8A8FD0B7DA8A8FD3BFFFD0D7DFD2BFFA87DA87DA87DA87DA87D %A87DA8A8FD39FF7D7D7DA87DA87DA87DA87DA8A8FD2DFFA8FD0D7DFD35FF %A8A8FD0D7DFD2FFFA87DA87DA87DA87DA87DA87D7D7DA8A8FD31FF7D7D7D %A87DA87DA87DA87DA87DA8A8FD32FFFD0F7DA8A8FD2BFFA8A8FD0E7DA8FD %34FFA87D7DA87DA87DA87DA87DA87D7D7DA8A8FD28FFA87DA87DA87DA87D %A87DA87DA87DA87DA8FD37FFA8FD107DA8A8FD21FFA8A8FD117DFD3BFFA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD1BFFA8A87DA87D7D7DA8 %7DA87DA87DA87DA87DA87DA8A8FD3EFFFD157DFD04A8FD0DFFA8FFA8A87D %A8FD137DA8A8FD40FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %7D7DA87DA87DFD09A87DA87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DFD45FFA8FD377DA8A8FD48FFA8A87D7D7DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87D7D7DFD4EFFA8FD2E7DA8A8FD52FFA8A87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FD57FFA87DA8FD217DA8A8FD5EFFA8A87DA8FD077DA87DA87DA8 %7DA87DA8FD077DFD04A8FD64FFA8FFA8A87DA8FD0B7DA87DFD04A8FD34FF %FF %%EndData endstream endobj 57 0 obj <</Filter[/FlateDecode]/Length 16229>>stream
-HWn8;pLQ/;x'a4-1'(PTo:8^[6Ūs8bJZIJPр<SRڣ= z`R
-^Q1"wa^2|r@t*g|^u hxO`|E:\;$'Yƾh"Ob??`F4{x?c[ط!F8
-.drB2p!<,^&PP>qh[J) kB)`PFG{rt֨s6O#1yn# }տ iJCun8ds`HFE<e E&<C#R=yALɲCtK6Qݮ*-߮FЯbt1Z:R\u-]AVN~Oo!\ v}CN"k@
- U;hHi(
-4X;D-\&4Zw\Z=)hLE/]
-k/s<;wH|鴧 ERIIp1{Yrx1
-β2 z#8/2Ew%bMoMo?ɧl,7,!C9StYbIoIJVKq#o‚-4k,a z*ɹɜZc# D,tѲSFaƮn#a ]=uP,>uqlRuUpX?o =܉Ч|=j#Ao
-M?ɯ)鎢5[}Z*OLJ.2MLgjQ
-Nz8"=MK Xg)Ifa" 8>;=w~%f從*~Ttx,WZ%'whcО̞ޓ:K(JK'_D$t`8.T?(1կ)3-
-$ֹqbMDoDb'KoT;}Eyu;Ì\NPbO P_ 2΢_C:'BA#;7B2xo%nG;0d;ep[-[ojW
-{|s]-e]:}-<z`šR
-$+1qKHp"D8+{S7ӔBՉ^D4%TR$ɉd ,)*pu#}/;v.("iU0Oؤ !u{ձkG?<MV/xDG4~zJ]6gų*<:M`-W>@Aa*Duc."qձQ(tsJFROW-t5YPD#xqsݾlk6.ոzW'ݓ@ܢ/w9봫#e:tҜL9e`{']lpIBXƦCqͻ <~6qdok," nq+ >3Jxcqo^FtChc5
-:*sGn:QUWvN'l! F3U. X
-?t}϶#{P0hǎPDq\eh
-y+ȯNB2 m}%)foq ag2iQ`chytT^Xmi!F
-$gPy
-',QM Tx#ǓM1~(^?đ,ȏ Z=ֱLi,JPQg h`H#9Iv$KK6|/]^`?^S ^4wT% V\.r'HBpcUR)% 0 7V(6]*kRfS ­gaR@q̹X<ŪBm +6{ץ<JS-p
-MNnD|
-]'T;"Z\ :tʰ!71Ž *;  I -޼T𪂭0!d3c-:s7?trܨbWMƠ&ܣe*|I$ȡ(dr,ʆH0<+CCvroZD.HAX-xFuo&EKLc1e.V<}
-1aFGl7;زWL1t$a95.fwq'2֓@:QcjeЅiRB}aY
-ngeQV{s{(FXU3 (HK9dkfdn+ÑdQvư/a0e^?D<뷟jC[3N|LR ;1cFꅉЫB.R R?됁PnV_6GWh^>y8At5*:U1C ' SCE]X
-w
-w*$ ),OQتDLjttV/ura* PbgU%B/!u#+qSڵ 1噣1<&1v1婼r &yd|cp2SiJY ˉCOr(UyeCpn9z7o:P79CO *UYB
-cdc&?[SBbMDM`́;j&-<&U&G:ܹ*o`|a
-N^GʥPHI%#z{ugTxvZzFdIƻoǷ/g+6;M'덵՞k|IaƻΎmrx͵{m>^}6j}4|"3ѝ4l7ȨgVjɂ?ˇB6nntft;mZc{o޾ZqցٺuvoT;k?ڇ6[6کaZkV3n[]m94SћcEßwpOSm60K' 6Wki7mwtY]Y~~ۛ7#]7kN-bҏCѵ߭npSWljyts8Wz\Q, JG5Qcg47gίkNL-X6t2"qU69©`cߦl;BM 9 KS*[)mN/LOI/9
-}
->?);9Pq*@}rybPF7uy=E禚ǽsF_d)Y
-N`
- 6n`+MvGTs׬g.VӢB&)Rz-e;F Sl3rU[]'5% 0BXvƆ*1Vb*8A:#JhId#ؘ
-et}2ROSM I46PW! BI⃥@y,Sy#H6Uiy!`[͕_1 T~>M~6Ȍ%"Gad̈́4޿wxpU
-x#3NpU'bfJ>AxjK]UFo&G,ƯaKUV< H V
-ۊ2GʲW&)؃=̽6)PDled[w^M[Q!TIV⁃\sPxA#k=+435Yb9%Qgⴷ0 <|tG?h6mI'nAa bЮ\`rQVBٜɋ@Pǫ28;W_gcF 2 x3x潟V۶(zpwb SQ*?6wj=Cmxzګc#$1p7hL}jΚTp0)3^n!pQp- O&%0Ǻf9NJr9:b9mzbC %sW4u>(HhpXmqܧR7 ;jB'Ո3a`dEPاbP/o 6Y@ZbYoK30>3ҚBXOE%" j`c?g##{_ WX_ $=;c=S MwT)
-[t6WE/B[㝛bWQ*2=>Hf IM8h I*N NxWRN^$7O;",̃F\hS|^6o-N 94"VhHwbNqK\)д"4 (ocg844ٟeoݨ(UA V!/N TA=մ(-a `hm:-{#`|)I;̯y;ճXT}L6|WxPsf9 kQӡ{z)W IN-;^,R}9kn
-|VEO>bWzE~Ҋ
-n(|p |UNwG1
-x'cݾaeF7k Œ ʡWO{K"ov~}Q7D<n5gꫬ‡a1eIaT!i1(0Kj닐)R^~`dN)@6ZPddSWWx;:*ASvɇqqqT-*$
-Cf]L51][bQt=ڕfTd!GR[? ߏ|7_?0=.~?.*Tl(+ /2de l0/Tqm#J(ҫV-0il˼6aB+Vf
-y;7?tM^j"-E =|u`EMK^U5y4LUX<},s_Lq@Bg}]$(x,]sW&!! Ewf@E}NpF eP Jj҆iD8#v [=^ %a,zxH; IզI?XFEBL|9ǁ_$_$ϐ
-ꑸ0̴klinRڞﷶ+_l2.MSOq*>`e{⡅^(06 QFSd{<#1wva " W{M턠]t>|zj $r4 4sCc'C]H08d3nhj
-w[vzVV9[*B~f3W`9+S,k?W q/.8EmmAW
-B`d6$uSdX.$ais*,?' 0tvI6<>-[#%{O$<zq=" !)N,9n$TS-(t(aqE㝟t+ץӇh""ٖT
-mg$i!fb'Cb?.{դ>*RoF!,&B؋3xU%
-ԃ]It^%;r~6݄C)L ܻk?w=g+r;sx,\%"@
-2/Q[gDd#RHwN!IL_mQ"LM'_CuHzHE :[W=ᅛ&Îq0;7N
- k1 Vl&6m4gS~HSAp8jZ>7g;]MTEbLA#B4N+OK[M&!OL2׽/+rv.xIW&MH9Q(;)R'L߽-I?b ZS%Ԫ1M7
-2zFj$#JU J{jlϲ9kxۇlR?`agOjTww |\K6j'% ,l~do8J{ѝS6m_t"-K8x \[NB: Z|}<4N n)X] {2pPw읋!; P\
-rv[B]4ؼ5a,?;Xh5y(Sa wӽ=%B甩O[#Rh0hz*ƘV*?'<h>+0,&m Z-&\.EaWQB豭jFfAL"xhci/
-+Lwu:- ZO
-tX 6:`"tenWxtٛ1fuQ` <Dfr#AMdT1cvޡQAE(yiHw%d|ȫPiSQ
-5ٷ~n*LY_
-D6Kh6'(bOmx 6 a-CSJEʡW@᭞ў mT`9a$KҩE8EӅ<HJ:?HJ3őNAeQS9π*&}-bt:`8Ug!Z] EztA: OrJU
-?SB:)+{\i?#Xa|~ӌT6>Xђ[Ǣ7\-Ÿ́ђWa9CUPS~:;3v꩏@{@.{3WvZ[7[& 4dKҏtCn_;!{G?Wbh늵hf퉺Tu}_žO6x(g.vƂ\op0~Hз+м' ͢B}Խ?C:h>+43١r-V%BQpC%i:D(PisXP$CõF yM4LI6.j2
-y{RQތu#7.'U 4WBo؋>(?khɲjƧLϜC/L-uͧ7tE,C.{$4˷$KAFɝ]LJctRd$ߩ?m/P<>/嬰F@+#rj
-ӻ3'pvWrX\>M#$5+"Jӆ}@GvPllX !+Q-/WPDө\WM~,^[ro6L4Zd>r~ -Cq!|fյ1a. uY:>%vΑ,7{eī4YwE:N7Cy`_GW|9=We5AY2RdC"<O_uW16 dnd#|i0ջ.v.Y=zv1UoOjLؙQ?1*J}cۿfB;?n+1w\ 1I(DJxiӋd+U<=̯֫Iul6e`ZvqW!<|ܖKS-/.zfs#J~D?=j1ij-yH +&"dXzi@ouL;`cgGYYpBָ$x_Dr?Ygm%M)ȺnbU=ܪ76!=D_E+SHƃJF
-IUVp?nfz|dU4P:{
-Ƒá؛Dž&T[Rdt5Zfz}&m^R6:a 6 bdv"5i /yb=G<kǯJ=ZZt
-2 
-.@A!tڈ "FwbC~M5^m<xd{򦖈3QWB9 1}&Nr'Uf8ʇQcM$O>Y'WV\켕ag@0 ] uttIQ'+њ i@eNh໢I[3 @(04hi(F;d`j;>1eG1LG>ȩXy<ȿJ)K"G>Uc9oebA< k/]ͷtf^@VY"d ]4c^ޠ0S32 Z sΉ.r84焖
-L uB1_ 'ɪ8rqDZ.]n\[ A0i!ct =9S;r GZ;Q1g{*87u6Ya4B5k!aax5ha1g԰yE@5U.QU>ILNLh1>T$TQJH~CNt慰M/`j:v,!Yt\Jx<Z)^Y d\?8dd |ksW* V?ͭ)x gj
-̜fUzWҤKΎIٶ4w1C4U!p68X!uGzܔf9y}ӵ81>{ARzkyq9FK.1ʡ"\8efsQ :2t)>9-59` ē#Q6/M"[?KMׯ$k%$Mjuef aHiZi0'SãSN{2&߉ɛfC-$Xz
-~ =y/`0Tvwٱ.;&Sh)'/l)s^؅CGxf`k%K饦
-"s^I|d)^3>2sgk9# sOw Su}*\i4o^nh!IIUv'Ƭ
-)WvOABdʕ4§eFƹ#ޱᎽ5υ'->hLrr~q$h ֡ˆ~L,7+\܋WHv2uU%,íT`46*|w܏I;mVryC1r'\`zyr6,o֤ZfɚeBu,CV1DmBD)&q'e&CRdѦKKK'`Ckp'-UЕA
-y-pZ&ݝߕP"z!G
-/ajHmwIҷX*) R~!0o:]?&,3P;Վ~X@}oF9PM_3NrlvR!ek8tD)P`L$9ԙY|h`/b%l哕h}MD Q+Nا
-9໧ظ&ҭ)A:
-^b~lz|װ9G(c^^!Sa>#~DqK=T6xl-2ޏ]o1ey*
-S!*GiZLuGW_!c=v'e s1r\K4Dž%@_X˥@H*9/ۦT(>p/J\SS{0K&ɱF t8bw߰v^M} .+V_S}q %?<sq}Yn #z%}NJ~"݊%By(h0$(7#`bށ֯e+ !PV/c
- q,KOx_̨J|\'96ȫ H)AUCP@)Ztx@ܗjFgM],˃BwR֨!Y!*VDX&)ʝV7_K8-KEJ,_:|KId~8KQ'<|r!G
-HWBN}<pI*X!R zU nl-9sfJlj:mJlt3,Q8O*GuLOsIv_mȲ~1. =^R$YP%έu 7K|yiM vo`{**~H JR!$
-
-IA]pJ~_8-襓*XT WD`=6WBR4d11CExX_;Tc]μNMj
-|P ~UnRhb 95dW$3lymu2\#d$G: Y%c(+
-(|Mxq:]_2;OZF
-
-zl2CǨaB ]րJY.馛ًlM2j$|.
-m+\ :]б+#nΨ.}h[DInFD7Srú Ydj,ԡvT׾+aͳ'T4 Z
-!X)d屮WdSgļPƶ۩U.[RSΦ ރ#chb1MZCؑa ;ҿ.!Pt/I|dX2yam\w⻁MG+%f
-_ϼ~.gq C0Og g]B 6g q80:s2
-ܕ: w%c'iڦ8A* t00xRapa'[
-vJW\S;.Ӷ۾>qekL0 hJT`kgbPAZe2 ']z 
-Ít|{]5y:o 논huW3{8|wE Iac /m0"it4~!ܪwL11t;E]>Yrb::u 0끷9ɾ(tOohM9d3W
-¨pÙԭf J|0S Ow2y^9<(%v ٴG N߁/>Ώ(?": )I
-T%5r1/`'l/9%  1^tmW6|gg1YӱR;1650ԛ'㈀8W_h(oYŬ]lӻC3 ) r0 dO_efÀe<WN<)P}_c <ɡS!c}YaF5+Exlڻ[NcXPٰH!cm<N(ȊdFVX $2b>E)1[..C #`#*)7t0X"'&_y~-ȕ
-bKfP0gq\)VPP)Ji+/[j$*rͰiGYfJ?a,psFx# c$-7q9Vv:gRCYJ4"
-*ŗS9s@#}9, 4Te>4V_6\=Sijb
-R
-7ĺrjmU{ ;GKpʏd(" ]R̋کv~e,xs -7[P}1Tݟ^)mU&NQm料AgTyHz, ):
-K3 -L8rhQ\ⶑ?CW|:Fs*nsW7ӝмtɉ*2XHaZh\71EgְU@NZǂKCvjZnTJ)h
-7(J36t Cg
-Qr+'H4"ډ(cAomh9֣H>xnP1Wˡ_ϝct9 FqJ</)ЩX 1FmT_ת9[q)&~MfLnw݈Rӧ`11b|77]E 6 F^(+S"nbbO+{Ƹ ͕!&Y8B.w!5 w nĮAgGd#Ex?>ἅgCy)⋄7c=*
-+
-Uy+?dWy\A"!-iiQZkE;TI}f̙sJߪ^/Go
-$y: jK,՟=]>A}! <C-Vh1d fXWМ@`$"aؠ4V4x7V=ʴiJ 0-I]z/d3sJ5&懷&sZW{bv
-MLݡŠPG)|,> 4|>!NZtR09Q9zi &-BBy_Ѹ%=NA~wꝩ7~;>|;keݓ x9^ G2"˙;oyeOn矵ᢙp-EFSBv]aܳJy3d]+3AM5xgs=gK>^
-OFO'fFc
-{
-@m6FP61\
-pop
-Em֨{? T{6H҉;NnHȶ޺
-[MMZHcDPyz͞dȷݘm1'L5ν)`?LPuJP8Pg0^K3*~m#- տhԒܘ~jsm8ކoRրMrG h tу(LƷhQ+Om
-Ld<r
-+tXqgP:SjϺqwk@$ٝ[`7pr*iE
-2wOU
-X<-7p4ݛ'A?M^lvSVz
-N
-6@PknAD4TMlW&R^fBI6Bwa<[]~}
-` b4!#`ɣoAGzun=+N t R$ H[wf4=K&fOy晙=5S[Q
-ET)r(] CoX z]P LMg.D@nO&(ew5]ǧׂv"<3ȖiR\W]!+bBtS-ٴl3H?.c rI,&y柦˸5ufY 
-$[K$ ޖRQ&|#N6 'V%=՚C*09#~{(n/dqf/?8Z&ZR%qp| @T~X=&&Nq 3bاu6Q^DVѢ"dZ09ze@JC=$$qwS0
- P?H+vSO`.>80*$EG+G$Tk֨Ϫ#q Ao+(0Wp%JyJ,R%5ct -=ݥ"g&(UJupp]ї#HDer
-`O:c4ʜO~T|`xlDixBU Qų<I&\(n4:B0XϮ#g$IjgUīn>pƎhN2t<5sܑj~hg[ٚ!*A3agyhZNА,=M] m2ƀe9_% jsR/0ED`6;
-.ԭYM$-pnNQABE 'x;D!l־~*Z5Rc<<ONzy:!Vv4
-
-V|ǪP
-B=Q]T,4C!m-:![=v^ e ;L
-ls`M ;\7ř{r]E"&* ȿULu:t!:y+<}ݭ[SXHԩ
-MLţ++ t>\M|J
-%Hp)ol5/}NɗL3:K*&U-{Y3B Y!`sو
-V%o@O!pXS(ol > W''
->*fJ JϠDr
-P~
-KTۈ;Z8TZo
-W`KXrk6V Lm>1QyqW >O9ía%M^^kζt;U)^W.T`v/p\Jzc)V5B>8Fx^m?S[n?05'RxYh;kkGo|.
-'ĠɃtox,<M)M:.] ]./
-{px2QcX]G gyOQ]'˶%XaJGwu?Gc&/qqP;ju=*b65STׯvgH4
-ǓAշ޳
-eAf0PZ?`Bxأ>)BSuHyo5ɛw.Ͽ|SWce?2 Y_]ߵ9% >EBk|hZmrs6Ũucѻ\Sy8_ﺏߢEZjo7bR4X*F(k~n 4}'"jC.-·5\;Dp6rgvt.^XGZgj+]9gb ~(Y+-c><ז+N0f\rH͝vBq:㕑sw6]=ϑ>R[;$lR#-4YY+&VJMZ`[-m֕ӃpD9.c\pcb.r\24E,mpRyX2r),!X,Ck- A&,Sx
-OWdF"ԏw^Nnp:z٨y7A۠=`Mp
-{d2_y
-+ {F =$*1 iRK1r~0Xl&K K.$YAU샛P>r,fjVSN 棌1ϓά7(MHBK%B
-ASy?T n=Ǧ;_':r:EQ<5 -a
-C(BZkɤ-R vW'mWO?Q~؉O~+ȈN#?
-0000000016 00000 n
-0000000159 00000 n
-0000016706 00000 n
-0000000000 00000 f
-0000063411 00000 n
-0000000000 00000 f
-0000016757 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000063481 00000 n
-0000063512 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000020437 00000 n
-0000063597 00000 n
-0000017158 00000 n
-0000017316 00000 n
-0000020870 00000 n
-0000020624 00000 n
-0000020747 00000 n
-0000018097 00000 n
-0000018739 00000 n
-0000019249 00000 n
-0000019733 00000 n
-0000017381 00000 n
-0000017536 00000 n
-0000017584 00000 n
-0000020375 00000 n
-0000020138 00000 n
-0000020313 00000 n
-0000020251 00000 n
-0000020076 00000 n
-0000020508 00000 n
-0000020539 00000 n
-0000020944 00000 n
-0000021127 00000 n
-0000022431 00000 n
-0000033714 00000 n
-0000050016 00000 n
-0000063622 00000 n
-trailer <</Size 60/Root 1 0 R/Info 59 0 R/ID[<A9574215A3794EB69EDC5F2A9F73D83F><4EB2C399D71C4705888A21443A38AEB3>]>> startxref 63763 %%EOF \ No newline at end of file
diff --git a/platform/ios/resources/README b/platform/ios/resources/README
deleted file mode 100644
index 34dedaeb0c..0000000000
--- a/platform/ios/resources/README
+++ /dev/null
@@ -1,5 +0,0 @@
-When adding new image resources, make sure that you've reduced the file size as much as possible using a tool such as:
-
-ImageOptim — https://imageoptim.com
-
-See also: https://github.com/mapbox/mapbox-gl-native/pull/2227 \ No newline at end of file
diff --git a/platform/ios/resources/ar.lproj/Localizable.stringsdict b/platform/ios/resources/ar.lproj/Localizable.stringsdict
deleted file mode 100644
index 9cbc2c2d7a..0000000000
--- a/platform/ios/resources/ar.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>zero</key>
- <string>لا ملاحظات ظاهرة</string>
- <key>one</key>
- <string>ملاحظة واحدة ظاهرة</string>
- <key>two</key>
- <string>ملاحظتان ظاهرتان</string>
- <key>few</key>
- <string>%d ملاحظات ظاهرة</string>
- <key>many</key>
- <string>%d ملاحظة ظاهرة</string>
- <key>other</key>
- <string>%d ملاحظة ظاهرة</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>zero</key>
- <string>لا طرق ظاهرة</string>
- <key>one</key>
- <string>طريق واحد ظاهر</string>
- <key>two</key>
- <string>طريقان ظاهران</string>
- <key>few</key>
- <string>%d طرق ظاهرة</string>
- <key>many</key>
- <string>%d طريقا ظاهرا</string>
- <key>other</key>
- <string>%d طريق ظاهر</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>zero</key>
- <string>لا تكبير </string>
- <key>one</key>
- <string>%dx تكبير </string>
- <key>two</key>
- <string>%dx تكبير </string>
- <key>few</key>
- <string>%dx تكبير </string>
- <key>many</key>
- <string>%dx تكبير </string>
- <key>other</key>
- <string>%dx تكبير </string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/bg.lproj/Localizable.strings b/platform/ios/resources/bg.lproj/Localizable.strings
deleted file mode 100644
index 9b77111d30..0000000000
--- a/platform/ios/resources/bg.lproj/Localizable.strings
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Показва повече инфо";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Незавършена сесия от данни. Оригинална заявка:%@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Статус код %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Отказ";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Обратно към картата";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Завърта картата в посока север";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Компас";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "С";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "За да покажеш Mapbox-хоствана карта тук, задай %1$@ към своя токен за достъп в %2$@\nЗа повече детайли, виж:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Показва благодарности, форма за обратна връзка и още";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "За тази карта";
-
-/* List separator */
-"LIST_SEPARATOR" = ",";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Картата не се зареди поради неизвестна грешка.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Картата не се зареди поради незареждане на стила.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Карта";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld видима анотация(и).";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Видими места: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld видим път(я).";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Мащаб %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Картата не се зареди поради повреден стил.";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Разделен път";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Еднопосочно";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Маршрут %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK за iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK за iOS версия %@ е вече налична:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Картата не се зареди поради неоткрит или несъвместим стил.";
-
-/* Telemetry prompt message */
-/* OpenStreetMap full name attribution */
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Не участвам";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Участвам";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Ти помагаш OpenStreetMap и Mapbox картите да стават по-добри, като предоставяш анонимни данни за употреба.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Спирам участие";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Продължавам да участвам";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Покажи ми още";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox телеметрия";
-
-/* Telemetry prompt title */
-"OSM_FULL_NAME" = "OpenStreetMap";
-
-/* OpenStreetMap short name attribution */
-"OSM_SHORT_NAME" = "OSM";
-
diff --git a/platform/ios/resources/bg.lproj/Localizable.stringsdict b/platform/ios/resources/bg.lproj/Localizable.stringsdict
deleted file mode 100644
index 8f2afce034..0000000000
--- a/platform/ios/resources/bg.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d видими анотации</string>
- <key>other</key>
- <string>%d видими анотации</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d път видимост</string>
- <key>other</key>
- <string>%d пътища видимост</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Мащаб %dx</string>
- <key>other</key>
- <string>Мащаб %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/ca.lproj/Localizable.strings b/platform/ios/resources/ca.lproj/Localizable.strings
deleted file mode 100644
index 41996b191f..0000000000
--- a/platform/ios/resources/ca.lproj/Localizable.strings
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Mostra més informació";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "La tasca de dades de la sessió ha fallat. La petició original era: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "El codi d’estat era %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Cancel·lar";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Torna al mapa";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Orienta el mapa amb rumb nord";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Brúixola";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Per mostrar aquí un mapa allotjat a Mapbox posa %1$@ al teu token d’accés a %2$@\n\nPer obtenir instruccions detallades, consulteu:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Mostra els crèdits, el formulari de contacte i més";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Sobre aquest mapa";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "El mapa no s’ha carregat a causa d’un error desconegut.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "El mapa no s’ha carregat perquè l’estil no es pot carregar.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Mapa";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "Zoom %1$dx\n%2$ld anotació (ns) visibles";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "El mapa no s’ha carregat perquè s’ha corromput l’estil.";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "La versió %@ del Mapbox Maps SDK for iOS està disponible:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "El mapa no s’ha carregat perquè no es troba l’estil o bé és incompatible.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Pots ajudar a millorar els mapes d’OpenStreetMap i de Mapbox aportant dades d’ús anònimes.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "No vull participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participar";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Estàs ajudant a millorar els mapes d’OpenStreetMap i de Mapbox aportant dades d’ús anònimes.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Aturar la participació";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Continuar la participació";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Vull saber-ne més";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Telemetria de Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Millora els mapes de Mapbox";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Ets aquí";
-
diff --git a/platform/ios/resources/ca.lproj/Localizable.stringsdict b/platform/ios/resources/ca.lproj/Localizable.stringsdict
deleted file mode 100644
index 45d4842ff6..0000000000
--- a/platform/ios/resources/ca.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@
-%#@count@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %dx</string>
- <key>other</key>
- <string>Zoom %dx</string>
- </dict>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d anotació visible</string>
- <key>other</key>
- <string>%d anotacions visibles</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/cs.lproj/Localizable.strings b/platform/ios/resources/cs.lproj/Localizable.strings
deleted file mode 100644
index 587e67a054..0000000000
--- a/platform/ios/resources/cs.lproj/Localizable.strings
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Shows more info";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Cancel";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Returns to the map";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Rotates the map to face due north";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Compass";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "To display a Mapbox-hosted map here, set %1$@ to your access token in %2$@\n\nFor detailed instructions, see:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Shows credits, a feedback form, and more";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "About this map";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "The map failed to load because an unknown error occurred.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "The map failed to load because the style can't be loaded.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Map";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld annotation(s) visible.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Places visible: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld road(s) visible.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "The map failed to load because the style is corrupted.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ to %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Divided road";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "One way";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Route %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ is now available:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "The map failed to load because the style can’t be found or is incompatible.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Don’t Participate";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participate";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Stop Participating";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Keep Participating";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Tell Me More";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox Telemetry";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Make Mapbox Maps Better";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "You Are Here";
-
diff --git a/platform/ios/resources/cs.lproj/Localizable.stringsdict b/platform/ios/resources/cs.lproj/Localizable.stringsdict
deleted file mode 100644
index 435b7bdfe8..0000000000
--- a/platform/ios/resources/cs.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d annotation visible</string>
- <key>other</key>
- <string>%d annotations visible</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d road visible</string>
- <key>other</key>
- <string>%d roads visible</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %dx</string>
- <key>other</key>
- <string>Zoom %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/da.lproj/Localizable.strings b/platform/ios/resources/da.lproj/Localizable.strings
deleted file mode 100644
index f1af0c39db..0000000000
--- a/platform/ios/resources/da.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Vis mere info";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Denne session kunne ikke gennemføres pga. data fejl. Den oprindelige forespørgsel var: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Status koden var %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Fortryd";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Retur til kortet";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Fast nord";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Kompas";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "For at vise et Mapbox-hosted kort her, angiv %1$@ til din access token i %2$@\n\nFor yderligere instruktion se:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Vis credits, feedback formular med mere";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Om kortet";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Kortet kunne ikke hentes på grund af en ukendt fejl";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Kortet kunne ikke hentes på grund af en fejl i kort formatteringen";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Kort";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld synlige kommentarer.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Synlige steder: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld synlige veje.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Kortet kunne ikke hentes på grund af en fejl";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ til %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Delt vej";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Ensrettet";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Rute %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ er nu tilgængelig:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Kortet kunne ikke hentes fordi det enten ikke findes, eller ikke er kompatibelt.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Du kan hjælpe med at gøre OpenStreetMap og Mapbox kort bedre ved at bidrage med annonyme bruger data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Deltag ikke";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Deltag";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Du hjælper med at gøre OpenStreetMap og Mapbox kort bedre ved at bidrage med annonyme bruger data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Stop deltagelse";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Fortsæt deltagelse";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Fortæl mig mere";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox Telemetry";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Gør Mapbox kort bedre";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Du er her";
-
diff --git a/platform/ios/resources/da.lproj/Localizable.stringsdict b/platform/ios/resources/da.lproj/Localizable.stringsdict
deleted file mode 100644
index 296b8c88dd..0000000000
--- a/platform/ios/resources/da.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%ld synlig kommentar</string>
- <key>other</key>
- <string>%ld synlige kommentarer</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%ld synlig vej</string>
- <key>other</key>
- <string>%ld synlige veje</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %dx</string>
- <key>other</key>
- <string>Zoom %dx.</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/de.lproj/Localizable.strings b/platform/ios/resources/de.lproj/Localizable.strings
deleted file mode 100644
index c340a78770..0000000000
--- a/platform/ios/resources/de.lproj/Localizable.strings
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Mehr Infos anzeigen";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Der Data-Task der Sitzung ist fehlgeschlagen. Die ursprüngliche Anfrage war: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Der Statuscode ist %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Abbrechen";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Zurück zur Karte ";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Dreht die Karte nach Norden";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Kompass";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Um hier eine von Mapbox-Karte anzuzeigen, muss das Zugriffs-Token als %1$@ in %2$@ eingetragen werden.\n\nFür detaillierte Informationen, siehe:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Zeigt Danksagunen, ein Kontakformular und mehr an";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Über diese Karte";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Die Karte konnte nicht geladen werden, da ein unbekannter Fehler aufgetreten ist.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Die Karte konnte nicht geladen werden, da diese Form nicht geladen werden kann";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Karte";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "Zoomstufe %1$d\n%2$ld Anmerkung(en) sichtbar";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Die Karte konnte nicht geladen werden, da diese Form beschädigt ist.";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS Version %@ ist ab sofort verfügbar.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Die Karte konnte nicht geladen werden, da diese Form nicht gefunden werden kann oder nicht kompatibel ist.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Durch anonymisierte Nutzungsdaten können Sie helfen, OpenStreetMap- und Mapbox-Karten zu verbessern.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Nicht teilnehmen";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Teilnehmen";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Durch anonymisierte Nutzungsdaten helfen Sie, OpenStreetMap- und Mapbox-Karten zu verbessern.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Teilnahme beenden";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Weiterhin teilnehmen";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Mehr Informationen";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox-Telemetrie";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Mapbox-Karten verbessern";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Sie sind hier";
-
diff --git a/platform/ios/resources/de.lproj/Localizable.stringsdict b/platform/ios/resources/de.lproj/Localizable.stringsdict
deleted file mode 100644
index 7d334c77f8..0000000000
--- a/platform/ios/resources/de.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@
-%#@count@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoomstufe %d</string>
- <key>other</key>
- <string>Zoomstufe %d</string>
- </dict>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d Anmerkung sichtbar</string>
- <key>other</key>
- <string>%d Anmerkungen sichtbar</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/en.lproj/Localizable.stringsdict b/platform/ios/resources/en.lproj/Localizable.stringsdict
deleted file mode 100644
index 435b7bdfe8..0000000000
--- a/platform/ios/resources/en.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d annotation visible</string>
- <key>other</key>
- <string>%d annotations visible</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d road visible</string>
- <key>other</key>
- <string>%d roads visible</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %dx</string>
- <key>other</key>
- <string>Zoom %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/es.lproj/Localizable.strings b/platform/ios/resources/es.lproj/Localizable.strings
deleted file mode 100644
index b2da706d8c..0000000000
--- a/platform/ios/resources/es.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Muestra más información";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Error en la tarea de datos de sesión. La solicitud original fue: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "El código de estado fue %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Cancelar";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Regresa al mapa";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Gira el mapa para hacer frente al norte";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Brújula";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Para mostrar un mapa alojado en Mapbox aquí, establezca %1$@ con su token de acceso en %2$@\n\nPara obtener instrucciones detalladas, consulte:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Muestra créditos, un formulario de comentarios y más";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Acerca de este mapa";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "No se pudo cargar el mapa debido a un error desconocido.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "No se pudo cargar el mapa debido a un error de carga en el estilo.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Mapa";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld anotacion(es) visible(s).";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Lugares visibles: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld camino(s) visible(s).";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "No se pudo cargar el mapa debido a que el estilo está dañado.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ a %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Vía de doble carril";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Unidireccional";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Ruta %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK para iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "La versión %@ de Mapbox Maps SDK para iOS está disponible:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "No se pudo cargar el mapa debido a que no se encuentra el estilo o está incompleto.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Ayudas a mejorar los mapas de OpenStreetMap y Mapbox al aportar datos de uso anónimos.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "No participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participar";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Ayudas a mejorar los mapas de OpenStreetMap y Mapbox al aportar datos de uso anónimos.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Dejar de participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Seguir participando";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Cuéntame más";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Telemetría Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Mejorar los mapas de Mapbox";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Usted está aquí";
-
diff --git a/platform/ios/resources/es.lproj/Localizable.stringsdict b/platform/ios/resources/es.lproj/Localizable.stringsdict
deleted file mode 100644
index 91a49b067f..0000000000
--- a/platform/ios/resources/es.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d anotación visible</string>
- <key>other</key>
- <string>%d anotaciones visibles</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d camino visible</string>
- <key>other</key>
- <string>%d caminos visibles</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %dx</string>
- <key>other</key>
- <string>Zoom %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/fr.lproj/Localizable.strings b/platform/ios/resources/fr.lproj/Localizable.strings
deleted file mode 100644
index 17a0240517..0000000000
--- a/platform/ios/resources/fr.lproj/Localizable.strings
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Afficher plus d’informations";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Annuler";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Retourne à la carte";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Réoriente la carte vers le nord";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Compas";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Pour afficher ici une carte hébergée par Mapbox, indiquez %1$@ à votre jeton d’accès dans %2$@\n\nPour des instructions détaillées, voyez :";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Affiche les crédits d’auteurs, un formulaire de retour d’avis et plus encore";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "À propos de cette carte";
-
-/* List separator */
-"LIST_SEPARATOR" = ";";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Le chargement de la carte a échoué car une erreur inconnue est survenue.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Le chargement de la carte a échoué car le style n’a pas pu être chargé.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Carte";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld annotation(s) visible(s).";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Lieux visibles : %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld route(s) visible(s).";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Zoom %d×.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Le chargement de la carte a échoué car le style est corrompu.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ à %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Route à chaussées séparées";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Route en sens unique";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Route %@";
-
-/* Action sheet title */
-"SDK_NAME" = "SDK Mapbox Maps pour iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Le SDK Mapbox Maps pour iOS en version %@ est maintenant disponible :";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Le chargement de la carte a échoué car le style n’a pas été trouvé ou est incompatible.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Vous pouvez aider à améliorer OpenStreetMap et Mapbox en contribuant des données anonymes d’utilisation.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Ne pas participer";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participer";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Vous aidez à améliorer OpenStreetMap et Mapbox en contribuant des données anonymes d’utilisation.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Arrêter de participer";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Continuer à participer";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Dites m’en plus";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Télémétrie Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Améliorez les cartes Mapbox";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Vous êtes ici";
-
diff --git a/platform/ios/resources/fr.lproj/Localizable.stringsdict b/platform/ios/resources/fr.lproj/Localizable.stringsdict
deleted file mode 100644
index 12dde71a38..0000000000
--- a/platform/ios/resources/fr.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d annotation visible</string>
- <key>other</key>
- <string>%d annotations visibles</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d route visible</string>
- <key>other</key>
- <string>%d routes visibles</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %d×</string>
- <key>other</key>
- <string>Zoom %d×</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/gl.lproj/Localizable.strings b/platform/ios/resources/gl.lproj/Localizable.strings
deleted file mode 100644
index 083423d434..0000000000
--- a/platform/ios/resources/gl.lproj/Localizable.strings
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Amosa máis información";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Desbotar";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Voltar ó mapa";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Xira o mapa para pórse cara o norte";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Compás";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Para amosar un mapa aloxado no Mapbox aquí, estabelece %1$@ co teu 'token' de acceso en %2$@\n\nPara obter instrucións detalladas, olla:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Amosa os cretos, un formulario de opinións e máis";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Acerca deste mapa";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Non se puido cargar o mapa por mor dun error descoñecido.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Non se puido cargar o mapa por mor dun erro de carga no estilo.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Mapa";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld anotación(s) visíbel(s).";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Lugares visíbeis: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld estrada(s) visíbel(s).";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Achegamento %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Non se puido cargar o mapa por mor de que o estilo está danado.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ a %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Estrada de duplo carril";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Un só sentido";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Rota %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK para o iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "A versión %@ do Mapbox Maps SDK para o iOS está dispoñíbel:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Non se puido cargar o mapa por mor de que non se atopa o estilo ou non está completo.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Axudas a mellorar os mapas do OpenStreetMap e o Mapbox ó contribuír con datos de emprego anónimos.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Non participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participar";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Axudas a mellorar os mapas do OpenStreetMap e o Mapbox ó contribuír con datos de emprego anónimos.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Deixar de participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Seguir participando";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Cóntame máis";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Telemetría do Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Mellorar os mapas do Mapbox";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Ti estás aquí";
-
diff --git a/platform/ios/resources/gl.lproj/Localizable.stringsdict b/platform/ios/resources/gl.lproj/Localizable.stringsdict
deleted file mode 100644
index 859f8424d9..0000000000
--- a/platform/ios/resources/gl.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d anotación visíbel</string>
- <key>other</key>
- <string>%d anotacións visíbeis</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d estrada visíbel</string>
- <key>other</key>
- <string>%d estradas visíbeis</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Achegamento %dx</string>
- <key>other</key>
- <string>Achegamento %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/he.lproj/Localizable.strings b/platform/ios/resources/he.lproj/Localizable.strings
deleted file mode 100644
index 2e4c9a17fb..0000000000
--- a/platform/ios/resources/he.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "מציג מידע נוסף";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "המידע של המשימה נכשל, הבקשה המקורית הייתה: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "סטטוס הקוד היה %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "ביטול";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "חזרה אל המפה";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "קיבוע המפה לצד צפון";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "מצפן";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "צ";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "בכדי להציג את המפות המאוכסנות של Mapbox כאן, הגדר %1$@ את אסימון הגישה ב %2$@\n\nלהוראות מפורטות, ראה:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "מציג קרדיטים, טופס משוב ועוד";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "אודות המפה";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "טעינת המפה נכשלה עכב שגיאה לא ידועה.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "טעינת המפה נכשלה - לא ניתן לטעון את הסגנון.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "מפה";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld נקודה(ות) ציון מוצגות.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "מקומות מוצגים: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld דרך(ים) מוצגות.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "זום x%d.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "טעינת המפה נכשלה - הסגנון פגום.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ אל %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "דרך מחולקת";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "חד סטרי";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "כביש %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ is now available:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "טעינת המפה נכשלה - לא ניתן למצוא את הסגנון או שהסגנון אינו תואם.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "אתם מסייעים לשפר את המפות של OpenStreetMap ו Mapbox באמצעות שיתוף אנונימי של נתוני השימוש.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "אל תשתף";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "שתף";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "אתם מסייעים לשפר את המפות של OpenStreetMap ו Mapbox באמצעות שיתוף אנונימי של נתוני השימוש.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "הפסק שיתוף";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "המשך לשתף";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "ספר לי עוד";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox Telemetry";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "הפוך את המפות של Mapbox לטובות יותר";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "אתה נמצא כאן";
-
diff --git a/platform/ios/resources/hu.lproj/Localizable.strings b/platform/ios/resources/hu.lproj/Localizable.strings
deleted file mode 100644
index bac747b4a2..0000000000
--- a/platform/ios/resources/hu.lproj/Localizable.strings
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Több infót mutat";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "The session data task failed. Original request was: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "A státuszkód %ld volt";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Mégse";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Visszatér a térképhez";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Elforgatja a térképet, hogy észak felé nézzen";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Iránytű";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "É";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "To display a Mapbox-hosted map here, set %1$@ to your access token in %2$@\n\nFor detailed instructions, see:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Shows credits, a feedback form, and more";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Erről a térképről";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Nem sikerült betölteni a térképet, mert ismeretlen hiba történt.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Nem sikerült betölteni a térképet, mert a stílust nem lehetett betölteni.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Térkép";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "Zoom %1$dx\n%2$ld annotation(s) visible";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Nem sikerült betölteni a térképet, mert a stílus sérült.";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS %@ mostantól elérhető:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Nem sikerült betölteni a térképet, mert a stílus nem található vagy inkompatibilis.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Nem veszek részt";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Részt veszek";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Részvétel befejezése";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Részvétel folytatása";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Többet akarok tudni";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox telemetria";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Tedd jobbá a Mapbox térképeket";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Itt vagy";
-
diff --git a/platform/ios/resources/hu.lproj/Localizable.stringsdict b/platform/ios/resources/hu.lproj/Localizable.stringsdict
deleted file mode 100644
index c83b759ff2..0000000000
--- a/platform/ios/resources/hu.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d annotáció látható</string>
- <key>other</key>
- <string>%d annotáció látható</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d út látható</string>
- <key>other</key>
- <string>%d út látható</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>%dx nagyítás</string>
- <key>other</key>
- <string>%dx nagyítás</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/ja.lproj/Localizable.strings b/platform/ios/resources/ja.lproj/Localizable.strings
deleted file mode 100644
index 0b5429b487..0000000000
--- a/platform/ios/resources/ja.lproj/Localizable.strings
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "詳細を伝える";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "The session data task failed. Original request was: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "The status code was %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "キャンセル";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "地図を真北に回転させる";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "磁針";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "北";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "To display a Mapbox-hosted map here, set %1$@ to your access token in %2$@\n\nFor detailed instructions, see:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Shows credits, a feedback form, and more";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "この地図について";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "地図";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "ズーム %1$d倍\n%2$ld ピン現れる";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "現在Mapbox Maps SDK for iOS %1$@が入手できる:";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "参加しない";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "参加する";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "参加をやめる";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "参加を続ける";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "詳細";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapboxテレメトリー";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Mapboxの地図を改善する";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "現在位置";
-
diff --git a/platform/ios/resources/ko.lproj/Localizable.strings b/platform/ios/resources/ko.lproj/Localizable.strings
deleted file mode 100644
index 6374fc72df..0000000000
--- a/platform/ios/resources/ko.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "추가 정보 보기";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "세션 데이타 작업 실패. 초기 요청: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "상태 코드 %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "취소";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "지도로 복귀";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "정북쪽으로 지도 회전";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "나침반";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "북";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "맵박스에의한 지도를 출력하기 위해, %1$@ 를 %2$@에 당신의 접근 토큰으로 으로 설정하십시오. \n\n자세한 정보를 찾으시는 경우, 확인:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "크레딧, 피드백 폼, 기타 보기";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "이 맵에 관하여";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "알수 없는 에러로 인해 맵 로드에 실패하였습니다.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "형식이 로드되지 않아, 맵 로드에 실패하였습니다.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "맵박스";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "지도";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld 주석 볼 수 있는.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "가시거리 범위: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld 도로 볼 수 있는.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "확대 %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "형식에 오류가 발생하여 맵 로드에 실패하였습니다.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ to %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "분리 도로";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "일방 통행";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "경로 %@";
-
-/* Action sheet title */
-"SDK_NAME" = "iOS를 위한 맵박스 지도 SDK";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "iOS버전 맵박스 지도 %@가 사용 가능합니다:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "형식을 찾을 수 없거나 호환이 되지 않아, 맵 로드에 실패하였습니다.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "당신은 익명의 사용 데이타를 제공함으로써, 오픈스트리트맵과 맵박스의 향상에 기여하고 있습니다.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "참여하지 마십시오";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "참여";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "당신은 익명의 사용 데이타를 제공함으로써, 오픈스트리트맵과 맵박스의 향상에 기여하고 있습니다.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "참여 중지";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "참여 계속";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "좀 더 말해보세요";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "맵박스 텔레메트리";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "더 나은 맵박스 지도 만들기";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "당신의 위치";
-
diff --git a/platform/ios/resources/ko.lproj/Localizable.stringsdict b/platform/ios/resources/ko.lproj/Localizable.stringsdict
deleted file mode 100644
index fdde2639c6..0000000000
--- a/platform/ios/resources/ko.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>other</key>
- <string>%d 주석 보이기</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>other</key>
- <string>%d 도로 보이기</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>확대 %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/lt.lproj/Localizable.strings b/platform/ios/resources/lt.lproj/Localizable.strings
deleted file mode 100644
index 2f2e30f966..0000000000
--- a/platform/ios/resources/lt.lproj/Localizable.strings
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Rodo daugiau informacijos";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Užklausa nepavyko. Pradinė užklausa buvo: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Būklės kodas: %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Atšaukti";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Grįžta į žemėlapį.";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Pasuka žemėlapį šiaure į viršų";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Kompasas";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "Š";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Nustatykite %1$@ kaip jūsų prieigos raktą %2$@ byloje tam, kad atvaizduoti žemėlapį patalpintą Mapbox.\n\nDaugiau informacijos:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Rodo kūrėjų sąrašą, grįžtamo ryšio formą ir daugiau.";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Apie šį žemėlapį";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Nepavyko užkrauti žemėlapio dėl nežinomos klaidos.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Nepavyko užkrauti žemėlapio, nes nepavyko užkrauti stiliaus.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Žemėlapis";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "Priartinimas: %1$dx\nMatomos anotacijos: %2$ld";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Nepavyko užkrauti žemėlapio, nes stilius yra netinkamo formato.";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS versija %@ jau prieinama.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Nepavyko užkrauti žemėlapio, nes neįmanoma rasti stiliaus arba jis nėra suderinamas.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Padėkite padaryti OpenStreetMap ir Mapbox žemėlapius geresniais dalindamiesi anoniminiais naudojimosi duomenimis.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Nesidalinti";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Dalintis";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Jūs padedate padaryti OpenStreetMap ir Mapbox žemėlapius geresniais dalindamiesi anoniminiais naudojimosi duomenimis.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Stabdyti dalinimąsi";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Tęsti dalinimąsi";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Daugiau informacijos";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox Telemetrija";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Padaryti Mapbox žemėlapius geresniais";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Jūs esate čia";
-
diff --git a/platform/ios/resources/lt.lproj/Localizable.stringsdict b/platform/ios/resources/lt.lproj/Localizable.stringsdict
deleted file mode 100644
index 732a8d23ac..0000000000
--- a/platform/ios/resources/lt.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@
-%#@count@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Priartinimas %dx</string>
- <key>few</key>
- <string>Priartinimas %dx</string>
- <key>other</key>
- <string>Priartinimas %dx</string>
- </dict>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d matoma anotacija</string>
- <key>few</key>
- <string>%d matomos anotacijos</string>
- <key>other</key>
- <string>%d matomų anotacijų</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/pt-BR.lproj/Localizable.strings b/platform/ios/resources/pt-BR.lproj/Localizable.strings
deleted file mode 100644
index d80c943c7e..0000000000
--- a/platform/ios/resources/pt-BR.lproj/Localizable.strings
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Mostrar mais informações";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Tarefa de dados da sessão falhou. Requisição original: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "O código de status foi %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Cancelar";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Retornar ao mapa";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Rotaciona o mapa com face ao norte";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Compasso";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Para exibir um mapa hospedado no Mapbox aqui, insira %1$@ para seu token de acesso %2$@\n\nPara maiores detalhes, veja:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Mostra os créditos, um formulário de avaliação, e mais";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Sobre este mapa";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Falha ao carregar mapa devido a um erro desconhecido";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Falha ao carregar mapa porque o estilo não pode ser carregado";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Mapa";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "Zoom %1$dx\n%2$ld anotações visíveis";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Falha ao carregar mapa porque o estilo está corrompido.";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "SDK Mapbox para iOS versão %@ está disponível:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Falha ao carregar mapa porque o estilo não pode ser encontrado ou é incompatível.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Você pode ajudar a tornar o OpenStreetMap e Mapbox ainda melhor contribuindo anonimamente com seus dados de uso.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Não Participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participar";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Você está ajudando a tornar o OpenStreetMap e Mapbox ainda melhor contribuindo anonimamente com seus dados de uso.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Parar de Participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Continuar Participando";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Me Diga Mais";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Telemetria do Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Melhorar os Mapas do Mapbox";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Você Está Aqui";
-
diff --git a/platform/ios/resources/pt-BR.lproj/Localizable.stringsdict b/platform/ios/resources/pt-BR.lproj/Localizable.stringsdict
deleted file mode 100644
index c3185c4168..0000000000
--- a/platform/ios/resources/pt-BR.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@
-%#@count@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %dx</string>
- <key>other</key>
- <string>Zoom %dx</string>
- </dict>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d anotação visível</string>
- <key>other</key>
- <string>%d anotações visíveis</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/pt-PT.lproj/Localizable.strings b/platform/ios/resources/pt-PT.lproj/Localizable.strings
deleted file mode 100644
index 8104ef5842..0000000000
--- a/platform/ios/resources/pt-PT.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Mostra mais informação";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "A tarefa de dados da sessão falhou. O pedido original era: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "O código de estado era %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Cancelar";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Voltar ao mapa";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Rodar o mapa virado para Norte";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Compasso";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Para mostrar aqui um mapa alojado na Mapbox, configure %1$@ para o seu token de acesso em %2$@\n\nPara instruções detalhadas, ver:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Mostra os créditos, um formulário de resposta e mais";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Sobre este mapa";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Não foi possível carregar o mapa porque ocorreu um erro desconhecido.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Não foi possível carregar o mapa porque o estilo não pode ser carregado.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Mapa";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld erro(s) reportado(s) visível(is).";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Locais visíveis: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld estrada(s) visivel(is).";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Não foi possível carregar o mapa porque o estilo está corrompido.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ para %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Estrada dividida";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Sentido único";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Rota %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapas Mapbox SDK para iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapas Mapbox SDK para iOS na versão %@ está agora disponível:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Não foi possível carregar o mapa porque o estilo não foi encontrado ou é incompatível.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Pode ajudar a tornar os mapas OpenStreetMap e Mapbox melhores contribuindo com dados de utilização anónimos.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Não Participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Participar";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Está a ajudar a tornar os mapas OpenStreetMap e Mapbox melhores contribuindo com dados de utilização anónimos.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Parar de Participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Continuar a Participar";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Quero Saber Mais";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Telemetria Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Torne Melhores os Mapas Mapbox";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Você Está Aqui";
-
diff --git a/platform/ios/resources/pt-PT.lproj/Localizable.stringsdict b/platform/ios/resources/pt-PT.lproj/Localizable.stringsdict
deleted file mode 100644
index f342bd58b5..0000000000
--- a/platform/ios/resources/pt-PT.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d erro reportado visível</string>
- <key>other</key>
- <string>%d erros reportados visíveis</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d estrada visível</string>
- <key>other</key>
- <string>%d estradas visíveis</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zoom %dx</string>
- <key>other</key>
- <string>Zoom %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/ru.lproj/Localizable.strings b/platform/ios/resources/ru.lproj/Localizable.strings
deleted file mode 100644
index 5bb987489e..0000000000
--- a/platform/ios/resources/ru.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Дополнительная информация";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Во время обмена данными произошла ошибка. Оригинал запроса: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Код ответа %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Отмена";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Вернуться к карте";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Развернуть карту на север";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Компас";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "С";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Для отображения здесь карт Mapbox, задайте %1$@ для вашего токена доступа в %2$@\n\nПодробные инструкции:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Показать благодарности, форму отправки отзыва и другое";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Об этой карте";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Не удалось загрузить карту из-за неизвестной ошибки.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Не удалось загрузить карту из-за ошибки загрузки стиля.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Карта";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "Показано %ld аннотаций.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Показано мест: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "Показано %ld дорог.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Масштаб %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Не удалось загрузить карту из-за ошибки в стиле.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ на %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Двусторонняя дорога";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Односторонняя дорога";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Трасса %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK для iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Доступна версия Mapbox Maps SDK %@ для iOS:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Не удалось загрузить карту, так как стиль не найден или несовместим.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Вы поможете улучшить карты OpenStreetMap и Mapbox, предоставляя обезличенные данные об использовании.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Не участвовать";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Участвовать";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Вы помогаете улучшать карты OpenStreetMap и Mapbox, предоставляя обезличенные данные об использовании.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Прекратить участие";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Продолжить участие";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Узнать больше";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Телеметрия Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Сделать карты Mapbox лучше";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Вы здесь";
-
diff --git a/platform/ios/resources/ru.lproj/Localizable.stringsdict b/platform/ios/resources/ru.lproj/Localizable.stringsdict
deleted file mode 100644
index fabd557780..0000000000
--- a/platform/ios/resources/ru.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>Показана %d аннотация</string>
- <key>few</key>
- <string>Показано %d аннотации</string>
- <key>many</key>
- <string>Показано %d аннотаций</string>
- <key>other</key>
- <string>Показано %d аннотаций</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>Показана %d дорога</string>
- <key>few</key>
- <string>Показано %d дороги</string>
- <key>many</key>
- <string>Показано %d дорог</string>
- <key>other</key>
- <string>Показано %d дорог</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Масштаб %dx</string>
- <key>few</key>
- <string>Масштаб %dx</string>
- <key>many</key>
- <string>Масштаб %dx</string>
- <key>other</key>
- <string>Масштаб %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/sv.lproj/Localizable.strings b/platform/ios/resources/sv.lproj/Localizable.strings
deleted file mode 100644
index db189f141f..0000000000
--- a/platform/ios/resources/sv.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Visa mer information";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Förfrågan misslyckades. Originalförfrågan var: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Statuskoden var %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Avbryt";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Återgår till kartan";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Roterar kartan mot norr";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Kompass";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "N";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "För att visa Mapbox-karta här, fyll i %1$@ till din access token i %2$@\n\nFör detaljerad information, se:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Visa mer";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Om den här kartan";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Misslyckades med att ladda kartan på grund av ett okänt fel.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Misslyckades med att ladda kartan på grund av att kartstilen kunde inte laddas.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Karta";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld annotering(ar) synliga.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Synliga platser: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld väg(ar) synliga.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Misslyckades med att ladda kartan för att kartstilen är korrupt.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ till %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Delad väg";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Enkelriktad väg";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Rutt %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ är nu tillgänglig:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Kartan kunde inte laddas för att kartstilen kunde inte hittas eller för att den är inkompatibel.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Du kan göra OpenStreetMap och Mapbox kartor bättre genom att bidra med anonym data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Delta Inte";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Delta";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Du kan göra OpenStreetMap och Mapbox kartor bättre genom att bidra med anonym data.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Sluta delta";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Fortsätt delta";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Berätta mer";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox Telemetri";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Gör Mapbox Kartor Bättre";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Du är här";
-
diff --git a/platform/ios/resources/sv.lproj/Localizable.stringsdict b/platform/ios/resources/sv.lproj/Localizable.stringsdict
deleted file mode 100644
index 5f44d19b37..0000000000
--- a/platform/ios/resources/sv.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d annotering synlig</string>
- <key>other</key>
- <string>%d annoteringar synliga</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%d väg synlig</string>
- <key>other</key>
- <string>%d vägar synliga</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Zooma %dx</string>
- <key>other</key>
- <string>Zooma %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/uk.lproj/Localizable.strings b/platform/ios/resources/uk.lproj/Localizable.strings
deleted file mode 100644
index f413b963c1..0000000000
--- a/platform/ios/resources/uk.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Показати більше інформації";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "The session data task failed. Original request was: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Код стану %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Скасувати";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Повернення до мапи";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Обертає мапу в напрмяку на північ";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "Компас";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "Пн";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Для показу мапи від Mapbox тут, встановіть %1$@ для вашої мітки доступу в %2$@\n\n\nДля отримання докладних інструкцій дивіться:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Показує інформацію про розробників, форму зворотнього відгуку та інше";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Про цю мапу";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Через невідому помилку неможливо завантажити мапу";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Збій мапи через те, що неможливо завантажити стиль";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Мапа";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld підпис(ів) видно.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Показано місць: %@";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld доріг видно.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Масштаб %d.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Неможливо завантажити мапу через пошкоджений стиль.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ до %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Дорога з розподілювачем";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Односторонній рух";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Маршрут %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK для iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK для iOS версія %@ наявна:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Мапу неможливо завантажити через відсутність стилю або його невідповідність.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Ви можете допомогти зробити мапи OpenStreetMap та Mapbox кращими надаючи анонімізовані дані про користування застосунком.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Відмовитись";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Брати участь";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Ви допомагаєте робити мапи OpenStreetMap та Mapbox краще пощирюючи анонімні дані про користування мапами.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Припинити участь";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Продовжити участь";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Докладніше";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Телеметрія Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Допоможіть зробити мапи Mapbox краще";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Ви тут";
-
diff --git a/platform/ios/resources/uk.lproj/Localizable.stringsdict b/platform/ios/resources/uk.lproj/Localizable.stringsdict
deleted file mode 100644
index 29861f0d23..0000000000
--- a/platform/ios/resources/uk.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>Показано %d підпис</string>
- <key>few</key>
- <string>Показано %d підписи</string>
- <key>other</key>
- <string>Показано %d підписів</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>one</key>
- <string>%ld дорігу видно</string>
- <key>few</key>
- <string>%ld доріги видно</string>
- <key>other</key>
- <string>%ld доріг видно</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>one</key>
- <string>Масштаб %dx</string>
- <key>few</key>
- <string>Масштаб %dx</string>
- <key>other</key>
- <string>Масштаб %dx</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/vi.lproj/Localizable.strings b/platform/ios/resources/vi.lproj/Localizable.strings
deleted file mode 100644
index 0a6d937d2c..0000000000
--- a/platform/ios/resources/vi.lproj/Localizable.strings
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "Hiển thị thêm thông tin";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "Tác vụ lấy dữ liệu của phiên làm việc bị thất bại. Yêu cầu ban đầu là: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "Mã trạng thái là %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "Hủy bỏ";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Quay lại bản đồ";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "Quay bản đồ về hướng bắc";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "La bàn";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "B";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "Để hiển thị bản đồ do Mapbox phục vụ tại đây, đặt %1$@ là dấu hiệu truy cập của bạn trong %2$@\n\nXem hướng dẫn chi tiết tại:";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "Hiển thị lời ghi công, biểu mẫu phản hồi, và thêm nữa";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "Giới thiệu về bản đồ này";
-
-/* List separator */
-"LIST_SEPARATOR" = ", ";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì lỗi không rõ.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì không thể tải bảng kiểu.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "Bản đồ";
-
-/* Map accessibility value; {number of visible annotations} */
-"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld chú thích đang xuất hiện.";
-
-/* Map accessibility value; {list of visible places} */
-"MAP_A11Y_VALUE_PLACES" = "Địa điểm đang xuất hiện: %@.";
-
-/* Map accessibility value; {number of visible roads} */
-"MAP_A11Y_VALUE_ROADS" = "%ld con đường đang xuất hiện.";
-
-/* Map accessibility value; {zoom level} */
-"MAP_A11Y_VALUE_ZOOM" = "Thu phóng gấp %d lần.";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì bảng kiểu bị hỏng.";
-
-/* String format for accessibility value for road feature; {starting compass direction}, {ending compass direction} */
-"ROAD_DIRECTION_A11Y_FMT" = "%1$@ sang %2$@";
-
-/* Accessibility value indicating that a road is a divided road (dual carriageway) */
-"ROAD_DIVIDED_A11Y_VALUE" = "Đường phân làn";
-
-/* Accessibility value indicating that a road is a one-way road */
-"ROAD_ONEWAY_A11Y_VALUE" = "Một chiều";
-
-/* String format for accessibility value for road feature; {route number} */
-"ROAD_REF_A11Y_FMT" = "Đường số %@";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK cho iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK cho iOS mới ra phiên bản %@:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Bản đồ bị thất bại khi tải vì không tìm thấy bảng kiểu hoặc bảng kiểu không tương thích.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "Hãy giúp cải tiến các bản đồ OpenStreetMap và Mapbox bằng cách đóng góp dữ liệu vô danh hóa về cách sử dụng.";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "Không Tham gia";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "Tham gia";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "Bạn đang giúp cải tiến các bản đồ OpenStreetMap và Mapbox bằng cách đóng góp dữ liệu vô danh hóa về cách sử dụng.";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "Ngừng Tham gia";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "Tiếp tục Tham gia";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "Tìm hiểu Thêm";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Trình viễn trắc Mapbox";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "Cải tiến các Bản đồ Mapbox";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "Bạn ở Đây";
-
diff --git a/platform/ios/resources/vi.lproj/Localizable.stringsdict b/platform/ios/resources/vi.lproj/Localizable.stringsdict
deleted file mode 100644
index f4f7c40045..0000000000
--- a/platform/ios/resources/vi.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE_ANNOTATIONS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>other</key>
- <string>%d chú thích đang xuất hiện</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ROADS</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@count@</string>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>other</key>
- <string>%d con đường đang xuất hiện</string>
- </dict>
- </dict>
- <key>MAP_A11Y_VALUE_ZOOM</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>Thu phóng gấp %d lần</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/resources/zh-Hans.lproj/Localizable.strings b/platform/ios/resources/zh-Hans.lproj/Localizable.strings
deleted file mode 100644
index 98d4e345fa..0000000000
--- a/platform/ios/resources/zh-Hans.lproj/Localizable.strings
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "显示信息";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "The session data task failed. Original request was: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "The status code was %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "取消";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "Returns to the map";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "旋转地图使正北朝上";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "指南针";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "北";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "在%2$@中将你的access token设为%1$@可在这里显示Mapbox上的地图\n\n更多说明请见";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "显示致谢、用户反馈及更多";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "关于这个地图";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "The map failed to load because an unknown error occurred.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "The map failed to load because the style can't be loaded.";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "地图";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "地图缩放%1$d倍\n有%2$ld处标记可见";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "The map failed to load because the style is corrupted.";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ is now available:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "The map failed to load because the style can’t be found or is incompatible.";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "你可以提供匿名数据来帮助OpenStreetMap和Mapbox的地图变得更好。";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "暂不参与";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "我要参与";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "你的匿名数据在帮助OpenStreetMap和Mapbox的地图变得更好。";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "不再参与";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "继续参与";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "详细信息";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox传感数据";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "让Mapbox地图变得更好";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "你在这里";
-
diff --git a/platform/ios/resources/zh-Hant.lproj/Localizable.strings b/platform/ios/resources/zh-Hant.lproj/Localizable.strings
deleted file mode 100644
index abdee6d3ab..0000000000
--- a/platform/ios/resources/zh-Hant.lproj/Localizable.strings
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Accessibility hint */
-"ANNOTATION_A11Y_HINT" = "顯示信息";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_DESC" = "The session data task failed. Original request was: %@";
-
-/* No comment provided by engineer. */
-"API_CLIENT_400_REASON" = "The status code was %ld";
-
-/* Title of button for dismissing attribution action sheet */
-"CANCEL" = "取消";
-
-/* Accessibility hint for closing the selected annotation’s callout view and returning to the map */
-"CLOSE_CALLOUT_A11Y_HINT" = "回到地圖";
-
-/* Accessibility hint */
-"COMPASS_A11Y_HINT" = "旋轉地圖使正北朝上";
-
-/* Accessibility label */
-"COMPASS_A11Y_LABEL" = "指南針";
-
-/* Compass abbreviation for north */
-"COMPASS_NORTH" = "北";
-
-/* Instructions in Interface Builder designable; {key}, {plist file name} */
-"DESIGNABLE" = "在%2$@中將你的access token設爲%1$@即可顯示Mapbox上的地圖\n\n更多說明請見";
-
-/* Setup documentation URL display string; keep as short as possible */
-"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
-
-/* Accessibility hint */
-"INFO_A11Y_HINT" = "顯示致謝、用戶意見表及更多";
-
-/* Accessibility label */
-"INFO_A11Y_LABEL" = "關於這個地圖";
-
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "發生不知名的錯誤,無法載入地圖。";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "載入樣式表時發生錯誤,無法載入地圖。";
-
-/* Accessibility label */
-"LOGO_A11Y_LABEL" = "Mapbox";
-
-/* Accessibility label */
-"MAP_A11Y_LABEL" = "地圖";
-
-/* Map accessibility value */
-"MAP_A11Y_VALUE" = "縮放地圖%1$d倍\n可顯示%2$ld處標記";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "樣式表有毀損,無法載入地圖。";
-
-/* Action sheet title */
-"SDK_NAME" = "Mapbox Maps SDK for iOS";
-
-/* Developer-only SDK update notification; {latest version, in format x.x.x} */
-"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS %@版現已開放下載:";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "找不到樣式表或樣式表不兼容,無法載入地圖。";
-
-/* Telemetry prompt message */
-"TELEMETRY_DISABLED_MSG" = "你可以提供匿名數據來幫助OpenStreetMap和Mapbox的地圖變得更好。";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_OFF" = "暫不參與";
-
-/* Telemetry prompt button */
-"TELEMETRY_DISABLED_ON" = "我要參與";
-
-/* Telemetry prompt message */
-"TELEMETRY_ENABLED_MSG" = "你的匿名數據正在改善OpenStreetMap和Mapbox地圖。";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_OFF" = "不再參與";
-
-/* Telemetry prompt button */
-"TELEMETRY_ENABLED_ON" = "繼續參與";
-
-/* Telemetry prompt button */
-"TELEMETRY_MORE" = "詳細信息";
-
-/* Action in attribution sheet */
-"TELEMETRY_NAME" = "Mapbox遙測";
-
-/* Telemetry prompt title */
-"TELEMETRY_TITLE" = "讓Mapbox地圖變得更好";
-
-/* Default user location annotation title */
-"USER_DOT_TITLE" = "你在這裡";
-
diff --git a/platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict b/platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict
deleted file mode 100644
index fc44e2e501..0000000000
--- a/platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>MAP_A11Y_VALUE</key>
- <dict>
- <key>NSStringLocalizedFormatKey</key>
- <string>%#@level@
-%#@count@</string>
- <key>level</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>d</string>
- <key>other</key>
- <string>縮放層級%dx</string>
- </dict>
- <key>count</key>
- <dict>
- <key>NSStringFormatSpecTypeKey</key>
- <string>NSStringPluralRuleType</string>
- <key>NSStringFormatValueTypeKey</key>
- <string>ld</string>
- <key>other</key>
- <string>可見%d處標示</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/platform/ios/scripts/check-events-symbols.sh b/platform/ios/scripts/check-events-symbols.sh
deleted file mode 100755
index c76d5e2693..0000000000
--- a/platform/ios/scripts/check-events-symbols.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-
-set -eu -o pipefail
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-find_framework() {
- step "Looking for Mapbox.framework…"
- echo $( find ./build -name Mapbox | tail -n 1 )
-}
-
-FRAMEWORK=$(find_framework)
-
-if [[ -z "${FRAMEWORK}" || ! -f "${FRAMEWORK}" ]]; then
- echo "No framework found — building dynamic Mapbox.framework…"
- make iframework BUILD_DEVICE=false
- FRAMEWORK=$(find_framework)
-fi
-
-echo "Found framework: ${FRAMEWORK}"
-
-step "Checking for un-namespaced symbols from mapbox-events-ios…"
-
-# Symbols from mapbox-events-ios are prefixed MME. To avoid duplicate symbol
-# warnings when multiple copes of mapbox-events-ios are included in a project,
-# the maps SDK prefixes these symbols with MGL_.
-SYMBOLS=$( nm "$FRAMEWORK" | grep \$_MME || true )
-
-if [ -z "${SYMBOLS}" ]; then
- echo "✅ No un-namespaced symbols found."
-else
- echo "❗️ Found un-namespaced symbols:"
- echo "${SYMBOLS}"
- exit 1
-fi
diff --git a/platform/ios/scripts/deploy-packages.sh b/platform/ios/scripts/deploy-packages.sh
deleted file mode 100755
index b33a25df86..0000000000
--- a/platform/ios/scripts/deploy-packages.sh
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-# dynamic environment variables:
-# VERSION_TAG={determined automatically}: Version tag in format ios-vX.X.X-pre.X
-# GITHUB_RELEASE=true: Upload to github
-
-# environment variables and dependencies:
-# - You must run "mbx auth ..." before running
-# - Set GITHUB_TOKEN to a GitHub API access token in your environment to use GITHUB_RELEASE
-# - The "github-release" command is required to use GITHUB_RELEASE
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-buildPackageStyle() {
- local package=$1 style=""
- if [[ ${#} -eq 2 ]]; then
- style="$2"
- fi
- step "Building: make ${package} ${style}"
- make ${package}
- step "Publishing ${package} with ${style}"
- local file_name=""
- if [ -z ${style} ]
- then
- ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}"
- file_name=mapbox-ios-sdk-${PUBLISH_VERSION}.zip
- else
- ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}" ${style}
- file_name=mapbox-ios-sdk-${PUBLISH_VERSION}-${style}.zip
- fi
- if [[ "${GITHUB_RELEASE}" == true ]]; then
- step "Uploading ${file_name} to GitHub"
- github-release upload \
- --tag "ios-v${PUBLISH_VERSION}" \
- --name ${file_name} \
- --file "${BINARY_DIRECTORY}/${file_name}" > /dev/null
- fi
-}
-
-export TRAVIS_REPO_SLUG=mapbox-gl-native
-export GITHUB_USER=mapbox
-export GITHUB_REPO=mapbox-gl-native
-export BUILDTYPE=Release
-
-VERSION_TAG=${VERSION_TAG:-''}
-PUBLISH_VERSION=
-BINARY_DIRECTORY='build/ios'
-GITHUB_RELEASE=${GITHUB_RELEASE:-true}
-PUBLISH_PRE_FLAG=''
-
-if [[ -z `which github-release` ]]; then
- step "Installing github-release…"
- brew install github-release
- if [ -z `which github-release` ]; then
- echo "Unable to install github-release. See: https://github.com/aktau/github-release"
- exit 1
- fi
-fi
-
-if [[ ${GITHUB_RELEASE} = "true" ]]; then
- GITHUB_RELEASE=true # Assign bool, not just a string
-fi
-
-if [[ -z ${VERSION_TAG} ]]; then
- step "Determining version number from most recent relevant git tag…"
- VERSION_TAG=$( git describe --tags --match=ios-v*.*.* --abbrev=0 )
- echo "Found tag: ${VERSION_TAG}"
-fi
-
-if [[ $( echo ${VERSION_TAG} | grep --invert-match ios-v ) ]]; then
- echo "Error: ${VERSION_TAG} is not a valid iOS version tag"
- echo "VERSION_TAG should be in format: ios-vX.X.X-pre.X"
- exit 1
-fi
-
-if github-release info --tag ${VERSION_TAG} | grep --quiet "draft: ✗"; then
- echo "Error: ${VERSION_TAG} has already been published on GitHub"
- echo "See: https://github.com/${GITHUB_USER}/${GITHUB_REPO}/releases/tag/${VERSION_TAG}"
- exit 1
-fi
-
-PUBLISH_VERSION=$( echo ${VERSION_TAG} | sed 's/^ios-v//' )
-git checkout ${VERSION_TAG}
-
-step "Deploying version ${PUBLISH_VERSION}…"
-
-npm install --ignore-scripts
-mkdir -p ${BINARY_DIRECTORY}
-
-if [[ "${GITHUB_RELEASE}" == true ]]; then
- step "Create GitHub release…"
- if [[ $( echo ${PUBLISH_VERSION} | awk '/[0-9]-/' ) ]]; then
- PUBLISH_PRE_FLAG='--pre-release'
- fi
- RELEASE_NOTES=$( ./platform/ios/scripts/release-notes.js github )
- github-release release \
- --tag "ios-v${PUBLISH_VERSION}" \
- --name "ios-v${PUBLISH_VERSION}" \
- --draft ${PUBLISH_PRE_FLAG} \
- --description "${RELEASE_NOTES}"
-fi
-
-buildPackageStyle "iframework" "dynamic"
-buildPackageStyle "iframework SYMBOLS=NO" "stripped-dynamic"
-
-step "Finished deploying ${PUBLISH_VERSION} in $(($SECONDS / 60)) minutes and $(($SECONDS % 60)) seconds"
diff --git a/platform/ios/scripts/deploy-snapshot.sh b/platform/ios/scripts/deploy-snapshot.sh
deleted file mode 100755
index d0d5d59d2e..0000000000
--- a/platform/ios/scripts/deploy-snapshot.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-DATE=`date +%Y-%m-%d`
-PROJ_VERSION=$(git rev-list --count HEAD)
-SNAPSHOT_TYPE="snapshot-dynamic"
-
-step "Uploading ${SNAPSHOT_TYPE} build for ${DATE}-${PROJ_VERSION} to s3…"
-
-./platform/ios/scripts/publish.sh "${SNAPSHOT_TYPE}" "${DATE}-${PROJ_VERSION}"
-
-step "Finished deploying ${SNAPSHOT_TYPE} build in $(($SECONDS / 60)) minutes and $(($SECONDS % 60)) seconds"
diff --git a/platform/ios/scripts/deploy-to-cocoapods.sh b/platform/ios/scripts/deploy-to-cocoapods.sh
deleted file mode 100755
index 27eb1fbabe..0000000000
--- a/platform/ios/scripts/deploy-to-cocoapods.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env bash
-
-# This relies on either:
-# 1. You being authenticated locally with CocoaPods trunk.
-# 2. The `COCOAPODS_TRUNK_TOKEN` environment variable being set.
-
-set -euo pipefail
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-CIRCLE_TAG=${CIRCLE_TAG:-""}
-
-step "Pushing release to CocoaPods trunk…"
-
-if [[ $CIRCLE_TAG ]]; then
- pod trunk push platform/ios/Mapbox-iOS-SDK.podspec --allow-warnings
-else
- echo "Skipping push to CocoaPods trunk for untagged build"
-fi
-
-step "Pushing release/builds to Mapbox podspecs repo…"
-
-if [[ -z $(pod repo list | grep -i mapbox-public) ]]; then
- pod repo add mapbox-public https://github.com/mapbox/pod-specs
-else
- echo "Found existing mapbox-public podspecs repo"
-fi
-
-if [[ -z $(git config --global user.email) && $CI ]]; then
- echo "Setting machine user as git committer"
- git config --global user.email "MapboxCI@users.noreply.github.com"
-fi
-
-if [[ $CIRCLE_TAG ]]; then
- pod repo push mapbox-public platform/ios/Mapbox-iOS-SDK.podspec --allow-warnings
- pod repo push mapbox-public platform/ios/Mapbox-iOS-SDK-stripped.podspec --allow-warnings
-else
- echo "Skipping push of release podspecs to mapbox-public for untagged build"
-
- # pod repo push mapbox-public platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec --allow-warnings
- echo "Skipping push of snapshot to mapbox-public until we have a way to update the versions in the snapshot podspec"
-fi
diff --git a/platform/ios/scripts/document.sh b/platform/ios/scripts/document.sh
deleted file mode 100755
index bb1c63dc6c..0000000000
--- a/platform/ios/scripts/document.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-if [ -z `which jazzy` ]; then
- ./platform/ios/scripts/install-packaging-dependencies.sh
-fi
-
-DEFAULT_THEME="platform/darwin/docs/theme"
-THEME=${JAZZY_THEME:-$DEFAULT_THEME}
-CUSTOM_HEAD=${JAZZY_CUSTOM_HEAD:-''}
-OUTPUT=${OUTPUT:-documentation}
-
-BRANCH=$( git describe --tags --match=ios-v*.*.* --abbrev=0 )
-SHORT_VERSION=$( echo ${BRANCH} | sed 's/^ios-v//' )
-RELEASE_VERSION=$( echo ${SHORT_VERSION} | sed -e 's/^ios-v//' -e 's/-.*//' )
-
-rm -rf /tmp/mbgl
-mkdir -p /tmp/mbgl/
-
-step "Generating readme and release notes"
-README=/tmp/mbgl/README.md
-npm install --ignore-scripts
-node platform/ios/scripts/release-notes.js jazzy >> "${README}"
-
-rm -rf ${OUTPUT}
-mkdir -p ${OUTPUT}
-
-cp -r platform/darwin/docs/img "${OUTPUT}"
-cp -r platform/ios/docs/img "${OUTPUT}"
-
-step "Generating jazzy docs for ${SHORT_VERSION}…"
-
-jazzy \
- --config platform/ios/jazzy.yml \
- --sdk iphonesimulator \
- --github-file-prefix https://github.com/mapbox/mapbox-gl-native/tree/${BRANCH} \
- --module-version ${SHORT_VERSION} \
- --readme ${README} \
- --documentation="platform/{darwin,ios}/docs/guides/*.md" \
- --root-url https://docs.mapbox.com/ios/api/maps/${RELEASE_VERSION}/ \
- --theme ${THEME} \
- --head "${CUSTOM_HEAD}" \
- --output ${OUTPUT} \
- --title "Maps SDK for iOS" \
- --module-version ${SHORT_VERSION}
diff --git a/platform/ios/scripts/install-packaging-dependencies.sh b/platform/ios/scripts/install-packaging-dependencies.sh
deleted file mode 100755
index 558223bad4..0000000000
--- a/platform/ios/scripts/install-packaging-dependencies.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-COCOAPODS_VERSION="1.7.5"
-JAZZY_VERSION="0.11.1"
-CIRCLECI=${CIRCLECI:-false}
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-step "Installing packaging dependencies…"
-
-##
-## aws
-##
-if [ -z `which aws` ]; then
- brew install awscli
-else
- echo "Found awscli"
-fi
-
-##
-## cocoapods
-##
-if [[ -z `which pod` || $(pod --version) != "${COCOAPODS_VERSION}" ]]; then
- step "Installing cocoapods…"
-
- if [[ "${CIRCLECI}" == true ]]; then
- sudo gem install cocoapods -v $COCOAPODS_VERSION --no-document
- else
- gem install cocoapods -v $COCOAPODS_VERSION --no-document
- fi
-
- if [ -z `which pod` ]; then
- echo "Unable to install cocoapods ($COCOAPODS_VERSION)."
- exit 1
- fi
-else
- echo "Found cocoapods (${COCOAPODS_VERSION})"
-fi
-
-##
-## jazzy
-##
-if [[ -z `which jazzy` || $(jazzy -v) != "jazzy version: ${JAZZY_VERSION}" ]]; then
- step "Installing jazzy…"
-
- if [[ "${CIRCLECI}" == true ]]; then
- sudo gem install jazzy -v $JAZZY_VERSION --no-document
- else
- gem install jazzy -v $JAZZY_VERSION --no-document
- fi
-
- if [ -z `which jazzy` ]; then
- echo "Unable to install jazzy ($JAZZY_VERSION). See https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/INSTALL.md"
- exit 1
- fi
-else
- echo "Found jazzy (${JAZZY_VERSION})"
-fi
-
-step "Finished installing packaging dependencies"
diff --git a/platform/ios/scripts/ios-code-coverage.sh b/platform/ios/scripts/ios-code-coverage.sh
deleted file mode 100755
index 8b8adb423a..0000000000
--- a/platform/ios/scripts/ios-code-coverage.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-
-#
-# Get code coverage report, then convert it to JSON.
-# The coverage reports end up in different locations based on whether coverage
-# is generated via CI or locally.
-#
-cov_result="";
-if [ -f build/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport ]; then
- cov_result=build/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport
-elif [ -f build/ios/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport ]; then
- cov_result=build/ios/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport
-else
- echo "Coverage file does not exist. Please run tests before executing"
- exit 1
-fi
-
-xcrun xccov view $cov_result --json > output.json
-
-#
-# Convert the line coverage for the dynamic target to a percentage. Currently,
-# only CI tests are included when calculated code coverage.
-#
-percentage=`node -e "console.log(require('./output.json').lineCoverage)"`
-cov=$(printf "%.2f" $(echo "$percentage*100" | bc -l))
-
-# Generate a formatted JSON file and upload it to S3.
-./././scripts/code-coverage.sh $cov "iOS" "$1"
diff --git a/platform/ios/scripts/lint-podspecs.js b/platform/ios/scripts/lint-podspecs.js
deleted file mode 100755
index 1381acacff..0000000000
--- a/platform/ios/scripts/lint-podspecs.js
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env node
-
-const fs = require('fs');
-const execSync = require('child_process').execSync;
-const _ = require('lodash');
-const semver = require('semver');
-
-console.step = _.partial(console.log, '\n\033[1m\033[36m*', _, '\033[0m');
-process.exitCode = 0;
-
-const podspecsPath = 'platform/ios';
-
-/*
- Step 1. Run the official CocoaPods linter against all of our podspecs.
-*/
-console.step(`Running CocoaPods linter against podspecs in '${podspecsPath}'`)
-execSync(`pod spec lint ${podspecsPath}/*.podspec --quick`, {stdio: 'inherit'});
-
-/*
- Step 2. Check that our podspecs contain properly formatted version strings.
-*/
-console.step('Checking Mapbox SDK version strings in podspecs')
-const podspecs = fs.readdirSync(podspecsPath).filter(fn => fn.endsWith('.podspec'));
-
-let matchedVersions = [];
-
-for (const podspecFilename of podspecs) {
- console.log(podspecFilename);
- const podspecContents = fs.readFileSync(`${podspecsPath}/${podspecFilename}`, 'utf8');
-
- /*
- This regular expression:
- - Matches single lines in the format: version = '9.9.9'
- - Groups the version number inside the single quotes.
- - Ignores whitespace at the start of the line and between parts of the definition using: \s*?
- */
- const regex = /^\s*?version\s*?=\s*?'(.*)'$/gmi;
-
- const match = regex.exec(podspecContents);
- if (!match) {
- console.error(' ❌ No version string found');
- process.exitCode = 1;
- continue;
- }
-
- const matchedVersion = match[1];
- matchedVersions.push(matchedVersion);
-
- if (!semver.valid(matchedVersion)) {
- console.error(` ❌ ${matchedVersion} is not a valid semantic version`);
- process.exitCode = 1;
- continue;
- }
-
- console.log(` ✅ ${matchedVersion} is a valid semantic version`);
-}
-
-/*
- Step 3. Check that versions are consistent across our podspecs.
-*/
-console.step('Checking version consistency')
-const uniqueVersions = _.uniq(matchedVersions);
-if (uniqueVersions.length != 1) {
- console.error('❌ Versions in podspecs do not match:', uniqueVersions);
- process.exitCode = 1;
-} else {
- console.log(`✅ ${uniqueVersions[0]} is set in all podspecs`);
-}
-
-/*
- Step 4. Finish up and summarize the results.
-*/
-process.on('exit', (code) => {
- if (code == 0) {
- console.log('\nPodspec linting completed successfully! 🕵️‍♀️');
- } else {
- console.log('\nPodspec linting failed. 💥');
- }
-});
diff --git a/platform/ios/scripts/metrics.sh b/platform/ios/scripts/metrics.sh
deleted file mode 100755
index 080dce7427..0000000000
--- a/platform/ios/scripts/metrics.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-
-# Generate stripped versions for every architecture
-xcrun bitcode_strip build/ios/pkg/dynamic/Mapbox.framework/Mapbox -r -o build/ios/pkg/dynamic/Mapbox-stripped
-strip -Sx build/ios/pkg/dynamic/Mapbox-stripped
-lipo build/ios/pkg/dynamic/Mapbox-stripped -extract armv7 -output build/ios/pkg/dynamic/Mapbox-stripped-armv7
-lipo build/ios/pkg/dynamic/Mapbox-stripped -extract arm64 -output build/ios/pkg/dynamic/Mapbox-stripped-arm64
-lipo build/ios/pkg/dynamic/Mapbox-stripped -extract x86_64 -output build/ios/pkg/dynamic/Mapbox-stripped-x86_64
-
-# Track individual architectures
-scripts/check_binary_size.js "build/ios/pkg/dynamic/Mapbox-stripped-armv7" "iOS armv7"
-scripts/check_binary_size.js "build/ios/pkg/dynamic/Mapbox-stripped-arm64" "iOS arm64"
-scripts/check_binary_size.js "build/ios/pkg/dynamic/Mapbox-stripped-x86_64" "iOS x86_64"
-
-# Track overall library size
-scripts/check_binary_size.js "build/ios/pkg/dynamic/Mapbox-stripped" "iOS Dynamic"
-
-if [[ $CIRCLE_BRANCH == master ]]; then
- # Build source data for http://mapbox.github.io/mapbox-gl-native/metrics/binary-size/
- # and log binary sizes to metrics warehouse
- scripts/publish_binary_size.js
-fi
-
diff --git a/platform/ios/scripts/package.sh b/platform/ios/scripts/package.sh
deleted file mode 100755
index 5475632c24..0000000000
--- a/platform/ios/scripts/package.sh
+++ /dev/null
@@ -1,249 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-NAME=Mapbox
-OUTPUT=build/ios/pkg
-DERIVED_DATA=build/ios
-PRODUCTS=${DERIVED_DATA}
-LOG_PATH=build/xcodebuild-$(date +"%Y-%m-%d_%H%M%S").log
-
-BUILD_FOR_DEVICE=${BUILD_DEVICE:-true}
-BUILD_DOCS=${BUILD_DOCS:-true}
-SYMBOLS=${SYMBOLS:-YES}
-
-BUILDTYPE=${BUILDTYPE:-Debug}
-if [[ ${SYMBOLS} == YES && ${BUILDTYPE} == Release ]]; then
- BUILDTYPE='RelWithDebInfo'
-fi
-
-FORMAT=${FORMAT:-dynamic}
-BUILD_DYNAMIC=true
-BUILD_STATIC=false
-if [[ ${FORMAT} == "static" ]]; then
- BUILD_STATIC=true
- BUILD_DYNAMIC=false
-elif [[ ${FORMAT} != "dynamic" ]]; then
- echo "Error: FORMAT must be dynamic or static."
- exit 1
-fi
-
-SDK=iphonesimulator
-if [[ ${BUILD_FOR_DEVICE} == true ]]; then
- SDK=iphoneos
-fi
-IOS_SDK_VERSION=`xcrun --sdk ${SDK} --show-sdk-version`
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-step "Configuring ${FORMAT} framework for ${SDK} ${IOS_SDK_VERSION} (symbols: ${SYMBOLS}, buildtype: ${BUILDTYPE})"
-
-xcodebuild -version
-
-rm -rf ${OUTPUT}
-if [[ ${BUILD_STATIC} == true ]]; then
- mkdir -p "${OUTPUT}"/static
-fi
-if [[ ${BUILD_DYNAMIC} == true ]]; then
- mkdir -p "${OUTPUT}"/dynamic
-fi
-
-step "Recording library version…"
-VERSION="${OUTPUT}"/version.txt
-echo -n "https://github.com/mapbox/mapbox-gl-native/commit/" > ${VERSION}
-HASH=`git log | head -1 | awk '{ print $2 }' | cut -c 1-10` && true
-echo -n "mapbox-gl-native "
-echo ${HASH}
-echo ${HASH} >> ${VERSION}
-
-PROJ_VERSION=$(git rev-list --count HEAD)
-SEM_VERSION=$( git describe --tags --match=ios-v*.*.* --abbrev=0 | sed 's/^ios-v//' )
-SHORT_VERSION=${SEM_VERSION%-*}
-
-step "Building targets (build ${PROJ_VERSION}, version ${SEM_VERSION})"
-
-SCHEME='dynamic'
-if [[ ${BUILD_STATIC} == true ]]; then
- SCHEME='static'
-fi
-
-CI_XCCONFIG=''
-if [[ ! -z "${CI:=}" ]]; then
- xcconfig='platform/darwin/ci.xcconfig'
- echo "CI environment, using ${xcconfig}"
- CI_XCCONFIG="-xcconfig ./${xcconfig}"
-fi
-
-step "Building ${FORMAT} framework for iOS Simulator using ${SCHEME} scheme"
-xcodebuild \
- CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- CURRENT_SHORT_VERSION=${SHORT_VERSION} \
- CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \
- CURRENT_COMMIT_HASH=${HASH} \
- ONLY_ACTIVE_ARCH=NO \
- ${CI_XCCONFIG} \
- -derivedDataPath ${DERIVED_DATA} \
- -workspace ./platform/ios/ios.xcworkspace \
- -scheme ${SCHEME} \
- -configuration ${BUILDTYPE} \
- -sdk iphonesimulator \
- -jobs ${JOBS} | tee ${LOG_PATH} | xcpretty
-
-if [[ ${BUILD_FOR_DEVICE} == true ]]; then
- step "Building ${FORMAT} framework for iOS devices using ${SCHEME} scheme"
- xcodebuild \
- CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- CURRENT_SHORT_VERSION=${SHORT_VERSION} \
- CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \
- CURRENT_COMMIT_HASH=${HASH} \
- ONLY_ACTIVE_ARCH=NO \
- ${CI_XCCONFIG} \
- -derivedDataPath ${DERIVED_DATA} \
- -workspace ./platform/ios/ios.xcworkspace \
- -scheme ${SCHEME} \
- -configuration ${BUILDTYPE} \
- -sdk iphoneos \
- -jobs ${JOBS} | tee ${LOG_PATH} | xcpretty
-fi
-
-LIBS=(Mapbox.a)
-
-# https://medium.com/@syshen/create-an-ios-universal-framework-148eb130a46c
-if [[ ${BUILD_FOR_DEVICE} == true ]]; then
- if [[ ${BUILD_STATIC} == true ]]; then
- step "Assembling static framework for iOS Simulator and devices…"
- mkdir -p ${OUTPUT}/static/${NAME}.framework
- libtool -static -no_warning_for_no_symbols \
- -o ${OUTPUT}/static/${NAME}.framework/${NAME} \
- ${LIBS[@]/#/${PRODUCTS}/${BUILDTYPE}-iphoneos/lib} \
- ${LIBS[@]/#/${PRODUCTS}/${BUILDTYPE}-iphonesimulator/lib} \
- `cmake -LA -N ${DERIVED_DATA} | grep MASON_PACKAGE_icu_LIBRARIES | cut -d= -f2`
-
- cp -rv ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.bundle ${OUTPUT}/static
- fi
-
- if [[ ${BUILD_DYNAMIC} == true ]]; then
- step "Copying dynamic framework into place for iOS devices"
- cp -r \
- ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework \
- ${OUTPUT}/dynamic/
-
- if [[ -e ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework.dSYM ]]; then
- step "Copying dSYM"
- cp -r ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework.dSYM \
- ${OUTPUT}/dynamic/
- if [[ -e ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework.dSYM ]]; then
- step "Merging device and simulator dSYMs…"
- lipo \
- ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME} \
- ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME} \
- -create -output ${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}
- lipo -info ${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}
- fi
- fi
-
- step "Merging simulator dynamic library into device dynamic library…"
- lipo \
- ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework/${NAME} \
- ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework/${NAME} \
- -create -output ${OUTPUT}/dynamic/${NAME}.framework/${NAME} | echo
- fi
-
- cp -rv platform/ios/app/Settings.bundle ${OUTPUT}
-else
- if [[ ${BUILD_STATIC} == true ]]; then
- step "Assembling static library for iOS Simulator…"
- mkdir -p ${OUTPUT}/static/${NAME}.framework
- libtool -static -no_warning_for_no_symbols \
- -o ${OUTPUT}/static/${NAME}.framework/${NAME} \
- ${LIBS[@]/#/${PRODUCTS}/${BUILDTYPE}-iphonesimulator/lib} \
- `cmake -LA -N ${DERIVED_DATA} | grep MASON_PACKAGE_icu_LIBRARIES | cut -d= -f2`
-
- cp -rv ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.bundle ${OUTPUT}/static
- fi
-
- if [[ ${BUILD_DYNAMIC} == true ]]; then
- step "Copying dynamic framework into place for iOS Simulator…"
- cp -r \
- ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework \
- ${OUTPUT}/dynamic/${NAME}.framework
- if [[ -e ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework.dSYM ]]; then
- step "Copying dSYM"
- cp -r ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework.dSYM \
- ${OUTPUT}/dynamic/
- fi
- fi
-
- cp -rv platform/ios/app/Settings.bundle ${OUTPUT}
-fi
-
-function get_comparable_uuid {
- echo $(dwarfdump --uuid ${1} | sed -n 's/.*UUID:\([^\"]*\) .*/\1/p' | sort)
-}
-
-function validate_dsym {
- step "Validating dSYM and framework UUIDs…"
- DSYM_UUID=$(get_comparable_uuid "${1}")
- FRAMEWORK_UUID=$(get_comparable_uuid "${2}")
- echo -e "${1}\n ${DSYM_UUID}\n${2}\n ${FRAMEWORK_UUID}"
- if [[ ${DSYM_UUID} != ${FRAMEWORK_UUID} ]]; then
- echo "Error: dSYM and framework UUIDs do not match."
- exit 1
- fi
-}
-
-if [[ ${BUILD_DYNAMIC} == true && ${BUILDTYPE} == Release ]]; then
- validate_dsym \
- "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" \
- "${OUTPUT}/dynamic/${NAME}.framework/${NAME}"
-
- step "Removing i386 slice from dSYM"
- lipo -remove i386 "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" -o "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}"
- lipo -info "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}"
-fi
-
-if [[ ${BUILD_STATIC} == true ]]; then
- step "Copying static library headers…"
- cp -rv "${PRODUCTS}/${BUILDTYPE}-iphoneos/Headers" "${OUTPUT}/static/${NAME}.framework/Headers"
- cat platform/ios/framework/Mapbox-static.h > "${OUTPUT}/static/${NAME}.framework/Headers/Mapbox.h"
- cat "${PRODUCTS}/${BUILDTYPE}-iphoneos/Headers/Mapbox.h" >> "${OUTPUT}/static/${NAME}.framework/Headers/Mapbox.h"
-fi
-
-step "Copying library resources…"
-cp -pv LICENSE.md ${OUTPUT}
-if [[ ${BUILD_STATIC} == true ]]; then
- cp -pv "${OUTPUT}/static/${NAME}.bundle/Info.plist" "${OUTPUT}/static/${NAME}.framework/Info.plist"
- plutil -replace CFBundlePackageType -string FMWK "${OUTPUT}/static/${NAME}.framework/Info.plist"
- mkdir "${OUTPUT}/static/${NAME}.framework/Modules"
- cp -pv platform/ios/framework/modulemap "${OUTPUT}/static/${NAME}.framework/Modules/module.modulemap"
-fi
-if [[ ${BUILD_DYNAMIC} == true && ${BUILD_FOR_DEVICE} == true ]]; then
- step "Copying bitcode symbol maps…"
- find "${PRODUCTS}/${BUILDTYPE}-iphoneos" -name '*.bcsymbolmap' -type f -exec cp -pv {} "${OUTPUT}/dynamic/" \;
-fi
-sed -n -e '/^## /,$p' platform/ios/CHANGELOG.md > "${OUTPUT}/CHANGELOG.md"
-
-rm -rf /tmp/mbgl
-mkdir -p /tmp/mbgl/
-README=/tmp/mbgl/README.md
-cp platform/ios/docs/pod-README.md "${README}"
-if [[ ${BUILD_DYNAMIC} == false ]]; then
- sed -i '' -e '/{{DYNAMIC}}/,/{{\/DYNAMIC}}/d' "${README}"
-fi
-if [[ ${BUILD_STATIC} == false ]]; then
- sed -i '' -e '/{{STATIC}}/,/{{\/STATIC}}/d' "${README}"
-fi
-sed -i '' \
- -e '/{{DYNAMIC}}/d' -e '/{{\/DYNAMIC}}/d' \
- -e '/{{STATIC}}/d' -e '/{{\/STATIC}}/d' \
- "${README}"
-cp ${README} "${OUTPUT}"
-
-if [ ${BUILD_DOCS} == true ]; then
- step "Generating API documentation for ${BUILDTYPE} Build…"
- make idocument OUTPUT="${OUTPUT}/documentation"
-fi
diff --git a/platform/ios/scripts/publish.sh b/platform/ios/scripts/publish.sh
deleted file mode 100755
index 1a4652a509..0000000000
--- a/platform/ios/scripts/publish.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-#
-# iOS release tag format is `vX.Y.Z`; `X.Y.Z` gets passed in
-# In the case of stripped builds, we also append the `-stripped`.
-#
-PUBLISH_VERSION="$1"
-
-if [[ ${#} -eq 2 ]]; then
- PUBLISH_STYLE="-$2"
-else
- PUBLISH_STYLE=""
-fi
-
-GITHUB_REPO=${GITHUB_REPO:-'mapbox-gl-native'}
-
-#
-# zip
-#
-cd build/ios/pkg
-ZIP_FILENAME="mapbox-ios-sdk-${PUBLISH_VERSION}${PUBLISH_STYLE}.zip"
-step "Compressing ${ZIP_FILENAME}…"
-rm -f ../${ZIP_FILENAME}
-zip -yr ../${ZIP_FILENAME} *
-cd ..
-
-#
-# report file sizes
-#
-step "Echoing file sizes…"
-du -sh ${ZIP_FILENAME}
-du -sch pkg/*
-du -sch pkg/dynamic/*
-
-#
-# upload
-#
-PROGRESS=""
-if [ -n "${CI:-}" ]; then
- PROGRESS="--no-progress"
-fi
-
-step "Uploading ${ZIP_FILENAME} to s3…"
-aws s3 cp ${ZIP_FILENAME} s3://mapbox/${GITHUB_REPO}/ios/builds/ --acl public-read ${PROGRESS}
-S3_URL=https://mapbox.s3.amazonaws.com/${GITHUB_REPO}/ios/builds/${ZIP_FILENAME}
-echo "URL: ${S3_URL}"
-
-#
-# upload & update snapshot
-#
-if [[ ${PUBLISH_VERSION} =~ "snapshot" ]]; then
- step "Updating ${PUBLISH_VERSION} to ${PUBLISH_STYLE}…"
- GENERIC_ZIP_FILENAME="mapbox-ios-sdk-${PUBLISH_VERSION}.zip"
- aws s3 cp \
- s3://mapbox/$GITHUB_REPO/ios/builds/${ZIP_FILENAME} \
- s3://mapbox/$GITHUB_REPO/ios/builds/${GENERIC_ZIP_FILENAME} --acl public-read ${PROGRESS}
-fi
-
-#
-# verify upload integrity
-#
-
-step "Validating local and remote checksums…"
-curl --output remote-${ZIP_FILENAME} ${S3_URL}
-LOCAL_CHECKSUM=$( shasum -a 256 -b ${ZIP_FILENAME} | cut -d ' ' -f 1 )
-REMOTE_CHECKSUM=$( shasum -a 256 -b remote-${ZIP_FILENAME} | cut -d ' ' -f 1 )
-
-if [ "${LOCAL_CHECKSUM}" == "${REMOTE_CHECKSUM}" ]; then
- echo "Checksums match: ${LOCAL_CHECKSUM}"
-else
- echo "Checksums did not match: ${LOCAL_CHECKSUM} != ${REMOTE_CHECKSUM}"
- exit 1
-fi
diff --git a/platform/ios/scripts/release-notes-github.md.ejs b/platform/ios/scripts/release-notes-github.md.ejs
deleted file mode 100644
index 53c7c842fe..0000000000
--- a/platform/ios/scripts/release-notes-github.md.ejs
+++ /dev/null
@@ -1,9 +0,0 @@
-[Changes](https://github.com/mapbox/mapbox-gl-native/compare/ios-v<%-PREVIOUSVERSION%>...ios-v<%-CURRENTVERSION%>) since [Mapbox Maps SDK for iOS v<%-PREVIOUSVERSION%>](https://github.com/mapbox/mapbox-gl-native/releases/tag/ios-v<%-PREVIOUSVERSION%>):
-
-<%-CHANGELOG-%>
-
-<% if (isPrerelease) { %>
-To install this pre-release via a dependency manager, see our [CocoaPods](https://github.com/mapbox/mapbox-gl-native/blob/ios-v<%-CURRENTVERSION%>/platform/ios/INSTALL.md#CocoaPods) or [Carthage](https://github.com/mapbox/mapbox-gl-native/blob/ios-v<%-CURRENTVERSION%>/platform/ios/INSTALL.md#Carthage) instructions.
-<% } -%>
-
-Documentation is [available online](https://www.mapbox.com/ios-sdk/api/<%-CURRENTVERSION%>/) or as part of the download.
diff --git a/platform/ios/scripts/release-notes-jazzy.md.ejs b/platform/ios/scripts/release-notes-jazzy.md.ejs
deleted file mode 100644
index 12b7480a2b..0000000000
--- a/platform/ios/scripts/release-notes-jazzy.md.ejs
+++ /dev/null
@@ -1,23 +0,0 @@
-# [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/)
-
-The Mapbox Maps SDK for iOS is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 9.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL.
-
-![Mapbox Maps SDK for iOS screenshots](img/screenshot.png)
-
-For setup information, check out the [Mapbox Maps SDK for iOS homepage](https://www.mapbox.com/ios-sdk/). For detailed usage instructions, read “[First steps with the Mapbox Maps SDK for iOS](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/).
-
-If you have any questions, please see [our help page](https://www.mapbox.com/help/). We welcome your [bug reports, feature requests, and contributions](https://github.com/mapbox/mapbox-gl-native/issues/).
-
-## Changes in version <%-CURRENTVERSION%>
-
-<%-CURRENTCHANGELOG%>
-
-## Recent changes
-
-<% OTHERRELEASES.forEach(function(release) { %>
-### <%-release.version%>
-
-<%-release.changelog%>
-<% }) -%>
-
-See the [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/ios-v<%-CURRENTVERSION%>/platform/ios/CHANGELOG.md) for previous releases.
diff --git a/platform/ios/scripts/release-notes.js b/platform/ios/scripts/release-notes.js
deleted file mode 100755
index 41caff7fa4..0000000000
--- a/platform/ios/scripts/release-notes.js
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env node
-
-const fs = require('fs');
-const execSync = require('child_process').execSync;
-const ejs = require('ejs');
-const _ = require('lodash');
-const semver = require('semver');
-
-const changelogPath = 'platform/ios/CHANGELOG.md';
-const changelog = fs.readFileSync(changelogPath, 'utf8');
-
-let outputMode = {};
-switch(process.argv[2]) {
- case "jazzy":
- outputMode.isJazzy = true; break;
- case "github":
- default:
- outputMode.isGitHub = true;
-}
-
-/*
- Find current and immediately previous releases by parsing git tags.
-*/
-let currentVersion = execSync('git describe --tags --match=ios-v*.*.* --abbrev=0')
- .toString()
- .trim()
- .replace('ios-v', '');
-
-let gitTags = execSync('git tag --list ios-v*.*.*')
- .toString()
- .split('\n')
- .map(function (tag) {
- tag = tag.replace('ios-v', '').trim();
- return semver.clean(tag);
- });
-let previousVersion = semver.maxSatisfying(gitTags, "<" + currentVersion);
-
-/*
- Parse the raw changelog text and split it into individual releases.
-
- This regular expression:
- - Matches lines starting with "## x.x.x".
- - Groups the version number.
- - Skips the (optional) release date.
- - Groups the changelog content.
- - Ends when another "## x.x.x" is found.
-*/
-const regex = /^## (\d+\.\d+\.\d+).*?\n(.+?)(?=\n^## \d+\.\d+\.\d+.*?\n)/gms;
-
-let releaseNotes = [];
-while (match = regex.exec(changelog)) {
- releaseNotes.push({
- 'version': match[1],
- 'changelog': match[2].trim(),
- });
-}
-
-/*
- Match the current tag with the most appropriate release notes.
-*/
-const versionsInReleaseNotes = _.map(releaseNotes, 'version');
-const bestReleaseNotesForCurrentVersion = semver.minSatisfying(versionsInReleaseNotes, ">=" + currentVersion);
-const currentReleaseNotes = _.find(releaseNotes, { version: bestReleaseNotesForCurrentVersion });
-
-if (!currentReleaseNotes) {
- console.error('Could not find a release section satisfying %s in %s — did you forget to rename the "master" section to %s?', currentVersion, changelogPath, currentVersion.split("-")[0]);
- process.exit(1);
-}
-
-/*
- Fill and print the release notes template.
-*/
-let templatedReleaseNotes;
-
-if (outputMode.isGitHub) {
- templatedReleaseNotes = ejs.render(fs.readFileSync('platform/ios/scripts/release-notes-github.md.ejs', 'utf8'), {
- 'CURRENTVERSION': currentVersion,
- 'PREVIOUSVERSION': previousVersion,
- 'CHANGELOG': currentReleaseNotes.changelog,
- 'isPrerelease': semver.prerelease(currentVersion)
- });
-}
-
-if (outputMode.isJazzy) {
- const minorReleaseSeries = semver.major(currentVersion) + "." + semver.minor(currentVersion) + ".0";
- const range = ">=" + minorReleaseSeries + " <" + currentVersion;
- const otherReleasesInSeries = _.filter(releaseNotes, function(release) {
- return semver.satisfies(release.version, range);
- });
-
- otherReleasesInSeries.forEach(function(release) {
- // Bump section headings from h3 to h4.
- release.changelog = release.changelog.replace(/^### /gm, '#### ');
- });
-
- templatedReleaseNotes = ejs.render(fs.readFileSync('platform/ios/scripts/release-notes-jazzy.md.ejs', 'utf8'), {
- 'CURRENTVERSION': currentVersion,
- 'CURRENTCHANGELOG': currentReleaseNotes.changelog,
- 'OTHERRELEASES': otherReleasesInSeries
- });
-}
-
-process.stdout.write(templatedReleaseNotes);
diff --git a/platform/ios/scripts/validate-framework-zip.sh b/platform/ios/scripts/validate-framework-zip.sh
deleted file mode 100755
index 0bcd094b69..0000000000
--- a/platform/ios/scripts/validate-framework-zip.sh
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/env bash
-# Created by Cory Dolphin on 03/21/16.
-# Copyright (c) 2016 Twitter. All rights reserved.
-
-# Verifies a zip archive submission of SDKs passes basic static checks for format and contents.
-# This test is likely to generate false positives, e.g. even if your SDK passes this, you still must
-# test integration of your code fully.
-
-# Usage: $ ./validate_zip.sh <path to zip>
-
-set -e
-
-if [ ! -f "$1" ]; then
- printf "No file found at ${1}\n"
- printf "Usage: $ ./validate_zip.sh <path to zip>\n"; exit 1;
-fi
-
-function verifyFramework() {
- # set -x
- local FRAMEWORK_PATH=$1
- local FRAMEWORK_NAME=$(basename $FRAMEWORK_PATH)
- local PRODUCT="${FRAMEWORK_NAME%.*}"
- local BINARY_PATH="${FRAMEWORK_PATH}/${PRODUCT}"
- local HEADER_PATH="${FRAMEWORK_PATH}/Headers"
- printf "Found $FRAMEWORK_NAME. Verifying...\n"
-
- local MODULE_MAP=( $(find $FRAMEWORK_PATH -name "*.modulemap") )
- if [[ -z "$MODULE_MAP" ]]; then
- printf "ERROR: No modulemap found in $FRAMEWORK_NAME\n";
- exit 3;
- fi
- printf "$FRAMEWORK_NAME contains modulemap: ✓\n"
-
- # Verify there is a modulemap so Swift can use the framework
- if grep -q "link" "$MODULE_MAP"; then
- printf "$FRAMEWORK_NAME modulemap contains dependent system frameworks ✓\n"
- else
- printf "Warning: ${FRAMEWORK_NAME} does not list any system library dependencies. Double check all dependent frameworks and libraries are listed. \n";
- fi
-
- # Verify there is at least one header listed in the module map
- if grep -q ".*.h" "$MODULE_MAP"; then
- printf "$FRAMEWORK_NAME modulemap contains headers ✓\n";
- else
- printf "Error: ${FRAMEWORK_NAME} does not list any headers in the modulemap\n";
- exit 4;
- fi
-
- # Verify there is at least a headers folder
- if [[ ! -d "$HEADER_PATH" ]]; then
- printf "ERROR: Headers not not found in ${FRAMEWORK_NAME}\n";
- exit 5;
- fi
-
- # Verify the static lib at least has simulator and the two common ARM architectures
- local PRESENT_ARCHITECTURES=$( xcrun lipo -info "${BINARY_PATH}" )
- for arch in "armv7" "arm64" "x86_64"; do
- if [[ ! $PRESENT_ARCHITECTURES == *$arch* ]]; then
- printf "ERROR: Architecture ${arch} not found in ${FRAMEWORK_NAME}\n";
- exit 6;
- fi
- done
- printf "$FRAMEWORK_NAME contains simulator and device architectures: ✓\n"
-
- # Verify there are at least some bitcode segments in the rmv7 and arm64 slices
- # Note, this is not conclusive, it is possible some symbols are missing the segment
- for arch in "armv7" "arm64"; do
- local SYMBOLS=$(otool -l -arch "${arch}" "${BINARY_PATH}")
- if [[ ! $SYMBOLS == *"LLVM"* ]]; then
- printf "ERROR: Bitcode segments not found in ${FRAMEWORK_NAME}. Users will fail to archive their builds \n";
- exit 7;
- fi
- done
- printf "$FRAMEWORK_NAME contains bitcode: ✓\n"
-
- # Verify there is a plist file
- local PLIST_PATH=( $(find $FRAMEWORK_PATH -name Info.plist) )
- if [[ -z "$PLIST_PATH" ]]; then
- printf "ERROR: No Info.plist found in $FRAMEWORK_NAME\n"
- exit 8;
- fi
- printf "$FRAMEWORK_NAME contains Info.plist: ✓\n"
-
- # Verify there is a bundle identifier in Info.plist
- # And verify it does not contain any vestigial string templating
- local BUNDLE_NAME=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${PLIST_PATH}")
- if [[ -z "$BUNDLE_NAME" ]]; then
- printf "ERROR: Info.plist not found in $FRAMEWORK_NAME or CFBundleIdentifier not set\n";
- exit 9;
- elif [[ "$BUNDLE_NAME" == *"$"* ]]; then
- printf "ERROR: CFBundleIdentifier is invalid: $BUNDLE_NAME\n";
- exit 10;
- else
- printf "$FRAMEWORK_NAME has bundle: $BUNDLE_NAME ✓\n"
- fi
-
- # Verify there is a bundle version in the Info.plist
- local BUNDLE_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${PLIST_PATH}")
- if [[ -z "$BUNDLE_VERSION" ]]; then
- printf "ERROR: No CFBundleShortVersionString found in $FRAMEWORK_NAME\n";
- exit 11;
- else
- printf "$FRAMEWORK_NAME has version: $BUNDLE_VERSION ✓\n"
- fi
-
- printf "===========================================\n"
- printf "Analyzed $PRODUCT version $BUNDLE_VERSION. \n"
- printf "Basic static verifications passed. 🚀🚀🚀 \n"
- printf "Please perform final verification testing \n\n"
-}
-
-# Extract the zip archive to a temporary location
-TEMP_DIR=$(mktemp -d /tmp/fabric_framework_validation.XXXXX)
-printf "Unzipping $(basename "$1") to $TEMP_DIR\n"
-unzip "$1" -d "$TEMP_DIR" &> /dev/null
-
-# Find frameworks and ensure they are at the top level, e.g. NOT nested within a sub directory
-printf "Scanning for frameworks...\n"
-FRAMEWORKS=( $(find "$TEMP_DIR" -name "*.framework" -maxdepth 1) )
-if [ -z "$FRAMEWORKS" ]; then
- printf "ERROR: No frameworks found at the top level within the zip archive.";
- exit 2;
-fi
-
-# Verify each framework found individually
-for framework in "${FRAMEWORKS[@]}"; do
- verifyFramework "$framework"
- printf ""
-done
-
-rm -r "$TEMP_DIR"
diff --git a/platform/ios/src/MGLAnnotationContainerView.h b/platform/ios/src/MGLAnnotationContainerView.h
deleted file mode 100644
index ccec3052a6..0000000000
--- a/platform/ios/src/MGLAnnotationContainerView.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLTypes.h"
-
-@class MGLAnnotationView;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLAnnotationContainerView : UIView
-
-+ (instancetype)annotationContainerViewWithAnnotationContainerView:(MGLAnnotationContainerView *)annotationContainerView;
-
-- (void)addSubviews:(NSArray<MGLAnnotationView *> *)subviews;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLAnnotationContainerView.m b/platform/ios/src/MGLAnnotationContainerView.m
deleted file mode 100644
index 6c82a1836d..0000000000
--- a/platform/ios/src/MGLAnnotationContainerView.m
+++ /dev/null
@@ -1,52 +0,0 @@
-#import "MGLAnnotationContainerView.h"
-#import "MGLAnnotationView.h"
-
-@interface MGLAnnotationContainerView ()
-
-@property (nonatomic) NSMutableArray<MGLAnnotationView *> *annotationViews;
-
-@end
-
-@implementation MGLAnnotationContainerView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
- if (self)
- {
- _annotationViews = [NSMutableArray array];
- }
- return self;
-}
-
-+ (instancetype)annotationContainerViewWithAnnotationContainerView:(nonnull MGLAnnotationContainerView *)annotationContainerView
-{
- MGLAnnotationContainerView *newAnnotationContainerView = [[MGLAnnotationContainerView alloc] initWithFrame:annotationContainerView.frame];
- [newAnnotationContainerView addSubviews:annotationContainerView.subviews];
- return newAnnotationContainerView;
-}
-
-- (void)addSubviews:(NSArray<MGLAnnotationView *> *)subviews
-{
- for (MGLAnnotationView *view in subviews)
- {
- [self addSubview:view];
- [self.annotationViews addObject:view];
- }
-}
-
-#pragma mark UIAccessibility methods
-
-- (UIAccessibilityTraits)accessibilityTraits {
- return UIAccessibilityTraitAdjustable;
-}
-
-- (void)accessibilityIncrement {
- [self.superview.superview accessibilityIncrement];
-}
-
-- (void)accessibilityDecrement {
- [self.superview.superview accessibilityDecrement];
-}
-
-@end
diff --git a/platform/ios/src/MGLAnnotationContainerView_Private.h b/platform/ios/src/MGLAnnotationContainerView_Private.h
deleted file mode 100644
index 9dce54842d..0000000000
--- a/platform/ios/src/MGLAnnotationContainerView_Private.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#import "MGLAnnotationContainerView.h"
-#import "MGLAnnotationView.h"
-
-@class MGLAnnotationView;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLAnnotationContainerView (Private)
-
-@property (nonatomic) NSMutableArray<MGLAnnotationView *> *annotationViews;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLAnnotationImage.h b/platform/ios/src/MGLAnnotationImage.h
deleted file mode 100644
index 10b13a58c3..0000000000
--- a/platform/ios/src/MGLAnnotationImage.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLAnnotationImage` class is responsible for presenting point-based
- annotations visually on a map view. Annotation image objects wrap `UIImage`
- objects and may be recycled later and put into a reuse queue that is maintained
- by the map view.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/marker-image/">
- Mark a place on the map with an image</a> example to learn how use an image
- as a marker using `MGLAnnotationImage`.
- */
-MGL_EXPORT
-@interface MGLAnnotationImage : NSObject <NSSecureCoding>
-
-#pragma mark Initializing and Preparing the Image Object
-
-/**
- Initializes and returns a new annotation image object.
-
- @param image The image to be displayed for the annotation.
- @param reuseIdentifier The string that identifies that this annotation image is
- reusable.
- @return The initialized annotation image object or `nil` if there was a problem
- initializing the object.
- */
-+ (instancetype)annotationImageWithImage:(UIImage *)image reuseIdentifier:(NSString *)reuseIdentifier;
-
-#pragma mark Getting and Setting Attributes
-
-/** The image to be displayed for the annotation. */
-@property (nonatomic, strong, nullable) UIImage *image;
-
-/**
- The string that identifies that this annotation image is reusable. (read-only)
-
- You specify the reuse identifier when you create the image object. You use this
- type later to retrieve an annotation image object that was created previously
- but which is currently unused because its annotation is not on screen.
-
- If you define distinctly different types of annotations (with distinctly
- different annotation images to go with them), you can differentiate between the
- annotation types by specifying different reuse identifiers for each one.
- */
-@property (nonatomic, readonly) NSString *reuseIdentifier;
-
-/**
- A Boolean value indicating whether the annotation is enabled.
-
- The default value of this property is `YES`. If the value of this property is
- `NO`, the annotation image ignores touch events and cannot be selected.
- */
-@property (nonatomic, getter=isEnabled) BOOL enabled;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLAnnotationImage.m b/platform/ios/src/MGLAnnotationImage.m
deleted file mode 100644
index 31b67c7a3c..0000000000
--- a/platform/ios/src/MGLAnnotationImage.m
+++ /dev/null
@@ -1,77 +0,0 @@
-#import "MGLAnnotationImage_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-@interface MGLAnnotationImage ()
-
-@property (nonatomic, strong) NSString *reuseIdentifier;
-@property (nonatomic, strong, nullable) NSString *styleIconIdentifier;
-
-@property (nonatomic, weak) id<MGLAnnotationImageDelegate> delegate;
-
-@end
-
-@implementation MGLAnnotationImage
-
-+ (instancetype)annotationImageWithImage:(UIImage *)image reuseIdentifier:(NSString *)reuseIdentifier
-{
- return [[self alloc] initWithImage:image reuseIdentifier:reuseIdentifier];
-}
-
-- (instancetype)initWithImage:(UIImage *)image reuseIdentifier:(NSString *)reuseIdentifier
-{
- MGLLogDebug(@"Initializing with image size: %@ reuseIdentifier: %@", NSStringFromCGSize(image.size), reuseIdentifier);
- self = [super init];
-
- if (self)
- {
- _image = image;
- _reuseIdentifier = [reuseIdentifier copy];
- _enabled = YES;
- }
-
- return self;
-}
-
-+ (BOOL)supportsSecureCoding {
- return YES;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- MGLLogInfo(@"Initializing with coder.");
- if (self = [super init]) {
- _image = [decoder decodeObjectOfClass:[UIImage class] forKey:@"image"];
- _reuseIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"reuseIdentifier"];
- _enabled = [decoder decodeBoolForKey:@"enabled"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [coder encodeObject:_image forKey:@"image"];
- [coder encodeObject:_reuseIdentifier forKey:@"reuseIdentifier"];
- [coder encodeBool:_enabled forKey:@"enabled"];
-}
-
-- (BOOL)isEqual:(id)other {
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLAnnotationImage class]]) return NO;
-
- MGLAnnotationImage *otherAnnotationImage = other;
-
- return ((!_reuseIdentifier && !otherAnnotationImage.reuseIdentifier)
- || [_reuseIdentifier isEqualToString:otherAnnotationImage.reuseIdentifier])
- && _enabled == otherAnnotationImage.enabled
- && (_image == otherAnnotationImage.image || [UIImagePNGRepresentation(_image) isEqualToData:UIImagePNGRepresentation(otherAnnotationImage.image)]);
-}
-
-- (NSUInteger)hash {
- return _reuseIdentifier.hash + _enabled + _image.hash;
-}
-
-- (void)setImage:(UIImage *)image {
- MGLLogDebug(@"Setting image: %@", image);
- _image = image;
- [self.delegate annotationImageNeedsRedisplay:self];
-}
-
-@end
diff --git a/platform/ios/src/MGLAnnotationImage_Private.h b/platform/ios/src/MGLAnnotationImage_Private.h
deleted file mode 100644
index dcd8a49bf9..0000000000
--- a/platform/ios/src/MGLAnnotationImage_Private.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#import "MGLAnnotationImage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLAnnotationImageDelegate <NSObject>
-
-@required
-- (void)annotationImageNeedsRedisplay:(MGLAnnotationImage *)annotationImage;
-
-@end
-
-@interface MGLAnnotationImage (Private)
-
-/// Unique identifier of the sprite image used by the style to represent the receiver’s `image`.
-@property (nonatomic, strong, nullable) NSString *styleIconIdentifier;
-
-@property (nonatomic, weak) id<MGLAnnotationImageDelegate> delegate;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLAnnotationView.h b/platform/ios/src/MGLAnnotationView.h
deleted file mode 100644
index afedeb7908..0000000000
--- a/platform/ios/src/MGLAnnotationView.h
+++ /dev/null
@@ -1,286 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLAnnotation;
-
-/** These constants indicate the current drag state of an annotation view. */
-typedef NS_ENUM(NSUInteger, MGLAnnotationViewDragState) {
- /**
- The view is not involved in a drag operation.
- */
- MGLAnnotationViewDragStateNone = 0,
- /**
- An action occurred that indicated the view should begin dragging.
-
- The map view automatically moves draggable annotation views to this state
- in response to the dragging the view after pressing and holding on it.
- */
- MGLAnnotationViewDragStateStarting,
- /**
- The view is in the midst of a drag operation and is actively tracking the
- user’s gesture.
- */
- MGLAnnotationViewDragStateDragging,
- /**
- An action occurred that indicated the view should cancel the drag
- operation.
- */
- MGLAnnotationViewDragStateCanceling,
- /**
- An action occurred that indicated the view was dropped by the user.
-
- The map view automatically moves annotation views to this state in response
- to the user lifting their finger at the end of a drag gesture.
- */
- MGLAnnotationViewDragStateEnding,
-};
-
-/**
- The `MGLAnnotationView` class is responsible for marking a point annotation
- with a view. Annotation views represent an annotation object, which is an
- object that corresponds to the `MGLAnnotation` protocol. When an annotation’s
- geographic coordinate is visible in the map view, the map view asks its
- delegate to a corresponding annotation view. If an annotation view is created
- with a reuse identifier, the map view may recycle the view when it goes
- offscreen.
-
- Annotation views are compatible with UIKit, Core Animation, and other Cocoa
- Touch frameworks. On the other hand, if you do not need animation or
- interactivity such as dragging, you can use an `MGLAnnotationImage` instead to
- conserve memory and optimize drawing performance.
- */
-MGL_EXPORT
-@interface MGLAnnotationView : UIView <NSSecureCoding>
-
-#pragma mark Initializing and Preparing the View
-
-/**
- Initializes and returns a new annotation view object.
-
- The reuse identifier provides a way for you to improve performance by recycling
- annotation views as they enter and leave the map’s viewport. As an annotation
- leaves the viewport, the map view moves its associated view to a reuse queue.
- When a new annotation becomes visible, you can request a view for that
- annotation by passing the appropriate reuse identifier string to the
- `-[MGLMapView dequeueReusableAnnotationViewWithIdentifier:]` method.
-
- @param reuseIdentifier A unique string identifier for this view that allows you
- to reuse this view with multiple similar annotations. You can set this
- parameter to `nil` if you don’t intend to reuse the view, but it is a good
- idea in general to specify a reuse identifier to avoid creating redundant
- views.
- @return The initialized annotation view object.
- */
-- (instancetype)initWithReuseIdentifier:(nullable NSString *)reuseIdentifier;
-
-/**
- Initializes and returns a new annotation view object.
-
- Providing an annotation allows you to explicitly associate the annotation instance
- with the new view and, in custom subclasses of `MGLAnnotationView`, customize the view
- based on properties of the annotation instance in an overridden initializer. However,
- annotation views that are reused will not necessarily be associated with the
- same annotation they were initialized with. Also, annotation views that are in
- the reuse queue will have a nil value for the annotation property. Passing an annotation
- instance to the view is optional and the map view will automatically associate annotations
- with views when views are provided to the map via the `-[MGLMapViewDelegate mapView:viewForAnnotation:]`
- method.
-
- The reuse identifier provides a way for you to improve performance by recycling
- annotation views as they enter and leave the map’s viewport. As an annotation
- leaves the viewport, the map view moves its associated view to a reuse queue.
- When a new annotation becomes visible, you can request a view for that
- annotation by passing the appropriate reuse identifier string to the
- `-[MGLMapView dequeueReusableAnnotationViewWithIdentifier:]` method.
-
- @param annotation The annotation object to associate with the new view.
- @param reuseIdentifier A unique string identifier for this view that allows you
- to reuse this view with multiple similar annotations. You can set this
- parameter to `nil` if you don’t intend to reuse the view, but it is a good
- idea in general to specify a reuse identifier to avoid creating redundant
- views.
- @return The initialized annotation view object.
- */
-- (instancetype)initWithAnnotation:(nullable id<MGLAnnotation>)annotation reuseIdentifier:(nullable NSString *)reuseIdentifier;
-
-/**
- Called when the view is removed from the reuse queue.
-
- The default implementation of this method does nothing. You can override it in
- your custom annotation view implementation to put the view in a known state
- before it is returned to your map view delegate.
- */
-- (void)prepareForReuse;
-
-/**
- The annotation object currently associated with the view.
-
- You should not change the value of this property directly. This property
- contains a non-`nil` value while the annotation view is visible on the map. If
- the view is queued, waiting to be reused, the value is `nil`.
- */
-@property (nonatomic, nullable) id <MGLAnnotation> annotation;
-
-/**
- The string that identifies that this annotation view is reusable.
-
- You specify the reuse identifier when you create the view. You use the
- identifier later to retrieve an annotation view that was created previously but
- which is currently unused because its annotation is not on-screen.
-
- If you define distinctly different types of annotations (with distinctly
- different annotation views to go with them), you can differentiate between the
- annotation types by specifying different reuse identifiers for each one.
- */
-@property (nonatomic, readonly, nullable) NSString *reuseIdentifier;
-
-#pragma mark Configuring the Appearance
-
-/**
- The offset, measured in points, at which to place the center of the view.
-
- By default, the center point of an annotation view is placed at the geographic
- coordinate point of the associated annotation. If you do not want the view to
- be centered, you can use this property to reposition the view. The offset’s
- `dx` and `dy` values are measured in points. Positive offset values move the
- annotation view down and to the right, while negative values move it up and to
- the left.
-
- Set the offset if the annotation view’s visual center point is somewhere other
- than the logical center of the view. For example, the view may contain an image
- that depicts a downward-pointing pushpin or thumbtack, with the tip positioned
- at the center-bottom of the view. In that case, you would set the offset’s `dx`
- to zero and its `dy` to half the height of the view.
- */
-@property (nonatomic) CGVector centerOffset;
-
-/**
- A Boolean value that determines whether the annotation view grows and shrinks
- as the distance between the viewpoint and the annotation view changes on a
- tilted map.
-
- When the value of this property is `YES` and the map is tilted, the annotation
- view appears smaller if it is towards the top of the view (closer to the
- horizon) and larger if it is towards the bottom of the view (closer to the
- viewpoint). This is also the behavior of `MGLAnnotationImage` objects. When the
- value of this property is `NO` or the map’s pitch is zero, the annotation view
- remains the same size regardless of its position on-screen.
-
- The default value of this property is `NO`. Keep this property set to `NO` if
- the view’s legibility is important.
-
- @note Scaling many on-screen annotation views can contribute to poor map
- performance. Consider keeping this property disabled if your use case
- involves hundreds or thousands of annotation views.
- */
-@property (nonatomic, assign) BOOL scalesWithViewingDistance;
-
-/**
- A Boolean value that determines whether the annotation view rotates together
- with the map.
-
- When the value of this property is `YES` and the map is rotated, the annotation
- view rotates. This is also the behavior of `MGLAnnotationImage` objects. When the
- value of this property is `NO` the annotation has its rotation angle fixed.
-
- The default value of this property is `NO`. Set this property to `YES` if the
- view’s rotation is important.
- */
-@property (nonatomic, assign) BOOL rotatesToMatchCamera;
-
-#pragma mark Managing the Selection State
-
-/**
- A Boolean value indicating whether the annotation view is currently selected.
-
- You should not set the value of this property directly. If the property is set
- to `YES`, the annotation view is displaying a callout.
-
- By default, this property is set to `NO` and becomes `YES` when the user taps
- the view. Selecting another annotation, whether it is associated with an
- `MGLAnnotationView` or `MGLAnnotationImage` object, deselects any currently
- selected view.
-
- Setting this property changes the view’s appearance to reflect the new value
- immediately. If you want the change to be animated, use the
- `-setSelected:animated:` method instead.
- */
-@property (nonatomic, assign, getter=isSelected) BOOL selected;
-
-/**
- Sets the selection state of the annotation view with an optional animation.
-
- You should not call this method directly. A map view calls this method in
- response to user interactions with the annotation. Subclasses may override this
- method in order to customize the appearance of the view depending on its
- selection state.
-
- @param selected `YES` if the view should display itself as selected; `NO`
- if it should display itself as unselected.
- @param animated `YES` if the change in selection state is animated; `NO` if the
- change is immediate.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-vie
- ws/">Annotation views</a> example to learn how to modify an
- `MGLAnnotationView`'s behavior when it is selected.
- */
-- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
-
-/*
- A Boolean value indicating whether the annotation is enabled.
-
- The default value of this property is `YES`. If the value of this property is
- `NO`, the annotation view ignores touch events and cannot be selected.
- Subclasses may also customize the appearance of the view depending on its
- enabled state.
- */
-@property (nonatomic, assign, getter=isEnabled) BOOL enabled;
-
-#pragma mark Supporting Drag Operations
-
-/**
- A Boolean value indicating whether the annotation view is draggable.
-
- If this property is set to `YES`, the user can drag the annotation after
- pressing and holding the view, and the associated annotation object must also
- implement the `-setCoordinate:` method. The default value of this property is
- `NO`.
-
- Setting this property to `YES` lets the map view know that the annotation is
- always draggable. In other words, you cannot conditionalize drag operations by
- attempting to stop an operation that has already been initiated; doing so can
- lead to undefined behavior. Once begun, the drag operation should always
- continue to completion.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/draggable-views
- /">Draggable annotation views</a> to learn how to enable users to drag
- `MGLAnnotationView` objects on your map.
- */
-@property (nonatomic, assign, getter=isDraggable) BOOL draggable;
-
-/**
- The current drag state of the annotation view.
-
- All states are handled automatically when the `draggable` property is set to
- `YES`. To perform a custom animation in response to a change to this property,
- override the `-setDragState:animated:` method.
- */
-@property (nonatomic, readonly) MGLAnnotationViewDragState dragState;
-
-/**
- Sets the current drag state for the annotation view.
-
- You can override this method to animate a custom annotation view as the user
- drags it. As the system detects user actions that would indicate a drag, it
- calls this method to update the drag state.
- */
-- (void)setDragState:(MGLAnnotationViewDragState)dragState animated:(BOOL)animated NS_REQUIRES_SUPER;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLAnnotationView.mm b/platform/ios/src/MGLAnnotationView.mm
deleted file mode 100644
index 3a2aa60f6c..0000000000
--- a/platform/ios/src/MGLAnnotationView.mm
+++ /dev/null
@@ -1,387 +0,0 @@
-#import "MGLAnnotationView.h"
-#import "MGLAnnotationView_Private.h"
-#import "MGLMapView_Private.h"
-#import "MGLCalloutView.h"
-#import "MGLAnnotation.h"
-#import "MGLPointAnnotation.h"
-#import "MGLLoggingConfiguration_Private.h"
-
-#import "NSBundle+MGLAdditions.h"
-#import "NSValue+MGLAdditions.h"
-
-#include <mbgl/util/constants.hpp>
-
-@interface MGLAnnotationView () <UIGestureRecognizerDelegate>
-
-@property (nonatomic, readwrite, nullable) NSString *reuseIdentifier;
-@property (nonatomic, readwrite) CATransform3D lastAppliedScaleTransform;
-@property (nonatomic, readwrite) CGFloat lastPitch;
-@property (nonatomic, readwrite) CATransform3D lastAppliedRotationTransform;
-@property (nonatomic, readwrite) CGFloat lastDirection;
-@property (nonatomic, weak) UIPanGestureRecognizer *panGestureRecognizer;
-@property (nonatomic, weak) UILongPressGestureRecognizer *longPressRecognizer;
-@property (nonatomic, weak) MGLMapView *mapView;
-
-@end
-
-@implementation MGLAnnotationView
-
-+ (BOOL)supportsSecureCoding {
- return YES;
-}
-
-- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {
- MGLLogDebug(@"Initializing with identifier: %@", reuseIdentifier);
- self = [super initWithFrame:CGRectZero];
- if (self) {
- [self commonInitWithAnnotation:nil reuseIdentifier:reuseIdentifier];
- }
- return self;
-}
-
-- (instancetype)initWithAnnotation:(nullable id<MGLAnnotation>)annotation reuseIdentifier:(nullable NSString *)reuseIdentifier {
- MGLLogDebug(@"Initializing with annotation: %@ reuseIdentifier: %@", annotation, reuseIdentifier);
- self = [super initWithFrame:CGRectZero];
- if (self) {
- [self commonInitWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
- }
- return self;
-}
-
-- (void)commonInitWithAnnotation:(nullable id<MGLAnnotation>)annotation reuseIdentifier:(nullable NSString *)reuseIdentifier {
- _lastAppliedScaleTransform = CATransform3DIdentity;
- _lastAppliedRotationTransform = CATransform3DIdentity;
- _annotation = annotation;
- _reuseIdentifier = [reuseIdentifier copy];
- _enabled = YES;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- MGLLogInfo(@"Initializing with coder.");
- if (self = [super initWithCoder:decoder]) {
- _reuseIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"reuseIdentifier"];
- _annotation = [decoder decodeObjectOfClass:[NSObject class] forKey:@"annotation"];
- _centerOffset = [decoder decodeCGVectorForKey:@"centerOffset"];
- _scalesWithViewingDistance = [decoder decodeBoolForKey:@"scalesWithViewingDistance"];
- _rotatesToMatchCamera = [decoder decodeBoolForKey:@"rotatesToMatchCamera"];
- _selected = [decoder decodeBoolForKey:@"selected"];
- _enabled = [decoder decodeBoolForKey:@"enabled"];
- self.draggable = [decoder decodeBoolForKey:@"draggable"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [super encodeWithCoder:coder];
- [coder encodeObject:_reuseIdentifier forKey:@"reuseIdentifier"];
- [coder encodeObject:_annotation forKey:@"annotation"];
- [coder encodeCGVector:_centerOffset forKey:@"centerOffset"];
- [coder encodeBool:_scalesWithViewingDistance forKey:@"scalesWithViewingDistance"];
- [coder encodeBool:_rotatesToMatchCamera forKey:@"rotatesToMatchCamera"];
- [coder encodeBool:_selected forKey:@"selected"];
- [coder encodeBool:_enabled forKey:@"enabled"];
- [coder encodeBool:_draggable forKey:@"draggable"];
-}
-
-- (void)prepareForReuse
-{
- // Intentionally left blank. The default implementation of this method does nothing.
-}
-
-- (void)setCenterOffset:(CGVector)centerOffset
-{
- MGLLogDebug(@"Setting centerOffset: %@", NSStringFromCGVector(centerOffset));
- _centerOffset = centerOffset;
- self.center = self.center;
-}
-
-- (void)setSelected:(BOOL)selected
-{
- MGLLogDebug(@"Setting selected: %@", MGLStringFromBOOL(selected));
- [self setSelected:selected animated:NO];
-}
-
-- (void)setSelected:(BOOL)selected animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting selected: %@ animated: %@", MGLStringFromBOOL(selected), MGLStringFromBOOL(animated));
- [self willChangeValueForKey:@"selected"];
- _selected = selected;
- [self didChangeValueForKey:@"selected"];
-}
-
-- (CGPoint)center
-{
- CGPoint center = super.center;
- center.x -= _centerOffset.dx;
- center.y -= _centerOffset.dy;
- return center;
-}
-
-- (void)setCenter:(CGPoint)center
-{
- MGLLogDebug(@"Setting center: %@", NSStringFromCGPoint(center));
- center.x += _centerOffset.dx;
- center.y += _centerOffset.dy;
-
- super.center = center;
- [self updateScaleTransformForViewingDistance];
- [self updateRotateTransform];
-}
-
-- (void)setScalesWithViewingDistance:(BOOL)scalesWithViewingDistance
-{
- MGLLogDebug(@"Setting scaleWithViewingDistance: %@", MGLStringFromBOOL(scalesWithViewingDistance));
- if (_scalesWithViewingDistance != scalesWithViewingDistance)
- {
- _scalesWithViewingDistance = scalesWithViewingDistance;
- [self updateScaleTransformForViewingDistance];
- }
-}
-
-- (void)updateScaleTransformForViewingDistance
-{
- if (self.scalesWithViewingDistance == NO || self.dragState == MGLAnnotationViewDragStateDragging) return;
-
- CGFloat superviewHeight = CGRectGetHeight(self.superview.frame);
- if (superviewHeight > 0.0) {
- // Find the maximum amount of scale reduction to apply as the view's center moves from the top
- // of the superview to the bottom. For example, if this view's center has moved 25% of the way
- // from the top of the superview towards the bottom then the maximum scale reduction is 1 - .25
- // or 75%. The range goes from a maximum of 100% to 0% as the view moves from the top to the bottom
- // along the y axis of its superview.
- CGFloat maxScaleReduction = 1.0 - self.center.y / superviewHeight;
-
- // Since it is possible for the map view to report a pitch less than 0 due to the nature of
- // how the gesture information is captured, the value is guarded with MAX.
- CGFloat pitch = MAX(self.mapView.camera.pitch, 0);
-
- // Return early if the map view currently has no pitch and was not previously pitched.
- if (!pitch && !_lastPitch) return;
- _lastPitch = pitch;
-
- // The pitch intensity represents how much the map view is actually pitched compared to
- // what is possible. The value will range from 0% (not pitched at all) to 100% (pitched as much
- // as the map view will allow). The map view's maximum pitch is defined in `mbgl::util::PITCH_MAX`.
- CGFloat pitchIntensity = pitch / MGLDegreesFromRadians(mbgl::util::PITCH_MAX);
-
- // The pitch adjusted scale is the inverse proportion of the maximum possible scale reduction
- // multiplied by the pitch intensity. For example, if the maximum scale reduction is 75% and the
- // map view is 50% pitched then the annotation view should be reduced by 37.5% (.75 * .5). The
- // reduction is then normalized for a scale of 1.0.
- CGFloat pitchAdjustedScale = 1.0 - maxScaleReduction * pitchIntensity;
-
- // We keep track of each viewing distance scale transform that we apply. Each iteration,
- // we can account for it so that we don't get cumulative scaling every time we move.
- // We also avoid clobbering any existing transform passed in by the client or this SDK.
- CATransform3D undoOfLastScaleTransform = CATransform3DInvert(_lastAppliedScaleTransform);
- CATransform3D newScaleTransform = CATransform3DMakeScale(pitchAdjustedScale, pitchAdjustedScale, 1);
- CATransform3D effectiveTransform = CATransform3DConcat(undoOfLastScaleTransform, newScaleTransform);
- self.layer.transform = CATransform3DConcat(self.layer.transform, effectiveTransform);
- _lastAppliedScaleTransform = newScaleTransform;
- }
-}
-
-- (void)setRotatesToMatchCamera:(BOOL)rotatesToMatchCamera
-{
- MGLLogDebug(@"Setting rotatesToMatchCamera: %@", MGLStringFromBOOL(rotatesToMatchCamera));
- if (_rotatesToMatchCamera != rotatesToMatchCamera)
- {
- _rotatesToMatchCamera = rotatesToMatchCamera;
- [self updateRotateTransform];
- }
-}
-
-- (void)updateRotateTransform
-{
- if (self.rotatesToMatchCamera == NO) return;
-
- CGFloat direction = -MGLRadiansFromDegrees(self.mapView.direction);
-
- // Return early if the map view has the same rotation as the already-applied transform.
- if (direction == _lastDirection) return;
- _lastDirection = direction;
-
- // We keep track of each rotation transform that we apply. Each iteration,
- // we can account for it so that we don't get cumulative rotation every time we move.
- // We also avoid clobbering any existing transform passed in by the client or this SDK.
- CATransform3D undoOfLastRotationTransform = CATransform3DInvert(_lastAppliedRotationTransform);
- CATransform3D newRotationTransform = CATransform3DMakeRotation(direction, 0, 0, 1);
- CATransform3D effectiveTransform = CATransform3DConcat(undoOfLastRotationTransform, newRotationTransform);
- self.layer.transform = CATransform3DConcat(self.layer.transform, effectiveTransform);
- _lastAppliedRotationTransform = newRotationTransform;
-}
-
-#pragma mark - Draggable
-
-- (void)setDraggable:(BOOL)draggable
-{
- MGLLogDebug(@"Setting draggable: %@", MGLStringFromBOOL(draggable));
- [self willChangeValueForKey:@"draggable"];
- _draggable = draggable;
- [self didChangeValueForKey:@"draggable"];
-
- if (draggable)
- {
- [self enableDrag];
- }
- else
- {
- [self disableDrag];
- }
-}
-
-- (void)enableDrag
-{
- if (!_longPressRecognizer)
- {
- UILongPressGestureRecognizer *recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
- recognizer.delegate = self;
- [self addGestureRecognizer:recognizer];
- _longPressRecognizer = recognizer;
- }
-
- if (!_panGestureRecognizer)
- {
- UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
- recognizer.delegate = self;
- [self addGestureRecognizer:recognizer];
- _panGestureRecognizer = recognizer;
- }
-}
-
-- (void)disableDrag
-{
- [self removeGestureRecognizer:_longPressRecognizer];
- [self removeGestureRecognizer:_panGestureRecognizer];
-}
-
-- (void)handleLongPress:(UILongPressGestureRecognizer *)sender
-{
- switch (sender.state) {
- case UIGestureRecognizerStateBegan:
- self.dragState = MGLAnnotationViewDragStateStarting;
- break;
- case UIGestureRecognizerStateChanged:
- self.dragState = MGLAnnotationViewDragStateDragging;
- break;
- case UIGestureRecognizerStateCancelled:
- self.dragState = MGLAnnotationViewDragStateCanceling;
- break;
- case UIGestureRecognizerStateEnded:
- self.dragState = MGLAnnotationViewDragStateEnding;
- break;
- case UIGestureRecognizerStateFailed:
- self.dragState = MGLAnnotationViewDragStateNone;
- break;
- case UIGestureRecognizerStatePossible:
- break;
- }
-}
-
-- (void)handlePan:(UIPanGestureRecognizer *)sender
-{
- self.center = [sender locationInView:sender.view.superview];
-
- if (sender.state == UIGestureRecognizerStateEnded) {
- self.dragState = MGLAnnotationViewDragStateNone;
- }
-}
-
-- (void)setDragState:(MGLAnnotationViewDragState)dragState
-{
- MGLLogDebug(@"Setting dragState: %lu", (unsigned long)dragState);
- [self setDragState:dragState animated:YES];
-}
-
-- (void)setDragState:(MGLAnnotationViewDragState)dragState animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting dragState: %lu animated: %@", (unsigned long)dragState, MGLStringFromBOOL(animated));
- [self willChangeValueForKey:@"dragState"];
- _dragState = dragState;
- [self didChangeValueForKey:@"dragState"];
-
- if (dragState == MGLAnnotationViewDragStateStarting)
- {
- [self.mapView.calloutViewForSelectedAnnotation dismissCalloutAnimated:animated];
- [self.superview bringSubviewToFront:self];
- }
- else if (dragState == MGLAnnotationViewDragStateCanceling)
- {
- if (!self.annotation) {
- [NSException raise:NSInvalidArgumentException
- format:@"Annotation property should not be nil."];
- }
- self.panGestureRecognizer.enabled = NO;
- self.longPressRecognizer.enabled = NO;
- self.center = [self.mapView convertCoordinate:self.annotation.coordinate toPointToView:self.mapView];
- self.panGestureRecognizer.enabled = YES;
- self.longPressRecognizer.enabled = YES;
- self.dragState = MGLAnnotationViewDragStateNone;
- }
- else if (dragState == MGLAnnotationViewDragStateEnding)
- {
- if ([self.annotation respondsToSelector:@selector(setCoordinate:)])
- {
- CLLocationCoordinate2D coordinate = [self.mapView convertPoint:self.center toCoordinateFromView:self.mapView];
- [(NSObject *)self.annotation setValue:[NSValue valueWithMGLCoordinate:coordinate] forKey:@"coordinate"];
- }
- }
-}
-
-- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
-{
- BOOL isDragging = self.dragState == MGLAnnotationViewDragStateDragging;
-
- if (gestureRecognizer == _panGestureRecognizer && !(isDragging))
- {
- return NO;
- }
-
- return YES;
-}
-
-- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
-{
- return otherGestureRecognizer == _longPressRecognizer || otherGestureRecognizer == _panGestureRecognizer;
-}
-
-#pragma mark UIAccessibility methods
-
-- (BOOL)isAccessibilityElement {
- return !self.hidden;
-}
-
-- (UIAccessibilityTraits)accessibilityTraits {
- return UIAccessibilityTraitButton | UIAccessibilityTraitAdjustable;
-}
-
-- (NSString *)accessibilityLabel {
- return [self.annotation respondsToSelector:@selector(title)] ? self.annotation.title : super.accessibilityLabel;
-}
-
-- (NSString *)accessibilityValue {
- return [self.annotation respondsToSelector:@selector(subtitle)] ? self.annotation.subtitle : super.accessibilityValue;
-}
-
-- (NSString *)accessibilityHint {
- return NSLocalizedStringWithDefaultValue(@"ANNOTATION_A11Y_HINT", nil, nil, @"Shows more info", @"Accessibility hint");
-}
-
-- (CGRect)accessibilityFrame {
- CGRect accessibilityFrame = self.frame;
- CGRect minimumFrame = CGRectInset({ self.center, CGSizeZero },
- -MGLAnnotationAccessibilityElementMinimumSize.width / 2,
- -MGLAnnotationAccessibilityElementMinimumSize.height / 2);
- accessibilityFrame = CGRectUnion(accessibilityFrame, minimumFrame);
- return accessibilityFrame;
-}
-
-- (void)accessibilityIncrement {
- [self.superview accessibilityIncrement];
-}
-
-- (void)accessibilityDecrement {
- [self.superview accessibilityDecrement];
-}
-
-@end
diff --git a/platform/ios/src/MGLAnnotationView_Private.h b/platform/ios/src/MGLAnnotationView_Private.h
deleted file mode 100644
index c4695051c5..0000000000
--- a/platform/ios/src/MGLAnnotationView_Private.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import "MGLAnnotationView.h"
-#import "MGLAnnotation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLMapView;
-
-@interface MGLAnnotationView (Private)
-
-@property (nonatomic, readwrite, nullable) NSString *reuseIdentifier;
-@property (nonatomic, weak) MGLMapView *mapView;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLCalloutView.h b/platform/ios/src/MGLCalloutView.h
deleted file mode 100644
index 71bae71d07..0000000000
--- a/platform/ios/src/MGLCalloutView.h
+++ /dev/null
@@ -1,140 +0,0 @@
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLCalloutViewDelegate;
-@protocol MGLAnnotation;
-
-/**
- A protocol for a `UIView` subclass that displays information about a selected
- annotation near that annotation.
-
- To receive updates from an object that conforms to the `MGLCalloutView` protocol,
- use the optional methods available in the `MGLCalloutViewDelegate` protocol.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/custom-callout/">
- Display custom views as callouts</a> example to learn how to customize an
- `MGLCalloutView`.
- */
-@protocol MGLCalloutView <NSObject>
-
-/**
- An object conforming to the `MGLAnnotation` protocol whose details this callout
- view displays.
- */
-@property (nonatomic, strong) id <MGLAnnotation> representedObject;
-
-/**
- A view that the user may tap to perform an action. This view is conventionally
- positioned on the left side of the callout view.
- */
-@property (nonatomic, strong) UIView *leftAccessoryView;
-
-/**
- A view that the user may tap to perform an action. This view is conventionally
- positioned on the right side of the callout view.
- */
-@property (nonatomic, strong) UIView *rightAccessoryView;
-
-/**
- An object conforming to the `MGLCalloutViewDelegate` method that receives
- messages related to the callout view’s interactive subviews.
- */
-@property (nonatomic, weak) id<MGLCalloutViewDelegate> delegate;
-
-/**
- Presents a callout view by adding it to `view` and pointing at the given rect
- of `view`’s bounds. Constrains the callout to the bounds of the given view.
- */
-- (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToView:(UIView *)constrainedView animated:(BOOL)animated __attribute__((unavailable("Use `-presentCalloutFromRect:inView:constrainedToRect:animated:` instead.")));
-
-
-/**
- Presents a callout view by adding it to `view` and pointing at the given rect
- of `view`’s bounds. Constrains the callout to the rect in the space of `view`.
- */
-- (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToRect:(CGRect)constrainedRect animated:(BOOL)animated;
-
-/**
- Dismisses the callout view.
- */
-- (void)dismissCalloutAnimated:(BOOL)animated;
-
-@optional
-
-/**
- If implemented, should provide margins to expand the rect the callout is presented from.
-
- These are used to determine positioning. Currently only the top and bottom properties of the return
- value are used. For example, `{ .top = -50.0, .left = -10.0, .bottom = 0.0, .right = -10.0 }` indicates
- a 50 point margin above the presentation origin rect (and 10 point margins to the left and the right)
- in which the callout is assumed to be displayed.
-
- There are no assumed defaults for these margins, as they should be calculated from the callout that
- is to be presented. For example, `SMCalloutView` generates the top margin from the callout height, but
- the left and right margins from a minimum width that the callout should have.
-
- @param rect Rect that the callout is presented from. This should be the same as the one passed in
- `-[MGLCalloutView presentCalloutFromRect:inView:constrainedToRect:animated:]`
- @return `UIEdgeInsets` representing the margins. Values should be negative.
- */
-- (UIEdgeInsets)marginInsetsHintForPresentationFromRect:(CGRect)rect NS_SWIFT_NAME(marginInsetsHintForPresentation(from:));
-
-/**
- A Boolean value indicating whether the callout view should be anchored to
- the corresponding annotation. You can adjust the callout view’s precise location by
- overriding -[UIView setCenter:]. The callout view will not be anchored to the
- annotation if this optional property is unimplemented.
- */
-@property (nonatomic, readonly, assign, getter=isAnchoredToAnnotation) BOOL anchoredToAnnotation;
-
-/**
- A Boolean value indicating whether the callout view should be dismissed automatically
- when the map view’s viewport changes. Note that a single tap on the map view
- still dismisses the callout view regardless of the value of this property.
- The callout view will be dismissed if this optional property is unimplemented.
- */
-@property (nonatomic, readonly, assign) BOOL dismissesAutomatically;
-
-@end
-
-/**
- The `MGLCalloutViewDelegate` protocol defines a set of optional methods that
- you can use to receive messages from an object that conforms to the
- `MGLCalloutView` protocol. The callout view uses these methods to inform the
- delegate that the user has interacted with the the callout view.
- */
-@protocol MGLCalloutViewDelegate <NSObject>
-
-@optional
-/**
- Returns a Boolean value indicating whether the entire callout view “highlights”
- when tapped. The default value is `YES`, which means the callout view
- highlights when tapped.
-
- The return value of this method is ignored unless the delegate also responds to
- the `-calloutViewTapped` method.
- */
-- (BOOL)calloutViewShouldHighlight:(UIView<MGLCalloutView> *)calloutView;
-
-/**
- Tells the delegate that the callout view has been tapped.
- */
-- (void)calloutViewTapped:(UIView<MGLCalloutView> *)calloutView;
-
-/**
- Called before the callout view appears on screen, or before the appearance
- animation will start.
- */
-- (void)calloutViewWillAppear:(UIView<MGLCalloutView> *)calloutView;
-
-/**
- Called after the callout view appears on screen, or after the appearance
- animation is complete.
- */
-- (void)calloutViewDidAppear:(UIView<MGLCalloutView> *)calloutView;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLCameraChangeReason.h b/platform/ios/src/MGLCameraChangeReason.h
deleted file mode 100644
index f439d3e7ea..0000000000
--- a/platform/ios/src/MGLCameraChangeReason.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#import "MGLFoundation.h"
-
-/**
- :nodoc:
- Bitmask values that describe why a camera move occurred.
-
- Values of this type are passed to the `MGLMapView`'s delegate in the following methods:
-
- - `-mapView:shouldChangeFromCamera:toCamera:reason:`
- - `-mapView:regionWillChangeWithReason:animated:`
- - `-mapView:regionIsChangingWithReason:`
- - `-mapView:regionDidChangeWithReason:animated:`
-
- It's important to note that it's almost impossible to perform a rotate without zooming (in or out),
- so if you'll often find `MGLCameraChangeReasonGesturePinch` set alongside `MGLCameraChangeReasonGestureRotate`.
-
- Since there are several reasons why a zoom or rotation has occurred, it is worth considering
- creating a combined constant, for example:
-
- ```
- static const MGLCameraChangeReason anyZoom = MGLCameraChangeReasonGesturePinch |
- MGLCameraChangeReasonGestureZoomIn |
- MGLCameraChangeReasonGestureZoomOut |
- MGLCameraChangeReasonGestureOneFingerZoom;
-
- static const MGLCameraChangeReason anyRotation = MGLCameraChangeReasonResetNorth | MGLCameraChangeReasonGestureRotate;
- ```
- */
-typedef NS_OPTIONS(NSUInteger, MGLCameraChangeReason)
-{
- /// :nodoc: The reason for the camera change has not be specified.
- MGLCameraChangeReasonNone = 0,
-
- /// :nodoc: Set when a public API that moves the camera is called. This may be set for some gestures,
- /// for example MGLCameraChangeReasonResetNorth.
- MGLCameraChangeReasonProgrammatic = 1 << 0,
-
- /// :nodoc: The user tapped the compass to reset the map orientation so North is up.
- MGLCameraChangeReasonResetNorth = 1 << 1,
-
- /// :nodoc: The user panned the map.
- MGLCameraChangeReasonGesturePan = 1 << 2,
-
- /// :nodoc: The user pinched to zoom in/out.
- MGLCameraChangeReasonGesturePinch = 1 << 3,
-
- // :nodoc: The user rotated the map.
- MGLCameraChangeReasonGestureRotate = 1 << 4,
-
- /// :nodoc: The user zoomed the map in (one finger double tap).
- MGLCameraChangeReasonGestureZoomIn = 1 << 5,
-
- /// :nodoc: The user zoomed the map out (two finger single tap).
- MGLCameraChangeReasonGestureZoomOut = 1 << 6,
-
- /// :nodoc: The user long pressed on the map for a quick zoom (single tap, then long press and drag up/down).
- MGLCameraChangeReasonGestureOneFingerZoom = 1 << 7,
-
- // :nodoc: The user panned with two fingers to tilt the map (two finger drag).
- MGLCameraChangeReasonGestureTilt = 1 << 8,
-
- // :nodoc: Cancelled
- MGLCameraChangeReasonTransitionCancelled = 1 << 16
-
-};
diff --git a/platform/ios/src/MGLCompactCalloutView.h b/platform/ios/src/MGLCompactCalloutView.h
deleted file mode 100644
index 5cecf37ff6..0000000000
--- a/platform/ios/src/MGLCompactCalloutView.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#import "SMCalloutView.h"
-#import "MGLCalloutView.h"
-
-/**
- A concrete implementation of `MGLCalloutView` based on
- <a href="https://github.com/nfarina/calloutview">SMCalloutView</a>. This
- callout view displays the represented annotation’s title, subtitle, and
- accessory views in a compact, two-line layout.
- */
-@interface MGLCompactCalloutView : MGLSMCalloutView <MGLCalloutView>
-
-+ (instancetype)platformCalloutView;
-
-@end
diff --git a/platform/ios/src/MGLCompactCalloutView.m b/platform/ios/src/MGLCompactCalloutView.m
deleted file mode 100644
index e499b7832f..0000000000
--- a/platform/ios/src/MGLCompactCalloutView.m
+++ /dev/null
@@ -1,39 +0,0 @@
-#import "MGLCompactCalloutView.h"
-
-#import "MGLAnnotation.h"
-
-@implementation MGLCompactCalloutView
-{
- id <MGLAnnotation> _representedObject;
-}
-
-@synthesize representedObject = _representedObject;
-
-+ (instancetype)platformCalloutView
-{
- return [[self alloc] init];
-}
-
-- (BOOL)isAnchoredToAnnotation {
- return YES;
-}
-
-- (BOOL)dismissesAutomatically {
- return NO;
-}
-
-- (void)setRepresentedObject:(id <MGLAnnotation>)representedObject
-{
- _representedObject = representedObject;
-
- if ([representedObject respondsToSelector:@selector(title)])
- {
- self.title = representedObject.title;
- }
- if ([representedObject respondsToSelector:@selector(subtitle)])
- {
- self.subtitle = representedObject.subtitle;
- }
-}
-
-@end
diff --git a/platform/ios/src/MGLCompassButton.h b/platform/ios/src/MGLCompassButton.h
deleted file mode 100644
index 9c3d9d1c77..0000000000
--- a/platform/ios/src/MGLCompassButton.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- A specialized view that displays the current compass heading for its associated map.
- */
-MGL_EXPORT
-@interface MGLCompassButton : UIImageView
-
-/**
- The visibility of the compass button.
-
- You can configure a compass button to be visible all the time or only when the compass heading changes.
- */
-@property (nonatomic, assign) MGLOrnamentVisibility compassVisibility;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLCompassButton.mm b/platform/ios/src/MGLCompassButton.mm
deleted file mode 100644
index 5bbd9bf923..0000000000
--- a/platform/ios/src/MGLCompassButton.mm
+++ /dev/null
@@ -1,135 +0,0 @@
-#import "MGLCompassButton_Private.h"
-#import "MGLCompassDirectionFormatter.h"
-
-#import "MGLGeometry.h"
-
-#import "MGLMapView_Private.h"
-#import "UIImage+MGLAdditions.h"
-#import "NSBundle+MGLAdditions.h"
-
-#include <mbgl/math/wrap.hpp>
-
-@interface MGLCompassButton ()
-
-@property (nonatomic, weak) MGLMapView *mapView;
-@property (nonatomic) MGLCompassDirectionFormatter *accessibilityCompassFormatter;
-
-@end
-
-@implementation MGLCompassButton
-
-+ (instancetype)compassButtonWithMapView:(MGLMapView *)mapView {
- return [[MGLCompassButton alloc] initWithMapView:mapView];
-}
-
-- (instancetype)initWithMapView:(MGLMapView *)mapView {
- if (self = [super init]) {
- self.mapView = mapView;
- [self commonInit];
- }
- return self;
-}
-
-- (void)commonInit {
- self.image = self.compassImage;
-
- self.compassVisibility = MGLOrnamentVisibilityAdaptive;
-
- self.alpha = 0;
- self.userInteractionEnabled = YES;
- self.translatesAutoresizingMaskIntoConstraints = NO;
-
- UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
- [self addGestureRecognizer:tapGesture];
-
- self.accessibilityTraits = UIAccessibilityTraitButton;
- self.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"COMPASS_A11Y_LABEL", nil, nil, @"Compass", @"Accessibility label");
- self.accessibilityHint = NSLocalizedStringWithDefaultValue(@"COMPASS_A11Y_HINT", nil, nil, @"Rotates the map to face due north", @"Accessibility hint");
-
- self.accessibilityCompassFormatter = [[MGLCompassDirectionFormatter alloc] init];
- self.accessibilityCompassFormatter.unitStyle = NSFormattingUnitStyleLong;
-
- [self sizeToFit];
-}
-
-- (void)setCompassVisibility:(MGLOrnamentVisibility)compassVisibility {
- if (_compassVisibility == compassVisibility) { return; }
- _compassVisibility = compassVisibility;
-
- [self updateCompassAnimated:NO];
-}
-
-- (UIImage *)compassImage {
- UIImage *scaleImage = [UIImage mgl_resourceImageNamed:@"Compass"];
- UIGraphicsBeginImageContextWithOptions(scaleImage.size, NO, UIScreen.mainScreen.scale);
- [scaleImage drawInRect:{CGPointZero, scaleImage.size}];
-
- UIFont *northFont;
- if (@available(iOS 13.0, *)) {
- northFont = [UIFont systemFontOfSize:11 weight:UIFontWeightLight];
- } else {
- northFont = [UIFont systemFontOfSize:11 weight:UIFontWeightUltraLight];
- }
-
- NSAttributedString *north = [[NSAttributedString alloc] initWithString:NSLocalizedStringWithDefaultValue(@"COMPASS_NORTH", nil, nil, @"N", @"Compass abbreviation for north") attributes:@{
- NSFontAttributeName: northFont,
- NSForegroundColorAttributeName: [UIColor whiteColor],
- }];
- CGRect stringRect = CGRectMake((scaleImage.size.width - north.size.width) / 2,
- scaleImage.size.height * 0.435,
- north.size.width, north.size.height);
- [north drawInRect:stringRect];
-
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return image;
-}
-
-- (void)handleTapGesture:(__unused UITapGestureRecognizer *)sender {
- [self.mapView resetNorth];
-}
-
-- (void)updateCompass {
- [self updateCompassAnimated:YES];
-}
-
-- (void)updateCompassAnimated:(BOOL)animated {
- CLLocationDirection direction = self.mapView.direction;
- CLLocationDirection plateDirection = mbgl::util::wrap(-direction, 0., 360.);
- self.transform = CGAffineTransformMakeRotation(MGLRadiansFromDegrees(plateDirection));
-
- self.isAccessibilityElement = direction > 0;
- self.accessibilityValue = [self.accessibilityCompassFormatter stringFromDirection:direction];
-
- switch (self.compassVisibility) {
- case MGLOrnamentVisibilityAdaptive:
- if (direction > 0 && self.alpha < 1) {
- [self showCompass:animated];
- } else if (direction == 0 && self.alpha > 0) {
- [self hideCompass:animated];
- }
- break;
- case MGLOrnamentVisibilityVisible:
- [self showCompass:animated];
- break;
- case MGLOrnamentVisibilityHidden:
- [self hideCompass:animated];
- break;
- }
-}
-
-- (void)showCompass:(BOOL)animated {
- animated ? [self animateToAlpha:1] : [self setAlpha:1];
-}
-
-- (void)hideCompass:(BOOL)animated {
- animated ? [self animateToAlpha:0] : [self setAlpha:0];
-}
-
-- (void)animateToAlpha:(CGFloat)alpha {
- [UIView animateWithDuration:MGLAnimationDuration delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
- self.alpha = alpha;
- } completion:nil];
-}
-
-@end
diff --git a/platform/ios/src/MGLCompassButton_Private.h b/platform/ios/src/MGLCompassButton_Private.h
deleted file mode 100644
index 9ef55cfa5b..0000000000
--- a/platform/ios/src/MGLCompassButton_Private.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLCompassButton.h"
-
-@class MGLMapView;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLCompassButton (Private)
-
-+ (instancetype)compassButtonWithMapView:(MGLMapView *)mapView;
-
-@property (nonatomic, weak) MGLMapView *mapView;
-
-- (void)updateCompass;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.h b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.h
deleted file mode 100644
index 35fb31a342..0000000000
--- a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import <UIKit/UIKit.h>
-#import "MGLUserLocationAnnotationView.h"
-
-extern const CGFloat MGLUserLocationAnnotationDotSize;
-extern const CGFloat MGLUserLocationAnnotationHaloSize;
-
-extern const CGFloat MGLUserLocationAnnotationPuckSize;
-extern const CGFloat MGLUserLocationAnnotationArrowSize;
-
-// Threshold in radians between heading indicator rotation updates.
-extern const CGFloat MGLUserLocationHeadingUpdateThreshold;
-
-@interface MGLFaux3DUserLocationAnnotationView : MGLUserLocationAnnotationView
-
-@end
diff --git a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m
deleted file mode 100644
index a1d9fb1d48..0000000000
--- a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m
+++ /dev/null
@@ -1,469 +0,0 @@
-#import "MGLFaux3DUserLocationAnnotationView.h"
-
-#import "MGLMapView.h"
-#import "MGLUserLocation.h"
-#import "MGLUserLocationHeadingIndicator.h"
-#import "MGLUserLocationHeadingArrowLayer.h"
-#import "MGLUserLocationHeadingBeamLayer.h"
-
-const CGFloat MGLUserLocationAnnotationDotSize = 22.0;
-const CGFloat MGLUserLocationAnnotationHaloSize = 115.0;
-
-const CGFloat MGLUserLocationAnnotationPuckSize = 45.0;
-const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuckSize * 0.5;
-
-const CGFloat MGLUserLocationHeadingUpdateThreshold = 0.01;
-
-@implementation MGLFaux3DUserLocationAnnotationView
-{
- BOOL _puckModeActivated;
-
- CALayer *_puckDot;
- CAShapeLayer *_puckArrow;
-
- CALayer<MGLUserLocationHeadingIndicator> *_headingIndicatorLayer;
- CALayer *_accuracyRingLayer;
- CALayer *_dotBorderLayer;
- CALayer *_dotLayer;
- CALayer *_haloLayer;
-
- CLLocationDirection _oldHeadingAccuracy;
- CLLocationAccuracy _oldHorizontalAccuracy;
- double _oldZoom;
- double _oldPitch;
-}
-
-- (CALayer *)hitTestLayer
-{
- // Only the main dot should be interactive (i.e., exclude the accuracy ring and halo).
- return _dotBorderLayer ?: _puckDot;
-}
-
-- (void)update
-{
- if (CGSizeEqualToSize(self.frame.size, CGSizeZero))
- {
- CGFloat frameSize = (self.mapView.userTrackingMode == MGLUserTrackingModeFollowWithCourse) ? MGLUserLocationAnnotationPuckSize : MGLUserLocationAnnotationDotSize;
- [self updateFrameWithSize:frameSize];
- }
-
- if (CLLocationCoordinate2DIsValid(self.userLocation.coordinate))
- {
- (self.mapView.userTrackingMode == MGLUserTrackingModeFollowWithCourse) ? [self drawPuck] : [self drawDot];
- [self updatePitch];
- }
-
- _haloLayer.hidden = ! CLLocationCoordinate2DIsValid(self.mapView.userLocation.coordinate) || self.mapView.userLocation.location.horizontalAccuracy > 10;
-}
-
-- (void)setTintColor:(UIColor *)tintColor
-{
- CGColorRef newTintColor = [tintColor CGColor];
-
- if (_puckModeActivated)
- {
- _puckArrow.fillColor = newTintColor;
- _puckArrow.strokeColor = newTintColor;
- }
- else
- {
- _accuracyRingLayer.backgroundColor = newTintColor;
- _haloLayer.backgroundColor = newTintColor;
- _dotLayer.backgroundColor = newTintColor;
- [_headingIndicatorLayer updateTintColor:newTintColor];
- }
-}
-
-- (void)updatePitch
-{
- if (self.mapView.camera.pitch != _oldPitch)
- {
- // disable implicit animation
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
-
- CATransform3D t = CATransform3DRotate(CATransform3DIdentity, MGLRadiansFromDegrees(self.mapView.camera.pitch), 1.0, 0, 0);
- self.layer.sublayerTransform = t;
-
- [self updateFaux3DEffect];
-
- [CATransaction commit];
-
- _oldPitch = self.mapView.camera.pitch;
- }
-}
-
-- (void)updateFaux3DEffect
-{
- CGFloat pitch = MGLRadiansFromDegrees(self.mapView.camera.pitch);
-
- if (_puckDot)
- {
- _puckDot.shadowOffset = CGSizeMake(0, fmaxf(pitch * 10.f, 1.f));
- _puckDot.shadowRadius = fmaxf(pitch * 5.f, 0.75f);
- }
-
- if (_dotBorderLayer)
- {
- _dotBorderLayer.shadowOffset = CGSizeMake(0.f, pitch * 10.f);
- _dotBorderLayer.shadowRadius = fmaxf(pitch * 5.f, 3.f);
- }
-
- if (_dotLayer)
- {
- _dotLayer.zPosition = pitch * 2.f;
- }
-}
-
-- (void)updateFrameWithSize:(CGFloat)size
-{
- CGSize newSize = CGSizeMake(size, size);
- if (CGSizeEqualToSize(self.frame.size, newSize))
- {
- return;
- }
-
- // Update frame size, keeping the existing center point.
- CGPoint oldCenter = self.center;
- CGRect newFrame = self.frame;
- newFrame.size = newSize;
- [self setFrame:newFrame];
- [self setCenter:oldCenter];
-}
-
-- (void)drawPuck
-{
- if ( ! _puckModeActivated)
- {
- self.layer.sublayers = nil;
-
- _headingIndicatorLayer = nil;
- _accuracyRingLayer = nil;
- _haloLayer = nil;
- _dotBorderLayer = nil;
- _dotLayer = nil;
-
- [self updateFrameWithSize:MGLUserLocationAnnotationPuckSize];
- }
-
- // background dot (white with black shadow)
- //
- if ( ! _puckDot)
- {
- _puckDot = [self circleLayerWithSize:MGLUserLocationAnnotationPuckSize];
- _puckDot.backgroundColor = [[UIColor whiteColor] CGColor];
- _puckDot.shadowColor = [[UIColor blackColor] CGColor];
- _puckDot.shadowOpacity = 0.25;
- _puckDot.shadowPath = [[UIBezierPath bezierPathWithOvalInRect:_puckDot.bounds] CGPath];
-
- if (self.mapView.camera.pitch)
- {
- [self updateFaux3DEffect];
- }
- else
- {
- _puckDot.shadowOffset = CGSizeMake(0, 1);
- _puckDot.shadowRadius = 0.75;
- }
-
- [self.layer addSublayer:_puckDot];
- }
-
- // arrow
- //
- if ( ! _puckArrow)
- {
- _puckArrow = [CAShapeLayer layer];
- _puckArrow.path = [[self puckArrow] CGPath];
- _puckArrow.fillColor = [self.mapView.tintColor CGColor];
- _puckArrow.bounds = CGRectMake(0, 0, round(MGLUserLocationAnnotationArrowSize), round(MGLUserLocationAnnotationArrowSize));
- _puckArrow.position = CGPointMake(CGRectGetMidX(super.bounds), CGRectGetMidY(super.bounds));
- _puckArrow.shouldRasterize = YES;
- _puckArrow.rasterizationScale = [UIScreen mainScreen].scale;
- _puckArrow.drawsAsynchronously = YES;
-
- _puckArrow.lineJoin = @"round";
- _puckArrow.lineWidth = 1.f;
- _puckArrow.strokeColor = _puckArrow.fillColor;
-
- [self.layer addSublayer:_puckArrow];
- }
- if (self.userLocation.location.course >= 0)
- {
- _puckArrow.affineTransform = CGAffineTransformRotate(CGAffineTransformIdentity, -MGLRadiansFromDegrees(self.mapView.direction - self.userLocation.location.course));
- }
-
- if ( ! _puckModeActivated)
- {
- _puckModeActivated = YES;
-
- [self updateFaux3DEffect];
- }
-}
-
-- (UIBezierPath *)puckArrow
-{
- CGFloat max = MGLUserLocationAnnotationArrowSize;
-
- UIBezierPath *bezierPath = UIBezierPath.bezierPath;
- [bezierPath moveToPoint: CGPointMake(max * 0.5, 0)];
- [bezierPath addLineToPoint: CGPointMake(max * 0.1, max)];
- [bezierPath addLineToPoint: CGPointMake(max * 0.5, max * 0.65)];
- [bezierPath addLineToPoint: CGPointMake(max * 0.9, max)];
- [bezierPath addLineToPoint: CGPointMake(max * 0.5, 0)];
- [bezierPath closePath];
-
- return bezierPath;
-}
-
-- (void)drawDot
-{
- if (_puckModeActivated)
- {
- self.layer.sublayers = nil;
-
- _puckDot = nil;
- _puckArrow = nil;
-
- [self updateFrameWithSize:MGLUserLocationAnnotationDotSize];
- }
-
- // heading indicator (tinted, beam or arrow)
- //
- BOOL headingTrackingModeEnabled = self.mapView.userTrackingMode == MGLUserTrackingModeFollowWithHeading;
- BOOL showHeadingIndicator = self.mapView.showsUserHeadingIndicator || headingTrackingModeEnabled;
-
- if (showHeadingIndicator)
- {
- _headingIndicatorLayer.hidden = NO;
- CLLocationDirection headingAccuracy = self.userLocation.heading.headingAccuracy;
-
- if (([_headingIndicatorLayer isMemberOfClass:[MGLUserLocationHeadingBeamLayer class]] && ! headingTrackingModeEnabled) ||
- ([_headingIndicatorLayer isMemberOfClass:[MGLUserLocationHeadingArrowLayer class]] && headingTrackingModeEnabled))
- {
- [_headingIndicatorLayer removeFromSuperlayer];
- _headingIndicatorLayer = nil;
- _oldHeadingAccuracy = -1;
- }
-
- if ( ! _headingIndicatorLayer && headingAccuracy)
- {
- if (headingTrackingModeEnabled)
- {
- _headingIndicatorLayer = [[MGLUserLocationHeadingBeamLayer alloc] initWithUserLocationAnnotationView:self];
- [self.layer insertSublayer:_headingIndicatorLayer below:_dotBorderLayer];
- }
- else
- {
- _headingIndicatorLayer = [[MGLUserLocationHeadingArrowLayer alloc] initWithUserLocationAnnotationView:self];
- [self.layer addSublayer:_headingIndicatorLayer];
- _headingIndicatorLayer.zPosition = 1;
- }
- }
-
- if (_oldHeadingAccuracy != headingAccuracy)
- {
- [_headingIndicatorLayer updateHeadingAccuracy:headingAccuracy];
- _oldHeadingAccuracy = headingAccuracy;
- }
-
- if (self.userLocation.heading.trueHeading >= 0)
- {
- CGFloat rotation = -MGLRadiansFromDegrees(self.mapView.direction - self.userLocation.heading.trueHeading);
-
- // Don't rotate if the change is imperceptible.
- if (fabs(rotation) > MGLUserLocationHeadingUpdateThreshold)
- {
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
-
- _headingIndicatorLayer.affineTransform = CGAffineTransformRotate(CGAffineTransformIdentity, rotation);
-
- [CATransaction commit];
- }
- }
- }
- else
- {
- [_headingIndicatorLayer removeFromSuperlayer];
- _headingIndicatorLayer = nil;
- }
-
- // update accuracy ring (if zoom or horizontal accuracy have changed)
- //
- if (_accuracyRingLayer && (_oldZoom != self.mapView.zoomLevel || _oldHorizontalAccuracy != self.userLocation.location.horizontalAccuracy))
- {
- CGFloat accuracyRingSize = [self calculateAccuracyRingSize];
-
- // only show the accuracy ring if it won't be obscured by the location dot
- if (accuracyRingSize > MGLUserLocationAnnotationDotSize + 15)
- {
- _accuracyRingLayer.hidden = NO;
-
- // disable implicit animation of the accuracy ring, unless triggered by a change in accuracy
- BOOL shouldDisableActions = _oldHorizontalAccuracy == self.userLocation.location.horizontalAccuracy;
-
- [CATransaction begin];
- [CATransaction setDisableActions:shouldDisableActions];
-
- _accuracyRingLayer.bounds = CGRectMake(0, 0, accuracyRingSize, accuracyRingSize);
- _accuracyRingLayer.cornerRadius = accuracyRingSize / 2.0;
-
- // match the halo to the accuracy ring
- _haloLayer.bounds = _accuracyRingLayer.bounds;
- _haloLayer.cornerRadius = _accuracyRingLayer.cornerRadius;
- _haloLayer.shouldRasterize = NO;
-
- [CATransaction commit];
- }
- else
- {
- _accuracyRingLayer.hidden = YES;
-
- _haloLayer.bounds = CGRectMake(0, 0, MGLUserLocationAnnotationHaloSize, MGLUserLocationAnnotationHaloSize);
- _haloLayer.cornerRadius = MGLUserLocationAnnotationHaloSize / 2.0;
- _haloLayer.shouldRasterize = YES;
- _haloLayer.rasterizationScale = [UIScreen mainScreen].scale;
- }
-
- // store accuracy and zoom so we're not redrawing unchanged location updates
- _oldHorizontalAccuracy = self.userLocation.location.horizontalAccuracy;
- _oldZoom = self.mapView.zoomLevel;
- }
-
- // accuracy ring (circular, tinted, mostly-transparent)
- //
- if ( ! _accuracyRingLayer && self.userLocation.location.horizontalAccuracy)
- {
- CGFloat accuracyRingSize = [self calculateAccuracyRingSize];
- _accuracyRingLayer = [self circleLayerWithSize:accuracyRingSize];
- _accuracyRingLayer.backgroundColor = [self.mapView.tintColor CGColor];
- _accuracyRingLayer.opacity = 0.1;
- _accuracyRingLayer.shouldRasterize = NO;
- _accuracyRingLayer.allowsGroupOpacity = NO;
-
- [self.layer addSublayer:_accuracyRingLayer];
- }
-
- // expanding sonar-like pulse (circular, tinted, fades out)
- //
- if ( ! _haloLayer)
- {
- _haloLayer = [self circleLayerWithSize:MGLUserLocationAnnotationHaloSize];
- _haloLayer.backgroundColor = [self.mapView.tintColor CGColor];
- _haloLayer.allowsGroupOpacity = NO;
- _haloLayer.zPosition = -0.1f;
-
- // set defaults for the animations
- CAAnimationGroup *animationGroup = [self loopingAnimationGroupWithDuration:3.0];
-
- // scale out radially with initial acceleration
- CAKeyframeAnimation *boundsAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale.xy"];
- boundsAnimation.values = @[@0, @0.35, @1];
- boundsAnimation.keyTimes = @[@0, @0.2, @1];
-
- // go transparent as scaled out, start semi-opaque
- CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
- opacityAnimation.values = @[@0.4, @0.4, @0];
- opacityAnimation.keyTimes = @[@0, @0.2, @1];
-
- animationGroup.animations = @[boundsAnimation, opacityAnimation];
-
- [_haloLayer addAnimation:animationGroup forKey:@"animateTransformAndOpacity"];
-
- [self.layer addSublayer:_haloLayer];
- }
-
- // background dot (white with black shadow)
- //
- if ( ! _dotBorderLayer)
- {
- _dotBorderLayer = [self circleLayerWithSize:MGLUserLocationAnnotationDotSize];
- _dotBorderLayer.backgroundColor = [[UIColor whiteColor] CGColor];
- _dotBorderLayer.shadowColor = [[UIColor blackColor] CGColor];
- _dotBorderLayer.shadowOpacity = 0.25;
- _dotBorderLayer.shadowPath = [[UIBezierPath bezierPathWithOvalInRect:_dotBorderLayer.bounds] CGPath];
-
- if (self.mapView.camera.pitch)
- {
- [self updateFaux3DEffect];
- }
- else
- {
- _dotBorderLayer.shadowOffset = CGSizeMake(0, 0);
- _dotBorderLayer.shadowRadius = 3;
- }
-
- [self.layer addSublayer:_dotBorderLayer];
- }
-
- // inner dot (pulsing, tinted)
- //
- if ( ! _dotLayer)
- {
- _dotLayer = [self circleLayerWithSize:MGLUserLocationAnnotationDotSize * 0.75];
- _dotLayer.backgroundColor = [self.mapView.tintColor CGColor];
-
- // set defaults for the animations
- CAAnimationGroup *animationGroup = [self loopingAnimationGroupWithDuration:1.5];
- animationGroup.autoreverses = YES;
- animationGroup.fillMode = kCAFillModeBoth;
-
- // scale the dot up and down
- CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.xy"];
- pulseAnimation.fromValue = @0.8;
- pulseAnimation.toValue = @1;
-
- // fade opacity in and out, subtly
- CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
- opacityAnimation.fromValue = @0.8;
- opacityAnimation.toValue = @1;
-
- animationGroup.animations = @[pulseAnimation, opacityAnimation];
-
- [_dotLayer addAnimation:animationGroup forKey:@"animateTransformAndOpacity"];
-
- [self.layer addSublayer:_dotLayer];
- }
-
- if (_puckModeActivated)
- {
- _puckModeActivated = NO;
-
- [self updateFaux3DEffect];
- }
-}
-
-- (CALayer *)circleLayerWithSize:(CGFloat)layerSize
-{
- layerSize = round(layerSize);
-
- CALayer *circleLayer = [CALayer layer];
- circleLayer.bounds = CGRectMake(0, 0, layerSize, layerSize);
- circleLayer.position = CGPointMake(CGRectGetMidX(super.bounds), CGRectGetMidY(super.bounds));
- circleLayer.cornerRadius = layerSize / 2.0;
- circleLayer.shouldRasterize = YES;
- circleLayer.rasterizationScale = [UIScreen mainScreen].scale;
- circleLayer.drawsAsynchronously = YES;
-
- return circleLayer;
-}
-
-- (CAAnimationGroup *)loopingAnimationGroupWithDuration:(CGFloat)animationDuration
-{
- CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
- animationGroup.duration = animationDuration;
- animationGroup.repeatCount = INFINITY;
- animationGroup.removedOnCompletion = NO;
- animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
-
- return animationGroup;
-}
-
-- (CGFloat)calculateAccuracyRingSize
-{
- // diameter in screen points
- return round(self.userLocation.location.horizontalAccuracy / [self.mapView metersPerPointAtLatitude:self.userLocation.coordinate.latitude] * 2.0);
-}
-
-@end
diff --git a/platform/ios/src/MGLMapAccessibilityElement.h b/platform/ios/src/MGLMapAccessibilityElement.h
deleted file mode 100644
index 6c5fad62ce..0000000000
--- a/platform/ios/src/MGLMapAccessibilityElement.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLFeature;
-
-/// Unique identifier representing a single annotation in mbgl.
-typedef uint64_t MGLAnnotationTag;
-
-/** An accessibility element representing something that appears on the map. */
-MGL_EXPORT
-@interface MGLMapAccessibilityElement : UIAccessibilityElement
-
-@end
-
-/** An accessibility element representing a map annotation. */
-@interface MGLAnnotationAccessibilityElement : MGLMapAccessibilityElement
-
-/** The tag of the annotation represented by this element. */
-@property (nonatomic) MGLAnnotationTag tag;
-
-- (instancetype)initWithAccessibilityContainer:(id)container tag:(MGLAnnotationTag)identifier NS_DESIGNATED_INITIALIZER;
-
-@end
-
-/** An accessibility element representing a map feature. */
-MGL_EXPORT
-@interface MGLFeatureAccessibilityElement : MGLMapAccessibilityElement
-
-/** The feature represented by this element. */
-@property (nonatomic, strong) id <MGLFeature> feature;
-
-- (instancetype)initWithAccessibilityContainer:(id)container feature:(id <MGLFeature>)feature NS_DESIGNATED_INITIALIZER;
-
-@end
-
-/** An accessibility element representing a place feature. */
-MGL_EXPORT
-@interface MGLPlaceFeatureAccessibilityElement : MGLFeatureAccessibilityElement
-@end
-
-/** An accessibility element representing a road feature. */
-MGL_EXPORT
-@interface MGLRoadFeatureAccessibilityElement : MGLFeatureAccessibilityElement
-@end
-
-/** An accessibility element representing the MGLMapView at large. */
-MGL_EXPORT
-@interface MGLMapViewProxyAccessibilityElement : UIAccessibilityElement
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLMapAccessibilityElement.mm b/platform/ios/src/MGLMapAccessibilityElement.mm
deleted file mode 100644
index 240eab1545..0000000000
--- a/platform/ios/src/MGLMapAccessibilityElement.mm
+++ /dev/null
@@ -1,195 +0,0 @@
-#import "MGLMapAccessibilityElement.h"
-#import "MGLDistanceFormatter.h"
-#import "MGLCompassDirectionFormatter.h"
-#import "MGLFeature.h"
-
-#import "MGLGeometry_Private.h"
-#import "MGLVectorTileSource_Private.h"
-
-#import "NSBundle+MGLAdditions.h"
-#import "NSOrthography+MGLAdditions.h"
-#import "NSString+MGLAdditions.h"
-
-@implementation MGLMapAccessibilityElement
-
-- (UIAccessibilityTraits)accessibilityTraits {
- return super.accessibilityTraits | UIAccessibilityTraitAdjustable;
-}
-
-- (void)accessibilityIncrement {
- [self.accessibilityContainer accessibilityIncrement];
-}
-
-- (void)accessibilityDecrement {
- [self.accessibilityContainer accessibilityDecrement];
-}
-
-@end
-
-@implementation MGLAnnotationAccessibilityElement
-
-- (instancetype)initWithAccessibilityContainer:(id)container tag:(MGLAnnotationTag)tag {
- if (self = [super initWithAccessibilityContainer:container]) {
- _tag = tag;
- self.accessibilityHint = NSLocalizedStringWithDefaultValue(@"ANNOTATION_A11Y_HINT", nil, nil, @"Shows more info", @"Accessibility hint");
- }
- return self;
-}
-
-- (UIAccessibilityTraits)accessibilityTraits {
- return super.accessibilityTraits | UIAccessibilityTraitButton;
-}
-
-@end
-
-@implementation MGLFeatureAccessibilityElement
-
-- (instancetype)initWithAccessibilityContainer:(id)container feature:(id<MGLFeature>)feature {
- if (self = [super initWithAccessibilityContainer:container]) {
- _feature = feature;
-
- NSString *languageCode = [MGLVectorTileSource preferredMapboxStreetsLanguage];
- NSString *nameAttribute = [NSString stringWithFormat:@"name_%@", languageCode];
- NSString *name = [feature attributeForKey:nameAttribute];
-
- // If a feature hasn’t been translated into the preferred language, it
- // may be in the local language, which may be written in another script.
- // Attempt to transform to the script of the preferred language, keeping
- // the original string if no transform exists or if transformation fails.
- NSString *dominantScript = [NSOrthography mgl_dominantScriptForMapboxStreetsLanguage:languageCode];
- name = [name mgl_stringByTransliteratingIntoScript:dominantScript];
-
- self.accessibilityLabel = name;
- }
- return self;
-}
-
-- (UIAccessibilityTraits)accessibilityTraits {
- return super.accessibilityTraits | UIAccessibilityTraitStaticText;
-}
-
-@end
-
-@implementation MGLPlaceFeatureAccessibilityElement
-
-- (instancetype)initWithAccessibilityContainer:(id)container feature:(id<MGLFeature>)feature {
- if (self = [super initWithAccessibilityContainer:container feature:feature]) {
- NSDictionary *attributes = feature.attributes;
- NSMutableArray *facts = [NSMutableArray array];
-
- // Announce the kind of place or POI.
- NSString *languageCode = [MGLVectorTileSource preferredMapboxStreetsLanguage];
- NSString *categoryAttribute = [NSString stringWithFormat:@"category_%@", languageCode];
- if (attributes[categoryAttribute]) {
- [facts addObject:attributes[categoryAttribute]];
- } else if (attributes[@"type"]) {
- // FIXME: Unfortunately, these types aren’t a closed set that can be
- // localized, since they’re based on OpenStreetMap tags.
- NSString *type = [attributes[@"type"] stringByReplacingOccurrencesOfString:@"_"
- withString:@" "];
- [facts addObject:type];
- }
- // Announce the kind of airport, rail station, or mountain based on its
- // Maki image name.
- else if (attributes[@"maki"]) {
- [facts addObject:attributes[@"maki"]];
- }
-
- // Announce the peak’s elevation in the preferred units.
- if (attributes[@"elevation_m"] ?: attributes[@"elevation_ft"]) {
- NSLengthFormatter *formatter = [[NSLengthFormatter alloc] init];
- formatter.unitStyle = NSFormattingUnitStyleLong;
-
- NSNumber *elevationValue;
- NSLengthFormatterUnit unit;
- BOOL usesMetricSystem = ![[formatter.numberFormatter.locale objectForKey:NSLocaleMeasurementSystem]
- isEqualToString:@"U.S."];
- if (usesMetricSystem) {
- elevationValue = attributes[@"elevation_m"];
- unit = NSLengthFormatterUnitMeter;
- } else {
- elevationValue = attributes[@"elevation_ft"];
- unit = NSLengthFormatterUnitFoot;
- }
- [facts addObject:[formatter stringFromValue:elevationValue.doubleValue unit:unit]];
- }
-
- if (facts.count) {
- NSString *separator = NSLocalizedStringWithDefaultValue(@"LIST_SEPARATOR", nil, nil, @", ", @"List separator");
- self.accessibilityValue = [facts componentsJoinedByString:separator];
- }
- }
- return self;
-}
-
-@end
-
-@implementation MGLRoadFeatureAccessibilityElement
-
-- (instancetype)initWithAccessibilityContainer:(id)container feature:(id<MGLFeature>)feature {
- if (self = [super initWithAccessibilityContainer:container feature:feature]) {
- NSDictionary *attributes = feature.attributes;
- NSMutableArray *facts = [NSMutableArray array];
-
- // Announce the route number.
- if (attributes[@"ref"]) {
- // TODO: Decorate the route number with the network name based on the shield attribute.
- NSString *ref = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"ROAD_REF_A11Y_FMT", nil, nil, @"Route %@", @"String format for accessibility value for road feature; {route number}"), attributes[@"ref"]];
- [facts addObject:ref];
- }
-
- // Announce whether the road is a one-way road.
- if ([attributes[@"oneway"] isEqualToString:@"true"]) {
- [facts addObject:NSLocalizedStringWithDefaultValue(@"ROAD_ONEWAY_A11Y_VALUE", nil, nil, @"One way", @"Accessibility value indicating that a road is a one-way road")];
- }
-
- // Announce whether the road is a divided road.
- MGLPolyline *polyline;
- if ([feature isKindOfClass:[MGLMultiPolylineFeature class]]) {
- [facts addObject:NSLocalizedStringWithDefaultValue(@"ROAD_DIVIDED_A11Y_VALUE", nil, nil, @"Divided road", @"Accessibility value indicating that a road is a divided road (dual carriageway)")];
- polyline = [(MGLMultiPolylineFeature *)feature polylines].firstObject;
- }
-
- // Announce the road’s general direction.
- if ([feature isKindOfClass:[MGLPolylineFeature class]]) {
- polyline = (MGLPolylineFeature *)feature;
- }
- if (polyline) {
- NSUInteger pointCount = polyline.pointCount;
- if (pointCount) {
- CLLocationCoordinate2D *coordinates = polyline.coordinates;
- CLLocationDirection startDirection = MGLDirectionBetweenCoordinates(coordinates[pointCount - 1], coordinates[0]);
- CLLocationDirection endDirection = MGLDirectionBetweenCoordinates(coordinates[0], coordinates[pointCount - 1]);
-
- MGLCompassDirectionFormatter *formatter = [[MGLCompassDirectionFormatter alloc] init];
- formatter.unitStyle = NSFormattingUnitStyleLong;
-
- NSString *startDirectionString = [formatter stringFromDirection:startDirection];
- NSString *endDirectionString = [formatter stringFromDirection:endDirection];
- NSString *directionString = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"ROAD_DIRECTION_A11Y_FMT", nil, nil, @"%@ to %@", @"String format for accessibility value for road feature; {starting compass direction}, {ending compass direction}"), startDirectionString, endDirectionString];
- [facts addObject:directionString];
- }
- }
-
- if (facts.count) {
- NSString *separator = NSLocalizedStringWithDefaultValue(@"LIST_SEPARATOR", nil, nil, @", ", @"List separator");
- self.accessibilityValue = [facts componentsJoinedByString:separator];
- }
- }
- return self;
-}
-
-@end
-
-@implementation MGLMapViewProxyAccessibilityElement
-
-- (instancetype)initWithAccessibilityContainer:(id)container {
- if (self = [super initWithAccessibilityContainer:container]) {
- self.accessibilityTraits = UIAccessibilityTraitButton;
- self.accessibilityLabel = [self.accessibilityContainer accessibilityLabel];
- self.accessibilityHint = NSLocalizedStringWithDefaultValue(@"CLOSE_CALLOUT_A11Y_HINT", nil, nil, @"Returns to the map", @"Accessibility hint for closing the selected annotation’s callout view and returning to the map");
- }
- return self;
-}
-
-@end
diff --git a/platform/ios/src/MGLMapView+IBAdditions.h b/platform/ios/src/MGLMapView+IBAdditions.h
deleted file mode 100644
index 64016e8319..0000000000
--- a/platform/ios/src/MGLMapView+IBAdditions.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@class MGLMapView;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLMapView (IBAdditions)
-
-// Core properties that can be manipulated in the Attributes inspector in
-// Interface Builder. These redeclarations merely add the IBInspectable keyword.
-// They appear here to ensure that they appear above the convenience properties;
-// inspectables declared in MGLMapView.h are always sorted before those in
-// MGLMapView+IBAdditions.h, due to ASCII sort order.
-
-#if TARGET_INTERFACE_BUILDER
-
-// HACK: We want this property to look like a URL bar in the Attributes
-// inspector, but just calling it styleURL would violate Cocoa naming
-// conventions and conflict with the existing NSURL property. Fortunately, IB
-// strips out the two underscores for display.
-@property (nonatomic, nullable) IBInspectable NSString *styleURL__;
-
-#endif // TARGET_INTERFACE_BUILDER
-
-// Convenience properties related to the initial viewport. These properties
-// are not meant to be used outside of Interface Builder. latitude and longitude
-// are backed by properties of type CLLocationDegrees, but these declarations
-// must use the type double because Interface Builder is unaware that
-// CLLocationDegrees is a typedef for double.
-
-@property (nonatomic) IBInspectable double latitude;
-@property (nonatomic) IBInspectable double longitude;
-@property (nonatomic) IBInspectable double zoomLevel;
-@property (nonatomic) IBInspectable double minimumZoomLevel;
-@property (nonatomic) IBInspectable double maximumZoomLevel;
-
-// Renamed properties. Interface Builder derives the display name of each
-// inspectable from the runtime name, but runtime names don’t always make sense
-// in UI.
-
-@property (nonatomic) IBInspectable BOOL allowsZooming;
-@property (nonatomic) IBInspectable BOOL allowsScrolling;
-@property (nonatomic) IBInspectable BOOL allowsRotating;
-@property (nonatomic) IBInspectable BOOL allowsTilting;
-@property (nonatomic) IBInspectable BOOL showsUserLocation;
-@property (nonatomic) IBInspectable BOOL showsHeading;
-@property (nonatomic) IBInspectable BOOL showsScale;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLMapView+Impl.h b/platform/ios/src/MGLMapView+Impl.h
deleted file mode 100644
index 232215bd1b..0000000000
--- a/platform/ios/src/MGLMapView+Impl.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#import <mbgl/gfx/renderer_backend.hpp>
-#import <mbgl/map/map_observer.hpp>
-#import <mbgl/util/image.hpp>
-
-#import <UIKit/UIView.h>
-#import <UIKit/UIImage.h>
-#import <QuartzCore/CALayer.h>
-
-@class MGLMapView;
-
-class MGLMapViewImpl : public mbgl::MapObserver {
-public:
- static std::unique_ptr<MGLMapViewImpl> Create(MGLMapView*);
-
- MGLMapViewImpl(MGLMapView*);
- virtual ~MGLMapViewImpl() = default;
-
- virtual mbgl::gfx::RendererBackend& getRendererBackend() = 0;
-
- // Returns a handle to the OpenGL context object if this view is rendered with OpenGL.
- virtual EAGLContext* getEAGLContext() {
- return nullptr;
- }
-
- // Gets called when the opaqueness of the view changes.
- virtual void setOpaque(bool) = 0;
-
- // Triggers an immediate render of the underlying view.
- virtual void display() = 0;
-
- // We update the transaction mode when the user adds annotation views that need to be layered on
- // top of the view.
- virtual void setPresentsWithTransaction(bool) = 0;
-
- // Called when initially creating the rendering view, and when resuming rendering after returning
- // from the background.
- virtual void createView() = 0;
-
- // We expose the underlying UIView because we need it in order to add annotation views above it.
- virtual UIView* getView() = 0;
-
- // Called when the application goes to the background and we've replaced the interactively
- // rendered map view with a static image.
- virtual void deleteView() = 0;
-
- // called before the application goes to the background. The resulting image is used as a place
- // holder instead of the regular view. This allows us to drop the framebuffers associated with
- // the rendering context and reduce memory while in the background.
- virtual UIImage* snapshot() = 0;
-
- // Called when UIView's layout has changed.
- virtual void layoutChanged() {};
-
- // Called by the view delegate when it's time to render.
- void render();
-
- // mbgl::MapObserver implementation
- void onCameraWillChange(mbgl::MapObserver::CameraChangeMode) override;
- void onCameraIsChanging() override;
- void onCameraDidChange(mbgl::MapObserver::CameraChangeMode) override;
- void onWillStartLoadingMap() override;
- void onDidFinishLoadingMap() override;
- void onDidFailLoadingMap(mbgl::MapLoadError mapError, const std::string& what) override;
- void onWillStartRenderingFrame() override;
- void onDidFinishRenderingFrame(mbgl::MapObserver::RenderFrameStatus) override;
- void onWillStartRenderingMap() override;
- void onDidFinishRenderingMap(mbgl::MapObserver::RenderMode) override;
- void onDidFinishLoadingStyle() override;
- void onSourceChanged(mbgl::style::Source& source) override;
- void onDidBecomeIdle() override;
- void onStyleImageMissing(const std::string& imageIdentifier) override;
- bool onCanRemoveUnusedStyleImage(const std::string& imageIdentifier) override;
-
-protected:
- /// Cocoa map view that this adapter bridges to.
- __weak MGLMapView *mapView = nullptr;
-};
diff --git a/platform/ios/src/MGLMapView+Impl.mm b/platform/ios/src/MGLMapView+Impl.mm
deleted file mode 100644
index 0b9ab75699..0000000000
--- a/platform/ios/src/MGLMapView+Impl.mm
+++ /dev/null
@@ -1,114 +0,0 @@
-#import "MGLMapView+Impl.h"
-#import "MGLMapView+OpenGL.h"
-#import "MGLStyle_Private.h"
-#import "NSBundle+MGLAdditions.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MMEEventsManager.h"
-#endif
-
-std::unique_ptr<MGLMapViewImpl> MGLMapViewImpl::Create(MGLMapView* nativeView) {
- return std::make_unique<MGLMapViewOpenGLImpl>(nativeView);
-}
-
-MGLMapViewImpl::MGLMapViewImpl(MGLMapView* nativeView_) : mapView(nativeView_) {
-}
-
-void MGLMapViewImpl::render() {
- [mapView renderSync];
-}
-
-void MGLMapViewImpl::onCameraWillChange(mbgl::MapObserver::CameraChangeMode mode) {
- bool animated = mode == mbgl::MapObserver::CameraChangeMode::Animated;
- [mapView cameraWillChangeAnimated:animated];
-}
-
-void MGLMapViewImpl::onCameraIsChanging() {
- [mapView cameraIsChanging];
-}
-
-void MGLMapViewImpl::onCameraDidChange(mbgl::MapObserver::CameraChangeMode mode) {
- bool animated = mode == mbgl::MapObserver::CameraChangeMode::Animated;
- [mapView cameraDidChangeAnimated:animated];
-}
-
-void MGLMapViewImpl::onWillStartLoadingMap() {
- [mapView mapViewWillStartLoadingMap];
-}
-
-void MGLMapViewImpl::onDidFinishLoadingMap() {
- [mapView mapViewDidFinishLoadingMap];
-}
-
-void MGLMapViewImpl::onDidFailLoadingMap(mbgl::MapLoadError mapError, const std::string& what) {
- NSString *description;
- MGLErrorCode code;
- switch (mapError) {
- case mbgl::MapLoadError::StyleParseError:
- code = MGLErrorCodeParseStyleFailed;
- description = NSLocalizedStringWithDefaultValue(@"PARSE_STYLE_FAILED_DESC", nil, nil, @"The map failed to load because the style is corrupted.", @"User-friendly error description");
- break;
- case mbgl::MapLoadError::StyleLoadError:
- code = MGLErrorCodeLoadStyleFailed;
- description = NSLocalizedStringWithDefaultValue(@"LOAD_STYLE_FAILED_DESC", nil, nil, @"The map failed to load because the style can't be loaded.", @"User-friendly error description");
- break;
- case mbgl::MapLoadError::NotFoundError:
- code = MGLErrorCodeNotFound;
- description = NSLocalizedStringWithDefaultValue(@"STYLE_NOT_FOUND_DESC", nil, nil, @"The map failed to load because the style can’t be found or is incompatible.", @"User-friendly error description");
- break;
- default:
- code = MGLErrorCodeUnknown;
- description = NSLocalizedStringWithDefaultValue(@"LOAD_MAP_FAILED_DESC", nil, nil, @"The map failed to load because an unknown error occurred.", @"User-friendly error description");
- }
- NSDictionary *userInfo = @{
- NSLocalizedDescriptionKey: description,
- NSLocalizedFailureReasonErrorKey: @(what.c_str()),
- };
- NSError *error = [NSError errorWithDomain:MGLErrorDomain code:code userInfo:userInfo];
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
- [[MMEEventsManager sharedManager] reportError:error];
-#endif
- [mapView mapViewDidFailLoadingMapWithError:error];
-}
-
-void MGLMapViewImpl::onWillStartRenderingFrame() {
- [mapView mapViewWillStartRenderingFrame];
-}
-
-void MGLMapViewImpl::onDidFinishRenderingFrame(mbgl::MapObserver::RenderFrameStatus status) {
- bool fullyRendered = status.mode == mbgl::MapObserver::RenderMode::Full;
- [mapView mapViewDidFinishRenderingFrameFullyRendered:fullyRendered];
-}
-
-void MGLMapViewImpl::onWillStartRenderingMap() {
- [mapView mapViewWillStartRenderingMap];
-}
-
-void MGLMapViewImpl::onDidFinishRenderingMap(mbgl::MapObserver::RenderMode mode) {
- bool fullyRendered = mode == mbgl::MapObserver::RenderMode::Full;
- [mapView mapViewDidFinishRenderingMapFullyRendered:fullyRendered];
-}
-
-void MGLMapViewImpl::onDidFinishLoadingStyle() {
- [mapView mapViewDidFinishLoadingStyle];
-}
-
-void MGLMapViewImpl::onSourceChanged(mbgl::style::Source& source) {
- NSString *identifier = @(source.getID().c_str());
- MGLSource * nativeSource = [mapView.style sourceWithIdentifier:identifier];
- [mapView sourceDidChange:nativeSource];
-}
-
-void MGLMapViewImpl::onDidBecomeIdle() {
- [mapView mapViewDidBecomeIdle];
-}
-
-void MGLMapViewImpl::onStyleImageMissing(const std::string& imageIdentifier) {
- NSString *imageName = [NSString stringWithUTF8String:imageIdentifier.c_str()];
- [mapView didFailToLoadImage:imageName];
-}
-
-bool MGLMapViewImpl::onCanRemoveUnusedStyleImage(const std::string &imageIdentifier) {
- NSString *imageName = [NSString stringWithUTF8String:imageIdentifier.c_str()];
- return [mapView shouldRemoveStyleImage:imageName];
-}
diff --git a/platform/ios/src/MGLMapView+OpenGL.h b/platform/ios/src/MGLMapView+OpenGL.h
deleted file mode 100644
index b1c13724cb..0000000000
--- a/platform/ios/src/MGLMapView+OpenGL.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#import "MGLMapView+Impl.h"
-#import "MGLMapView_Private.h"
-
-#include <mbgl/gfx/renderable.hpp>
-#include <mbgl/gl/renderer_backend.hpp>
-
-@class MGLMapViewImplDelegate;
-
-/// Adapter responsible for bridging calls from mbgl to MGLMapView and Cocoa.
-class MGLMapViewOpenGLImpl final : public MGLMapViewImpl,
- public mbgl::gl::RendererBackend,
- public mbgl::gfx::Renderable {
-public:
- MGLMapViewOpenGLImpl(MGLMapView*);
- ~MGLMapViewOpenGLImpl() override;
-
-public:
- void restoreFramebufferBinding();
-
-#ifdef MGL_RECREATE_GL_IN_AN_EMERGENCY
-private:
- void emergencyRecreateGL();
-#endif
-
- // Implementation of mbgl::gfx::RendererBackend
-public:
- mbgl::gfx::Renderable& getDefaultRenderable() override {
- return *this;
- }
-
-private:
- void activate() override;
- void deactivate() override;
- // End implementation of mbgl::gfx::RendererBackend
-
- // Implementation of mbgl::gl::RendererBackend
-public:
- void updateAssumedState() override;
-
-private:
- mbgl::gl::ProcAddress getExtensionFunctionPointer(const char* name) override;
- // End implementation of mbgl::gl::Rendererbackend
-
- // Implementation of MGLMapViewImpl
-public:
- mbgl::gfx::RendererBackend& getRendererBackend() override {
- return *this;
- }
-
- EAGLContext* getEAGLContext() override;
- void setOpaque(bool) override;
- void display() override;
- void setPresentsWithTransaction(bool) override;
- void createView() override;
- UIView* getView() override;
- void deleteView() override;
- UIImage* snapshot() override;
- void layoutChanged() override;
- // End implementation of MGLMapViewImpl
-};
diff --git a/platform/ios/src/MGLMapView+OpenGL.mm b/platform/ios/src/MGLMapView+OpenGL.mm
deleted file mode 100644
index ad30b608e5..0000000000
--- a/platform/ios/src/MGLMapView+OpenGL.mm
+++ /dev/null
@@ -1,277 +0,0 @@
-#import "MGLFoundation_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLMapView+OpenGL.h"
-
-#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
-#import "MMEConstants.h"
-#import "MGLMapboxEvents.h"
-#endif
-
-#include <mbgl/gl/renderable_resource.hpp>
-
-#import <GLKit/GLKit.h>
-#import <OpenGLES/EAGL.h>
-#import <QuartzCore/CAEAGLLayer.h>
-
-@interface MGLMapViewImplDelegate : NSObject <GLKViewDelegate>
-@end
-
-@implementation MGLMapViewImplDelegate {
- MGLMapViewOpenGLImpl* _impl;
-}
-
-- (instancetype)initWithImpl:(MGLMapViewOpenGLImpl*)impl {
- if (self = [super init]) {
- _impl = impl;
- }
- return self;
-}
-
-- (void)glkView:(nonnull GLKView*)view drawInRect:(CGRect)rect {
- _impl->render();
-}
-
-@end
-
-namespace {
-CGFloat contentScaleFactor() {
- return [UIScreen instancesRespondToSelector:@selector(nativeScale)]
- ? [[UIScreen mainScreen] nativeScale]
- : [[UIScreen mainScreen] scale];
-}
-} // namespace
-
-class MGLMapViewOpenGLRenderableResource final : public mbgl::gl::RenderableResource {
-public:
- MGLMapViewOpenGLRenderableResource(MGLMapViewOpenGLImpl& backend_)
- : backend(backend_),
- delegate([[MGLMapViewImplDelegate alloc] initWithImpl:&backend]),
- atLeastiOS_12_2_0([NSProcessInfo.processInfo
- isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){ 12, 2, 0 }]) {
- }
-
- void bind() override {
- backend.restoreFramebufferBinding();
- }
-
- mbgl::Size framebufferSize() {
- assert(glView);
- return { static_cast<uint32_t>(glView.drawableWidth),
- static_cast<uint32_t>(glView.drawableHeight) };
- }
-
-private:
- MGLMapViewOpenGLImpl& backend;
-
-public:
- MGLMapViewImplDelegate* delegate = nil;
- GLKView *glView = nil;
- EAGLContext *context = nil;
- const bool atLeastiOS_12_2_0;
-
- // We count how often the context was activated/deactivated so that we can truly deactivate it
- // after the activation count drops to 0.
- NSUInteger activationCount = 0;
-};
-
-MGLMapViewOpenGLImpl::MGLMapViewOpenGLImpl(MGLMapView* nativeView_)
- : MGLMapViewImpl(nativeView_),
- mbgl::gl::RendererBackend(mbgl::gfx::ContextMode::Unique),
- mbgl::gfx::Renderable({ 0, 0 }, std::make_unique<MGLMapViewOpenGLRenderableResource>(*this)) {
-}
-
-MGLMapViewOpenGLImpl::~MGLMapViewOpenGLImpl() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- if (resource.context && [[EAGLContext currentContext] isEqual:resource.context]) {
- [EAGLContext setCurrentContext:nil];
- }
-}
-
-void MGLMapViewOpenGLImpl::setOpaque(const bool opaque) {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- resource.glView.opaque = opaque;
- resource.glView.layer.opaque = opaque;
-}
-
-void MGLMapViewOpenGLImpl::setPresentsWithTransaction(const bool value) {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- CAEAGLLayer* eaglLayer = MGL_OBJC_DYNAMIC_CAST(resource.glView.layer, CAEAGLLayer);
- eaglLayer.presentsWithTransaction = value;
-}
-
-void MGLMapViewOpenGLImpl::display() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
-
- // See https://github.com/mapbox/mapbox-gl-native/issues/14232
- // glClear can be blocked for 1 second. This code is an "escape hatch",
- // an attempt to detect this situation and rebuild the GL views.
- if (mapView.enablePresentsWithTransaction && resource.atLeastiOS_12_2_0) {
- CFTimeInterval before = CACurrentMediaTime();
- [resource.glView display];
- CFTimeInterval after = CACurrentMediaTime();
-
- if (after - before >= 1.0) {
-#ifdef MGL_RECREATE_GL_IN_AN_EMERGENCY
- dispatch_async(dispatch_get_main_queue(), ^{
- emergencyRecreateGL();
- });
-#else
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSError *error = [NSError errorWithDomain:MGLErrorDomain
- code:MGLErrorCodeRenderingError
- userInfo:@{ NSLocalizedFailureReasonErrorKey :
- @"https://github.com/mapbox/mapbox-gl-native/issues/14232" }];
- [[MMEEventsManager sharedManager] reportError:error];
- });
-#endif
- }
- } else {
- [resource.glView display];
- }
-}
-
-void MGLMapViewOpenGLImpl::createView() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- if (resource.glView) {
- return;
- }
-
- if (!resource.context) {
- resource.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
- assert(resource.context);
- }
-
- resource.glView = [[GLKView alloc] initWithFrame:mapView.bounds context:resource.context];
- resource.glView.delegate = resource.delegate;
- resource.glView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- resource.glView.contentScaleFactor = contentScaleFactor();
- resource.glView.contentMode = UIViewContentModeCenter;
- resource.glView.drawableStencilFormat = GLKViewDrawableStencilFormat8;
- resource.glView.drawableDepthFormat = GLKViewDrawableDepthFormat16;
- resource.glView.opaque = mapView.opaque;
- resource.glView.layer.opaque = mapView.opaque;
- resource.glView.enableSetNeedsDisplay = NO;
- CAEAGLLayer* eaglLayer = MGL_OBJC_DYNAMIC_CAST(resource.glView.layer, CAEAGLLayer);
- eaglLayer.presentsWithTransaction = NO;
-
- [mapView insertSubview:resource.glView atIndex:0];
-}
-
-UIView* MGLMapViewOpenGLImpl::getView() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- return resource.glView;
-}
-
-void MGLMapViewOpenGLImpl::deleteView() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- [resource.glView deleteDrawable];
-}
-
-#ifdef MGL_RECREATE_GL_IN_AN_EMERGENCY
-// See https://github.com/mapbox/mapbox-gl-native/issues/14232
-void MGLMapViewOpenGLImpl::emergencyRecreateGL() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- MGLLogError(@"Rendering took too long - creating GL views");
-
- CAEAGLLayer* eaglLayer = MGL_OBJC_DYNAMIC_CAST(resource.glView.layer, CAEAGLLayer);
- eaglLayer.presentsWithTransaction = NO;
-
- [mapView pauseRendering:nil];
-
- // Just performing a pauseRendering:/resumeRendering: pair isn't sufficient - in this case
- // we can still get errors when calling bindDrawable. Here we completely
- // recreate the GLKView
-
- [mapView.userLocationAnnotationView removeFromSuperview];
- [resource.glView removeFromSuperview];
-
- // Recreate the view
- resource.glView = nil;
- createView();
-
- if (mapView.annotationContainerView) {
- [resource.glView insertSubview:mapView.annotationContainerView atIndex:0];
- }
-
- [mapView updateUserLocationAnnotationView];
-
- // Do not bind...yet
-
- if (mapView.window) {
- [mapView resumeRendering:nil];
- eaglLayer = MGL_OBJC_DYNAMIC_CAST(resource.glView.layer, CAEAGLLayer);
- eaglLayer.presentsWithTransaction = mapView.enablePresentsWithTransaction;
- } else {
- MGLLogDebug(@"No window - skipping resumeRendering");
- }
-}
-#endif
-
-mbgl::gl::ProcAddress MGLMapViewOpenGLImpl::getExtensionFunctionPointer(const char* name) {
- static CFBundleRef framework = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengles"));
- if (!framework) {
- throw std::runtime_error("Failed to load OpenGL framework.");
- }
-
- return reinterpret_cast<mbgl::gl::ProcAddress>(CFBundleGetFunctionPointerForName(
- framework, (__bridge CFStringRef)[NSString stringWithUTF8String:name]));
-}
-
-void MGLMapViewOpenGLImpl::activate() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- if (resource.activationCount++) {
- return;
- }
-
- [EAGLContext setCurrentContext:resource.context];
-}
-
-void MGLMapViewOpenGLImpl::deactivate() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- if (--resource.activationCount) {
- return;
- }
-
- [EAGLContext setCurrentContext:nil];
-}
-
-/// This function is called before we start rendering, when iOS invokes our rendering method.
-/// iOS already sets the correct framebuffer and viewport for us, so we need to update the
-/// context state with the anticipated values.
-void MGLMapViewOpenGLImpl::updateAssumedState() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- assumeFramebufferBinding(ImplicitFramebufferBinding);
- assumeViewport(0, 0, resource.framebufferSize());
-}
-
-void MGLMapViewOpenGLImpl::restoreFramebufferBinding() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- if (!implicitFramebufferBound()) {
- // Something modified our state, and we need to bind the original drawable again.
- // Doing this also sets the viewport to the full framebuffer.
- // Note that in reality, iOS does not use the Framebuffer 0 (it's typically 1), and we
- // only use this is a placeholder value.
- [resource.glView bindDrawable];
- updateAssumedState();
- } else {
- // Our framebuffer is still bound, but the viewport might have changed.
- setViewport(0, 0, resource.framebufferSize());
- }
-}
-
-UIImage* MGLMapViewOpenGLImpl::snapshot() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- return resource.glView.snapshot;
-}
-
-void MGLMapViewOpenGLImpl::layoutChanged() {
- const auto scaleFactor = contentScaleFactor();
- size = { static_cast<uint32_t>(mapView.bounds.size.width * scaleFactor),
- static_cast<uint32_t>(mapView.bounds.size.height * scaleFactor) };
-}
-
-EAGLContext* MGLMapViewOpenGLImpl::getEAGLContext() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- return resource.context;
-}
diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h
deleted file mode 100644
index 8f27adee9e..0000000000
--- a/platform/ios/src/MGLMapView.h
+++ /dev/null
@@ -1,1968 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLCompassButton.h"
-#import "MGLFoundation.h"
-#import "MGLGeometry.h"
-#import "MGLMapCamera.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLAnnotationView;
-@class MGLAnnotationImage;
-@class MGLUserLocation;
-@class MGLPolyline;
-@class MGLPolygon;
-@class MGLShape;
-@class MGLStyle;
-
-@protocol MGLMapViewDelegate;
-@protocol MGLAnnotation;
-@protocol MGLOverlay;
-@protocol MGLCalloutView;
-@protocol MGLFeature;
-@protocol MGLLocationManager;
-
-/** Options for `MGLMapView.decelerationRate`. */
-typedef CGFloat MGLMapViewDecelerationRate NS_TYPED_EXTENSIBLE_ENUM;
-
-/** The default deceleration rate for a map view. */
-FOUNDATION_EXTERN MGL_EXPORT const MGLMapViewDecelerationRate MGLMapViewDecelerationRateNormal;
-
-/** A fast deceleration rate for a map view. */
-FOUNDATION_EXTERN MGL_EXPORT const MGLMapViewDecelerationRate MGLMapViewDecelerationRateFast;
-
-/** Disables deceleration in a map view. */
-FOUNDATION_EXTERN MGL_EXPORT const MGLMapViewDecelerationRate MGLMapViewDecelerationRateImmediate;
-
-/**
- The vertical alignment of an annotation within a map view. Used with
- `MGLMapView.userLocationVerticalAlignment`.
- */
-typedef NS_ENUM(NSUInteger, MGLAnnotationVerticalAlignment) {
- /** Aligns the annotation vertically in the center of the map view. */
- MGLAnnotationVerticalAlignmentCenter = 0,
- /** Aligns the annotation vertically at the top of the map view. */
- MGLAnnotationVerticalAlignmentTop,
- /** Aligns the annotation vertically at the bottom of the map view. */
- MGLAnnotationVerticalAlignmentBottom,
-};
-
-/**
- The position of scale bar, compass, logo and attribution in a map view. Used with
- `MGLMapView.scaleBarPosition`,
- `MGLMapView.compassViewPosition`,
- `MGLMapView.logoViewPosition`,
- `MGLMapView.attributionButtonPosition`.
- */
-typedef NS_ENUM(NSUInteger, MGLOrnamentPosition) {
- /** Place the ornament in the top left of the map view. */
- MGLOrnamentPositionTopLeft = 0,
- /** Place the ornament in the top right of the map view. */
- MGLOrnamentPositionTopRight,
- /** Place the ornament in the bottom left of the map view. */
- MGLOrnamentPositionBottomLeft,
- /** Place the ornament in the bottom right of the map view. */
- MGLOrnamentPositionBottomRight,
-};
-
-/**
- The mode used to track the user location on the map. Used with
- `MGLMapView.userTrackingMode`.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/user-tracking-mode/">
- Switch between user tracking modes</a> example to learn how to toggle modes and
- how each mode behaves.
- */
-typedef NS_ENUM(NSUInteger, MGLUserTrackingMode) {
- /** The map does not follow the user location. */
- MGLUserTrackingModeNone = 0,
- /** The map follows the user location. This tracking mode falls back
- to `MGLUserTrackingModeNone` if the user pans the map view. */
- MGLUserTrackingModeFollow,
- /**
- The map follows the user location and rotates when the heading changes.
- The default user location annotation displays a fan-shaped indicator with
- the current heading. The heading indicator represents the direction the
- device is facing, which is sized according to the reported accuracy.
-
- This tracking mode is disabled if the user pans the map view, but
- remains enabled if the user zooms in. If the user rotates the map
- view, this tracking mode will fall back to `MGLUserTrackingModeFollow`.
- */
- MGLUserTrackingModeFollowWithHeading,
- /**
- The map follows the user location and rotates when the course changes.
- Course represents the direction in which the device is traveling.
- The default user location annotation shows a puck-shaped indicator
- that rotates as the course changes.
-
- This tracking mode is disabled if the user pans the map view, but
- remains enabled if the user zooms in. If the user rotates the map view,
- this tracking mode will fall back to `MGLUserTrackingModeFollow`.
- */
- MGLUserTrackingModeFollowWithCourse,
-};
-
-/** Options for `MGLMapView.preferredFramesPerSecond`. */
-typedef NSInteger MGLMapViewPreferredFramesPerSecond NS_TYPED_EXTENSIBLE_ENUM;
-
-/**
- The default frame rate. This can be either 30 FPS or 60 FPS, depending on
- device capabilities.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLMapViewPreferredFramesPerSecond MGLMapViewPreferredFramesPerSecondDefault;
-
-/** A conservative frame rate; typically 30 FPS. */
-FOUNDATION_EXTERN MGL_EXPORT const MGLMapViewPreferredFramesPerSecond MGLMapViewPreferredFramesPerSecondLowPower;
-
-/** The maximum supported frame rate; typically 60 FPS. */
-FOUNDATION_EXTERN MGL_EXPORT const MGLMapViewPreferredFramesPerSecond MGLMapViewPreferredFramesPerSecondMaximum;
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLMissingLocationServicesUsageDescriptionException;
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLUserLocationAnnotationTypeException;
-
-/**
- An interactive, customizable map view with an interface similar to the one
- provided by Apple’s MapKit.
-
- Using `MGLMapView`, you can embed the map inside a view, allow users to
- manipulate it with standard gestures, animate the map between different
- viewpoints, and present information in the form of annotations and overlays.
-
- The map view loads scalable vector tiles that conform to the
- <a href="https://github.com/mapbox/vector-tile-spec">Mapbox Vector Tile Specification</a>.
- It styles them with a style that conforms to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/">Mapbox Style Specification</a>.
- Such styles can be designed in
- <a href="https://www.mapbox.com/studio/">Mapbox Studio</a> and hosted on
- mapbox.com.
-
- A collection of Mapbox-hosted styles is available through the `MGLStyle`
- class. These basic styles use
- <a href="https://www.mapbox.com/developers/vector-tiles/mapbox-streets">Mapbox Streets</a>
- or <a href="https://www.mapbox.com/satellite/">Mapbox Satellite</a> data
- sources, but you can specify a custom style that makes use of your own data.
-
- Mapbox-hosted vector tiles and styles require an API access token, which you
- can obtain from the
- <a href="https://www.mapbox.com/studio/account/tokens/">Mapbox account page</a>.
- Access tokens associate requests to Mapbox’s vector tile and style APIs with
- your Mapbox account. They also deter other developers from using your styles
- without your permission.
-
- Because `MGLMapView` loads asynchronously, several delegate methods are available
- for receiving map-related updates. These methods can be used to ensure that certain operations
- have completed before taking any additional actions. Information on these methods is located
- in the `MGLMapViewDelegate` protocol documentation.
-
- Adding your own gesture recognizer to `MGLMapView` will block the corresponding
- gesture recognizer built into `MGLMapView`. To avoid conflicts, define which
- gesture takes precedence. For example, you can create your own
- `UITapGestureRecognizer` that will be invoked only if the default `MGLMapView`
- tap gesture fails:
-
- ```swift
- let mapTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(myCustomFunction))
- for recognizer in mapView.gestureRecognizers! where recognizer is UITapGestureRecognizer {
- mapTapGestureRecognizer.require(toFail: recognizer)
- }
- mapView.addGestureRecognizer(mapTapGestureRecognizer)
- ```
-
- @note You are responsible for getting permission to use the map data and for
- ensuring that your use adheres to the relevant terms of use.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/simple-map-view/">
- Simple map view</a> example to learn how to initialize a basic `MGLMapView`.
- */
-MGL_EXPORT
-@interface MGLMapView : UIView
-
-#pragma mark Creating Instances
-
-/**
- Initializes and returns a newly allocated map view with the specified frame
- and the default style.
-
- @param frame The frame for the view, measured in points.
- @return An initialized map view.
- */
-- (instancetype)initWithFrame:(CGRect)frame;
-
-/**
- Initializes and returns a newly allocated map view with the specified frame
- and style URL.
-
- @param frame The frame for the view, measured in points.
- @param styleURL URL of the map style to display. The URL may be a full HTTP
- or HTTPS URL, a Mapbox style URL
- (`mapbox://styles/{user}/{style}`), or a path to a local file relative
- to the application’s resource path. Specify `nil` for the default style.
- @return An initialized map view.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/custom-style/">
- Apply a style designed in Mapbox Studio</a> example to learn how to
- initialize an `MGLMapView` with a custom style. See the
- <a href="https://docs.mapbox.com/ios/maps/examples/raster-styles/"> Apply a
- style designed in Mapbox Studio Classic</a> example to learn how to intialize
- an `MGLMapView` with a Studio Classic style _or_ a custom style JSON. See the
- <a href="https://docs.mapbox.com/ios/maps/examples/source-custom-vector/"> Use
- third-party vector tiles</a> example to learn how to initialize an
- `MGLMapView` with a third-party tile source.
- */
-- (instancetype)initWithFrame:(CGRect)frame styleURL:(nullable NSURL *)styleURL;
-
-#pragma mark Accessing the Delegate
-
-/**
- The receiver’s delegate.
-
- A map view sends messages to its delegate to notify it of changes to its
- contents or the viewpoint. The delegate also provides information about
- annotations displayed on the map, such as the styles to apply to individual
- annotations.
- */
-@property(nonatomic, weak, nullable) IBOutlet id<MGLMapViewDelegate> delegate;
-
-#pragma mark Configuring the Map’s Appearance
-
-/**
- The style currently displayed in the receiver.
-
- Unlike the `styleURL` property, this property is set to an object that allows
- you to manipulate every aspect of the style locally.
-
- If the style is loading, this property is set to `nil` until the style finishes
- loading. If the style has failed to load, this property is set to `nil`.
- Because the style loads asynchronously, you should manipulate it in the
- `-[MGLMapViewDelegate mapView:didFinishLoadingStyle:]` or
- `-[MGLMapViewDelegate mapViewDidFinishLoadingMap:]` method. It is not possible
- to manipulate the style before it has finished loading.
-
- @note The default styles provided by Mapbox contain sources and layers with
- identifiers that will change over time. Applications that use APIs that
- manipulate a style’s sources and layers must first set the style URL to an
- explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`.
- */
-@property (nonatomic, readonly, nullable) MGLStyle *style;
-
-/**
- URL of the style currently displayed in the receiver.
-
- The URL may be a full HTTP or HTTPS URL, a Mapbox
- style URL (`mapbox://styles/{user}/{style}`), or a path to a local file
- relative to the application’s resource path.
-
- If you set this property to `nil`, the receiver will use the default style
- and this property will automatically be set to that style’s URL.
-
- If you want to modify the current style without replacing it outright, or if
- you want to introspect individual style attributes, use the `style` property.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/switch-styles/">
- Switch between map styles</a> example to learn how to change the style of
- a map at runtime.
- */
-@property (nonatomic, null_resettable) NSURL *styleURL;
-
-/**
- Reloads the style.
-
- You do not normally need to call this method. The map view automatically
- responds to changes in network connectivity by reloading the style. You may
- need to call this method if you change the access token after a style has
- loaded but before loading a style associated with a different Mapbox account.
-
- This method does not bust the cache. Even if the style has recently changed on
- the server, calling this method does not necessarily ensure that the map view
- reflects those changes.
- */
-- (IBAction)reloadStyle:(nullable id)sender;
-
-/**
- A boolean value that indicates if whether the map view should automatically
- adjust its content insets.
-
- When this property is set to `YES` the map automatically updates its
- `contentInset` property to account for any area not covered by navigation bars,
- tab bars, toolbars, and other ancestors that obscure the map view.
-
- */
-@property (assign) BOOL automaticallyAdjustsContentInset;
-
-/**
- A Boolean value indicating whether the map may display scale information.
-
- The scale bar may not be shown at all zoom levels. The scale bar becomes visible
- when the maximum distance visible on the map view is less than 400 miles (800
- kilometers). The zoom level where this occurs depends on the latitude at the map
- view’s center coordinate, as well as the device screen width. At latitudes
- farther from the equator, the scale bar becomes visible at lower zoom levels.
-
- The unit of measurement is determined by the user's device locale.
-
- The view controlled by this property is available at `scaleBar`. The default value
- of this property is `NO`.
- */
-@property (nonatomic, assign) BOOL showsScale;
-
-/**
- A control indicating the scale of the map. The scale bar is positioned in the
- upper-left corner. Enable the scale bar via `showsScale`.
- */
-@property (nonatomic, readonly) UIView *scaleBar;
-
-/**
- The position of the scale bar. The default value is `MGLOrnamentPositionTopLeft`.
- */
-@property (nonatomic, assign) MGLOrnamentPosition scaleBarPosition;
-
-/**
- A `CGPoint` indicating the position offset of the scale bar.
- */
-@property (nonatomic, assign) CGPoint scaleBarMargins;
-
-/**
- A control indicating the map’s direction and allowing the user to manipulate
- the direction, positioned in the upper-right corner.
- */
-@property (nonatomic, readonly) MGLCompassButton *compassView;
-
-/**
- The position of the compass view. The default value is `MGLOrnamentPositionTopRight`.
- */
-@property (nonatomic, assign) MGLOrnamentPosition compassViewPosition;
-
-/**
- A `CGPoint` indicating the position offset of the compass.
- */
-@property (nonatomic, assign) CGPoint compassViewMargins;
-
-/**
- The Mapbox logo, positioned in the lower-left corner.
-
- @note The Mapbox terms of service, which governs the use of Mapbox-hosted
- vector tiles and styles,
- <a href="https://docs.mapbox.com/help/how-mapbox-works/attribution/">requires</a> most Mapbox
- customers to display the Mapbox logo. If this applies to you, do not
- hide this view or change its contents.
- */
-@property (nonatomic, readonly) UIImageView *logoView;
-
-/**
- The position of the logo view. The default value is `MGLOrnamentPositionBottomLeft`.
- */
-@property (nonatomic, assign) MGLOrnamentPosition logoViewPosition;
-
-/**
- A `CGPoint` indicating the position offset of the logo.
- */
-@property (nonatomic, assign) CGPoint logoViewMargins;
-
-
-/**
- A view showing legally required copyright notices and telemetry settings,
- positioned at the bottom-right of the map view.
-
- If you choose to reimplement this view, assign the `-showAttribution:` method
- as the action for your view to present the default notices and settings.
-
- @note The Mapbox terms of service, which governs the use of Mapbox-hosted
- vector tiles and styles,
- <a href="https://www.mapbox.com/tos/#[FamaFama]">requires</a> these
- copyright notices to accompany any map that features Mapbox-designed styles,
- OpenStreetMap data, or other Mapbox data such as satellite or terrain
- data. If that applies to this map view, do not hide this view or remove
- any notices from it.
-
- @note You are additionally
- <a href="https://www.mapbox.com/tos/#[FamaFama]">required</a>
- to provide users with the option to disable anonymous usage and location
- sharing (telemetry). If this view is hidden, you must implement this
- setting elsewhere in your app or via `Settings.bundle`. See our
- <a href="https://docs.mapbox.com/help/how-mapbox-works/attribution/#mapbox-maps-sdk-for-ios">website</a> for
- implementation help.
- */
-@property (nonatomic, readonly) UIButton *attributionButton;
-
-/**
- The position of the attribution button. The default value is `MGLOrnamentPositionBottomRight`.
- */
-@property (nonatomic, assign) MGLOrnamentPosition attributionButtonPosition;
-
-/**
- A `CGPoint` indicating the position offset of the attribution.
- */
-@property (nonatomic, assign) CGPoint attributionButtonMargins;
-
-/**
- Show the attribution and telemetry action sheet.
-
- This action is performed when the user taps on the attribution button provided
- by default via the `attributionButton` property. If you implement a custom
- attribution button, you should add this action to the button.
- */
-- (IBAction)showAttribution:(id)sender;
-
-/**
- The preferred frame rate at which the map view is rendered.
-
- The default value for this property is
- `MGLMapViewPreferredFramesPerSecondDefault`, which will adaptively set the
- preferred frame rate based on the capability of the user’s device to maintain
- a smooth experience.
-
- In addition to the provided `MGLMapViewPreferredFramesPerSecond` options, this
- property can be set to arbitrary integer values.
-
- @see `CADisplayLink.preferredFramesPerSecond`
- */
-@property (nonatomic, assign) MGLMapViewPreferredFramesPerSecond preferredFramesPerSecond;
-
-/**
- A Boolean value indicating whether the map should prefetch tiles.
-
- When this property is set to `YES`, the map view prefetches tiles designed for
- a low zoom level and displays them until receiving more detailed tiles for the
- current zoom level. The prefetched tiles typically contain simplified versions
- of each shape, improving the map view’s perceived performance.
-
- The default value of this property is `YES`.
- */
-@property (nonatomic, assign) BOOL prefetchesTiles;
-
-#pragma mark Displaying the User’s Location
-
-/**
- The object that this map view uses to start and stop the delivery of
- location-related updates.
-
- To receive the current user location, implement the
- `-[MGLMapViewDelegate mapView:didUpdateUserLocation:]` and
- `-[MGLMapViewDelegate mapView:didFailToLocateUserWithError:]` methods.
-
- If setting this property to `nil` or if no custom manager is provided this
- property is set to the default location manager.
-
- `MGLMapView` uses a default location manager. If you want to substitute your
- own location manager, you should do so by setting this property before setting
- `showsUserLocation` to `YES`. To restore the default location manager,
- set this property to `nil`.
- */
-@property (nonatomic, null_resettable) id<MGLLocationManager> locationManager;
-
-/**
- A Boolean value indicating whether the map may display the user location.
-
- Setting this property to `YES` causes the map view to use the Core Location
- framework to find the current location. As long as this property is `YES`, the
- map view continues to track the user’s location and update it periodically.
-
- This property does not indicate whether the user’s position is actually visible
- on the map, only whether the map view is allowed to display it. To determine
- whether the user’s position is visible, use the `userLocationVisible` property.
- The default value of this property is `NO`.
-
- Your app must specify a value for `NSLocationWhenInUseUsageDescription` or
- `NSLocationAlwaysUsageDescription` in its `Info.plist` to satisfy the
- requirements of the underlying Core Location framework when enabling this
- property.
-
- If you implement a custom location manager, set the `locationManager` before
- calling `showsUserLocation`.
- */
-@property (nonatomic, assign) BOOL showsUserLocation;
-
-/**
- A Boolean value indicating whether the device’s current location is visible in
- the map view.
-
- Use `showsUserLocation` to control the visibility of the on-screen user
- location annotation.
- */
-@property (nonatomic, assign, readonly, getter=isUserLocationVisible) BOOL userLocationVisible;
-
-/**
- Returns the annotation object indicating the user’s current location.
- */
-@property (nonatomic, readonly, nullable) MGLUserLocation *userLocation;
-
-/**
- The mode used to track the user location. The default value is
- `MGLUserTrackingModeNone`.
-
- Changing the value of this property updates the map view with an animated
- transition. If you don’t want to animate the change, use the
- `-setUserTrackingMode:animated:` method instead.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/user-location-annotation/">
- Customize the user location annotation</a> to learn how to customize the
- default user location annotation shown by `MGLUserTrackingMode`.
- */
-@property (nonatomic, assign) MGLUserTrackingMode userTrackingMode;
-
-/**
- Deprecated. Sets the mode used to track the user location, with an optional transition.
-
- To specify a completion handler to execute after the animation finishes, use
- the `-setUserTrackingMode:animated:completionHandler:` method.
-
- @param mode The mode used to track the user location.
- @param animated If `YES`, there is an animated transition from the current
- viewport to a viewport that results from the change to `mode`. If `NO`, the
- map view instantaneously changes to the new viewport. This parameter only
- affects the initial transition; subsequent changes to the user location or
- heading are always animated.
- */
-- (void)setUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated __attribute__((deprecated("Use `-setUserTrackingMode:animated:completionHandler:` instead.")));
-
-/**
- Sets the mode used to track the user location, with an optional transition and
- completion handler.
-
- @param mode The mode used to track the user location.
- @param animated If `YES`, there is an animated transition from the current
- viewport to a viewport that results from the change to `mode`. If `NO`, the
- map view instantaneously changes to the new viewport. This parameter only
- affects the initial transition; subsequent changes to the user location or
- heading are always animated.
- @param completion The block executed after the animation finishes.
- */
-- (void)setUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-/**
- The vertical alignment of the user location annotation within the receiver. The
- default value is `MGLAnnotationVerticalAlignmentCenter`.
-
- Changing the value of this property updates the map view with an animated
- transition. If you don’t want to animate the change, use the
- `-setUserLocationVerticalAlignment:animated:` method instead.
- */
-@property (nonatomic, assign) MGLAnnotationVerticalAlignment userLocationVerticalAlignment __attribute__((deprecated("Use `-[MGLMapViewDelegate mapViewUserLocationAnchorPoint:]` instead.")));
-
-/**
- Sets the vertical alignment of the user location annotation within the
- receiver, with an optional transition.
-
- @param alignment The vertical alignment of the user location annotation.
- @param animated If `YES`, the user location annotation animates to its new
- position within the map view. If `NO`, the user location annotation
- instantaneously moves to its new position.
- */
-- (void)setUserLocationVerticalAlignment:(MGLAnnotationVerticalAlignment)alignment animated:(BOOL)animated __attribute__((deprecated("Use `-[MGLMapViewDelegate mapViewUserLocationAnchorPoint:]` instead.")));
-
-/**
- Updates the position of the user location annotation view by retreiving the user's last
- known location.
- */
-- (void)updateUserLocationAnnotationView;
-
-/**
- Updates the position of the user location annotation view by retreiving the user's last
- known location with a specified duration.
- @param duration The duration to animate the change in seconds.
-*/
-- (void)updateUserLocationAnnotationViewAnimatedWithDuration:(NSTimeInterval)duration;
-
-/**
- A Boolean value indicating whether the user location annotation may display a
- permanent heading indicator.
-
- Setting this property to `YES` causes the default user location annotation to
- appear and always show an arrow-shaped heading indicator, if heading is
- available. This property does not rotate the map; for that, see
- `MGLUserTrackingModeFollowWithHeading`.
-
- This property has no effect when `userTrackingMode` is
- `MGLUserTrackingModeFollowWithHeading` or
- `MGLUserTrackingModeFollowWithCourse`.
-
- The default value of this property is `NO`.
- */
-@property (nonatomic, assign) BOOL showsUserHeadingIndicator;
-
-/**
- Whether the map view should display a heading calibration alert when necessary.
- The default value is `YES`.
- */
-@property (nonatomic, assign) BOOL displayHeadingCalibration;
-
-/**
- The geographic coordinate that is the subject of observation as the user
- location is being tracked.
-
- By default, this property is set to an invalid coordinate, indicating that
- there is no target. In course tracking mode, the target forms one of two foci
- in the viewport, the other being the user location annotation. Typically, this
- property is set to a destination or waypoint in a real-time navigation scene.
- As the user annotation moves toward the target, the map automatically zooms in
- to fit both foci optimally within the viewport.
-
- This property has no effect if the `userTrackingMode` property is set to a
- value other than `MGLUserTrackingModeFollowWithCourse`.
-
- Changing the value of this property updates the map view with an animated
- transition. If you don’t want to animate the change, use the
- `-setTargetCoordinate:animated:` method instead.
- */
-@property (nonatomic, assign) CLLocationCoordinate2D targetCoordinate;
-
-/**
- Deprecated. Sets the geographic coordinate that is the subject of observation as
- the user location is being tracked, with an optional transition animation.
-
- By default, the target coordinate is set to an invalid coordinate, indicating
- that there is no target. In course tracking mode, the target forms one of two
- foci in the viewport, the other being the user location annotation. Typically,
- the target is set to a destination or waypoint in a real-time navigation scene.
- As the user annotation moves toward the target, the map automatically zooms in
- to fit both foci optimally within the viewport.
-
- This method has no effect if the `userTrackingMode` property is set to a value
- other than `MGLUserTrackingModeFollowWithCourse`.
-
- To specify a completion handler to execute after the animation finishes, use
- the `-setTargetCoordinate:animated:completionHandler:` method.
-
- @param targetCoordinate The target coordinate to fit within the viewport.
- @param animated If `YES`, the map animates to fit the target within the map
- view. If `NO`, the map fits the target instantaneously.
- */
-- (void)setTargetCoordinate:(CLLocationCoordinate2D)targetCoordinate animated:(BOOL)animated __attribute__((deprecated("Use `-setTargetCoordinate:animated:completionHandler:` instead.")));
-
-/**
- Sets the geographic coordinate that is the subject of observation as the user
- location is being tracked, with an optional transition animation and completion
- handler.
-
- By default, the target coordinate is set to an invalid coordinate, indicating
- that there is no target. In course tracking mode, the target forms one of two
- foci in the viewport, the other being the user location annotation. Typically,
- the target is set to a destination or waypoint in a real-time navigation scene.
- As the user annotation moves toward the target, the map automatically zooms in
- to fit both foci optimally within the viewport.
-
- This method has no effect if the `userTrackingMode` property is set to a value
- other than `MGLUserTrackingModeFollowWithCourse`.
-
- @param targetCoordinate The target coordinate to fit within the viewport.
- @param animated If `YES`, the map animates to fit the target within the map
- view. If `NO`, the map fits the target instantaneously.
- @param completion The block executed after the animation finishes.
- */
-- (void)setTargetCoordinate:(CLLocationCoordinate2D)targetCoordinate animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-#pragma mark Configuring How the User Interacts with the Map
-
-/**
- A Boolean value that determines whether the user may zoom the map in and
- out, changing the zoom level.
-
- When this property is set to `YES`, the default, the user may zoom the map
- in and out by pinching two fingers or by double tapping, holding, and moving
- the finger up and down.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still change the map zoom
- programmatically.
- */
-@property(nonatomic, getter=isZoomEnabled) BOOL zoomEnabled;
-
-/**
- A Boolean value that determines whether the user may scroll around the map,
- changing the center coordinate.
-
- When this property is set to `YES`, the default, the user may scroll the map
- by dragging or swiping with one finger.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still change the map location
- programmatically.
- */
-@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled;
-
-/**
- A Boolean value that determines whether the user may rotate the map,
- changing the direction.
-
- When this property is set to `YES`, the default, the user may rotate the map
- by moving two fingers in a circular motion.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still rotate the map
- programmatically.
- */
-@property(nonatomic, getter=isRotateEnabled) BOOL rotateEnabled;
-
-/**
- A Boolean value that determines whether the user may change the pitch (tilt) of
- the map.
-
- When this property is set to `YES`, the default, the user may tilt the map by
- vertically dragging two fingers.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still change the pitch of the map
- programmatically.
-
- The default value of this property is `YES`.
- */
-@property(nonatomic, getter=isPitchEnabled) BOOL pitchEnabled;
-
-/**
- A Boolean value that determines whether the user will receive haptic feedback
- for certain interactions with the map.
-
- When this property is set to `YES`, the default, a `UIImpactFeedbackStyleLight`
- haptic feedback event be played when the user rotates the map to due north
- (0°).
-
- This feature requires a device that supports haptic feedback, running iOS 10 or
- newer.
- */
-@property(nonatomic, getter=isHapticFeedbackEnabled) BOOL hapticFeedbackEnabled;
-
-/**
- A floating-point value that determines the rate of deceleration after the user
- lifts their finger.
-
- Your application can use the `MGLMapViewDecelerationRateNormal` and
- `MGLMapViewDecelerationRateFast` constants as reference points for reasonable
- deceleration rates. `MGLMapViewDecelerationRateImmediate` can be used to
- disable deceleration entirely.
- */
-@property(nonatomic) CGFloat decelerationRate;
-
-#pragma mark Manipulating the Viewpoint
-
-/**
- The geographic coordinate at the center of the map view.
-
- Changing the value of this property centers the map on the new coordinate
- without changing the current zoom level.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setCenterCoordinate:animated:` method
- instead.
- */
-@property (nonatomic) CLLocationCoordinate2D centerCoordinate;
-
-/**
- Changes the center coordinate of the map and optionally animates the change.
-
- Changing the center coordinate centers the map on the new coordinate without
- changing the current zoom level. For animated changes, wait until the map view has
- finished loading before calling this method.
-
- @param coordinate The new center coordinate for the map.
- @param animated Specify `YES` if you want the map view to scroll to the new
- location or `NO` if you want the map to display the new location
- immediately.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`.
- */
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated;
-
-/**
- Changes the center coordinate and zoom level of the map and optionally animates
- the change. For animated changes, wait until the map view has
- finished loading before calling this method.
-
- @param centerCoordinate The new center coordinate for the map.
- @param zoomLevel The new zoom level for the map.
- @param animated Specify `YES` if you want the map view to animate scrolling and
- zooming to the new location or `NO` if you want the map to display the new
- location immediately.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`.
- */
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel animated:(BOOL)animated;
-
-/**
- Changes the center coordinate, zoom level, and direction of the map and
- optionally animates the change. For animated changes, wait until the map view has
- finished loading before calling this method.
-
- @param centerCoordinate The new center coordinate for the map.
- @param zoomLevel The new zoom level for the map.
- @param direction The new direction for the map, measured in degrees relative to
- true north. A negative value leaves the map’s direction unchanged.
- @param animated Specify `YES` if you want the map view to animate scrolling,
- zooming, and rotating to the new location or `NO` if you want the map to
- display the new location immediately.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`.
- */
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel direction:(CLLocationDirection)direction animated:(BOOL)animated;
-
-/**
- Changes the center coordinate, zoom level, and direction of the map, calling a
- completion handler at the end of an optional animation. For animated changes,
- wait until the map view has finished loading before calling this method.
-
- @param centerCoordinate The new center coordinate for the map.
- @param zoomLevel The new zoom level for the map.
- @param direction The new direction for the map, measured in degrees relative to
- true north. A negative value leaves the map’s direction unchanged.
- @param animated Specify `YES` if you want the map view to animate scrolling,
- zooming, and rotating to the new location or `NO` if you want the map to
- display the new location immediately.
- @param completion The block executed after the animation finishes.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`.
- */
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel direction:(CLLocationDirection)direction animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-/** The zoom level of the receiver.
-
- In addition to affecting the visual size and detail of features on the map,
- the zoom level affects the size of the vector tiles that are loaded. At zoom
- level 0, each tile covers the entire world map; at zoom level 1, it covers ¼
- of the world; at zoom level 2, <sup>1</sup>⁄<sub>16</sub> of the world, and
- so on.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setZoomLevel:animated:` method instead.
- */
-@property (nonatomic) double zoomLevel;
-
-/**
- Changes the zoom level of the map and optionally animates the change.
-
- Changing the zoom level scales the map without changing the current center
- coordinate.
-
- @param zoomLevel The new zoom level for the map.
- @param animated Specify `YES` if you want the map view to animate the change
- to the new zoom level or `NO` if you want the map to display the new
- zoom level immediately.
- */
-- (void)setZoomLevel:(double)zoomLevel animated:(BOOL)animated;
-
-/**
- * The minimum zoom level at which the map can be shown.
- *
- * Depending on the map view’s aspect ratio, the map view may be prevented
- * from reaching the minimum zoom level, in order to keep the map from
- * repeating within the current viewport.
- *
- * If the value of this property is greater than that of the
- * maximumZoomLevel property, the behavior is undefined.
- *
- * The default minimumZoomLevel is 0.
- */
-@property (nonatomic) double minimumZoomLevel;
-
-/**
- * The maximum zoom level the map can be shown at.
- *
- * If the value of this property is smaller than that of the
- * minimumZoomLevel property, the behavior is undefined.
- *
- * The default maximumZoomLevel is 22. The upper bound for this property
- * is 25.5.
- */
-@property (nonatomic) double maximumZoomLevel;
-
-/**
- The heading of the map, measured in degrees clockwise from true north.
-
- The value `0` means that the top edge of the map view corresponds to true
- north. The value `90` means the top of the map is pointing due east. The
- value `180` means the top of the map points due south, and so on.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setDirection:animated:` method instead.
- */
-@property (nonatomic) CLLocationDirection direction;
-
-/**
- Changes the heading of the map and optionally animates the change.
-
- @param direction The heading of the map, measured in degrees clockwise from
- true north.
- @param animated Specify `YES` if you want the map view to animate the change
- to the new heading or `NO` if you want the map to display the new
- heading immediately.
-
- Changing the heading rotates the map without changing the current center
- coordinate or zoom level.
- */
-- (void)setDirection:(CLLocationDirection)direction animated:(BOOL)animated;
-
-/**
- Resets the map rotation to a northern heading — a `direction` of `0` degrees.
- */
-- (IBAction)resetNorth;
-
-/**
- Resets the map to the current style’s default viewport.
-
- If the style doesn’t specify a default viewport, the map resets to a minimum
- zoom level, a center coordinate of (0, 0), and a northern heading.
- */
-- (IBAction)resetPosition;
-
-/**
- The coordinate bounds visible in the receiver’s viewport.
-
- Changing the value of this property updates the receiver immediately. If you
- want to animate the change, call `-setVisibleCoordinateBounds:animated:`
- instead.
-
- If a longitude is less than −180 degrees or greater than 180 degrees, the
- visible bounds straddles the antimeridian or international date line. For
- example, if both Tokyo and San Francisco are visible, the visible bounds might
- extend from (35.68476, −220.24257) to (37.78428, −122.41310).
- */
-@property (nonatomic) MGLCoordinateBounds visibleCoordinateBounds;
-
-/**
- Changes the receiver’s viewport to fit the given coordinate bounds,
- optionally animating the change.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- @param bounds The bounds that the viewport will show in its entirety.
- @param animated Specify `YES` to animate the change by smoothly scrolling
- and zooming or `NO` to immediately display the given bounds.
- */
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds animated:(BOOL)animated;
-
-/**
- Deprecated. Changes the receiver’s viewport to fit the given coordinate bounds with
- some additional padding on each side.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- To specify a completion handler to execute after the animation finishes, use
- the `-setVisibleCoordinateBounds:edgePadding:animated:completionHandler:` method.
-
- @param bounds The bounds that the viewport will show in its entirety.
- @param insets The minimum padding (in screen points) that will be visible
- around the given coordinate bounds.
- @param animated Specify `YES` to animate the change by smoothly scrolling and
- zooming or `NO` to immediately display the given bounds.
- */
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated __attribute__((deprecated("Use `-setVisibleCoordinateBounds:edgePadding:animated:completionHandler:` instead.")));
-
-/**
- Changes the receiver’s viewport to fit the given coordinate bounds with some
- additional padding on each side, optionally calling a completion handler.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- @param bounds The bounds that the viewport will show in its entirety.
- @param insets The minimum padding (in screen points) that will be visible
- around the given coordinate bounds.
- @param animated Specify `YES` to animate the change by smoothly scrolling and
- zooming or `NO` to immediately display the given bounds.
- @param completion The block executed after the animation finishes.
- */
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-/**
- Changes the receiver’s viewport to fit all of the given coordinates with some
- additional padding on each side.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible coordinates to (35.68476, −220.24257) and (37.78428, −122.41310).
-
- @param coordinates The coordinates that the viewport will show.
- @param count The number of coordinates. This number must not be greater than
- the number of elements in `coordinates`.
- @param insets The minimum padding (in screen points) that will be visible
- around the given coordinate bounds.
- @param animated Specify `YES` to animate the change by smoothly scrolling and
- zooming or `NO` to immediately display the given bounds.
- */
-- (void)setVisibleCoordinates:(const CLLocationCoordinate2D *)coordinates count:(NSUInteger)count edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated;
-
-/**
- Changes the receiver’s viewport to fit all of the given coordinates with some
- additional padding on each side, optionally calling a completion handler.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible coordinates to (35.68476, −220.24257) and (37.78428, −122.41310).
-
- @param coordinates The coordinates that the viewport will show.
- @param count The number of coordinates. This number must not be greater than
- the number of elements in `coordinates`.
- @param insets The minimum padding (in screen points) that will be visible
- around the given coordinate bounds.
- @param direction The direction to rotate the map to, measured in degrees
- relative to true north. A negative value leaves the map’s direction
- unchanged.
- @param duration The duration to animate the change in seconds.
- @param function The timing function to animate the change.
- @param completion The block executed after the animation finishes.
- */
-- (void)setVisibleCoordinates:(const CLLocationCoordinate2D *)coordinates count:(NSUInteger)count edgePadding:(UIEdgeInsets)insets direction:(CLLocationDirection)direction duration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion;
-
-/**
- Sets the visible region so that the map displays the specified annotations.
-
- Calling this method updates the value in the `visibleCoordinateBounds` property
- and potentially other properties to reflect the new map region. A small amount
- of padding is reserved around the edges of the map view. To specify a different
- amount of padding, use the `-showAnnotations:edgePadding:animated:` method.
-
- @param annotations The annotations that you want to be visible in the map.
- @param animated `YES` if you want the map region change to be animated, or `NO`
- if you want the map to display the new region immediately without animations.
- */
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations animated:(BOOL)animated;
-
-/**
- Deprecated. Sets the visible region so that the map displays the specified
- annotations with the specified amount of padding on each side.
-
- Calling this method updates the value in the `visibleCoordinateBounds` property
- and potentially other properties to reflect the new map region.
-
- To specify a completion handler to execute after the animation finishes, use
- the `-showAnnotations:edgePadding:animated:completionHandler:` method.
-
- @param annotations The annotations that you want to be visible in the map.
- @param insets The minimum padding (in screen points) around the edges of the
- map view to keep clear of annotations.
- @param animated `YES` if you want the map region change to be animated, or `NO`
- if you want the map to display the new region immediately without animations.
- */
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated __attribute__((deprecated("Use `-showAnnotations:edgePadding:animated:completionHandler:` instead.")));
-
-/**
- Sets the visible region so that the map displays the specified annotations with
- the specified amount of padding on each side and an optional completion
- handler.
-
- Calling this method updates the value in the `visibleCoordinateBounds` property
- and potentially other properties to reflect the new map region.
-
- @param annotations The annotations that you want to be visible in the map.
- @param insets The minimum padding (in screen points) around the edges of the
- map view to keep clear of annotations.
- @param animated `YES` if you want the map region change to be animated, or `NO`
- if you want the map to display the new region immediately without animations.
- @param completion The block executed after the animation finishes.
- */
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-/**
- A camera representing the current viewpoint of the map.
- */
-@property (nonatomic, copy) MGLMapCamera *camera;
-
-/**
- Moves the viewpoint to a different location with respect to the map with an
- optional transition animation. For animated changes, wait until the map view has
- finished loading before calling this method.
-
- @param camera The new viewpoint.
- @param animated Specify `YES` if you want the map view to animate the change to
- the new viewpoint or `NO` if you want the map to display the new viewpoint
- immediately.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/camera-animation/">
- Camera animation</a> example to learn how to trigger an animation that
- rotates around a central point.
- */
-- (void)setCamera:(MGLMapCamera *)camera animated:(BOOL)animated;
-
-/**
- Moves the viewpoint to a different location with respect to the map with an
- optional transition duration and timing function. For animated changes, wait
- until the map view has finished loading before calling this method.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously.
- @param function A timing function used for the animation. Set this parameter to
- `nil` for a transition that matches most system animations. If the duration
- is `0`, this parameter is ignored.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/camera-animation/">
- Camera animation</a> example to learn how to create a timed animation that
- rotates around a central point for a specific duration.
- */
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function;
-
-/**
- Moves the viewpoint to a different location with respect to the map with an
- optional transition duration and timing function. For animated changes, wait
- until the map view has finished loading before calling this method.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously.
- @param function A timing function used for the animation. Set this parameter to
- `nil` for a transition that matches most system animations. If the duration
- is `0`, this parameter is ignored.
- @param completion The block to execute after the animation finishes.
- */
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion;
-
-/**
- Moves the viewpoint to a different location with respect to the map with an
- optional transition duration and timing function, and optionally some additional
- padding on each side. For animated changes, wait until the map view has
- finished loading before calling this method.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously.
- @param function A timing function used for the animation. Set this parameter to
- `nil` for a transition that matches most system animations. If the duration
- is `0`, this parameter is ignored.
- @param edgePadding The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @param completion The block to execute after the animation finishes.
- */
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(UIEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion;
-
-/**
- Moves the viewpoint to a different location using a transition animation that
- evokes powered flight and a default duration based on the length of the flight
- path.
-
- The transition animation seamlessly incorporates zooming and panning to help
- the user find his or her bearings even after traversing a great distance.
-
- @param camera The new viewpoint.
- @param completion The block to execute after the animation finishes.
- */
-- (void)flyToCamera:(MGLMapCamera *)camera completionHandler:(nullable void (^)(void))completion;
-
-/**
- Moves the viewpoint to a different location using a transition animation that
- evokes powered flight and an optional transition duration.
-
- The transition animation seamlessly incorporates zooming and panning to help
- the user find his or her bearings even after traversing a great distance.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously. Specify a negative value to use the default duration, which
- is based on the length of the flight path.
- @param completion The block to execute after the animation finishes.
- */
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration completionHandler:(nullable void (^)(void))completion;
-
-/**
- Moves the viewpoint to a different location using a transition animation that
- evokes powered flight and an optional transition duration and peak altitude.
-
- The transition animation seamlessly incorporates zooming and panning to help
- the user find his or her bearings even after traversing a great distance.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously. Specify a negative value to use the default duration, which
- is based on the length of the flight path.
- @param peakAltitude The altitude, measured in meters, at the midpoint of the
- animation. The value of this parameter is ignored if it is negative or if
- the animation transition resulting from a similar call to
- `-setCamera:animated:` would have a midpoint at a higher altitude.
- @param completion The block to execute after the animation finishes.
- */
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration peakAltitude:(CLLocationDistance)peakAltitude completionHandler:(nullable void (^)(void))completion;
-
-/**
- Returns the camera that best fits the given coordinate bounds.
-
- @param bounds The coordinate bounds to fit to the receiver’s viewport.
- @return A camera object centered on the same location as the coordinate
- bounds with zoom level as high (close to the ground) as possible while still
- including the entire coordinate bounds. The camera object uses the current
- direction and pitch.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`; you may receive a `nil` return value
- depending on the order of notification delivery.
- */
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds;
-
-/**
- Returns the camera that best fits the given coordinate bounds with some
- additional padding on each side.
-
- @param bounds The coordinate bounds to fit to the receiver’s viewport.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the same location as the coordinate bounds
- with zoom level as high (close to the ground) as possible while still
- including the entire coordinate bounds. The camera object uses the current
- direction and pitch.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`; you may receive a `nil` return value
- depending on the order of notification delivery.
- */
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets;
-
-/**
- Returns the camera that best fits the given coordinate bounds with some
- additional padding on each side, matching an existing camera as much as
- possible.
-
- @param camera The camera that the return camera should adhere to. All values
- on this camera will be manipulated except for pitch and direction.
- @param bounds The coordinate bounds to fit to the receiver’s viewport.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the same location as the coordinate bounds
- with zoom level as high (close to the ground) as possible while still
- including the entire coordinate bounds. The initial camera's pitch and
- direction will be honored.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`; you may receive a `nil` return value
- depending on the order of notification delivery.
- */
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets;
-
-/**
- Returns the camera that best fits the given shape with some additional padding
- on each side, matching an existing camera as much as possible.
-
- @param camera The camera that the return camera should adhere to. All values
- on this camera will be manipulated except for pitch and direction.
- @param shape The shape to fit to the receiver’s viewport.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the shape's center with zoom level as high
- (close to the ground) as possible while still including the entire shape.
- The initial camera's pitch and direction will be honored.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`; you may receive a `nil` return value
- depending on the order of notification delivery.
- */
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingShape:(MGLShape *)shape edgePadding:(UIEdgeInsets)insets;
-
-/**
- Returns the camera that best fits the given shape with some additional padding
- on each side while looking in the specified direction.
-
- @param shape The shape to fit to the receiver’s viewport.
- @param direction The direction of the viewport, measured in degrees clockwise
- from true north.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the shape's center with zoom level as high
- (close to the ground) as possible while still including the entire shape.
- The camera object uses the current pitch.
-
- @note The behavior of this method is undefined if called in response to
- `UIApplicationWillTerminateNotification`; you may receive a `nil` return value
- depending on the order of notification delivery.
- */
-- (MGLMapCamera *)cameraThatFitsShape:(MGLShape *)shape direction:(CLLocationDirection)direction edgePadding:(UIEdgeInsets)insets;
-
-/**
- Returns the point in this view’s coordinate system on which to “anchor” in
- response to a user-initiated gesture.
-
- For example, a pinch-to-zoom gesture would anchor the map at the midpoint of
- the pinch.
-
- If the `userTrackingMode` property is not `MGLUserTrackingModeNone`, the
- user annotation is used as the anchor point.
-
- Subclasses may override this method to provide specialized behavior - for
- example, anchoring on the map’s center point to provide a "locked" zooming
- mode.
-
- @param gesture An anchorable user gesture.
- @return The point on which to anchor in response to the gesture.
- */
-- (CGPoint)anchorPointForGesture:(UIGestureRecognizer *)gesture;
-
-/**
- The distance from the edges of the map view’s frame to the edges of the map
- view’s logical viewport.
-
- When the value of this property is equal to `UIEdgeInsetsZero`, viewport
- properties such as `centerCoordinate` assume a viewport that matches the map
- view’s frame. Otherwise, those properties are inset, excluding part of the
- frame from the viewport. For instance, if the only the top edge is inset, the
- map center is effectively shifted downward.
-
- When the map view’s superview is an instance of `UIViewController` whose
- `automaticallyAdjustsScrollViewInsets` property is `YES`, the value of this
- property may be overridden at any time.
-
- The usage of `automaticallyAdjustsScrollViewInsets` has been deprecated
- use the map view’s property `MGLMapView.automaticallyAdjustsContentInset`instead.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setContentInset:animated:completionHandler:`
- method instead.
- */
-@property (nonatomic, assign) UIEdgeInsets contentInset;
-
-/**
- Deprecated. Sets the distance from the edges of the map view’s frame to the edges
- of the map view’s logical viewport with an optional transition animation.
-
- When the value of this property is equal to `UIEdgeInsetsZero`, viewport
- properties such as `centerCoordinate` assume a viewport that matches the map
- view’s frame. Otherwise, those properties are inset, excluding part of the
- frame from the viewport. For instance, if the only the top edge is inset, the
- map center is effectively shifted downward.
-
- When the map view’s superview is an instance of `UIViewController` whose
- `automaticallyAdjustsScrollViewInsets` property is `YES`, the value of this
- property may be overridden at any time.
-
- The usage of `automaticallyAdjustsScrollViewInsets` has been deprecated
- use the map view’s property `MGLMapView.automaticallyAdjustsContentInset`instead.
-
- To specify a completion handler to execute after the animation finishes, use
- the `-setContentInset:animated:completionHandler:` method.
-
- @param contentInset The new values to inset the content by.
- @param animated Specify `YES` if you want the map view to animate the change to
- the content inset or `NO` if you want the map to inset the content
- immediately.
- */
-- (void)setContentInset:(UIEdgeInsets)contentInset animated:(BOOL)animated __attribute__((deprecated("Use `-setContentInset:animated:completionHandler:` instead.")));
-
-/**
- Sets the distance from the edges of the map view’s frame to the edges of the
- map view’s logical viewport with an optional transition animation and
- completion handler.
-
- When the value of this property is equal to `UIEdgeInsetsZero`, viewport
- properties such as `centerCoordinate` assume a viewport that matches the map
- view’s frame. Otherwise, those properties are inset, excluding part of the
- frame from the viewport. For instance, if the only the top edge is inset, the
- map center is effectively shifted downward.
-
- When the map view’s superview is an instance of `UIViewController` whose
- `automaticallyAdjustsScrollViewInsets` property is `YES`, the value of this
- property may be overridden at any time.
-
- The usage of `automaticallyAdjustsScrollViewInsets` has been deprecated
- use the map view’s property `MGLMapView.automaticallyAdjustsContentInset`instead.
-
- @param contentInset The new values to inset the content by.
- @param animated Specify `YES` if you want the map view to animate the change to
- the content inset or `NO` if you want the map to inset the content
- immediately.
- @param completion The block executed after the animation finishes.
- */
-- (void)setContentInset:(UIEdgeInsets)contentInset animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-#pragma mark Converting Geographic Coordinates
-
-/**
- Converts a point in the given view’s coordinate system to a geographic
- coordinate.
-
- @param point The point to convert.
- @param view The view in whose coordinate system the point is expressed.
- @return The geographic coordinate at the given point.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/point-conversion/">
- Point conversion</a> example to learn how to convert a `CGPoint` to a map
- coordinate.
- */
-- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(nullable UIView *)view;
-
-/**
- Converts a geographic coordinate to a point in the given view’s coordinate
- system.
-
- @param coordinate The geographic coordinate to convert.
- @param view The view in whose coordinate system the returned point should be
- expressed. If this parameter is `nil`, the returned point is expressed
- in the window’s coordinate system. If `view` is not `nil`, it must
- belong to the same window as the map view.
- @return The point (in the appropriate view or window coordinate system)
- corresponding to the given geographic coordinate.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/point-conversion/">
- Point conversion</a> example to learn how to convert a map coordinate to a
- `CGPoint` object.
- */
-- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(nullable UIView *)view;
-
-/**
- Converts a rectangle in the given view’s coordinate system to a geographic
- bounding box.
-
- If the returned coordinate bounds contains a longitude is less than −180 degrees
- or greater than 180 degrees, the bounding box straddles the antimeridian or
- international date line.
-
- @param rect The rectangle to convert.
- @param view The view in whose coordinate system the rectangle is expressed.
- @return The geographic bounding box coextensive with the given rectangle.
- */
-- (MGLCoordinateBounds)convertRect:(CGRect)rect toCoordinateBoundsFromView:(nullable UIView *)view;
-
-/**
- Converts a geographic bounding box to a rectangle in the given view’s
- coordinate system.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- @param bounds The geographic bounding box to convert.
- @param view The view in whose coordinate system the returned rectangle should
- be expressed. If this parameter is `nil`, the returned rectangle is
- expressed in the window’s coordinate system. If `view` is not `nil`, it must
- belong to the same window as the map view.
- */
-- (CGRect)convertCoordinateBounds:(MGLCoordinateBounds)bounds toRectToView:(nullable UIView *)view;
-
-/**
- Returns the distance spanned by one point in the map view’s coordinate system
- at the given latitude and current zoom level.
-
- The distance between points decreases as the latitude approaches the poles.
- This relationship parallels the relationship between longitudinal coordinates
- at different latitudes.
-
- @param latitude The latitude of the geographic coordinate represented by the
- point.
- @return The distance in meters spanned by a single point.
- */
-- (CLLocationDistance)metersPerPointAtLatitude:(CLLocationDegrees)latitude;
-
-#pragma mark Annotating the Map
-
-/**
- The complete list of annotations associated with the receiver. (read-only)
-
- The objects in this array must adopt the `MGLAnnotation` protocol. If no
- annotations are associated with the map view, the value of this property is
- `nil`.
- */
-@property (nonatomic, readonly, nullable) NSArray<id <MGLAnnotation>> *annotations;
-
-/**
- Adds an annotation to the map view.
-
- @note `MGLMultiPolyline`, `MGLMultiPolygon`, `MGLShapeCollection`, and
- `MGLPointCollection` objects cannot be added to the map view at this time.
- Any multipoint, multipolyline, multipolygon, shape or point collection
- object that is specified is silently ignored.
-
- @param annotation The annotation object to add to the receiver. This object
- must conform to the `MGLAnnotation` protocol. The map view retains the
- annotation object.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-models/">
- Annotation models</a> and <a href="https://docs.mapbox.com/ios/maps/examples/line-geojson/">
- Add a line annotation from GeoJSON</a> examples to learn how to add an
- annotation to an `MGLMapView` object.
- */
-- (void)addAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Adds an array of annotations to the map view.
-
- @note `MGLMultiPolyline`, `MGLMultiPolygon`, and `MGLShapeCollection` objects
- cannot be added to the map view at this time. Nor can `MGLMultiPoint`
- objects that are not instances of `MGLPolyline` or `MGLPolygon`. Any
- multipoint, multipolyline, multipolygon, or shape collection objects that
- are specified are silently ignored.
-
- @param annotations An array of annotation objects. Each object in the array
- must conform to the `MGLAnnotation` protocol. The map view retains each
- individual annotation object.
- */
-- (void)addAnnotations:(NSArray<id <MGLAnnotation>> *)annotations;
-
-/**
- Removes an annotation from the map view, deselecting it if it is selected.
-
- Removing an annotation object dissociates it from the map view entirely,
- preventing it from being displayed on the map. Thus you would typically call
- this method only when you want to hide or delete a given annotation.
-
- @param annotation The annotation object to remove. This object must conform
- to the `MGLAnnotation` protocol
- */
-- (void)removeAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Removes an array of annotations from the map view, deselecting any selected
- annotations in the array.
-
- Removing annotation objects dissociates them from the map view entirely,
- preventing them from being displayed on the map. Thus you would typically
- call this method only when you want to hide or delete the given annotations.
-
- @param annotations The array of annotation objects to remove. Objects in the
- array must conform to the `MGLAnnotation` protocol.
- */
-- (void)removeAnnotations:(NSArray<id <MGLAnnotation>> *)annotations;
-
-/**
- Returns an `MGLAnnotationView` if the given annotation is currently associated
- with a view, otherwise nil.
-
- @param annotation The annotation associated with the view.
- Annotation must conform to the `MGLAnnotation` protocol.
- */
-- (nullable MGLAnnotationView *)viewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns a reusable annotation image object associated with its identifier.
-
- For performance reasons, you should generally reuse `MGLAnnotationImage`
- objects for identical-looking annotations in your map views. Dequeueing
- saves time and memory during performance-critical operations such as
- scrolling.
-
- @param identifier A string identifying the annotation image to be reused.
- This string is the same one you specify when initially returning the
- annotation image object using the `-mapView:imageForAnnotation:` method.
- @return An annotation image object with the given identifier, or `nil` if no
- such object exists in the reuse queue.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-view-image/">
- Add annotation views and images</a> example learn how to most efficiently
- reuse an `MGLAnnotationImage`.
- */
-- (nullable __kindof MGLAnnotationImage *)dequeueReusableAnnotationImageWithIdentifier:(NSString *)identifier;
-
-/**
- Returns a reusable annotation view object associated with its identifier.
-
- For performance reasons, you should generally reuse `MGLAnnotationView`
- objects for identical-looking annotations in your map views. Dequeueing
- saves time and memory during performance-critical operations such as
- scrolling.
-
- @param identifier A string identifying the annotation view to be reused.
- This string is the same one you specify when initially returning the
- annotation view object using the `-mapView:viewForAnnotation:` method.
- @return An annotation view object with the given identifier, or `nil` if no
- such object exists in the reuse queue.
- */
-- (nullable __kindof MGLAnnotationView *)dequeueReusableAnnotationViewWithIdentifier:(NSString *)identifier;
-
-/**
- The complete list of annotations associated with the receiver that are
- currently visible.
-
- The objects in this array must adopt the `MGLAnnotation` protocol. If no
- annotations are associated with the map view or if no annotations associated
- with the map view are currently visible, the value of this property is `nil`.
- */
-@property (nonatomic, readonly, nullable) NSArray<id <MGLAnnotation>> *visibleAnnotations;
-
-/**
- Returns the list of annotations associated with the receiver that intersect with
- the given rectangle.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @return An array of objects that adopt the `MGLAnnotation` protocol or `nil` if
- no annotations associated with the map view are currently visible in the
- rectangle.
- */
-- (nullable NSArray<id <MGLAnnotation>> *)visibleAnnotationsInRect:(CGRect)rect;
-
-#pragma mark Managing Annotation Selections
-
-/**
- The currently selected annotations.
-
- Assigning a new array to this property selects only the first annotation in
- the array.
-
- If the annotation is of type `MGLPointAnnotation` and is offscreen, the camera
- will animate to bring the annotation and its callout just on screen. If you
- need finer control, consider using `-selectAnnotation:animated:`.
-
- @note In versions prior to `4.0.0` if the annotation was offscreen it was not
- selected.
- */
-@property (nonatomic, copy) NSArray<id <MGLAnnotation>> *selectedAnnotations;
-
-/**
- Deprecated. Selects an annotation and displays its callout view.
-
- The `animated` parameter determines whether the selection is animated including whether the map is
- panned to bring the annotation into view, specifically:
-
- | `animated` parameter | Effect |
- |------------------|--------|
- | `NO` | The annotation is selected, and the callout is presented. However the map is not panned to bring the annotation or callout into view. The presentation of the callout is NOT animated. |
- | `YES` | The annotation is selected, and the callout is presented. If the annotation is not visible (or is partially visible) *and* is of type `MGLPointAnnotation`, the map is panned so that the annotation and its callout are brought into view. The annotation is *not* centered within the viewport. |
-
- Note that a selection initiated by a single tap gesture is always animated.
-
- To specify a completion handler to execute after the animation finishes, use
- the `-selectAnnotation:animated:completionHandler:` method.
-
- @param annotation The annotation object to select.
- @param animated If `YES`, the annotation and callout view are animated on-screen.
-
- @note In versions prior to `4.0.0` selecting an offscreen annotation did not
- change the camera.
- */
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation animated:(BOOL)animated __attribute__((deprecated("Use `-selectAnnotation:animated:completionHandler:` instead.")));
-
-/**
- Selects an annotation and displays its callout view with an optional completion
- handler.
-
- The `animated` parameter determines whether the selection is animated including whether the map is
- panned to bring the annotation into view, specifically:
-
- | `animated` parameter | Effect |
- |------------------|--------|
- | `NO` | The annotation is selected, and the callout is presented. However the map is not panned to bring the annotation or callout into view. The presentation of the callout is NOT animated. |
- | `YES` | The annotation is selected, and the callout is presented. If the annotation is not visible (or is partially visible) *and* is of type `MGLPointAnnotation`, the map is panned so that the annotation and its callout are brought into view. The annotation is *not* centered within the viewport. |
-
- Note that a selection initiated by a single tap gesture is always animated.
-
- @param annotation The annotation object to select.
- @param animated If `YES`, the annotation and callout view are animated on-screen.
- @param completion The block executed after the animation finishes.
-
- @note In versions prior to `4.0.0` selecting an offscreen annotation did not
- change the camera.
- */
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-/**
- :nodoc:
- Selects an annotation and displays its callout view with an optional completion
- handler. This method should be considered "alpha" and as such is subject to
- change.
-
- @param annotation The annotation object to select.
- @param moveIntoView If the annotation is not visible (or is partially visible) *and* is of type `MGLPointAnnotation`, the map is panned so that the annotation and its callout are brought into view. The annotation is *not* centered within the viewport.
- @param animateSelection If `YES`, the annotation's selection state and callout view's presentation are animated.
- @param completion The block executed after the animation finishes.
- */
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation moveIntoView:(BOOL)moveIntoView animateSelection:(BOOL)animateSelection completionHandler:(nullable void (^)(void))completion;
-
-/**
- Deselects an annotation and hides its callout view.
-
- @param annotation The annotation object to deselect.
- @param animated If `YES`, the callout view is animated offscreen.
- */
-- (void)deselectAnnotation:(nullable id <MGLAnnotation>)annotation animated:(BOOL)animated;
-
-#pragma mark Overlaying the Map
-
-/**
- The complete list of overlays associated with the receiver. (read-only)
-
- The objects in this array must adopt the `MGLOverlay` protocol. If no
- overlays are associated with the map view, the value of this property is
- empty array.
- */
-@property (nonatomic, readonly, nonnull) NSArray<id <MGLOverlay>> *overlays;
-
-/**
- Adds a single overlay object to the map.
-
- To remove an overlay from a map, use the `-removeOverlay:` method.
-
- @param overlay The overlay object to add. This object must conform to the
- `MGLOverlay` protocol. */
-- (void)addOverlay:(id <MGLOverlay>)overlay;
-
-/**
- Adds an array of overlay objects to the map.
-
- To remove multiple overlays from a map, use the `-removeOverlays:` method.
-
- @param overlays An array of objects, each of which must conform to the
- `MGLOverlay` protocol.
- */
-- (void)addOverlays:(NSArray<id <MGLOverlay>> *)overlays;
-
-/**
- Removes a single overlay object from the map.
-
- If the specified overlay is not currently associated with the map view, this
- method does nothing.
-
- @param overlay The overlay object to remove.
- */
-- (void)removeOverlay:(id <MGLOverlay>)overlay;
-
-/**
- Removes one or more overlay objects from the map.
-
- If a given overlay object is not associated with the map view, it is ignored.
-
- @param overlays An array of objects, each of which conforms to the `MGLOverlay`
- protocol.
- */
-- (void)removeOverlays:(NSArray<id <MGLOverlay>> *)overlays;
-
-#pragma mark Accessing the Underlying Map Data
-
-/**
- Returns an array of rendered map features that intersect with a given point.
-
- This method may return features from any of the map’s style layers. To restrict
- the search to a particular layer or layers, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:` method. For more
- information about searching for map features, see that method’s documentation.
-
- @param point A point expressed in the map view’s coordinate system.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/select-layer/">
- Select a feature within a layer</a> example to learn how to query an
- `MGLMapView` object for visible `MGLFeature` objects.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(CGPoint)point NS_SWIFT_NAME(visibleFeatures(at:));
-
-/**
- Returns an array of rendered map features that intersect with a given point,
- restricted to the given style layers.
-
- This method returns all the intersecting features from the specified layers. To
- filter the returned features, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:predicate:` method. For
- more information about searching for map features, see that method’s
- documentation.
-
- @param point A point expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names
- of layers defined in the current style. Only the features contained in
- these layers are included in the returned array.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(CGPoint)point inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers NS_SWIFT_NAME(visibleFeatures(at:styleLayerIdentifiers:));
-
-/**
- Returns an array of rendered map features that intersect with a given point,
- restricted to the given style layers and filtered by the given predicate.
-
- Each object in the returned array represents a feature rendered by the
- current style and provides access to attributes specified by the relevant map
- content sources. The returned array includes features loaded by
- `MGLShapeSource` and `MGLVectorTileSource` objects but does not include
- anything from `MGLRasterTileSource` objects, or from video or canvas sources,
- which are unsupported by this SDK.
-
- The returned features are drawn by a style layer in the current style. For
- example, suppose the current style uses the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets source</a>,
- but none of the specified style layers includes features that have the `maki`
- property set to `bus`. If you pass a point corresponding to the location of a
- bus stop into this method, the bus stop feature does not appear in the
- resulting array. On the other hand, if the style does include bus stops, an
- `MGLFeature` object representing that bus stop is returned and its
- `featureAttributes` dictionary has the `maki` key set to `bus` (along with
- other attributes). The dictionary contains only the attributes provided by the
- tile source; it does not include computed attribute values or rules about how
- the feature is rendered by the current style.
-
- The returned array is sorted by z-order, starting with the topmost rendered
- feature and ending with the bottommost rendered feature. A feature that is
- rendered multiple times due to wrapping across the antimeridian at low zoom
- levels is included only once, subject to the caveat that follows.
-
- Features come from tiled vector data or GeoJSON data that is converted to tiles
- internally, so feature geometries are clipped at tile boundaries and features
- may appear duplicated across tiles. For example, suppose the specified point
- lies along a road that spans the screen. The resulting array includes those
- parts of the road that lie within the map tile that contain the specified
- point, even if the road extends into other tiles.
-
- To find out the layer names in a particular style, view the style in
- <a href="https://www.mapbox.com/studio/">Mapbox Studio</a>.
-
- Only visible features are returned. To obtain features regardless of
- visibility, use the
- `-[MGLVectorTileSource featuresInSourceLayersWithIdentifiers:predicate:]` and
- `-[MGLShapeSource featuresMatchingPredicate:]` methods on the relevant sources.
-
- The returned features may also include features corresponding to annotations.
- These features are not object-equal to the `MGLAnnotation` objects that were
- originally added to the map. To query the map for annotations, use
- `visibleAnnotations` or `-[MGLMapView visibleAnnotationsInRect:]`.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method
- like `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the
- default style’s layers over time.
-
- @param point A point expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names of
- layers defined in the current style. Only the features contained in these
- layers are included in the returned array.
- @param predicate A predicate to filter the returned features.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(CGPoint)point inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers predicate:(nullable NSPredicate *)predicate NS_SWIFT_NAME(visibleFeatures(at:styleLayerIdentifiers:predicate:));
-
-/**
- Returns an array of rendered map features that intersect with the given
- rectangle.
-
- This method may return features from any of the map’s style layers. To restrict
- the search to a particular layer or layers, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:` method. For more
- information about searching for map features, see that method’s documentation.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(CGRect)rect NS_SWIFT_NAME(visibleFeatures(in:));
-
-/**
- Returns an array of rendered map features that intersect with the given
- rectangle, restricted to the given style layers.
-
- This method returns all the intersecting features from the specified layers. To
- filter the returned features, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:predicate:` method. For
- more information about searching for map features, see that method’s
- documentation.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names of
- layers defined in the current style. Only the features contained in these
- layers are included in the returned array.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(CGRect)rect inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers NS_SWIFT_NAME(visibleFeatures(in:styleLayerIdentifiers:));
-
-/**
- Returns an array of rendered map features that intersect with the given
- rectangle, restricted to the given style layers and filtered by the given
- predicate.
-
- Each object in the returned array represents a feature rendered by the
- current style and provides access to attributes specified by the relevant map
- content sources. The returned array includes features loaded by
- `MGLShapeSource` and `MGLVectorTileSource` objects but does not include
- anything from `MGLRasterTileSource` objects, or from video or canvas sources,
- which are unsupported by this SDK.
-
- The returned features are drawn by a style layer in the current style. For
- example, suppose the current style uses the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets source</a>,
- but none of the specified style layers includes features that have the `maki`
- property set to `bus`. If you pass a rectangle containing the location of a bus
- stop into this method, the bus stop feature does not appear in the resulting
- array. On the other hand, if the style does include bus stops, an `MGLFeature`
- object representing that bus stop is returned and its `featureAttributes`
- dictionary has the `maki` key set to `bus` (along with other attributes). The
- dictionary contains only the attributes provided by the tile source; it does
- not include computed attribute values or rules about how the feature is
- rendered by the current style.
-
- The returned array is sorted by z-order, starting with the topmost rendered
- feature and ending with the bottommost rendered feature. A feature that is
- rendered multiple times due to wrapping across the antimeridian at low zoom
- levels is included only once, subject to the caveat that follows.
-
- Features come from tiled vector data or GeoJSON data that is converted to tiles
- internally, so feature geometries are clipped at tile boundaries and features
- may appear duplicated across tiles. For example, suppose the specified
- rectangle intersects with a road that spans the screen. The resulting array
- includes those parts of the road that lie within the map tiles covering the
- specified rectangle, even if the road extends into other tiles. The portion of
- the road within each map tile is included individually.
-
- To find out the layer names in a particular style, view the style in
- <a href="https://www.mapbox.com/studio/">Mapbox Studio</a>.
-
- Only visible features are returned. To obtain features regardless of
- visibility, use the
- `-[MGLVectorTileSource featuresInSourceLayersWithIdentifiers:predicate:]` and
- `-[MGLShapeSource featuresMatchingPredicate:]` methods on the relevant sources.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set the
- style URL to an explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the
- default style’s layers over time.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method
- like `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the
- default style’s layers over time.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names of
- layers defined in the current style. Only the features contained in these
- layers are included in the returned array.
- @param predicate A predicate to filter the returned features.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(CGRect)rect inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers predicate:(nullable NSPredicate *)predicate NS_SWIFT_NAME(visibleFeatures(in:styleLayerIdentifiers:predicate:));
-
-#pragma mark Debugging the Map
-
-/**
- The options that determine which debugging aids are shown on the map.
-
- These options are all disabled by default and should remain disabled in
- released software for performance and aesthetic reasons.
- */
-@property (nonatomic) MGLMapDebugMaskOptions debugMask;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
deleted file mode 100644
index 1f4e2ffa74..0000000000
--- a/platform/ios/src/MGLMapView.mm
+++ /dev/null
@@ -1,7010 +0,0 @@
-#import "MGLMapView_Private.h"
-#import "MGLMapView+Impl.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/map/map_options.hpp>
-#include <mbgl/annotation/annotation.hpp>
-#include <mbgl/gl/custom_layer.hpp>
-#include <mbgl/map/camera.hpp>
-#include <mbgl/map/mode.hpp>
-#include <mbgl/util/platform.hpp>
-#include <mbgl/storage/reachability.h>
-#include <mbgl/storage/resource_options.hpp>
-#include <mbgl/storage/network_status.hpp>
-#include <mbgl/style/style.hpp>
-#include <mbgl/style/image.hpp>
-#include <mbgl/style/transition_options.hpp>
-#include <mbgl/renderer/renderer.hpp>
-#include <mbgl/math/wrap.hpp>
-#include <mbgl/util/exception.hpp>
-#include <mbgl/util/geo.hpp>
-#include <mbgl/util/constants.hpp>
-#include <mbgl/util/image.hpp>
-#include <mbgl/util/projection.hpp>
-#include <mbgl/util/default_styles.hpp>
-#include <mbgl/util/chrono.hpp>
-#include <mbgl/util/run_loop.hpp>
-#include <mbgl/util/string.hpp>
-#include <mbgl/util/projection.hpp>
-
-#import "Mapbox.h"
-#import "MGLShape_Private.h"
-#import "MGLFeature_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLMultiPoint_Private.h"
-#import "MGLOfflineStorage_Private.h"
-#import "MGLVectorTileSource_Private.h"
-#import "MGLFoundation_Private.h"
-#import "MGLRendererFrontend.h"
-#import "MGLRendererConfiguration.h"
-
-#import "NSBundle+MGLAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "NSException+MGLAdditions.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "NSString+MGLAdditions.h"
-#import "NSURL+MGLAdditions.h"
-#import "UIDevice+MGLAdditions.h"
-#import "UIImage+MGLAdditions.h"
-#import "UIViewController+MGLAdditions.h"
-#import "UIView+MGLAdditions.h"
-
-#import "MGLFaux3DUserLocationAnnotationView.h"
-#import "MGLUserLocationAnnotationView.h"
-#import "MGLUserLocationAnnotationView_Private.h"
-#import "MGLUserLocation_Private.h"
-#import "MGLAnnotationImage_Private.h"
-#import "MGLAnnotationView_Private.h"
-#import "MGLCompassButton_Private.h"
-#import "MGLScaleBar.h"
-#import "MGLStyle_Private.h"
-#import "MGLStyleLayer_Private.h"
-#import "MGLMapboxEvents.h"
-#import "MGLSDKUpdateChecker.h"
-#import "MGLCompactCalloutView.h"
-#import "MGLAnnotationContainerView.h"
-#import "MGLAnnotationContainerView_Private.h"
-#import "MGLAttributionInfo_Private.h"
-#import "MGLMapAccessibilityElement.h"
-#import "MGLLocationManager_Private.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLNetworkIntegrationManager.h"
-#import "MMEConstants.h"
-
-#include <algorithm>
-#include <cstdlib>
-#include <map>
-#include <unordered_set>
-
-class MGLAnnotationContext;
-
-const MGLMapViewDecelerationRate MGLMapViewDecelerationRateNormal = UIScrollViewDecelerationRateNormal;
-const MGLMapViewDecelerationRate MGLMapViewDecelerationRateFast = UIScrollViewDecelerationRateFast;
-const MGLMapViewDecelerationRate MGLMapViewDecelerationRateImmediate = 0.0;
-
-const MGLMapViewPreferredFramesPerSecond MGLMapViewPreferredFramesPerSecondDefault = -1;
-const MGLMapViewPreferredFramesPerSecond MGLMapViewPreferredFramesPerSecondLowPower = 30;
-const MGLMapViewPreferredFramesPerSecond MGLMapViewPreferredFramesPerSecondMaximum = 0;
-
-const MGLExceptionName MGLMissingLocationServicesUsageDescriptionException = @"MGLMissingLocationServicesUsageDescriptionException";
-const MGLExceptionName MGLUserLocationAnnotationTypeException = @"MGLUserLocationAnnotationTypeException";
-const MGLExceptionName MGLUnderlyingMapUnavailableException = @"MGLUnderlyingMapUnavailableException";
-
-const CGPoint MGLOrnamentDefaultPositionOffset = CGPointMake(8, 8);
-
-/// Indicates the manner in which the map view is tracking the user location.
-typedef NS_ENUM(NSUInteger, MGLUserTrackingState) {
- /// The map view is not yet tracking the user location.
- MGLUserTrackingStatePossible = 0,
- /// The map view has begun to move to the first reported user location.
- MGLUserTrackingStateBegan,
- /// The map view begins a significant transition.
- MGLUserTrackingStateBeginSignificantTransition,
- /// The map view has finished moving to the first reported user location.
- MGLUserTrackingStateChanged,
-};
-
-const NSTimeInterval MGLAnimationDuration = 0.3;
-
-/// Duration of an animation due to a user location update, typically chosen to
-/// match a typical interval between user location updates.
-const NSTimeInterval MGLUserLocationAnimationDuration = 1.0;
-
-/// Distance between the map view’s edge and that of the user location
-/// annotation view.
-const UIEdgeInsets MGLUserLocationAnnotationViewInset = UIEdgeInsetsMake(50, 0, 50, 0);
-
-const CGSize MGLAnnotationUpdateViewportOutset = {150, 150};
-const CGFloat MGLMinimumZoom = 3;
-
-/// Minimum initial zoom level when entering user tracking mode.
-const double MGLMinimumZoomLevelForUserTracking = 10.5;
-
-/// Initial zoom level when entering user tracking mode from a low zoom level.
-const double MGLDefaultZoomLevelForUserTracking = 14.0;
-
-/// Tolerance for snapping to true north, measured in degrees in either direction.
-const CLLocationDirection MGLToleranceForSnappingToNorth = 7;
-
-/// Distance threshold to stop the camera while animating.
-const CLLocationDistance MGLDistanceThresholdForCameraPause = 500;
-
-/// Rotation threshold while a pinch gesture is occurring.
-static NSString * const MGLRotationThresholdWhileZoomingKey = @"MGLRotationThresholdWhileZooming";
-
-/// Reuse identifier and file name of the default point annotation image.
-static NSString * const MGLDefaultStyleMarkerSymbolName = @"default_marker";
-
-/// Reuse identifier and file name of the invisible point annotation image used
-/// by annotations that are visually backed by MGLAnnotationView objects
-static NSString * const MGLInvisibleStyleMarkerSymbolName = @"invisible_marker";
-
-/// Prefix that denotes a sprite installed by MGLMapView, to avoid collisions
-/// with style-defined sprites.
-NSString * const MGLAnnotationSpritePrefix = @"com.mapbox.sprites.";
-
-/// Slop area around the hit testing point, allowing for imprecise annotation selection.
-const CGFloat MGLAnnotationImagePaddingForHitTest = 5;
-
-/// Distance from the callout’s anchor point to the annotation it points to.
-const CGFloat MGLAnnotationImagePaddingForCallout = 1;
-
-const CGSize MGLAnnotationAccessibilityElementMinimumSize = CGSizeMake(10, 10);
-
-/// The number of view annotations (excluding the user location view) that must
-/// be descendents of `MGLMapView` before presentsWithTransaction is enabled.
-static const NSUInteger MGLPresentsWithTransactionAnnotationCount = 0;
-
-/// An indication that the requested annotation was not found or is nonexistent.
-enum { MGLAnnotationTagNotFound = UINT32_MAX };
-
-/// The threshold used to consider when a tilt gesture should start.
-const CLLocationDegrees MGLHorizontalTiltToleranceDegrees = 45.0;
-
-/// Mapping from an annotation tag to metadata about that annotation, including
-/// the annotation itself.
-typedef std::unordered_map<MGLAnnotationTag, MGLAnnotationContext> MGLAnnotationTagContextMap;
-
-/// Mapping from an annotation object to an annotation tag.
-typedef std::map<id<MGLAnnotation>, MGLAnnotationTag> MGLAnnotationObjectTagMap;
-
-mbgl::util::UnitBezier MGLUnitBezierForMediaTimingFunction(CAMediaTimingFunction *function)
-{
- if ( ! function)
- {
- function = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
- }
- float p1[2], p2[2];
- [function getControlPointAtIndex:0 values:p1];
- [function getControlPointAtIndex:1 values:p2];
- return { p1[0], p1[1], p2[0], p2[1] };
-}
-
-/// Lightweight container for metadata about an annotation, including the annotation itself.
-class MGLAnnotationContext {
-public:
- id <MGLAnnotation> annotation;
- /// The annotation’s image’s reuse identifier.
- NSString *imageReuseIdentifier;
- MGLAnnotationAccessibilityElement *accessibilityElement;
- MGLAnnotationView *annotationView;
- NSString *viewReuseIdentifier;
-};
-
-#pragma mark - Private -
-
-@interface MGLMapView () <UIGestureRecognizerDelegate,
- MGLLocationManagerDelegate,
- MGLSMCalloutViewDelegate,
- MGLCalloutViewDelegate,
- MGLMultiPointDelegate,
- MGLAnnotationImageDelegate>
-
-@property (nonatomic) UIImageView *glSnapshotView;
-
-@property (nonatomic) NSMutableArray<NSLayoutConstraint *> *scaleBarConstraints;
-@property (nonatomic, readwrite) MGLScaleBar *scaleBar;
-@property (nonatomic, readwrite) MGLCompassButton *compassView;
-@property (nonatomic) NSMutableArray<NSLayoutConstraint *> *compassViewConstraints;
-@property (nonatomic, readwrite) UIImageView *logoView;
-@property (nonatomic) NSMutableArray<NSLayoutConstraint *> *logoViewConstraints;
-@property (nonatomic, readwrite) UIButton *attributionButton;
-@property (nonatomic) NSMutableArray<NSLayoutConstraint *> *attributionButtonConstraints;
-@property (nonatomic, weak) UIAlertController *attributionController;
-
-@property (nonatomic, readwrite) MGLStyle *style;
-
-@property (nonatomic) UITapGestureRecognizer *singleTapGestureRecognizer;
-@property (nonatomic) UITapGestureRecognizer *doubleTap;
-@property (nonatomic) UITapGestureRecognizer *twoFingerTap;
-@property (nonatomic) UIPanGestureRecognizer *pan;
-@property (nonatomic) UIPinchGestureRecognizer *pinch;
-@property (nonatomic) UIRotationGestureRecognizer *rotate;
-@property (nonatomic) UILongPressGestureRecognizer *quickZoom;
-@property (nonatomic) UIPanGestureRecognizer *twoFingerDrag;
-
-@property (nonatomic) UIInterfaceOrientation currentOrientation;
-@property (nonatomic) UIInterfaceOrientationMask applicationSupportedInterfaceOrientations;
-
-@property (nonatomic) MGLCameraChangeReason cameraChangeReasonBitmask;
-
-/// Mapping from reusable identifiers to annotation images.
-@property (nonatomic) NSMutableDictionary<NSString *, MGLAnnotationImage *> *annotationImagesByIdentifier;
-
-/// Currently shown popover representing the selected annotation.
-@property (nonatomic) UIView<MGLCalloutView> *calloutViewForSelectedAnnotation;
-
-/// Anchor coordinate from which to present callout views (for example, for shapes this
-/// could be the touch point rather than its centroid)
-@property (nonatomic) CLLocationCoordinate2D anchorCoordinateForSelectedAnnotation;
-
-@property (nonatomic) MGLUserLocationAnnotationView *userLocationAnnotationView;
-
-/// Indicates how thoroughly the map view is tracking the user location.
-@property (nonatomic) MGLUserTrackingState userTrackingState;
-@property (nonatomic) CGFloat scale;
-@property (nonatomic) CGFloat angle;
-@property (nonatomic) CGFloat quickZoomStart;
-@property (nonatomic, getter=isDormant) BOOL dormant;
-@property (nonatomic, readonly, getter=isRotationAllowed) BOOL rotationAllowed;
-@property (nonatomic) CGFloat rotationThresholdWhileZooming;
-@property (nonatomic) CGFloat rotationBeforeThresholdMet;
-@property (nonatomic) BOOL isZooming;
-@property (nonatomic) BOOL isRotating;
-@property (nonatomic) BOOL shouldTriggerHapticFeedbackForCompass;
-@property (nonatomic) MGLMapViewProxyAccessibilityElement *mapViewProxyAccessibilityElement;
-@property (nonatomic) MGLAnnotationContainerView *annotationContainerView;
-@property (nonatomic) MGLUserLocation *userLocation;
-@property (nonatomic) NSMutableDictionary<NSString *, NSMutableArray<MGLAnnotationView *> *> *annotationViewReuseQueueByIdentifier;
-@property (nonatomic, readonly) BOOL enablePresentsWithTransaction;
-@property (nonatomic) UIImage *lastSnapshotImage;
-@property (nonatomic) NSMutableArray *pendingCompletionBlocks;
-
-/// Experimental rendering performance measurement.
-@property (nonatomic) BOOL experimental_enableFrameRateMeasurement;
-@property (nonatomic) CGFloat averageFrameRate;
-@property (nonatomic) CFTimeInterval frameTime;
-@property (nonatomic) CFTimeInterval averageFrameTime;
-
-/// Residual properties (saved on app termination)
-@property (nonatomic) BOOL terminated;
-@property (nonatomic, copy) MGLMapCamera *residualCamera;
-@property (nonatomic) MGLMapDebugMaskOptions residualDebugMask;
-@property (nonatomic, copy) NSURL *residualStyleURL;
-
-/// Tilt gesture recognizer helper
-@property (nonatomic, assign) CGPoint dragGestureMiddlePoint;
-
-/// This property is used to keep track of the view's safe edge insets
-/// and calculate the ornament's position
-@property (nonatomic, assign) UIEdgeInsets safeMapViewContentInsets;
-@property (nonatomic, strong) NSNumber *automaticallyAdjustContentInsetHolder;
-
-- (mbgl::Map &)mbglMap;
-
-@end
-
-@implementation MGLMapView
-{
- mbgl::Map *_mbglMap;
- std::unique_ptr<MGLMapViewImpl> _mbglView;
- std::unique_ptr<MGLRenderFrontend> _rendererFrontend;
-
- BOOL _opaque;
-
- MGLAnnotationTagContextMap _annotationContextsByAnnotationTag;
- MGLAnnotationObjectTagMap _annotationTagsByAnnotation;
-
- /// Tag of the selected annotation. If the user location annotation is selected, this ivar is set to `MGLAnnotationTagNotFound`.
- MGLAnnotationTag _selectedAnnotationTag;
-
- BOOL _userLocationAnnotationIsSelected;
- /// Size of the rectangle formed by unioning the maximum slop area around every annotation image and annotation image view.
- CGSize _unionedAnnotationRepresentationSize;
- CGSize _largestAnnotationViewSize;
- std::vector<MGLAnnotationTag> _annotationsNearbyLastTap;
- CGPoint _initialImplicitCalloutViewOffset;
- NSDate *_userLocationAnimationCompletionDate;
- /// True if a willChange notification has been issued for shape annotation layers and a didChange notification is pending.
- BOOL _isChangingAnnotationLayers;
- BOOL _isWaitingForRedundantReachableNotification;
-
- CLLocationDegrees _pendingLatitude;
- CLLocationDegrees _pendingLongitude;
-
- CADisplayLink *_displayLink;
- BOOL _needsDisplayRefresh;
-
- NSInteger _changeDelimiterSuppressionDepth;
-
- /// Center of the pinch gesture on the previous iteration of the gesture.
- CGPoint _previousPinchCenterPoint;
- NSUInteger _previousPinchNumberOfTouches;
-
- CLLocationDistance _distanceFromOldUserLocation;
-
- BOOL _delegateHasAlphasForShapeAnnotations;
- BOOL _delegateHasStrokeColorsForShapeAnnotations;
- BOOL _delegateHasFillColorsForShapeAnnotations;
- BOOL _delegateHasLineWidthsForShapeAnnotations;
-
- NSArray<id <MGLFeature>> *_visiblePlaceFeatures;
- NSArray<id <MGLFeature>> *_visibleRoadFeatures;
- NSMutableSet<MGLFeatureAccessibilityElement *> *_featureAccessibilityElements;
- BOOL _accessibilityValueAnnouncementIsPending;
-
- MGLReachability *_reachability;
-
- /// Experimental rendering performance measurement.
- CFTimeInterval _frameCounterStartTime;
- NSInteger _frameCount;
- CFTimeInterval _frameDurations;
-}
-
-#pragma mark - Setup & Teardown -
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- MGLLogInfo(@"Starting %@ initialization.", NSStringFromClass([self class]));
- MGLLogDebug(@"Initializing frame: %@", NSStringFromCGRect(frame));
- [self commonInit];
- self.styleURL = nil;
- MGLLogInfo(@"Finalizing %@ initialization.", NSStringFromClass([self class]));
- }
- return self;
-}
-
-- (instancetype)initWithFrame:(CGRect)frame styleURL:(nullable NSURL *)styleURL
-{
- if (self = [super initWithFrame:frame])
- {
- MGLLogInfo(@"Starting %@ initialization.", NSStringFromClass([self class]));
- MGLLogDebug(@"Initializing frame: %@ styleURL: %@", NSStringFromCGRect(frame), styleURL);
- [self commonInit];
- self.styleURL = styleURL;
- MGLLogInfo(@"Finalizing %@ initialization.", NSStringFromClass([self class]));
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(nonnull NSCoder *)decoder
-{
- if (self = [super initWithCoder:decoder])
- {
- MGLLogInfo(@"Starting %@ initialization.", NSStringFromClass([self class]));
- [self commonInit];
- self.styleURL = nil;
- MGLLogInfo(@"Finalizing %@ initialization.", NSStringFromClass([self class]));
- }
- return self;
-}
-
-+ (void)initialize
-{
- if (self == [MGLMapView class])
- {
- [MGLSDKUpdateChecker checkForUpdates];
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingStyle
-{
- return [NSSet setWithObject:@"styleURL"];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingStyleURL
-{
- return [NSSet setWithObjects:@"styleURL__", nil];
-}
-
-- (nonnull NSURL *)styleURL
-{
- if (!_mbglMap)
- {
- NSAssert(self.terminated, @"_mbglMap should only be unavailable during app termination");
- return self.residualStyleURL;
- }
-
- NSString *styleURLString = @(self.mbglMap.getStyle().getURL().c_str()).mgl_stringOrNilIfEmpty;
- MGLAssert(styleURLString, @"Invalid style URL string %@", styleURLString);
- return styleURLString ? [NSURL URLWithString:styleURLString] : nil;
-}
-
-- (void)setStyleURL:(nullable NSURL *)styleURL
-{
- if ( ! styleURL)
- {
- styleURL = [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion];
- }
- MGLLogDebug(@"Setting styleURL: %@", styleURL);
- styleURL = styleURL.mgl_URLByStandardizingScheme;
- self.style = nil;
- self.mbglMap.getStyle().loadURL([[styleURL absoluteString] UTF8String]);
-}
-
-- (IBAction)reloadStyle:(__unused id)sender {
- MGLLogInfo(@"Reloading style.");
- NSURL *styleURL = self.styleURL;
- self.mbglMap.getStyle().loadURL("");
- self.styleURL = styleURL;
-}
-
-- (mbgl::Map &)mbglMap
-{
- if (!_mbglMap)
- {
- [NSException raise:MGLUnderlyingMapUnavailableException
- format:@"The underlying map is not available - this happens during app termination"];
- }
- return *_mbglMap;
-}
-
-- (mbgl::Renderer *)renderer
-{
- return _rendererFrontend->getRenderer();
-}
-
-- (void)commonInit
-{
- _opaque = NO;
-
- // setup accessibility
- //
-// self.isAccessibilityElement = YES;
- MGLNativeNetworkManager.sharedManager.delegate = MGLNetworkIntegrationManager.sharedManager;
- self.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"MAP_A11Y_LABEL", nil, nil, @"Map", @"Accessibility label");
- self.accessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction | UIAccessibilityTraitAdjustable;
- self.backgroundColor = [UIColor clearColor];
- self.clipsToBounds = YES;
- if (@available(iOS 11.0, *)) { self.accessibilityIgnoresInvertColors = YES; }
-
- self.preferredFramesPerSecond = MGLMapViewPreferredFramesPerSecondDefault;
-
- // setup mbgl view
- _mbglView = MGLMapViewImpl::Create(self);
-
- BOOL background = [UIApplication sharedApplication].applicationState == UIApplicationStateBackground;
- if (!background)
- {
- _mbglView->createView();
- }
- // Delete the pre-offline ambient cache at ~/Library/Caches/cache.db.
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
- NSString *fileCachePath = [paths.firstObject stringByAppendingPathComponent:@"cache.db"];
- [[NSFileManager defaultManager] removeItemAtPath:fileCachePath error:NULL];
-
- // setup mbgl map
- MGLRendererConfiguration *config = [MGLRendererConfiguration currentConfiguration];
-
- auto renderer = std::make_unique<mbgl::Renderer>(_mbglView->getRendererBackend(), config.scaleFactor, config.localFontFamilyName);
- BOOL enableCrossSourceCollisions = !config.perSourceCollisions;
- _rendererFrontend = std::make_unique<MGLRenderFrontend>(std::move(renderer), self, _mbglView->getRendererBackend());
-
- mbgl::MapOptions mapOptions;
- mapOptions.withMapMode(mbgl::MapMode::Continuous)
- .withSize(self.size)
- .withPixelRatio(config.scaleFactor)
- .withConstrainMode(mbgl::ConstrainMode::None)
- .withViewportMode(mbgl::ViewportMode::Default)
- .withCrossSourceCollisions(enableCrossSourceCollisions);
-
- mbgl::ResourceOptions resourceOptions;
- resourceOptions.withCachePath([[MGLOfflineStorage sharedOfflineStorage] mbglCachePath])
- .withAssetPath([NSBundle mainBundle].resourceURL.path.UTF8String);
-
- NSAssert(!_mbglMap, @"_mbglMap should be NULL");
- _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, mapOptions, resourceOptions);
-
- // start paused if in IB
- if (background) {
- self.dormant = YES;
- }
-
- // Notify map object when network reachability status changes.
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(reachabilityChanged:)
- name:kMGLReachabilityChangedNotification
- object:nil];
-
- _reachability = [MGLReachability reachabilityForInternetConnection];
- if ([_reachability isReachable])
- {
- _isWaitingForRedundantReachableNotification = YES;
- }
- [_reachability startNotifier];
-
- // setup default location manager
- self.locationManager = nil;
-
- // Set up annotation management and selection state.
- _annotationImagesByIdentifier = [NSMutableDictionary dictionary];
- _annotationContextsByAnnotationTag = {};
- _annotationTagsByAnnotation = {};
- _annotationViewReuseQueueByIdentifier = [NSMutableDictionary dictionary];
- _selectedAnnotationTag = MGLAnnotationTagNotFound;
- _annotationsNearbyLastTap = {};
-
- // TODO: This warning should be removed when automaticallyAdjustsScrollViewInsets is removed from
- // the UIViewController api.
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSLog(@"%@ WARNING UIViewController.automaticallyAdjustsScrollViewInsets is deprecated use MGLMapView.automaticallyAdjustContentInset instead.",
- NSStringFromClass(self.class));
- });
-
- // setup logo
- //
- UIImage *logo = [UIImage mgl_resourceImageNamed:@"mapbox"];
- _logoView = [[UIImageView alloc] initWithImage:logo];
- _logoView.accessibilityTraits = UIAccessibilityTraitStaticText;
- _logoView.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"LOGO_A11Y_LABEL", nil, nil, @"Mapbox", @"Accessibility label");
- _logoView.translatesAutoresizingMaskIntoConstraints = NO;
- [self addSubview:_logoView];
- _logoViewConstraints = [NSMutableArray array];
- _logoViewPosition = MGLOrnamentPositionBottomLeft;
- _logoViewMargins = MGLOrnamentDefaultPositionOffset;
-
- // setup attribution
- //
- _attributionButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
- _attributionButton.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"INFO_A11Y_LABEL", nil, nil, @"About this map", @"Accessibility label");
- _attributionButton.accessibilityHint = NSLocalizedStringWithDefaultValue(@"INFO_A11Y_HINT", nil, nil, @"Shows credits, a feedback form, and more", @"Accessibility hint");
- [_attributionButton addTarget:self action:@selector(showAttribution:) forControlEvents:UIControlEventTouchUpInside];
- _attributionButton.translatesAutoresizingMaskIntoConstraints = NO;
- [self addSubview:_attributionButton];
- _attributionButtonConstraints = [NSMutableArray array];
- [_attributionButton addObserver:self forKeyPath:@"hidden" options:NSKeyValueObservingOptionNew context:NULL];
-
- UILongPressGestureRecognizer *attributionLongPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(showAttribution:)];
- [_attributionButton addGestureRecognizer:attributionLongPress];
- _attributionButtonPosition = MGLOrnamentPositionBottomRight;
- _attributionButtonMargins = MGLOrnamentDefaultPositionOffset;
-
- // setup compass
- //
- _compassView = [MGLCompassButton compassButtonWithMapView:self];
- [self addSubview:_compassView];
- _compassViewConstraints = [NSMutableArray array];
- _compassViewPosition = MGLOrnamentPositionTopRight;
- _compassViewMargins = MGLOrnamentDefaultPositionOffset;
-
- // setup scale control
- //
- _scaleBar = [[MGLScaleBar alloc] init];
- _scaleBar.translatesAutoresizingMaskIntoConstraints = NO;
- [self addSubview:_scaleBar];
- _scaleBarConstraints = [NSMutableArray array];
- _scaleBarPosition = MGLOrnamentPositionTopLeft;
- _scaleBarMargins = MGLOrnamentDefaultPositionOffset;
-
- [self installConstraints];
-
- // setup interaction
- //
- _pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
- _pan.delegate = self;
- _pan.maximumNumberOfTouches = 1;
- [self addGestureRecognizer:_pan];
- _scrollEnabled = YES;
-
- _pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchGesture:)];
- _pinch.delegate = self;
- [self addGestureRecognizer:_pinch];
- _zoomEnabled = YES;
-
- _rotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotateGesture:)];
- _rotate.delegate = self;
- [self addGestureRecognizer:_rotate];
- _rotateEnabled = YES;
- _rotationThresholdWhileZooming = 3;
-
- _doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTapGesture:)];
- _doubleTap.numberOfTapsRequired = 2;
- [self addGestureRecognizer:_doubleTap];
-
- _twoFingerDrag = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerDragGesture:)];
- _twoFingerDrag.minimumNumberOfTouches = 2;
- _twoFingerDrag.maximumNumberOfTouches = 2;
- _twoFingerDrag.delegate = self;
- [_twoFingerDrag requireGestureRecognizerToFail:_pan];
- [self addGestureRecognizer:_twoFingerDrag];
- _pitchEnabled = YES;
-
- _twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTapGesture:)];
- _twoFingerTap.numberOfTouchesRequired = 2;
- [_twoFingerTap requireGestureRecognizerToFail:_pinch];
- [_twoFingerTap requireGestureRecognizerToFail:_rotate];
- [_twoFingerTap requireGestureRecognizerToFail:_twoFingerDrag];
- [self addGestureRecognizer:_twoFingerTap];
-
- _hapticFeedbackEnabled = YES;
-
- _decelerationRate = MGLMapViewDecelerationRateNormal;
-
- _quickZoom = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleQuickZoomGesture:)];
- _quickZoom.numberOfTapsRequired = 1;
- _quickZoom.minimumPressDuration = 0;
- [_quickZoom requireGestureRecognizerToFail:_doubleTap];
- [self addGestureRecognizer:_quickZoom];
-
- _singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGesture:)];
- [_singleTapGestureRecognizer requireGestureRecognizerToFail:_doubleTap];
- _singleTapGestureRecognizer.delegate = self;
- [_singleTapGestureRecognizer requireGestureRecognizerToFail:_quickZoom];
- [self addGestureRecognizer:_singleTapGestureRecognizer];
-
- // observe app activity
- //
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willTerminate) name:UIApplicationWillTerminateNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
-
- // Pending completion blocks are called *after* annotation views have been updated
- // in updateFromDisplayLink.
- _pendingCompletionBlocks = [NSMutableArray array];
-
-
- // As of 3.7.5, we intentionally do not listen for `UIApplicationWillResignActiveNotification` or call `pauseRendering:` in response to it, as doing
- // so causes a loop when asking for location permission. See: https://github.com/mapbox/mapbox-gl-native/issues/11225
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
-
- // Device orientation management
- self.currentOrientation = UIInterfaceOrientationUnknown;
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
- [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
-
- // set initial position
- //
- mbgl::CameraOptions options;
- options.center = mbgl::LatLng(0, 0);
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- options.padding = padding;
- options.zoom = 0;
-
- _cameraChangeReasonBitmask = MGLCameraChangeReasonNone;
-
- _mbglMap->jumpTo(options);
- _pendingLatitude = NAN;
- _pendingLongitude = NAN;
- _targetCoordinate = kCLLocationCoordinate2DInvalid;
-
- if ([UIApplication sharedApplication].applicationState != UIApplicationStateBackground) {
- [MGLMapboxEvents pushTurnstileEvent];
- [MGLMapboxEvents pushEvent:MMEEventTypeMapLoad withAttributes:@{}];
- }
-
-}
-
-- (mbgl::Size)size
-{
- // check for minimum texture size supported by OpenGL ES 2.0
- //
- CGSize size = CGSizeMake(MAX(self.bounds.size.width, 64), MAX(self.bounds.size.height, 64));
- return { static_cast<uint32_t>(size.width),
- static_cast<uint32_t>(size.height) };
-}
-
-- (void)reachabilityChanged:(NSNotification *)notification
-{
- MGLAssertIsMainThread();
-
- MGLReachability *reachability = [notification object];
- if ( ! _isWaitingForRedundantReachableNotification && [reachability isReachable])
- {
- mbgl::NetworkStatus::Reachable();
- }
- _isWaitingForRedundantReachableNotification = NO;
-}
-
-
-- (void)destroyCoreObjects {
- // Record the current state. Currently only saving a limited set of properties.
- self.terminated = YES;
- self.residualCamera = self.camera;
- self.residualDebugMask = self.debugMask;
- self.residualStyleURL = self.styleURL;
-
- // Tear down C++ objects, insuring worker threads correctly terminate.
- // Because of how _mbglMap is constructed, we need to destroy it first.
- delete _mbglMap;
- _mbglMap = nullptr;
-
- _mbglView.reset();
-
- _rendererFrontend.reset();
-}
-
-- (void)dealloc
-{
- MGLLogInfo(@"Deallocating MGLMapView.");
- [_reachability stopNotifier];
-
- [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [_attributionButton removeObserver:self forKeyPath:@"hidden"];
-
- // Removing the annotations unregisters any outstanding KVO observers.
- NSArray *annotations = self.annotations;
- if (annotations)
- {
- [self removeAnnotations:annotations];
- }
-
- [self validateDisplayLink];
-
- [self destroyCoreObjects];
-
- [self.compassViewConstraints removeAllObjects];
- self.compassViewConstraints = nil;
-
- [self.scaleBarConstraints removeAllObjects];
- self.scaleBarConstraints = nil;
-
- [self.logoViewConstraints removeAllObjects];
- self.logoViewConstraints = nil;
-
- [self.attributionButtonConstraints removeAllObjects];
- self.attributionButtonConstraints = nil;
-
- [_locationManager stopUpdatingLocation];
- [_locationManager stopUpdatingHeading];
- _locationManager.delegate = nil;
-}
-
-- (void)setDelegate:(nullable id<MGLMapViewDelegate>)delegate
-{
- MGLLogDebug(@"Setting delegate: %@", delegate);
- if (_delegate == delegate) return;
-
- _delegate = delegate;
-
- _delegateHasAlphasForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:alphaForShapeAnnotation:)];
- _delegateHasStrokeColorsForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:strokeColorForShapeAnnotation:)];
- _delegateHasFillColorsForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:fillColorForPolygonAnnotation:)];
- _delegateHasLineWidthsForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:lineWidthForPolylineAnnotation:)];
-}
-
-- (void)didReceiveMemoryWarning
-{
- MGLAssertIsMainThread();
-
- if ( ! self.dormant && _rendererFrontend)
- {
- _rendererFrontend->reduceMemoryUse();
- }
-
- self.lastSnapshotImage = nil;
-}
-
-- (MGLMapViewImpl *)viewImpl
-{
- return _mbglView.get();
-}
-
-#pragma mark - Layout -
-
-+ (BOOL)requiresConstraintBasedLayout
-{
- return YES;
-}
-
-- (void)setScaleBarPosition:(MGLOrnamentPosition)scaleBarPosition {
- MGLLogDebug(@"Setting scaleBarPosition: %lu", scaleBarPosition);
- _scaleBarPosition = scaleBarPosition;
- [self installScaleBarConstraints];
-}
-
-- (void)setScaleBarMargins:(CGPoint)scaleBarMargins {
- MGLLogDebug(@"Setting scaleBarMargins: (x:%f, y:%f)", scaleBarMargins.x, scaleBarMargins.y);
- _scaleBarMargins = scaleBarMargins;
- [self installScaleBarConstraints];
-}
-
-- (void)setCompassViewPosition:(MGLOrnamentPosition)compassViewPosition {
- MGLLogDebug(@"Setting compassViewPosition: %lu", compassViewPosition);
- _compassViewPosition = compassViewPosition;
- [self installCompassViewConstraints];
-}
-
-- (void)setCompassViewMargins:(CGPoint)compassViewMargins {
- MGLLogDebug(@"Setting compassViewOffset: (x:%f, y:%f)", compassViewMargins.x, compassViewMargins.y);
- _compassViewMargins = compassViewMargins;
- [self installCompassViewConstraints];
-}
-
-- (void)setLogoViewPosition:(MGLOrnamentPosition)logoViewPosition {
- MGLLogDebug(@"Setting logoViewPosition: %lu", logoViewPosition);
- _logoViewPosition = logoViewPosition;
- [self installLogoViewConstraints];
-}
-
-- (void)setLogoViewMargins:(CGPoint)logoViewMargins {
- MGLLogDebug(@"Setting logoViewMargins: (x:%f, y:%f)", logoViewMargins.x, logoViewMargins.y);
- _logoViewMargins = logoViewMargins;
- [self installLogoViewConstraints];
-}
-
-- (void)setAttributionButtonPosition:(MGLOrnamentPosition)attributionButtonPosition {
- MGLLogDebug(@"Setting attributionButtonPosition: %lu", attributionButtonPosition);
- _attributionButtonPosition = attributionButtonPosition;
- [self installAttributionButtonConstraints];
-}
-
-- (void)setAttributionButtonMargins:(CGPoint)attributionButtonMargins {
- MGLLogDebug(@"Setting attributionButtonMargins: (x:%f, y:%f)", attributionButtonMargins.x, attributionButtonMargins.y);
- _attributionButtonMargins = attributionButtonMargins;
- [self installAttributionButtonConstraints];
-}
-
-- (void)updateConstraintsForOrnament:(UIView *)view
- constraints:(NSMutableArray *)constraints
- position:(MGLOrnamentPosition)position
- size:(CGSize)size
- margins:(CGPoint)margins {
- NSMutableArray *updatedConstraints = [NSMutableArray array];
- UIEdgeInsets inset = UIEdgeInsetsZero;
-
- BOOL automaticallyAdjustContentInset;
- if (_automaticallyAdjustContentInsetHolder) {
- automaticallyAdjustContentInset = _automaticallyAdjustContentInsetHolder.boolValue;
- } else {
- UIViewController *viewController = [self rootViewController];
- automaticallyAdjustContentInset = viewController.automaticallyAdjustsScrollViewInsets;
- }
-
- if (! automaticallyAdjustContentInset) {
- inset = UIEdgeInsetsMake(self.contentInset.top - self.safeMapViewContentInsets.top,
- self.contentInset.left - self.safeMapViewContentInsets.left,
- self.contentInset.bottom - self.safeMapViewContentInsets.bottom,
- self.contentInset.right - self.safeMapViewContentInsets.right);
-
- // makes sure the insets don't have negative values that could hide the ornaments
- // thus violating our ToS
- inset = UIEdgeInsetsMake(fmaxf(inset.top, 0),
- fmaxf(inset.left, 0),
- fmaxf(inset.bottom, 0),
- fmaxf(inset.right, 0));
- }
-
- switch (position) {
- case MGLOrnamentPositionTopLeft:
- [updatedConstraints addObject:[view.topAnchor constraintEqualToAnchor:self.mgl_safeTopAnchor constant:margins.y + inset.top]];
- [updatedConstraints addObject:[view.leadingAnchor constraintEqualToAnchor:self.mgl_safeLeadingAnchor constant:margins.x + inset.left]];
- break;
- case MGLOrnamentPositionTopRight:
- [updatedConstraints addObject:[view.topAnchor constraintEqualToAnchor:self.mgl_safeTopAnchor constant:margins.y + inset.top]];
- [updatedConstraints addObject:[self.mgl_safeTrailingAnchor constraintEqualToAnchor:view.trailingAnchor constant:margins.x + inset.right]];
- break;
- case MGLOrnamentPositionBottomLeft:
- [updatedConstraints addObject:[self.mgl_safeBottomAnchor constraintEqualToAnchor:view.bottomAnchor constant:margins.y + inset.bottom]];
- [updatedConstraints addObject:[view.leadingAnchor constraintEqualToAnchor:self.mgl_safeLeadingAnchor constant:margins.x + inset.left]];
- break;
- case MGLOrnamentPositionBottomRight:
- [updatedConstraints addObject:[self.mgl_safeBottomAnchor constraintEqualToAnchor:view.bottomAnchor constant:margins.y + inset.bottom]];
- [updatedConstraints addObject: [self.mgl_safeTrailingAnchor constraintEqualToAnchor:view.trailingAnchor constant:margins.x + inset.right]];
- break;
- }
-
- if (!CGSizeEqualToSize(size, CGSizeZero)) {
- [updatedConstraints addObject:[view.widthAnchor constraintEqualToConstant:size.width]];
- [updatedConstraints addObject:[view.heightAnchor constraintEqualToConstant:size.height]];
- }
-
- [NSLayoutConstraint deactivateConstraints:constraints];
- [constraints removeAllObjects];
- [NSLayoutConstraint activateConstraints:updatedConstraints];
- [constraints addObjectsFromArray:updatedConstraints];
-}
-
-- (void)installConstraints
-{
- [self installCompassViewConstraints];
- [self installScaleBarConstraints];
- [self installLogoViewConstraints];
- [self installAttributionButtonConstraints];
-}
-
-- (void)installCompassViewConstraints {
- // compass view
- [self updateConstraintsForOrnament:self.compassView
- constraints:self.compassViewConstraints
- position:self.compassViewPosition
- size:self.compassView.bounds.size
- margins:self.compassViewMargins];
-}
-
-- (void)installScaleBarConstraints {
- // scale bar view
- [self updateConstraintsForOrnament:self.scaleBar
- constraints:self.scaleBarConstraints
- position:self.scaleBarPosition
- size:CGSizeZero
- margins:self.scaleBarMargins];
-}
-
-- (void)installLogoViewConstraints {
- // logo view
- [self updateConstraintsForOrnament:self.logoView
- constraints:self.logoViewConstraints
- position:self.logoViewPosition
- size:self.logoView.bounds.size
- margins:self.logoViewMargins];
-}
-
-- (void)installAttributionButtonConstraints {
- // attribution button
- [self updateConstraintsForOrnament:self.attributionButton
- constraints:self.attributionButtonConstraints
- position:self.attributionButtonPosition
- size:self.attributionButton.bounds.size
- margins:self.attributionButtonMargins];
-}
-
-- (BOOL)isOpaque
-{
- return _opaque;
-}
-
-- (void)setOpaque:(BOOL)opaque
-{
- _opaque = opaque;
- if (_mbglView) {
- _mbglView->setOpaque(opaque);
- }
-}
-
-- (void)renderSync
-{
- if ( ! self.dormant && _rendererFrontend)
- {
- _rendererFrontend->render();
- }
-}
-
-// This gets called when the view dimension changes, e.g. because the device is being rotated.
-- (void)layoutSubviews
-{
- [super layoutSubviews];
-
- // Calling this here instead of in the scale bar itself because if this is done in the
- // scale bar instance, it triggers a call to this `layoutSubviews` method that calls
- // `_mbglMap->setSize()` just below that triggers rendering update which triggers
- // another scale bar update which causes a rendering update loop and a major performace
- // degradation.
- [self.scaleBar invalidateIntrinsicContentSize];
-
- [self adjustContentInset];
-
- if (_mbglView) {
- _mbglView->layoutChanged();
- }
-
- if (_mbglMap) {
- self.mbglMap.setSize([self size]);
- }
-
- if (self.compassView.alpha)
- {
- [self updateCompass];
- }
-
- if (self.compassView.alpha || self.showsUserHeadingIndicator)
- {
- [self updateHeadingForDeviceOrientation];
- }
-
- [self updateUserLocationAnnotationView];
-
- [self updateAttributionAlertView];
-}
-
-/// Updates `contentInset` to reflect the current window geometry.
-- (void)adjustContentInset
-{
- UIEdgeInsets adjustedContentInsets = UIEdgeInsetsZero;
- UIViewController *viewController = [self rootViewController];
- BOOL automaticallyAdjustContentInset;
- if (@available(iOS 11.0, *))
- {
- adjustedContentInsets = self.safeAreaInsets;
-
- } else {
- adjustedContentInsets.top = viewController.topLayoutGuide.length;
- CGFloat bottomPoint = CGRectGetMaxY(viewController.view.bounds) -
- (CGRectGetMaxY(viewController.view.bounds)
- - viewController.bottomLayoutGuide.length);
- adjustedContentInsets.bottom = bottomPoint;
-
- }
-
- if (_automaticallyAdjustContentInsetHolder) {
- automaticallyAdjustContentInset = _automaticallyAdjustContentInsetHolder.boolValue;
- } else {
- automaticallyAdjustContentInset = viewController.automaticallyAdjustsScrollViewInsets;
- }
-
- self.safeMapViewContentInsets = adjustedContentInsets;
- if ( ! automaticallyAdjustContentInset)
- {
- return;
- }
-
- self.contentInset = adjustedContentInsets;
-}
-
-- (UIViewController *)rootViewController {
- // We could crawl all the way up the responder chain using
- // -viewControllerForLayoutGuides, but an intervening view means that any
- // manual contentInset should not be overridden; something other than the
- // top and bottom bars may be influencing the manual inset.
- UIViewController *viewController;
- if ([self.nextResponder isKindOfClass:[UIViewController class]])
- {
- // This map view is the content view of a view controller.
- viewController = (UIViewController *)self.nextResponder;
- }
- else if ([self.superview.nextResponder isKindOfClass:[UIViewController class]])
- {
- // This map view is an immediate child of a view controller’s content view.
- viewController = (UIViewController *)self.superview.nextResponder;
- }
- return viewController;
-}
-
-- (void)setAutomaticallyAdjustsContentInset:(BOOL)automaticallyAdjustsContentInset {
- MGLLogDebug(@"Setting automaticallyAdjustsContentInset: %@", MGLStringFromBOOL(automaticallyAdjustsContentInset));
- _automaticallyAdjustContentInsetHolder = [NSNumber numberWithBool:automaticallyAdjustsContentInset];
-}
-
-- (BOOL)automaticallyAdjustsContentInset {
- return _automaticallyAdjustContentInsetHolder.boolValue;
-}
-
-- (void)setContentInset:(UIEdgeInsets)contentInset
-{
- [self setContentInset:contentInset animated:NO completionHandler:nil];
-}
-
-- (void)setContentInset:(UIEdgeInsets)contentInset animated:(BOOL)animated
-{
- [self setContentInset:contentInset animated:animated completionHandler:nil];
-}
-
-- (void)setContentInset:(UIEdgeInsets)contentInset animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting contentInset: %@ animated:", NSStringFromUIEdgeInsets(contentInset), MGLStringFromBOOL(animated));
- if (UIEdgeInsetsEqualToEdgeInsets(contentInset, self.contentInset))
- {
- if (completion) {
- completion();
- }
- return;
- }
-
- if (self.userTrackingMode == MGLUserTrackingModeNone)
- {
- // Don’t call -setCenterCoordinate:, which resets the user tracking mode.
- [self _setCenterCoordinate:self.centerCoordinate edgePadding:contentInset zoomLevel:self.zoomLevel direction:self.direction duration:animated ? MGLAnimationDuration : 0 animationTimingFunction:nil completionHandler:completion];
- _contentInset = contentInset;
- }
- else
- {
- _contentInset = contentInset;
- [self didUpdateLocationWithUserTrackingAnimated:animated completionHandler:completion];
- }
-
- // Compass, logo and attribution button constraints needs to be updated.z
- [self installConstraints];
-}
-
-/// Returns the frame of inset content within the map view.
-- (CGRect)contentFrame
-{
- return UIEdgeInsetsInsetRect(self.bounds, self.contentInset);
-}
-
-/// Returns the center point of the inset content within the map view.
-- (CGPoint)contentCenter
-{
- CGRect contentFrame = self.contentFrame;
- return CGPointMake(CGRectGetMidX(contentFrame), CGRectGetMidY(contentFrame));
-}
-
-#pragma mark - Pending completion blocks
-
-- (void)processPendingBlocks
-{
- NSArray *blocks = self.pendingCompletionBlocks;
- self.pendingCompletionBlocks = [NSMutableArray array];
-
- for (dispatch_block_t block in blocks)
- {
- block();
- }
-}
-
-- (BOOL)scheduleTransitionCompletion:(dispatch_block_t)block
-{
- // Only add a block if the display link (that calls processPendingBlocks) is
- // running, otherwise fall back to calling immediately.
- if (_displayLink && !_displayLink.isPaused)
- {
- [self willChangeValueForKey:@"pendingCompletionBlocks"];
- [self.pendingCompletionBlocks addObject:block];
- [self didChangeValueForKey:@"pendingCompletionBlocks"];
- return YES;
- }
-
- return NO;
-}
-
-#pragma mark - Life Cycle -
-
-- (void)updateFromDisplayLink:(CADisplayLink *)displayLink
-{
- MGLAssertIsMainThread();
-
- // Not "visible" - this isn't a full definition of visibility, but if
- // the map view doesn't have a window then it *cannot* be visible.
- if (!self.window) {
- return;
- }
-
- // Mismatched display link
- if (displayLink && displayLink != _displayLink) {
- return;
- }
-
- // Check to ensure rendering doesn't occur in the background
- if (([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) &&
- ![self supportsBackgroundRendering])
- {
- return;
- }
-
- if (_needsDisplayRefresh || (self.pendingCompletionBlocks.count > 0))
- {
- _needsDisplayRefresh = NO;
-
- // Update UIKit elements, prior to rendering
- [self updateUserLocationAnnotationView];
- [self updateAnnotationViews];
- [self updateCalloutView];
-
- // Call any pending completion blocks. This is primarily to ensure
- // that annotations are in the expected position after core rendering
- // and map update.
- //
- // TODO: Consider using this same mechanism for delegate callbacks.
- [self processPendingBlocks];
-
- _mbglView->display();
- }
-
- if (self.experimental_enableFrameRateMeasurement)
- {
- CFTimeInterval now = CACurrentMediaTime();
-
- self.frameTime = now - _displayLink.timestamp;
- _frameDurations += self.frameTime;
-
- _frameCount++;
-
- CFTimeInterval elapsed = now - _frameCounterStartTime;
-
- if (elapsed >= 1.0) {
- self.averageFrameRate = _frameCount / elapsed;
- self.averageFrameTime = (_frameDurations / _frameCount) * 1000;
-
- _frameCount = 0;
- _frameDurations = 0;
- _frameCounterStartTime = now;
- }
- }
-}
-
-- (void)setNeedsRerender
-{
- MGLAssertIsMainThread();
-
- _needsDisplayRefresh = YES;
-}
-
-- (void)willTerminate
-{
- MGLAssertIsMainThread();
-
- if ( ! self.dormant)
- {
- [self validateDisplayLink];
- self.dormant = YES;
- _mbglView->deleteView();
- }
-
- [self destroyCoreObjects];
-}
-
-- (void)validateDisplayLink
-{
- BOOL isVisible = self.superview && self.window;
- if (isVisible && ! _displayLink)
- {
- if (_mbglMap && self.mbglMap.getMapOptions().constrainMode() == mbgl::ConstrainMode::None)
- {
- self.mbglMap.setConstrainMode(mbgl::ConstrainMode::HeightOnly);
- }
-
- _displayLink = [self.window.screen displayLinkWithTarget:self selector:@selector(updateFromDisplayLink:)];
- [self updateDisplayLinkPreferredFramesPerSecond];
- [_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
- _needsDisplayRefresh = YES;
- [self updateFromDisplayLink:_displayLink];
- }
- else if ( ! isVisible && _displayLink)
- {
- [_displayLink invalidate];
- _displayLink = nil;
- [self processPendingBlocks];
- }
-}
-
-- (void)updateDisplayLinkPreferredFramesPerSecond
-{
- if (!_displayLink)
- {
- return;
- }
-
- NSInteger newFrameRate;
- if (_preferredFramesPerSecond == MGLMapViewPreferredFramesPerSecondDefault)
- {
- // On legacy devices that cannot maintain a reasonable frame rate, set
- // a lower limit to avoid jank.
- newFrameRate = UIDevice.currentDevice.mgl_isLegacyDevice ? MGLMapViewPreferredFramesPerSecondLowPower : MGLMapViewPreferredFramesPerSecondMaximum;
- }
- else
- {
- newFrameRate = _preferredFramesPerSecond;
- }
-
- if (@available(iOS 10.0, *))
- {
- _displayLink.preferredFramesPerSecond = newFrameRate;
- }
- else
- {
- // CADisplayLink.frameInterval does not support more than 60 FPS (and
- // no device that supports >60 FPS ever supported iOS 9).
- NSInteger maximumFrameRate = 60;
-
- // `0` is an alias for maximum frame rate.
- newFrameRate = newFrameRate ?: maximumFrameRate;
-
- _displayLink.frameInterval = maximumFrameRate / MIN(newFrameRate, maximumFrameRate);
- }
-}
-
-- (void)setPreferredFramesPerSecond:(MGLMapViewPreferredFramesPerSecond)preferredFramesPerSecond
-{
- MGLLogDebug(@"Setting preferredFramesPerSecond: %ld", preferredFramesPerSecond);
- if (_preferredFramesPerSecond == preferredFramesPerSecond)
- {
- return;
- }
-
- _preferredFramesPerSecond = preferredFramesPerSecond;
- [self updateDisplayLinkPreferredFramesPerSecond];
-}
-
-- (void)updatePresentsWithTransaction
-{
- BOOL hasEnoughViewAnnotations = (self.annotationContainerView.annotationViews.count > MGLPresentsWithTransactionAnnotationCount);
- BOOL hasAnAnchoredCallout = [self hasAnAnchoredAnnotationCalloutView];
-
- _enablePresentsWithTransaction = (hasEnoughViewAnnotations || hasAnAnchoredCallout);
-
- // If the map is visible, change the layer property too
- if (self.window) {
- _mbglView->setPresentsWithTransaction(_enablePresentsWithTransaction);
- }
-}
-
-- (void)willMoveToWindow:(UIWindow *)newWindow {
- [super willMoveToWindow:newWindow];
- [self refreshSupportedInterfaceOrientationsWithWindow:newWindow];
-
- if (!newWindow)
- {
- // See https://github.com/mapbox/mapbox-gl-native/issues/14232
- // In iOS 12.2, CAEAGLLayer.presentsWithTransaction can cause dramatic
- // slow down. The exact cause of this is unknown, but this work around
- // appears to lessen the effects.
- _mbglView->setPresentsWithTransaction(NO);
-
- // Moved from didMoveToWindow
- [self validateDisplayLink];
- }
-}
-
-- (void)didMoveToWindow
-{
- [super didMoveToWindow];
-
- if (self.window)
- {
- // See above comment
- _mbglView->setPresentsWithTransaction(self.enablePresentsWithTransaction);
-
- [self validateDisplayLink];
- }
-}
-
-- (void)didMoveToSuperview
-{
- [self validateDisplayLink];
- if (self.superview)
- {
- [self installConstraints];
- }
- [super didMoveToSuperview];
-}
-
-- (void)refreshSupportedInterfaceOrientationsWithWindow:(UIWindow *)window {
-
- // "The system intersects the view controller'€™s supported orientations with
- // the app's supported orientations (as determined by the Info.plist file or
- // the app delegate's application:supportedInterfaceOrientationsForWindow:
- // method) and the device's supported orientations to determine whether to rotate.
-
- UIApplication *application = [UIApplication sharedApplication];
-
- if (window && [application.delegate respondsToSelector:@selector(application:supportedInterfaceOrientationsForWindow:)]) {
- self.applicationSupportedInterfaceOrientations = [application.delegate application:application supportedInterfaceOrientationsForWindow:window];
- return;
- }
-
- // If no delegate method, check the application's plist.
- static UIInterfaceOrientationMask orientationMask = UIInterfaceOrientationMaskAll;
-
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- // No application delegate
- NSArray *orientations = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UISupportedInterfaceOrientations"];
-
- // Application's info plist provided supported orientations.
- if (orientations.count > 0) {
- orientationMask = 0;
-
- NSDictionary *lookup =
- @{
- @"UIInterfaceOrientationPortrait" : @(UIInterfaceOrientationMaskPortrait),
- @"UIInterfaceOrientationPortraitUpsideDown" : @(UIInterfaceOrientationMaskPortraitUpsideDown),
- @"UIInterfaceOrientationLandscapeLeft" : @(UIInterfaceOrientationMaskLandscapeLeft),
- @"UIInterfaceOrientationLandscapeRight" : @(UIInterfaceOrientationMaskLandscapeRight)
- };
-
- for (NSString *orientation in orientations) {
- UIInterfaceOrientationMask mask = ((NSNumber*)lookup[orientation]).unsignedIntegerValue;
- orientationMask |= mask;
- }
- }
- });
-
- self.applicationSupportedInterfaceOrientations = orientationMask;
-}
-
-- (void)deviceOrientationDidChange:(__unused NSNotification *)notification
-{
- UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];
-
- // The docs for `UIViewController.supportedInterfaceOrientations` states:
- //
- // When the user changes the device orientation, the system calls this method
- // on the root view controller or the topmost presented view controller that
- // fills the window. If the view controller supports the new orientation, the
- // window and view controller are rotated to the new orientation. This method
- // is only called if the view controller'€™s shouldAutorotate method returns YES.
- //
- // We want to match similar behaviour. However, it may be preferable to look
- // at the owning view controller (in cases where the map view may be covered
- // by another view.
-
- UIViewController *viewController = [self.window.rootViewController mgl_topMostViewController];
-
- if (![viewController shouldAutorotate]) {
- return;
- }
-
- if ((self.currentOrientation == (UIInterfaceOrientation)deviceOrientation) &&
- (self.currentOrientation != UIInterfaceOrientationUnknown)) {
- return;
- }
-
- // "The system intersects the view controller'€™s supported orientations with
- // the app's supported orientations (as determined by the Info.plist file or
- // the app delegate's application:supportedInterfaceOrientationsForWindow:
- // method) and the device's supported orientations to determine whether to rotate.
-
- UIInterfaceOrientationMask supportedOrientations = viewController.supportedInterfaceOrientations;
- supportedOrientations &= self.applicationSupportedInterfaceOrientations;
-
- // Interface orientations are defined by device orientations
- UIInterfaceOrientationMask interfaceOrientation = 1 << deviceOrientation;
- UIInterfaceOrientationMask validOrientation = interfaceOrientation & UIInterfaceOrientationMaskAll;
-
- if (!(validOrientation & supportedOrientations)) {
- return;
- }
-
- self.currentOrientation = (UIInterfaceOrientation)deviceOrientation;
-
- // Q. Do we need to re-layout if we're just going from Portrait -> Portrait
- // Upside Down (or from Left to Right)?
- [self setNeedsLayout];
-}
-
-#pragma mark - Application lifecycle
-- (void)willResignActive:(NSNotification *)notification
-{
- if ([self supportsBackgroundRendering])
- {
- return;
- }
-
- self.lastSnapshotImage = _mbglView->snapshot();
-
- // For OpenGL this calls glFinish as recommended in
- // https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ImplementingaMultitasking-awareOpenGLESApplication/ImplementingaMultitasking-awareOpenGLESApplication.html#//apple_ref/doc/uid/TP40008793-CH5-SW1
- // reduceMemoryUse(), calls performCleanup(), which calls glFinish
- if (_rendererFrontend)
- {
- _rendererFrontend->reduceMemoryUse();
- }
-}
-
-- (void)didEnterBackground:(NSNotification *)notification
-{
- [self pauseRendering:notification];
-}
-
-- (void)willEnterForeground:(NSNotification *)notification
-{
- // Do nothing, currently if resumeRendering is called here it's a no-op.
-}
-
-- (void)didBecomeActive:(NSNotification *)notification
-{
- [self resumeRendering:notification];
- self.lastSnapshotImage = nil;
-}
-
-#pragma mark - GL / display link wake/sleep
-
-- (EAGLContext *)context {
- return _mbglView->getEAGLContext();
-}
-
-- (BOOL)supportsBackgroundRendering
-{
- // If this view targets an external display, such as AirPlay or CarPlay, we
- // can safely continue to render OpenGL content without tripping
- // gpus_ReturnNotPermittedKillClient in libGPUSupportMercury, because the
- // external connection keeps the application from truly receding to the
- // background.
- return (self.window.screen != [UIScreen mainScreen]);
-}
-
-- (void)pauseRendering:(__unused NSNotification *)notification
-{
- // If this view targets an external display, such as AirPlay or CarPlay, we
- // can safely continue to render OpenGL content without tripping
- // gpus_ReturnNotPermittedKillClient in libGPUSupportMercury, because the
- // external connection keeps the application from truly receding to the
- // background.
- if ([self supportsBackgroundRendering])
- {
- return;
- }
-
- MGLLogInfo(@"Entering background.");
- MGLAssertIsMainThread();
-
- // Ideally we would wait until we actually received a memory warning but the bulk of the memory
- // we have to release is tied up in GL buffers that we can't touch once we're in the background.
- // Compromise position: release everything but currently rendering tiles
- // A possible improvement would be to store a copy of the GL buffers that we could use to rapidly
- // restart, but that we could also discard in response to a memory warning.
- if (_rendererFrontend)
- {
- _rendererFrontend->reduceMemoryUse();
- }
-
- if ( ! self.dormant)
- {
- self.dormant = YES;
-
- [self validateLocationServices];
-
- [MGLMapboxEvents flush];
-
- _displayLink.paused = YES;
- [self processPendingBlocks];
-
- if ( ! self.glSnapshotView)
- {
- self.glSnapshotView = [[UIImageView alloc] initWithFrame: _mbglView->getView().frame];
- self.glSnapshotView.autoresizingMask = _mbglView->getView().autoresizingMask;
- self.glSnapshotView.contentMode = UIViewContentModeCenter;
- [self insertSubview:self.glSnapshotView aboveSubview:_mbglView->getView()];
- }
-
- self.glSnapshotView.image = self.lastSnapshotImage;
- self.glSnapshotView.hidden = NO;
-
- if (self.debugMask && [self.glSnapshotView.subviews count] == 0)
- {
- UIView *snapshotTint = [[UIView alloc] initWithFrame:self.glSnapshotView.bounds];
- snapshotTint.autoresizingMask = self.glSnapshotView.autoresizingMask;
- snapshotTint.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.25];
- [self.glSnapshotView addSubview:snapshotTint];
- }
-
- _mbglView->deleteView();
- }
-}
-
-- (void)resumeRendering:(__unused NSNotification *)notification
-{
- MGLLogInfo(@"Entering foreground.");
- MGLAssertIsMainThread();
-
- if (self.dormant && [UIApplication sharedApplication].applicationState != UIApplicationStateBackground)
- {
- self.dormant = NO;
-
- _mbglView->createView();
-
- self.glSnapshotView.hidden = YES;
-
- [self.glSnapshotView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
-
- _displayLink.paused = NO;
-
- [self validateLocationServices];
-
- [MGLMapboxEvents pushTurnstileEvent];
- [MGLMapboxEvents pushEvent:MMEEventTypeMapLoad withAttributes:@{}];
- }
-}
-
-- (void)setHidden:(BOOL)hidden
-{
- super.hidden = hidden;
- _displayLink.paused = hidden;
-
- if (hidden)
- {
- [self processPendingBlocks];
- }
-}
-
-- (void)tintColorDidChange
-{
- for (UIView *subview in self.subviews) [self updateTintColorForView:subview];
-}
-
-- (void)updateTintColorForView:(UIView *)view
-{
- // Don't update:
- // - annotation views
- // - attribution button (handled automatically)
- if ([view isEqual:self.annotationContainerView] || [view isEqual:self.attributionButton]) return;
-
- if ([view respondsToSelector:@selector(setTintColor:)]) view.tintColor = self.tintColor;
-
- for (UIView *subview in view.subviews) [self updateTintColorForView:subview];
-}
-
-- (BOOL)canBecomeFirstResponder {
- return YES;
-}
-
-#pragma mark - Gestures -
-
-- (void)touchesBegan:(__unused NSSet<UITouch *> *)touches withEvent:(__unused UIEvent *)event
-{
- if (!self.zoomEnabled && !self.pitchEnabled && !self.rotateEnabled && !self.scrollEnabled)
- {
- return;
- };
-
- self.mbglMap.setGestureInProgress(false);
- if (self.userTrackingState == MGLUserTrackingStateBegan)
- {
- [self setUserTrackingMode:MGLUserTrackingModeNone animated:NO completionHandler:nil];
- }
-
- [self cancelTransitions];
-}
-
-- (void)notifyGestureDidBegin {
- BOOL animated = NO;
-
- [self cameraWillChangeAnimated:animated];
- self.mbglMap.setGestureInProgress(true);
- _changeDelimiterSuppressionDepth++;
-}
-
-- (void)notifyGestureDidEndWithDrift:(BOOL)drift {
- _changeDelimiterSuppressionDepth--;
- MGLAssert(_changeDelimiterSuppressionDepth >= 0,
- @"Unbalanced change delimiter suppression/unsuppression");
- if (_changeDelimiterSuppressionDepth == 0) {
- self.mbglMap.setGestureInProgress(false);
- }
- if ( ! drift)
- {
- BOOL animated = NO;
- [self cameraDidChangeAnimated:animated];
- }
-}
-
-- (BOOL)isSuppressingChangeDelimiters {
- return _changeDelimiterSuppressionDepth > 0;
-}
-
-- (BOOL)_shouldChangeFromCamera:(nonnull MGLMapCamera *)oldCamera toCamera:(nonnull MGLMapCamera *)newCamera
-{
- // Check delegates first
- if ([self.delegate respondsToSelector:@selector(mapView:shouldChangeFromCamera:toCamera:reason:)])
- {
- return [self.delegate mapView:self shouldChangeFromCamera:oldCamera toCamera:newCamera reason:self.cameraChangeReasonBitmask];
- }
- else if ([self.delegate respondsToSelector:@selector(mapView:shouldChangeFromCamera:toCamera:)])
- {
- return [self.delegate mapView:self shouldChangeFromCamera:oldCamera toCamera:newCamera];
- }
- else
- {
- return YES;
- }
-}
-
-- (void)handlePanGesture:(UIPanGestureRecognizer *)pan
-{
- if ( ! self.isScrollEnabled) return;
-
- [self cancelTransitions];
-
- MGLMapCamera *oldCamera = self.camera;
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonGesturePan;
-
- if (pan.state == UIGestureRecognizerStateBegan)
- {
- self.userTrackingMode = MGLUserTrackingModeNone;
-
- [self notifyGestureDidBegin];
- }
- else if (pan.state == UIGestureRecognizerStateChanged)
- {
- CGPoint delta = [pan translationInView:pan.view];
-
- MGLMapCamera *toCamera = [self cameraByPanningWithTranslation:delta panGesture:pan];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- self.mbglMap.moveBy({ delta.x, delta.y });
- [pan setTranslation:CGPointZero inView:pan.view];
- }
-
- [self cameraIsChanging];
- }
- else if (pan.state == UIGestureRecognizerStateEnded || pan.state == UIGestureRecognizerStateCancelled)
- {
- CGPoint velocity = [pan velocityInView:pan.view];
- if (self.decelerationRate == MGLMapViewDecelerationRateImmediate || sqrtf(velocity.x * velocity.x + velocity.y * velocity.y) < 100)
- {
- // Not enough velocity to overcome friction
- velocity = CGPointZero;
- }
-
- BOOL drift = ! CGPointEqualToPoint(velocity, CGPointZero);
- if (drift)
- {
- CGPoint offset = CGPointMake(velocity.x * self.decelerationRate / 4, velocity.y * self.decelerationRate / 4);
- MGLMapCamera *toCamera = [self cameraByPanningWithTranslation:offset panGesture:pan];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- self.mbglMap.moveBy({ offset.x, offset.y }, MGLDurationFromTimeInterval(self.decelerationRate));
- }
- }
-
- [self notifyGestureDidEndWithDrift:drift];
- }
-
-}
-
-- (void)handlePinchGesture:(UIPinchGestureRecognizer *)pinch
-{
- if ( ! self.isZoomEnabled) return;
-
- [self cancelTransitions];
-
- CGPoint centerPoint = [self anchorPointForGesture:pinch];
- MGLMapCamera *oldCamera = self.camera;
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonGesturePinch;
-
- if (pinch.state == UIGestureRecognizerStateBegan)
- {
- self.scale = powf(2, [self zoomLevel]);
-
- if (abs(pinch.velocity) > abs(self.rotate.velocity)) {
- self.isZooming = YES;
- }
- [self notifyGestureDidBegin];
- }
- else if (pinch.state == UIGestureRecognizerStateChanged)
- {
- // Zoom limiting happens at the core level.
- CGFloat newScale = self.scale * pinch.scale;
- double newZoom = log2(newScale);
-
- // Calculates the final camera zoom, has no effect within current map camera.
- MGLMapCamera *toCamera = [self cameraByZoomingToZoomLevel:newZoom aroundAnchorPoint:centerPoint];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- self.mbglMap.jumpTo(mbgl::CameraOptions()
- .withZoom(newZoom)
- .withAnchor(mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y })
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)));
-
- // The gesture recognizer only reports the gesture’s current center
- // point, so use the previous center point to anchor the transition.
- // If the number of touches has changed, the remembered center point is
- // meaningless.
- if (self.userTrackingMode == MGLUserTrackingModeNone && pinch.numberOfTouches == _previousPinchNumberOfTouches)
- {
- self.mbglMap.moveBy({centerPoint.x - _previousPinchCenterPoint.x, centerPoint.y - _previousPinchCenterPoint.y});
- }
- }
- [self cameraIsChanging];
- }
- else if (pinch.state == UIGestureRecognizerStateEnded || pinch.state == UIGestureRecognizerStateCancelled)
- {
- CGFloat velocity = pinch.velocity;
- if (isnan(velocity))
- {
- // UIPinchGestureRecognizer sometimes returns NaN for the velocity
- velocity = 0;
- }
- if (velocity > -0.5 && velocity < 3)
- {
- velocity = 0;
- }
-
- NSTimeInterval duration = (velocity > 0 ? 1 : 0.25) * self.decelerationRate;
-
- CGFloat scale = self.scale * pinch.scale;
- CGFloat newScale = scale;
- if (velocity >= 0)
- {
- newScale += scale * velocity * duration * 0.1;
- }
- else
- {
- newScale += scale / (velocity * duration) * 0.1;
- }
-
- if (newScale <= 0 || log2(newScale) < *self.mbglMap.getBounds().minZoom)
- {
- velocity = 0;
- }
-
- BOOL drift = velocity && duration;
-
- // Calculates the final camera zoom, this has no effect within current map camera.
- double zoom = log2(newScale);
- MGLMapCamera *toCamera = [self cameraByZoomingToZoomLevel:zoom aroundAnchorPoint:centerPoint];
-
- if ( ! [self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- drift = NO;
- }
- else
- {
- if (drift)
- {
- self.mbglMap.easeTo(mbgl::CameraOptions()
- .withZoom(zoom)
- .withAnchor(mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y })
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)), MGLDurationFromTimeInterval(duration));
- }
- }
-
- self.isZooming = NO;
- [self notifyGestureDidEndWithDrift:drift];
- [self unrotateIfNeededForGesture];
- }
-
- _previousPinchCenterPoint = centerPoint;
- _previousPinchNumberOfTouches = pinch.numberOfTouches;
-}
-
-- (void)handleRotateGesture:(UIRotationGestureRecognizer *)rotate
-{
- if ( ! self.isRotateEnabled) return;
-
- [self cancelTransitions];
-
- CGPoint centerPoint = [self anchorPointForGesture:rotate];
- MGLMapCamera *oldCamera = self.camera;
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonGestureRotate;
-
- if ([[NSUserDefaults standardUserDefaults] objectForKey:MGLRotationThresholdWhileZoomingKey]) {
- self.rotationThresholdWhileZooming = [[[NSUserDefaults standardUserDefaults] objectForKey:MGLRotationThresholdWhileZoomingKey] floatValue];
- }
- // Check whether a zoom triggered by a pinch gesture is occurring and if the rotation threshold has been met.
- if (MGLDegreesFromRadians(self.rotationBeforeThresholdMet) < self.rotationThresholdWhileZooming && self.isZooming && !self.isRotating) {
- self.rotationBeforeThresholdMet += fabs(rotate.rotation);
- rotate.rotation = 0;
- return;
- }
-
- if (rotate.state == UIGestureRecognizerStateBegan || ! self.isRotating)
- {
- self.angle = MGLRadiansFromDegrees(*self.mbglMap.getCameraOptions().bearing) * -1;
-
- self.isRotating = YES;
- if (self.userTrackingMode != MGLUserTrackingModeNone)
- {
- self.userTrackingMode = MGLUserTrackingModeFollow;
- }
-
- self.shouldTriggerHapticFeedbackForCompass = NO;
- [self notifyGestureDidBegin];
- }
- if (rotate.state == UIGestureRecognizerStateChanged)
- {
- CGFloat newDegrees = MGLDegreesFromRadians(self.angle + rotate.rotation) * -1;
-
- // constrain to +/-30 degrees when merely rotating like Apple does
- //
- if ( ! self.isRotationAllowed && std::abs(self.pinch.scale) < 10)
- {
- newDegrees = fminf(newDegrees, 30);
- newDegrees = fmaxf(newDegrees, -30);
- }
-
- MGLMapCamera *toCamera = [self cameraByRotatingToDirection:newDegrees aroundAnchorPoint:centerPoint];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- self.mbglMap.jumpTo(mbgl::CameraOptions()
- .withBearing(newDegrees)
- .withAnchor(mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y})
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)));
- }
-
- [self cameraIsChanging];
-
- // Trigger a light haptic feedback event when the user rotates to due north.
- if (@available(iOS 10.0, *))
- {
- if (self.isHapticFeedbackEnabled && fabs(newDegrees) <= 1 && self.shouldTriggerHapticFeedbackForCompass)
- {
- UIImpactFeedbackGenerator *hapticFeedback = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleLight];
- [hapticFeedback impactOccurred];
-
- self.shouldTriggerHapticFeedbackForCompass = NO;
- }
- else if (fabs(newDegrees) > 1)
- {
- self.shouldTriggerHapticFeedbackForCompass = YES;
- }
- }
- }
- else if ((rotate.state == UIGestureRecognizerStateEnded || rotate.state == UIGestureRecognizerStateCancelled))
- {
- self.rotationBeforeThresholdMet = 0;
- if (! self.isRotating) { return; }
- self.isRotating = NO;
-
- CGFloat velocity = rotate.velocity;
- CGFloat decelerationRate = self.decelerationRate;
- if (decelerationRate != MGLMapViewDecelerationRateImmediate && fabs(velocity) > 3)
- {
- CGFloat radians = self.angle + rotate.rotation;
- CGFloat newRadians = radians + velocity * decelerationRate * 0.1;
- CGFloat newDegrees = MGLDegreesFromRadians(newRadians) * -1;
-
- MGLMapCamera *toCamera = [self cameraByRotatingToDirection:newDegrees aroundAnchorPoint:centerPoint];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- self.mbglMap.easeTo(mbgl::CameraOptions()
- .withBearing(newDegrees)
- .withAnchor(mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y })
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)),
- MGLDurationFromTimeInterval(decelerationRate));
-
- [self notifyGestureDidEndWithDrift:YES];
- __weak MGLMapView *weakSelf = self;
-
- [self animateWithDelay:decelerationRate animations:^
- {
- [weakSelf unrotateIfNeededForGesture];
- }];
- }
- }
- else
- {
- [self notifyGestureDidEndWithDrift:NO];
- [self unrotateIfNeededForGesture];
- }
- }
-}
-
-- (void)handleSingleTapGesture:(UITapGestureRecognizer *)singleTap
-{
- if (singleTap.state != UIGestureRecognizerStateRecognized) return;
-
- if (self.mapViewProxyAccessibilityElement.accessibilityElementIsFocused)
- {
- id nextElement;
- if (_userLocationAnnotationIsSelected)
- {
- nextElement = self.userLocationAnnotationView;
- }
- else
- {
- if (_selectedAnnotationTag != MGLAnnotationTagNotFound) {
- nextElement = _annotationContextsByAnnotationTag.at(_selectedAnnotationTag).accessibilityElement;
- }
- }
- [self deselectAnnotation:self.selectedAnnotation animated:YES];
- UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nextElement);
-
- return;
- }
-
- id<MGLAnnotation> annotation = [self annotationForGestureRecognizer:singleTap persistingResults:YES];
- if (annotation)
- {
- CGPoint calloutPoint = [singleTap locationInView:self];
- CGRect positionRect = [self positioningRectForAnnotation:annotation defaultCalloutPoint:calloutPoint];
- [self selectAnnotation:annotation moveIntoView:YES animateSelection:YES calloutPositioningRect:positionRect completionHandler:nil];
- }
- else if (self.selectedAnnotation)
- {
- [self deselectAnnotation:self.selectedAnnotation animated:YES];
- }
-}
-
-/**
- Returns the annotation that would be selected by a tap gesture recognizer.
-
- This is used when a gesture is recognized, and to check if the gesture should be recognized.
-
- @param singleTap An in progress tap gesture recognizer.
- @param persist True to remember the cycleable set of annotations. @see annotationTagAtPoint:persistingResults
- */
-- (nullable id <MGLAnnotation>)annotationForGestureRecognizer:(UITapGestureRecognizer*)singleTap persistingResults:(BOOL)persist
-{
- CGPoint tapPoint = [singleTap locationInView:self];
-
- if (self.userLocationVisible)
- {
- CGPoint tapPointForUserLocation;
- if (self.userLocationAnnotationView.hitTestLayer == self.userLocationAnnotationView.layer.presentationLayer)
- {
- tapPointForUserLocation = tapPoint;
- }
- else
- {
- // Get the tap point within the custom hit test layer.
- tapPointForUserLocation = [singleTap locationInView:self.userLocationAnnotationView];
- }
-
- CALayer *hitLayer = [self.userLocationAnnotationView.hitTestLayer hitTest:tapPointForUserLocation];
-
- if (hitLayer)
- {
- if ( ! _userLocationAnnotationIsSelected)
- {
- return self.userLocation;
- }
- return nil;
- }
- }
-
- MGLAnnotationTag hitAnnotationTag = [self annotationTagAtPoint:tapPoint persistingResults:persist];
- if (hitAnnotationTag != MGLAnnotationTagNotFound)
- {
- if (hitAnnotationTag != _selectedAnnotationTag)
- {
- id <MGLAnnotation> annotation = [self annotationWithTag:hitAnnotationTag];
- MGLAssert(annotation, @"Cannot select nonexistent annotation with tag %llu", hitAnnotationTag);
- return annotation;
- }
- }
-
- return nil;
-}
-
-- (void)handleDoubleTapGesture:(UITapGestureRecognizer *)doubleTap
-{
- if (doubleTap.state != UIGestureRecognizerStateRecognized) return;
-
- if ( ! self.isZoomEnabled) return;
-
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonGestureZoomIn;
-
- MGLMapCamera *oldCamera = self.camera;
-
- double newZoom = round(self.zoomLevel) + 1.0;
-
- CGPoint gesturePoint = [self anchorPointForGesture:doubleTap];
-
- MGLMapCamera *toCamera = [self cameraByZoomingToZoomLevel:newZoom aroundAnchorPoint:gesturePoint];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- mbgl::ScreenCoordinate center(gesturePoint.x, gesturePoint.y);
- self.mbglMap.easeTo(mbgl::CameraOptions()
- .withZoom(newZoom)
- .withAnchor(center)
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)), MGLDurationFromTimeInterval(MGLAnimationDuration));
-
- __weak MGLMapView *weakSelf = self;
-
- [self animateWithDelay:MGLAnimationDuration animations:^
- {
- [weakSelf unrotateIfNeededForGesture];
- }];
- }
- else
- {
- [self unrotateIfNeededForGesture];
- }
-}
-
-- (void)handleTwoFingerTapGesture:(UITapGestureRecognizer *)twoFingerTap
-{
- if (twoFingerTap.state != UIGestureRecognizerStateRecognized) return;
-
- if ( ! self.isZoomEnabled) return;
-
- if ([self zoomLevel] == *self.mbglMap.getBounds().minZoom) return;
-
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonGestureZoomOut;
-
- MGLMapCamera *oldCamera = self.camera;
-
- double newZoom = round(self.zoomLevel) - 1.0;
-
- CGPoint gesturePoint = [self anchorPointForGesture:twoFingerTap];
-
- MGLMapCamera *toCamera = [self cameraByZoomingToZoomLevel:newZoom aroundAnchorPoint:gesturePoint];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- mbgl::ScreenCoordinate center(gesturePoint.x, gesturePoint.y);
- self.mbglMap.easeTo(mbgl::CameraOptions()
- .withZoom(newZoom)
- .withAnchor(center)
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)), MGLDurationFromTimeInterval(MGLAnimationDuration));
-
- __weak MGLMapView *weakSelf = self;
-
- [self animateWithDelay:MGLAnimationDuration animations:^
- {
- [weakSelf unrotateIfNeededForGesture];
- }];
- }
-}
-
-- (void)handleQuickZoomGesture:(UILongPressGestureRecognizer *)quickZoom
-{
- if ( ! self.isZoomEnabled) return;
-
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonGestureOneFingerZoom;
-
- if (quickZoom.state == UIGestureRecognizerStateBegan)
- {
- self.scale = powf(2, [self zoomLevel]);
-
- self.quickZoomStart = [quickZoom locationInView:quickZoom.view].y;
-
- [self notifyGestureDidBegin];
- }
- else if (quickZoom.state == UIGestureRecognizerStateChanged)
- {
- CGFloat distance = [quickZoom locationInView:quickZoom.view].y - self.quickZoomStart;
-
- CGFloat newZoom = MAX(log2f(self.scale) + (distance / 75), *self.mbglMap.getBounds().minZoom);
-
- if ([self zoomLevel] == newZoom) return;
-
- CGPoint centerPoint = [self anchorPointForGesture:quickZoom];
-
- MGLMapCamera *oldCamera = self.camera;
- MGLMapCamera *toCamera = [self cameraByZoomingToZoomLevel:newZoom aroundAnchorPoint:centerPoint];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- self.mbglMap.jumpTo(mbgl::CameraOptions()
- .withZoom(newZoom)
- .withAnchor(mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y })
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)));
- }
-
- [self cameraIsChanging];
- }
- else if (quickZoom.state == UIGestureRecognizerStateEnded || quickZoom.state == UIGestureRecognizerStateCancelled)
- {
- [self notifyGestureDidEndWithDrift:NO];
- [self unrotateIfNeededForGesture];
- }
-}
-
-- (void)handleTwoFingerDragGesture:(UIPanGestureRecognizer *)twoFingerDrag
-{
- if ( ! self.isPitchEnabled) return;
-
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonGestureTilt;
- static CGFloat initialPitch;
-
- if (twoFingerDrag.state == UIGestureRecognizerStateBegan)
- {
- CGPoint midPoint = [twoFingerDrag translationInView:twoFingerDrag.view];
- // In the following if and for the first execution middlePoint
- // will be equal to dragGestureMiddlePoint and the resulting
- // gestureSlopeAngle will be 0º causing a small delay,
- // initializing dragGestureMiddlePoint with the current midPoint
- // but substracting one point from 'y' forces an initial 90º angle
- // making the gesture avoid the delay
- self.dragGestureMiddlePoint = CGPointMake(midPoint.x, midPoint.y-1);
- initialPitch = *self.mbglMap.getCameraOptions().pitch;
- [self notifyGestureDidBegin];
- }
-
- if (twoFingerDrag.state == UIGestureRecognizerStateBegan || twoFingerDrag.state == UIGestureRecognizerStateChanged)
- {
- if (twoFingerDrag.numberOfTouches != 2)
- {
- twoFingerDrag.state = UIGestureRecognizerStateEnded;
- return;
- }
-
- CGPoint leftTouchPoint = [twoFingerDrag locationOfTouch:0 inView:twoFingerDrag.view];
- CGPoint rightTouchPoint = [twoFingerDrag locationOfTouch:1 inView:twoFingerDrag.view];
- CLLocationDegrees fingerSlopeAngle = [self angleBetweenPoints:leftTouchPoint endPoint:rightTouchPoint];
-
- CGPoint middlePoint = [twoFingerDrag translationInView:twoFingerDrag.view];
-
- CLLocationDegrees gestureSlopeAngle = [self angleBetweenPoints:self.dragGestureMiddlePoint endPoint:middlePoint];
- self.dragGestureMiddlePoint = middlePoint;
- if (fabs(fingerSlopeAngle) < MGLHorizontalTiltToleranceDegrees && fabs(gestureSlopeAngle) > 60.0 ) {
-
- CGFloat gestureDistance = middlePoint.y;
- CGFloat slowdown = 2.0;
-
- CGFloat pitchNew = initialPitch - (gestureDistance / slowdown);
-
- CGPoint centerPoint = [self anchorPointForGesture:twoFingerDrag];
-
- MGLMapCamera *oldCamera = self.camera;
- MGLMapCamera *toCamera = [self cameraByTiltingToPitch:pitchNew];
-
- if ([self _shouldChangeFromCamera:oldCamera toCamera:toCamera])
- {
- self.mbglMap.jumpTo(mbgl::CameraOptions()
- .withPitch(pitchNew)
- .withAnchor(mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y })
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)));
- }
-
- [self cameraIsChanging];
-
- }
-
-
- }
- else if (twoFingerDrag.state == UIGestureRecognizerStateEnded || twoFingerDrag.state == UIGestureRecognizerStateCancelled)
- {
- [self notifyGestureDidEndWithDrift:NO];
- [self unrotateIfNeededForGesture];
- self.dragGestureMiddlePoint = CGPointZero;
- }
-
-}
-
-- (MGLMapCamera *)cameraByPanningWithTranslation:(CGPoint)endPoint panGesture:(UIPanGestureRecognizer *)pan
-{
- MGLMapCamera *panCamera = [self.camera copy];
-
- CGPoint centerPoint = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
- CGPoint endCameraPoint = CGPointMake(centerPoint.x - endPoint.x, centerPoint.y - endPoint.y);
- CLLocationCoordinate2D panCoordinate = [self convertPoint:endCameraPoint toCoordinateFromView:pan.view];
-
- panCamera.centerCoordinate = panCoordinate;
-
- return panCamera;
-}
-
-- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint
-{
- mbgl::ScreenCoordinate anchor = mbgl::ScreenCoordinate { anchorPoint.x, anchorPoint.y };
- mbgl::EdgeInsets padding = mbgl::EdgeInsets(anchor.y, anchor.x, self.size.height - anchor.y, self.size.width - anchor.x);
- mbgl::CameraOptions currentCameraOptions = self.mbglMap.getCameraOptions(padding);
-
- currentCameraOptions.zoom = mbgl::util::clamp(zoom, self.minimumZoomLevel, self.maximumZoomLevel);
- currentCameraOptions.anchor = anchor;
- MGLCoordinateBounds bounds = MGLCoordinateBoundsFromLatLngBounds(self.mbglMap.latLngBoundsForCamera(currentCameraOptions));
-
- return [self cameraThatFitsCoordinateBounds:bounds];
-}
-
-- (MGLMapCamera *)cameraByRotatingToDirection:(CLLocationDirection)degrees aroundAnchorPoint:(CGPoint)anchorPoint
-{
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- mbgl::CameraOptions currentCameraOptions = self.mbglMap.getCameraOptions(padding);
-
- MGLMapCamera *camera;
-
- mbgl::ScreenCoordinate anchor = mbgl::ScreenCoordinate { anchorPoint.x, anchorPoint.y };
- currentCameraOptions.bearing = degrees;
- currentCameraOptions.anchor = anchor;
- camera = [self cameraForCameraOptions:currentCameraOptions];
-
- return camera;
-}
-
-- (MGLMapCamera *)cameraByTiltingToPitch:(CGFloat)pitch
-{
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- mbgl::CameraOptions currentCameraOptions = self.mbglMap.getCameraOptions(padding);
-
- MGLMapCamera *camera;
-
- currentCameraOptions.pitch = pitch;
- camera = [self cameraForCameraOptions:currentCameraOptions];
-
- return camera;
-}
-
-- (CGPoint)anchorPointForGesture:(UIGestureRecognizer *)gesture {
- if (self.userTrackingMode != MGLUserTrackingModeNone)
- {
- return self.userLocationAnnotationViewCenter;
- }
-
- // Special case for two-finger drag and quickzoom
- if ([gesture isKindOfClass:[UIPanGestureRecognizer class]] || [gesture isKindOfClass:[UILongPressGestureRecognizer class]])
- {
- return self.contentCenter;
- }
-
- return [gesture locationInView:gesture.view];
-}
-
-- (void)handleCalloutAccessoryTapGesture:(UITapGestureRecognizer *)tap
-{
- if ([self.delegate respondsToSelector:@selector(mapView:annotation:calloutAccessoryControlTapped:)])
- {
- MGLAssert([tap.view isKindOfClass:[UIControl class]], @"Tapped view %@ is not a UIControl", tap.view);
- id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
- MGLAssert(selectedAnnotation, @"Selected annotation should not be nil.");
- [self.delegate mapView:self annotation:selectedAnnotation
- calloutAccessoryControlTapped:(UIControl *)tap.view];
- }
-}
-
-- (BOOL)calloutViewShouldHighlight:(__unused MGLCompactCalloutView *)calloutView
-{
- return [self.delegate respondsToSelector:@selector(mapView:tapOnCalloutForAnnotation:)];
-}
-
-- (void)calloutViewClicked:(__unused MGLSMCalloutView *)calloutView
-{
- if ([self.delegate respondsToSelector:@selector(mapView:tapOnCalloutForAnnotation:)])
- {
- id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
- MGLAssert(selectedAnnotation, @"Selected annotation should not be nil.");
- [self.delegate mapView:self tapOnCalloutForAnnotation:selectedAnnotation];
- }
-}
-
-- (void)calloutViewTapped:(__unused MGLCompactCalloutView *)calloutView
-{
- if ([self.delegate respondsToSelector:@selector(mapView:tapOnCalloutForAnnotation:)])
- {
- id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
- MGLAssert(selectedAnnotation, @"Selected annotation should not be nil.");
- [self.delegate mapView:self tapOnCalloutForAnnotation:selectedAnnotation];
- }
-}
-
-- (void)calloutViewDidAppear:(UIView<MGLCalloutView> *)calloutView
-{
- UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil);
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, calloutView);
-
- [self updatePresentsWithTransaction];
-
- // TODO: Add sibling disappear method
-}
-
-- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
-{
- if (gestureRecognizer == _twoFingerDrag)
- {
- UIPanGestureRecognizer *panGesture = (UIPanGestureRecognizer *)gestureRecognizer;
-
- if (panGesture.minimumNumberOfTouches == 2)
- {
- CGPoint leftTouchPoint = [panGesture locationOfTouch:0 inView:panGesture.view];
- CGPoint rightTouchPoint = [panGesture locationOfTouch:1 inView:panGesture.view];
-
- CLLocationDegrees degrees = [self angleBetweenPoints:leftTouchPoint endPoint:rightTouchPoint];
- if (fabs(degrees) > MGLHorizontalTiltToleranceDegrees) {
- return NO;
- }
- }
- }
- else if (gestureRecognizer == _singleTapGestureRecognizer)
- {
- // Gesture will be recognized if it could deselect an annotation
- if(!self.selectedAnnotation)
- {
- id<MGLAnnotation> annotation = [self annotationForGestureRecognizer:(UITapGestureRecognizer*)gestureRecognizer persistingResults:NO];
- if (!annotation) {
- return NO;
- }
- }
- }
- return YES;
-}
-
-- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
-{
- NSArray *validSimultaneousGestures = @[ self.pan, self.pinch, self.rotate ];
- return ([validSimultaneousGestures containsObject:gestureRecognizer] && [validSimultaneousGestures containsObject:otherGestureRecognizer]);
-}
-
-- (CLLocationDegrees)angleBetweenPoints:(CGPoint)originPoint endPoint:(CGPoint)endPoint
-{
- if (originPoint.x > endPoint.x) {
- CGPoint swap = originPoint;
- originPoint = endPoint;
- endPoint = swap;
- }
-
- CGFloat x = (endPoint.x - originPoint.x);
- CGFloat y = (endPoint.y - originPoint.y);
-
- CGFloat angleInRadians = atan2(y, x);
- CLLocationDegrees angleInDegrees = MGLDegreesFromRadians(angleInRadians);
-
- return angleInDegrees;
-}
-
-#pragma mark - Attribution -
-
-- (void)showAttribution:(id)sender
-{
- BOOL shouldShowVersion = [sender isKindOfClass:[UILongPressGestureRecognizer class]];
- if (shouldShowVersion)
- {
- UILongPressGestureRecognizer *longPress = (UILongPressGestureRecognizer *)sender;
- if (longPress.state != UIGestureRecognizerStateBegan)
- {
- return;
- }
- }
-
- NSString *actionSheetTitle = NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox Maps SDK for iOS", @"Action sheet title");
- UIAlertController *attributionController = [UIAlertController alertControllerWithTitle:actionSheetTitle
- message:nil
- preferredStyle:UIAlertControllerStyleActionSheet];
-
- if (shouldShowVersion)
- {
- attributionController.title = [actionSheetTitle stringByAppendingFormat:@" %@", [NSBundle mgl_frameworkInfoDictionary][@"MGLSemanticVersionString"]];
- }
-
- NSArray *attributionInfos = [self.style attributionInfosWithFontSize:[UIFont buttonFontSize]
- linkColor:nil];
- for (MGLAttributionInfo *info in attributionInfos)
- {
- UIAlertAction *action = [UIAlertAction actionWithTitle:[info.title.string mgl_titleCasedStringWithLocale:[NSLocale currentLocale]]
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction * _Nonnull actionBlock) {
- NSURL *url = info.URL;
- if (url)
- {
- if (info.feedbackLink)
- {
- MGLMapCamera *camera = self.camera;
- url = [info feedbackURLForStyleURL:self.styleURL
- atCenterCoordinate:camera.centerCoordinate
- zoomLevel:self.zoomLevel
- direction:camera.heading
- pitch:camera.pitch];
- }
- [[UIApplication sharedApplication] openURL:url];
- }
- }];
- [attributionController addAction:action];
- }
-
- NSString *telemetryTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_NAME", nil, nil, @"Mapbox Telemetry", @"Action in attribution sheet");
- UIAlertAction *telemetryAction = [UIAlertAction actionWithTitle:telemetryTitle
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction * _Nonnull action) {
- [self presentTelemetryAlertController];
- }];
- [attributionController addAction:telemetryAction];
-
- NSString *cancelTitle = NSLocalizedStringWithDefaultValue(@"CANCEL", nil, nil, @"Cancel", @"Title of button for dismissing attribution action sheet");
- UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelTitle
- style:UIAlertActionStyleCancel
- handler:NULL];
- [attributionController addAction:cancelAction];
-
- attributionController.popoverPresentationController.sourceView = self;
- attributionController.popoverPresentationController.sourceRect = self.attributionButton.frame;
-
- UIViewController *viewController = [self.window.rootViewController mgl_topMostViewController];
- [viewController presentViewController:attributionController animated:YES completion:NULL];
- self.attributionController = attributionController;
-}
-
-- (void)presentTelemetryAlertController
-{
- NSString *title = NSLocalizedStringWithDefaultValue(@"TELEMETRY_TITLE", nil, nil, @"Make Mapbox Maps Better", @"Telemetry prompt title");
- NSString *message;
- NSString *participateTitle;
- NSString *declineTitle;
- if ([[NSUserDefaults standardUserDefaults] boolForKey:MGLMapboxMetricsEnabledKey])
- {
- message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_MSG", nil, nil, @"You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
- participateTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_ON", nil, nil, @"Keep Participating", @"Telemetry prompt button");
- declineTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_OFF", nil, nil, @"Stop Participating", @"Telemetry prompt button");
- }
- else
- {
- message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_MSG", nil, nil, @"You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
- participateTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_ON", nil, nil, @"Participate", @"Telemetry prompt button");
- declineTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_OFF", nil, nil, @"Don’t Participate", @"Telemetry prompt button");
- }
-
- UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
- message:message
- preferredStyle:UIAlertControllerStyleAlert];
-
- NSString *moreTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_MORE", nil, nil, @"Tell Me More", @"Telemetry prompt button");
- UIAlertAction *moreAction = [UIAlertAction actionWithTitle:moreTitle
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction * _Nonnull action) {
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.mapbox.com/telemetry/"]];
- }];
- [alertController addAction:moreAction];
-
- UIAlertAction *declineAction = [UIAlertAction actionWithTitle:declineTitle
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction * _Nonnull action) {
- [[NSUserDefaults standardUserDefaults] setBool:NO forKey:MGLMapboxMetricsEnabledKey];
- }];
- [alertController addAction:declineAction];
-
- UIAlertAction *participateAction = [UIAlertAction actionWithTitle:participateTitle
- style:UIAlertActionStyleCancel
- handler:^(UIAlertAction * _Nonnull action) {
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:MGLMapboxMetricsEnabledKey];
- }];
- [alertController addAction:participateAction];
-
- UIViewController *viewController = [self.window.rootViewController mgl_topMostViewController];
- [viewController presentViewController:alertController animated:YES completion:NULL];
-}
-
-#pragma mark - Properties -
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
-{
- if ([keyPath isEqualToString:@"hidden"] && object == _attributionButton)
- {
- NSNumber *hiddenNumber = change[NSKeyValueChangeNewKey];
- BOOL attributionButtonWasHidden = [hiddenNumber boolValue];
- if (attributionButtonWasHidden)
- {
- [MGLMapboxEvents ensureMetricsOptoutExists];
- }
- }
- else if ([keyPath isEqualToString:@"coordinate"] && [object conformsToProtocol:@protocol(MGLAnnotation)] && ![object isKindOfClass:[MGLMultiPoint class]])
- {
- id <MGLAnnotation> annotation = object;
- MGLAnnotationTag annotationTag = (MGLAnnotationTag)(NSUInteger)context;
- // We can get here because a subclass registered itself as an observer
- // of the coordinate key path of a non-multipoint annotation but failed
- // to handle the change. This check deters us from treating the
- // subclass’s context as an annotation tag. If the context happens to
- // match a valid annotation tag, the annotation will be unnecessarily
- // but safely updated.
- if (annotation == [self annotationWithTag:annotationTag])
- {
- const mbgl::Point<double> point = MGLPointFromLocationCoordinate2D(annotation.coordinate);
-
- if (annotationTag != MGLAnnotationTagNotFound) {
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- if (annotationContext.annotationView)
- {
- // Redundantly move the associated annotation view outside the scope of the animation-less transaction block in -updateAnnotationViews.
- annotationContext.annotationView.center = [self convertCoordinate:annotationContext.annotation.coordinate toPointToView:self];
- }
-
- MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
- NSString *symbolName = annotationImage.styleIconIdentifier;
-
- // Update the annotation’s backing geometry to match the annotation model object. Any associated annotation view is also moved by side effect. However, -updateAnnotationViews disables the view’s animation actions, because it can’t distinguish between moves due to the viewport changing and moves due to the annotation’s coordinate changing.
- self.mbglMap.updateAnnotation(annotationTag, mbgl::SymbolAnnotation { point, symbolName.UTF8String });
- [self updateCalloutView];
- }
- }
- }
- else if ([keyPath isEqualToString:@"coordinates"] && [object isKindOfClass:[MGLMultiPoint class]])
- {
- MGLMultiPoint *annotation = object;
- MGLAnnotationTag annotationTag = (MGLAnnotationTag)(NSUInteger)context;
- // We can get here because a subclass registered itself as an observer
- // of the coordinates key path of a multipoint annotation but failed
- // to handle the change. This check deters us from treating the
- // subclass’s context as an annotation tag. If the context happens to
- // match a valid annotation tag, the annotation will be unnecessarily
- // but safely updated.
- if (annotation == [self annotationWithTag:annotationTag])
- {
- // Update the annotation’s backing geometry to match the annotation model object.
- self.mbglMap.updateAnnotation(annotationTag, [annotation annotationObjectWithDelegate:self]);
- [self updateCalloutView];
- }
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingZoomEnabled
-{
- return [NSSet setWithObject:@"allowsZooming"];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingScrollEnabled
-{
- return [NSSet setWithObject:@"allowsScrolling"];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingRotateEnabled
-{
- return [NSSet setWithObject:@"allowsRotating"];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingPitchEnabled
-{
- return [NSSet setWithObject:@"allowsTilting"];
-}
-
-- (MGLMapDebugMaskOptions)debugMask
-{
- if (!_mbglMap)
- {
- NSAssert(self.terminated, @"_mbglMap should only be unavailable during app termination");
- return self.residualDebugMask;
- }
-
- mbgl::MapDebugOptions options = self.mbglMap.getDebug();
- MGLMapDebugMaskOptions mask = 0;
- if (options & mbgl::MapDebugOptions::TileBorders)
- {
- mask |= MGLMapDebugTileBoundariesMask;
- }
- if (options & mbgl::MapDebugOptions::ParseStatus)
- {
- mask |= MGLMapDebugTileInfoMask;
- }
- if (options & mbgl::MapDebugOptions::Timestamps)
- {
- mask |= MGLMapDebugTimestampsMask;
- }
- if (options & mbgl::MapDebugOptions::Collision)
- {
- mask |= MGLMapDebugCollisionBoxesMask;
- }
- if (options & mbgl::MapDebugOptions::Overdraw)
- {
- mask |= MGLMapDebugOverdrawVisualizationMask;
- }
- return mask;
-}
-
-- (void)setDebugMask:(MGLMapDebugMaskOptions)debugMask
-{
- if (!_mbglMap)
- {
- return;
- }
-
- mbgl::MapDebugOptions options = mbgl::MapDebugOptions::NoDebug;
- if (debugMask & MGLMapDebugTileBoundariesMask)
- {
- options |= mbgl::MapDebugOptions::TileBorders;
- }
- if (debugMask & MGLMapDebugTileInfoMask)
- {
- options |= mbgl::MapDebugOptions::ParseStatus;
- }
- if (debugMask & MGLMapDebugTimestampsMask)
- {
- options |= mbgl::MapDebugOptions::Timestamps;
- }
- if (debugMask & MGLMapDebugCollisionBoxesMask)
- {
- options |= mbgl::MapDebugOptions::Collision;
- }
- if (debugMask & MGLMapDebugOverdrawVisualizationMask)
- {
- options |= mbgl::MapDebugOptions::Overdraw;
- }
- self.mbglMap.setDebug(options);
-}
-
-- (void)resetNorth
-{
- MGLLogInfo(@"Resetting the map rotation to a northern heading — a direction of 0 degrees.");
- [self resetNorthAnimated:YES];
-}
-
-- (void)resetNorthAnimated:(BOOL)animated
-{
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonResetNorth;
-
- [self setDirection:0 animated:animated];
-}
-
-- (void)resetPosition
-{
- MGLLogInfo(@"Resetting the map to the current style’s default viewport.");
- auto camera = self.mbglMap.getStyle().getDefaultCamera();
-
- double pitch = camera.pitch ? *camera.pitch : 0.0;
- double bearing = camera.bearing ? *camera.bearing : 0.0;
- double zoom = camera.zoom ? *camera.zoom : 0.0;
- mbgl::LatLng center = camera.center ? *camera.center : mbgl::LatLng();
-
- CLLocationDirection heading = mbgl::util::wrap(bearing, 0., 360.);
- CLLocationDistance altitude = MGLAltitudeForZoomLevel(zoom, pitch, 0, self.frame.size);
- self.camera = [MGLMapCamera cameraLookingAtCenterCoordinate:MGLLocationCoordinate2DFromLatLng(center)
- altitude:altitude
- pitch:pitch
- heading:heading];
-}
-
-- (void)setZoomEnabled:(BOOL)zoomEnabled
-{
- MGLLogDebug(@"Setting zoomEnabled: %@", MGLStringFromBOOL(zoomEnabled));
- _zoomEnabled = zoomEnabled;
- self.pinch.enabled = zoomEnabled;
- self.doubleTap.enabled = zoomEnabled;
- self.quickZoom.enabled = zoomEnabled;
- self.twoFingerTap.enabled = zoomEnabled;
-}
-
-- (void)setScrollEnabled:(BOOL)scrollEnabled
-{
- MGLLogDebug(@"Setting scrollEnabled: %@", MGLStringFromBOOL(scrollEnabled));
- _scrollEnabled = scrollEnabled;
- self.pan.enabled = scrollEnabled;
-}
-
-- (void)setRotateEnabled:(BOOL)rotateEnabled
-{
- MGLLogDebug(@"Setting rotateEnabled: %@", MGLStringFromBOOL(rotateEnabled));
- _rotateEnabled = rotateEnabled;
- self.rotate.enabled = rotateEnabled;
-}
-
-- (void)setPitchEnabled:(BOOL)pitchEnabled
-{
- MGLLogDebug(@"Setting pitchEnabled: %@", MGLStringFromBOOL(pitchEnabled));
- _pitchEnabled = pitchEnabled;
- self.twoFingerDrag.enabled = pitchEnabled;
-}
-
-- (void)setShowsScale:(BOOL)showsScale
-{
- MGLLogDebug(@"Setting showsScale: %@", MGLStringFromBOOL(showsScale));
- _showsScale = showsScale;
- self.scaleBar.hidden = !showsScale;
-
- if (showsScale)
- {
- [self updateScaleBar];
- }
-}
-
-- (void)setPrefetchesTiles:(BOOL)prefetchesTiles
-{
- _mbglMap->setPrefetchZoomDelta(prefetchesTiles ? mbgl::util::DEFAULT_PREFETCH_ZOOM_DELTA : 0);
-}
-
-- (BOOL)prefetchesTiles
-{
- return _mbglMap->getPrefetchZoomDelta() > 0 ? YES : NO;
-}
-
-#pragma mark - Accessibility -
-
-- (NSString *)accessibilityValue
-{
- NSMutableArray *facts = [NSMutableArray array];
-
- double zoomLevel = round(self.zoomLevel + 1);
- [facts addObject:[NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"MAP_A11Y_VALUE_ZOOM", nil, nil, @"Zoom %dx.", @"Map accessibility value; {zoom level}"), (int)zoomLevel]];
-
- NSInteger annotationCount = self.accessibilityAnnotationCount;
- if (annotationCount) {
- [facts addObject:[NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"MAP_A11Y_VALUE_ANNOTATIONS", nil, nil, @"%ld annotation(s) visible.", @"Map accessibility value; {number of visible annotations}"), (long)self.accessibilityAnnotationCount]];
- }
-
- NSArray *placeFeatures = self.visiblePlaceFeatures;
- if (placeFeatures.count) {
- NSMutableArray *placesArray = [NSMutableArray arrayWithCapacity:placeFeatures.count];
- NSMutableSet *placesSet = [NSMutableSet setWithCapacity:placeFeatures.count];
- for (id <MGLFeature> placeFeature in placeFeatures.reverseObjectEnumerator) {
- NSString *name = [placeFeature attributeForKey:@"name"];
- if (![placesSet containsObject:name]) {
- [placesArray addObject:name];
- [placesSet addObject:name];
- }
- if (placesArray.count >= 3) {
- break;
- }
- }
- NSString *placesString = [placesArray componentsJoinedByString:NSLocalizedStringWithDefaultValue(@"LIST_SEPARATOR", nil, nil, @", ", @"List separator")];
- [facts addObject:[NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"MAP_A11Y_VALUE_PLACES", nil, nil, @"Places visible: %@.", @"Map accessibility value; {list of visible places}"), placesString]];
- }
-
- NSArray *roadFeatures = self.visibleRoadFeatures;
- if (roadFeatures.count) {
- [facts addObject:[NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"MAP_A11Y_VALUE_ROADS", nil, nil, @"%ld road(s) visible.", @"Map accessibility value; {number of visible roads}"), roadFeatures.count]];
- }
-
- NSString *value = [facts componentsJoinedByString:@" "];
- return value;
-}
-
-- (NSArray<id <MGLFeature>> *)visiblePlaceFeatures
-{
- if (!_visiblePlaceFeatures)
- {
- NSArray *placeStyleLayerIdentifiers = [self.style.placeStyleLayers valueForKey:@"identifier"];
- _visiblePlaceFeatures = [self visibleFeaturesInRect:self.bounds inStyleLayersWithIdentifiers:[NSSet setWithArray:placeStyleLayerIdentifiers]];
- }
- return _visiblePlaceFeatures;
-}
-
-- (NSArray<id <MGLFeature>> *)visibleRoadFeatures
-{
- if (!_visibleRoadFeatures)
- {
- NSArray *roadStyleLayerIdentifiers = [self.style.roadStyleLayers valueForKey:@"identifier"];
- _visibleRoadFeatures = [self visibleFeaturesInRect:self.bounds inStyleLayersWithIdentifiers:[NSSet setWithArray:roadStyleLayerIdentifiers]];
- }
- return _visibleRoadFeatures;
-}
-
-- (CGRect)accessibilityFrame
-{
- CGRect frame = [super accessibilityFrame];
- UIViewController *viewController = self.mgl_viewControllerForLayoutGuides;
- if (viewController)
- {
- CGFloat topInset = viewController.topLayoutGuide.length;
- frame.origin.y += topInset;
- frame.size.height -= topInset + viewController.bottomLayoutGuide.length;
- }
- return frame;
-}
-
-- (UIBezierPath *)accessibilityPath
-{
- UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.accessibilityFrame];
-
- // Exclude any visible annotation callout view.
- if (self.calloutViewForSelectedAnnotation)
- {
- UIBezierPath *calloutViewPath = [UIBezierPath bezierPathWithRect:self.calloutViewForSelectedAnnotation.frame];
- [path appendPath:calloutViewPath];
- }
-
- return path;
-}
-
-- (NSInteger)accessibilityElementCount
-{
- if (self.calloutViewForSelectedAnnotation)
- {
- return 2 /* calloutViewForSelectedAnnotation, mapViewProxyAccessibilityElement */;
- }
- return !!self.userLocationAnnotationView + self.accessibilityAnnotationCount + self.visiblePlaceFeatures.count + self.visibleRoadFeatures.count + 2 /* compass, attributionButton */;
-}
-
-- (NSInteger)accessibilityAnnotationCount
-{
- std::vector<MGLAnnotationTag> visibleAnnotations = [self annotationTagsInRect:self.bounds];
- return visibleAnnotations.size();
-}
-
-- (id)accessibilityElementAtIndex:(NSInteger)index
-{
- if (self.calloutViewForSelectedAnnotation)
- {
- if (index == 0)
- {
- return self.calloutViewForSelectedAnnotation;
- }
- if (index == 1)
- {
- self.mapViewProxyAccessibilityElement.accessibilityFrame = self.accessibilityFrame;
- self.mapViewProxyAccessibilityElement.accessibilityPath = self.accessibilityPath;
- return self.mapViewProxyAccessibilityElement;
- }
- return nil;
- }
-
- // Compass
- NSInteger compassIndex = 0;
- if (index == compassIndex)
- {
- return self.compassView;
- }
-
- // User location annotation
- NSRange userLocationAnnotationRange = NSMakeRange(compassIndex + 1, !!self.userLocationAnnotationView);
- if (NSLocationInRange(index, userLocationAnnotationRange))
- {
- return self.userLocationAnnotationView;
- }
-
- CGPoint centerPoint = self.contentCenter;
- if (self.userTrackingMode != MGLUserTrackingModeNone)
- {
- centerPoint = self.userLocationAnnotationViewCenter;
- }
-
- // Visible annotations
- std::vector<MGLAnnotationTag> visibleAnnotations = [self annotationTagsInRect:self.bounds];
- NSRange visibleAnnotationRange = NSMakeRange(NSMaxRange(userLocationAnnotationRange), visibleAnnotations.size());
- if (NSLocationInRange(index, visibleAnnotationRange))
- {
- std::sort(visibleAnnotations.begin(), visibleAnnotations.end());
- std::sort(visibleAnnotations.begin(), visibleAnnotations.end(), [&](const MGLAnnotationTag tagA, const MGLAnnotationTag tagB) {
- CLLocationCoordinate2D coordinateA = [[self annotationWithTag:tagA] coordinate];
- CLLocationCoordinate2D coordinateB = [[self annotationWithTag:tagB] coordinate];
- CGPoint pointA = [self convertCoordinate:coordinateA toPointToView:self];
- CGPoint pointB = [self convertCoordinate:coordinateB toPointToView:self];
- CGFloat deltaA = hypot(pointA.x - centerPoint.x, pointA.y - centerPoint.y);
- CGFloat deltaB = hypot(pointB.x - centerPoint.x, pointB.y - centerPoint.y);
- return deltaA < deltaB;
- });
-
- NSUInteger annotationIndex = index - visibleAnnotationRange.location;
- MGLAnnotationTag annotationTag = visibleAnnotations[annotationIndex];
- MGLAssert(annotationTag != MGLAnnotationTagNotFound, @"Can’t get accessibility element for nonexistent or invisible annotation at index %li.", (long)index);
- return [self accessibilityElementForAnnotationWithTag:annotationTag];
- }
-
- // Visible place features
- NSArray *visiblePlaceFeatures = self.visiblePlaceFeatures;
- NSRange visiblePlaceFeatureRange = NSMakeRange(NSMaxRange(visibleAnnotationRange), visiblePlaceFeatures.count);
- if (NSLocationInRange(index, visiblePlaceFeatureRange))
- {
- visiblePlaceFeatures = [visiblePlaceFeatures sortedArrayUsingComparator:^NSComparisonResult(id <MGLFeature> _Nonnull featureA, id <MGLFeature> _Nonnull featureB) {
- CGPoint pointA = [self convertCoordinate:featureA.coordinate toPointToView:self];
- CGPoint pointB = [self convertCoordinate:featureB.coordinate toPointToView:self];
- CGFloat deltaA = hypot(pointA.x - centerPoint.x, pointA.y - centerPoint.y);
- CGFloat deltaB = hypot(pointB.x - centerPoint.x, pointB.y - centerPoint.y);
- return [@(deltaA) compare:@(deltaB)];
- }];
-
- id <MGLFeature> feature = visiblePlaceFeatures[index - visiblePlaceFeatureRange.location];
- return [self accessibilityElementForPlaceFeature:feature];
- }
-
- // Visible road features
- NSArray *visibleRoadFeatures = self.visibleRoadFeatures;
- NSRange visibleRoadFeatureRange = NSMakeRange(NSMaxRange(visiblePlaceFeatureRange), visibleRoadFeatures.count);
- if (NSLocationInRange(index, visibleRoadFeatureRange))
- {
- visibleRoadFeatures = [visibleRoadFeatures sortedArrayUsingComparator:^NSComparisonResult(id <MGLFeature> _Nonnull featureA, id <MGLFeature> _Nonnull featureB) {
- CGPoint pointA = [self convertCoordinate:featureA.coordinate toPointToView:self];
- CGPoint pointB = [self convertCoordinate:featureB.coordinate toPointToView:self];
- CGFloat deltaA = hypot(pointA.x - centerPoint.x, pointA.y - centerPoint.y);
- CGFloat deltaB = hypot(pointB.x - centerPoint.x, pointB.y - centerPoint.y);
- return [@(deltaA) compare:@(deltaB)];
- }];
-
- id <MGLFeature> feature = visibleRoadFeatures[index - visibleRoadFeatureRange.location];
- return [self accessibilityElementForRoadFeature:feature];
- }
-
- // Attribution button
- NSInteger attributionButtonIndex = NSMaxRange(visibleRoadFeatureRange);
- if (index == attributionButtonIndex)
- {
- return self.attributionButton;
- }
-
- MGLAssert(NO, @"Index %ld not in recognized accessibility element ranges. "
- @"User location annotation range: %@; visible annotation range: %@; "
- @"visible place feature range: %@; visible road feature range: %@.",
- (long)index, NSStringFromRange(userLocationAnnotationRange),
- NSStringFromRange(visibleAnnotationRange), NSStringFromRange(visiblePlaceFeatureRange),
- NSStringFromRange(visibleRoadFeatureRange));
- return nil;
-}
-
-/**
- Returns an accessibility element corresponding to a visible annotation with the given tag.
-
- @param annotationTag Tag of the annotation represented by the accessibility element to return.
- */
-- (id)accessibilityElementForAnnotationWithTag:(MGLAnnotationTag)annotationTag
-{
- MGLAssert(_annotationContextsByAnnotationTag.count(annotationTag), @"Missing annotation for tag %llu.", annotationTag);
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- id <MGLAnnotation> annotation = annotationContext.annotation;
-
- // Let the annotation view serve as its own accessibility element.
- MGLAnnotationView *annotationView = annotationContext.annotationView;
- if (annotationView && annotationView.superview)
- {
- return annotationView;
- }
-
- // Lazily create an accessibility element for the found annotation.
- if ( ! annotationContext.accessibilityElement)
- {
- annotationContext.accessibilityElement = [[MGLAnnotationAccessibilityElement alloc] initWithAccessibilityContainer:self tag:annotationTag];
- }
-
- // Update the accessibility element.
- MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
- CGRect annotationFrame = [self frameOfImage:annotationImage.image centeredAtCoordinate:annotation.coordinate];
- CGPoint annotationFrameCenter = CGPointMake(CGRectGetMidX(annotationFrame), CGRectGetMidY(annotationFrame));
- CGRect minimumFrame = CGRectInset({ annotationFrameCenter, CGSizeZero },
- -MGLAnnotationAccessibilityElementMinimumSize.width / 2,
- -MGLAnnotationAccessibilityElementMinimumSize.height / 2);
- annotationFrame = CGRectUnion(annotationFrame, minimumFrame);
- CGRect screenRect = UIAccessibilityConvertFrameToScreenCoordinates(annotationFrame, self);
- annotationContext.accessibilityElement.accessibilityFrame = screenRect;
-
- if ([annotation respondsToSelector:@selector(title)])
- {
- annotationContext.accessibilityElement.accessibilityLabel = annotation.title;
- }
- if ([annotation respondsToSelector:@selector(subtitle)])
- {
- annotationContext.accessibilityElement.accessibilityValue = annotation.subtitle;
- }
-
- return annotationContext.accessibilityElement;
-}
-
-/**
- Returns an accessibility element corresponding to the given place feature.
-
- @param feature The place feature represented by the accessibility element.
- */
-- (id)accessibilityElementForPlaceFeature:(id <MGLFeature>)feature
-{
- if (!_featureAccessibilityElements)
- {
- _featureAccessibilityElements = [NSMutableSet set];
- }
-
- MGLFeatureAccessibilityElement *element = [_featureAccessibilityElements objectsPassingTest:^BOOL(MGLFeatureAccessibilityElement * _Nonnull testElement, BOOL * _Nonnull stop) {
- return testElement.feature.identifier && ![testElement.feature.identifier isEqual:@0] && [testElement.feature.identifier isEqual:feature.identifier];
- }].anyObject;
- if (!element)
- {
- element = [[MGLPlaceFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:feature];
- }
- CGPoint center = [self convertCoordinate:feature.coordinate toPointToView:self];
- CGRect annotationFrame = CGRectInset({center, CGSizeZero}, -MGLAnnotationAccessibilityElementMinimumSize.width / 2, -MGLAnnotationAccessibilityElementMinimumSize.width / 2);
- CGRect screenRect = UIAccessibilityConvertFrameToScreenCoordinates(annotationFrame, self);
- element.accessibilityFrame = screenRect;
-
- [_featureAccessibilityElements addObject:element];
-
- return element;
-}
-
-/**
- Returns an accessibility element corresponding to the given road feature.
-
- @param feature The road feature represented by the accessibility element.
- */
-- (id)accessibilityElementForRoadFeature:(id <MGLFeature>)feature
-{
- if (!_featureAccessibilityElements)
- {
- _featureAccessibilityElements = [NSMutableSet set];
- }
-
- MGLFeatureAccessibilityElement *element = [_featureAccessibilityElements objectsPassingTest:^BOOL(MGLFeatureAccessibilityElement * _Nonnull testElement, BOOL * _Nonnull stop) {
- return testElement.feature.identifier && ![testElement.feature.identifier isEqual:@0] && [testElement.feature.identifier isEqual:feature.identifier];
- }].anyObject;
- if (!element)
- {
- element = [[MGLRoadFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:feature];
- }
-
- UIBezierPath *path;
- if ([feature isKindOfClass:[MGLPointFeature class]])
- {
- CGPoint center = [self convertCoordinate:feature.coordinate toPointToView:self];
- CGRect annotationFrame = CGRectInset({center, CGSizeZero}, -MGLAnnotationAccessibilityElementMinimumSize.width / 2, -MGLAnnotationAccessibilityElementMinimumSize.width / 2);
- CGRect screenRect = UIAccessibilityConvertFrameToScreenCoordinates(annotationFrame, self);
- element.accessibilityFrame = screenRect;
- }
- else if ([feature isKindOfClass:[MGLPolylineFeature class]])
- {
- path = [self pathOfPolyline:(MGLPolyline *)feature];
- }
- else if ([feature isKindOfClass:[MGLMultiPolylineFeature class]])
- {
- path = [UIBezierPath bezierPath];
- for (MGLPolyline *polyline in [(MGLMultiPolylineFeature *)feature polylines])
- {
- [path appendPath:[self pathOfPolyline:polyline]];
- }
- }
-
- if (path)
- {
- CGPathRef strokedCGPath = CGPathCreateCopyByStrokingPath(path.CGPath, NULL, MGLAnnotationAccessibilityElementMinimumSize.width, kCGLineCapButt, kCGLineJoinMiter, 0);
- UIBezierPath *strokedPath = [UIBezierPath bezierPathWithCGPath:strokedCGPath];
- CGPathRelease(strokedCGPath);
- UIBezierPath *screenPath = UIAccessibilityConvertPathToScreenCoordinates(strokedPath, self);
- element.accessibilityPath = screenPath;
- }
-
- [_featureAccessibilityElements addObject:element];
-
- return element;
-}
-
-- (UIBezierPath *)pathOfPolyline:(MGLPolyline *)polyline
-{
- CLLocationCoordinate2D *coordinates = polyline.coordinates;
- NSUInteger pointCount = polyline.pointCount;
- UIBezierPath *path = [UIBezierPath bezierPath];
- for (NSUInteger i = 0; i < pointCount; i++)
- {
- CGPoint point = [self convertCoordinate:coordinates[i] toPointToView:self];
- if (i)
- {
- [path addLineToPoint:point];
- }
- else
- {
- [path moveToPoint:point];
- }
- }
- return path;
-}
-
-- (NSInteger)indexOfAccessibilityElement:(id)element
-{
- if (self.calloutViewForSelectedAnnotation)
- {
- return [@[self.calloutViewForSelectedAnnotation, self.mapViewProxyAccessibilityElement]
- indexOfObject:element];
- }
-
- // Compass
- NSUInteger compassIndex = 0;
- if (element == self.compassView)
- {
- return compassIndex;
- }
-
- // User location annotation
- NSRange userLocationAnnotationRange = NSMakeRange(compassIndex + 1, !!self.userLocationAnnotationView);
- if (element == self.userLocationAnnotationView)
- {
- return userLocationAnnotationRange.location;
- }
-
- CGPoint centerPoint = self.contentCenter;
- if (self.userTrackingMode != MGLUserTrackingModeNone)
- {
- centerPoint = self.userLocationAnnotationViewCenter;
- }
-
- // Visible annotations
- std::vector<MGLAnnotationTag> visibleAnnotations = [self annotationTagsInRect:self.bounds];
- NSRange visibleAnnotationRange = NSMakeRange(NSMaxRange(userLocationAnnotationRange), visibleAnnotations.size());
- MGLAnnotationTag tag = MGLAnnotationTagNotFound;
- if ([element isKindOfClass:[MGLAnnotationView class]])
- {
- id <MGLAnnotation> annotation = [(MGLAnnotationView *)element annotation];
- tag = [self annotationTagForAnnotation:annotation];
- }
- else if ([element isKindOfClass:[MGLAnnotationAccessibilityElement class]])
- {
- tag = [(MGLAnnotationAccessibilityElement *)element tag];
- }
-
- if (tag != MGLAnnotationTagNotFound)
- {
- std::sort(visibleAnnotations.begin(), visibleAnnotations.end());
- std::sort(visibleAnnotations.begin(), visibleAnnotations.end(), [&](const MGLAnnotationTag tagA, const MGLAnnotationTag tagB) {
- CLLocationCoordinate2D coordinateA = [[self annotationWithTag:tagA] coordinate];
- CLLocationCoordinate2D coordinateB = [[self annotationWithTag:tagB] coordinate];
- CGPoint pointA = [self convertCoordinate:coordinateA toPointToView:self];
- CGPoint pointB = [self convertCoordinate:coordinateB toPointToView:self];
- CGFloat deltaA = hypot(pointA.x - centerPoint.x, pointA.y - centerPoint.y);
- CGFloat deltaB = hypot(pointB.x - centerPoint.x, pointB.y - centerPoint.y);
- return deltaA < deltaB;
- });
-
- auto foundElement = std::find(visibleAnnotations.begin(), visibleAnnotations.end(), tag);
- if (foundElement == visibleAnnotations.end())
- {
- return NSNotFound;
- }
- return visibleAnnotationRange.location + std::distance(visibleAnnotations.begin(), foundElement);
- }
-
- // Visible place features
- NSArray *visiblePlaceFeatures = self.visiblePlaceFeatures;
- NSRange visiblePlaceFeatureRange = NSMakeRange(NSMaxRange(visibleAnnotationRange), visiblePlaceFeatures.count);
- if ([element isKindOfClass:[MGLPlaceFeatureAccessibilityElement class]])
- {
- visiblePlaceFeatures = [visiblePlaceFeatures sortedArrayUsingComparator:^NSComparisonResult(id <MGLFeature> _Nonnull featureA, id <MGLFeature> _Nonnull featureB) {
- CGPoint pointA = [self convertCoordinate:featureA.coordinate toPointToView:self];
- CGPoint pointB = [self convertCoordinate:featureB.coordinate toPointToView:self];
- CGFloat deltaA = hypot(pointA.x - centerPoint.x, pointA.y - centerPoint.y);
- CGFloat deltaB = hypot(pointB.x - centerPoint.x, pointB.y - centerPoint.y);
- return [@(deltaA) compare:@(deltaB)];
- }];
-
- id <MGLFeature> feature = [(MGLPlaceFeatureAccessibilityElement *)element feature];
- NSUInteger featureIndex = [visiblePlaceFeatures indexOfObject:feature];
- if (featureIndex == NSNotFound)
- {
- featureIndex = [visiblePlaceFeatures indexOfObjectPassingTest:^BOOL (id <MGLFeature> _Nonnull visibleFeature, NSUInteger idx, BOOL * _Nonnull stop) {
- return visibleFeature.identifier && ![visibleFeature.identifier isEqual:@0] && [visibleFeature.identifier isEqual:feature.identifier];
- }];
- }
- if (featureIndex == NSNotFound)
- {
- return NSNotFound;
- }
- return visiblePlaceFeatureRange.location + featureIndex;
- }
-
- // Visible road features
- NSArray *visibleRoadFeatures = self.visibleRoadFeatures;
- NSRange visibleRoadFeatureRange = NSMakeRange(NSMaxRange(visiblePlaceFeatureRange), visibleRoadFeatures.count);
- if ([element isKindOfClass:[MGLRoadFeatureAccessibilityElement class]])
- {
- visibleRoadFeatures = [visibleRoadFeatures sortedArrayUsingComparator:^NSComparisonResult(id <MGLFeature> _Nonnull featureA, id <MGLFeature> _Nonnull featureB) {
- CGPoint pointA = [self convertCoordinate:featureA.coordinate toPointToView:self];
- CGPoint pointB = [self convertCoordinate:featureB.coordinate toPointToView:self];
- CGFloat deltaA = hypot(pointA.x - centerPoint.x, pointA.y - centerPoint.y);
- CGFloat deltaB = hypot(pointB.x - centerPoint.x, pointB.y - centerPoint.y);
- return [@(deltaA) compare:@(deltaB)];
- }];
-
- id <MGLFeature> feature = [(MGLRoadFeatureAccessibilityElement *)element feature];
- NSUInteger featureIndex = [visibleRoadFeatures indexOfObject:feature];
- if (featureIndex == NSNotFound)
- {
- featureIndex = [visibleRoadFeatures indexOfObjectPassingTest:^BOOL (id <MGLFeature> _Nonnull visibleFeature, NSUInteger idx, BOOL * _Nonnull stop) {
- return visibleFeature.identifier && ![visibleFeature.identifier isEqual:@0] && [visibleFeature.identifier isEqual:feature.identifier];
- }];
- }
- if (featureIndex == NSNotFound)
- {
- return NSNotFound;
- }
- return visibleRoadFeatureRange.location + featureIndex;
- }
-
- // Attribution button
- NSUInteger attributionButtonIndex = NSMaxRange(visibleRoadFeatureRange);
- if (element == self.attributionButton)
- {
- return attributionButtonIndex;
- }
-
- return NSNotFound;
-}
-
-- (MGLMapViewProxyAccessibilityElement *)mapViewProxyAccessibilityElement
-{
- if ( ! _mapViewProxyAccessibilityElement)
- {
- _mapViewProxyAccessibilityElement = [[MGLMapViewProxyAccessibilityElement alloc] initWithAccessibilityContainer:self];
- }
- return _mapViewProxyAccessibilityElement;
-}
-
-- (void)accessibilityIncrement
-{
- // Swipe up to zoom out.
- [self accessibilityScaleBy:0.5];
-}
-
-- (void)accessibilityDecrement
-{
- // Swipe down to zoom in.
- [self accessibilityScaleBy:2];
-}
-
-- (void)accessibilityScaleBy:(double)scaleFactor
-{
- CGPoint centerPoint = self.contentCenter;
- if (self.userTrackingMode != MGLUserTrackingModeNone)
- {
- centerPoint = self.userLocationAnnotationViewCenter;
- }
- double newZoom = round(self.zoomLevel) + log2(scaleFactor);
- self.mbglMap.jumpTo(mbgl::CameraOptions()
- .withZoom(newZoom)
- .withAnchor(mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y })
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)));
- [self unrotateIfNeededForGesture];
-
- _accessibilityValueAnnouncementIsPending = YES;
-}
-
-#pragma mark - Geography -
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCenterCoordinate
-{
- return [NSSet setWithObjects:@"latitude", @"longitude", @"camera", nil];
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting centerCoordinate: %@ animated: %@", MGLStringFromCLLocationCoordinate2D(coordinate), MGLStringFromBOOL(animated));
- [self setCenterCoordinate:coordinate zoomLevel:self.zoomLevel animated:animated];
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
-{
- MGLLogDebug(@"Setting centerCoordinate: %@", MGLStringFromCLLocationCoordinate2D(centerCoordinate));
- [self setCenterCoordinate:centerCoordinate animated:NO];
-}
-
-- (CLLocationCoordinate2D)centerCoordinate
-{
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- return MGLLocationCoordinate2DFromLatLng(*self.mbglMap.getCameraOptions(padding).center);
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting centerCoordinate: %@ zoomLevel: %f animated: %@",
- MGLStringFromCLLocationCoordinate2D(centerCoordinate),
- zoomLevel,
- MGLStringFromBOOL(animated));
- [self setCenterCoordinate:centerCoordinate zoomLevel:zoomLevel direction:self.direction animated:animated];
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel direction:(CLLocationDirection)direction animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting centerCoordinate: %@ zoomLevel: %f direction: %f animated: %@",
- MGLStringFromCLLocationCoordinate2D(centerCoordinate),
- zoomLevel,
- direction,
- MGLStringFromBOOL(animated));
- [self setCenterCoordinate:centerCoordinate zoomLevel:zoomLevel direction:direction animated:animated completionHandler:nil];
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel direction:(CLLocationDirection)direction animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting centerCoordinate: %@ zoomLevel: %f direction: %f animated: %@ completionHandler: %@",
- MGLStringFromCLLocationCoordinate2D(centerCoordinate),
- zoomLevel,
- direction,
- MGLStringFromBOOL(animated),
- completion);
- self.userTrackingMode = MGLUserTrackingModeNone;
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- [self _setCenterCoordinate:centerCoordinate edgePadding:self.contentInset zoomLevel:zoomLevel direction:direction duration:animated ? MGLAnimationDuration : 0 animationTimingFunction:nil completionHandler:completion];
-}
-
-- (void)_setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate edgePadding:(UIEdgeInsets)insets zoomLevel:(double)zoomLevel direction:(CLLocationDirection)direction duration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion
-{
- if (!_mbglMap)
- {
- if (completion)
- {
- completion();
- }
- return;
- }
-
- mbgl::CameraOptions cameraOptions;
- cameraOptions.center = MGLLatLngFromLocationCoordinate2D(centerCoordinate);
- cameraOptions.padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- cameraOptions.zoom = zoomLevel;
- if (direction >= 0)
- {
- cameraOptions.bearing = direction;
- }
-
- mbgl::AnimationOptions animationOptions;
- if (duration)
- {
- animationOptions.duration.emplace(MGLDurationFromTimeInterval(duration));
- animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
- }
-
- dispatch_block_t pendingCompletion;
-
- if (completion)
- {
- __weak __typeof__(self) weakSelf = self;
-
- pendingCompletion = ^{
- if (![weakSelf scheduleTransitionCompletion:completion])
- {
- completion();
- }
- };
-
- animationOptions.transitionFinishFn = [pendingCompletion]() {
- // Must run asynchronously after the transition is completely over.
- // Otherwise, a call to -setCenterCoordinate: within the completion
- // handler would reenter the completion handler’s caller.
-
- dispatch_async(dispatch_get_main_queue(), pendingCompletion);
- };
- }
-
- MGLMapCamera *camera = [self cameraForCameraOptions:cameraOptions];
- if ([self.camera isEqualToMapCamera:camera] && UIEdgeInsetsEqualToEdgeInsets(_contentInset, insets))
- {
- if (pendingCompletion)
- {
- [self animateWithDelay:duration animations:pendingCompletion];
- }
- return;
- }
-
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- self.mbglMap.easeTo(cameraOptions, animationOptions);
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingZoomLevel
-{
- return [NSSet setWithObject:@"camera"];
-}
-
-- (double)zoomLevel
-{
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- return *self.mbglMap.getCameraOptions(padding).zoom;
-}
-
-- (void)setZoomLevel:(double)zoomLevel
-{
- MGLLogDebug(@"Setting zoomLevel: %f", zoomLevel);
- [self setZoomLevel:zoomLevel animated:NO];
-}
-
-- (void)setZoomLevel:(double)zoomLevel animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting zoomLevel: %f animated: %@", zoomLevel, MGLStringFromBOOL(animated));
- if (zoomLevel == self.zoomLevel) return;
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- CGFloat duration = animated ? MGLAnimationDuration : 0;
-
- self.mbglMap.easeTo(mbgl::CameraOptions()
- .withZoom(zoomLevel)
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)),
- MGLDurationFromTimeInterval(duration));
-}
-
-- (void)setMinimumZoomLevel:(double)minimumZoomLevel
-{
- MGLLogDebug(@"Setting minimumZoomLevel: %f", minimumZoomLevel);
- self.mbglMap.setBounds(mbgl::BoundOptions().withMinZoom(minimumZoomLevel));
-}
-
-- (double)minimumZoomLevel
-{
- return *self.mbglMap.getBounds().minZoom;
-}
-
-- (void)setMaximumZoomLevel:(double)maximumZoomLevel
-{
- MGLLogDebug(@"Setting maximumZoomLevel: %f", maximumZoomLevel);
- self.mbglMap.setBounds(mbgl::BoundOptions().withMaxZoom(maximumZoomLevel));
-}
-
-- (double)maximumZoomLevel
-{
- return *self.mbglMap.getBounds().maxZoom;
-}
-
-- (MGLCoordinateBounds)visibleCoordinateBounds
-{
- return [self convertRect:self.bounds toCoordinateBoundsFromView:self];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds
-{
- [self setVisibleCoordinateBounds:bounds animated:NO];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds animated:(BOOL)animated
-{
- [self setVisibleCoordinateBounds:bounds edgePadding:UIEdgeInsetsZero animated:animated completionHandler:nil];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated
-{
- [self setVisibleCoordinateBounds:bounds edgePadding:insets animated:animated completionHandler:nil];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting visibleCoordinateBounds: %@ edgePadding: %@ animated: %@",
- MGLStringFromCoordinateBounds(bounds),
- NSStringFromUIEdgeInsets(insets),
- MGLStringFromBOOL(animated));
- CLLocationCoordinate2D coordinates[] = {
- {bounds.ne.latitude, bounds.sw.longitude},
- bounds.sw,
- {bounds.sw.latitude, bounds.ne.longitude},
- bounds.ne,
- };
- [self setVisibleCoordinates:coordinates
- count:sizeof(coordinates) / sizeof(coordinates[0])
- edgePadding:insets
- direction:self.direction
- duration:animated ? MGLAnimationDuration : 0
- animationTimingFunction:nil
- completionHandler:completion];
-}
-
-- (void)setVisibleCoordinates:(const CLLocationCoordinate2D *)coordinates count:(NSUInteger)count edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting: %lu coordinates edgePadding: %@ animated: %@",
- count,
- NSStringFromUIEdgeInsets(insets),
- MGLStringFromBOOL(animated));
- [self setVisibleCoordinates:coordinates count:count edgePadding:insets direction:self.direction duration:animated ? MGLAnimationDuration : 0 animationTimingFunction:nil];
-}
-
-- (void)setVisibleCoordinates:(const CLLocationCoordinate2D *)coordinates count:(NSUInteger)count edgePadding:(UIEdgeInsets)insets direction:(CLLocationDirection)direction duration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function {
- MGLLogDebug(@"Setting: %lu coordinates edgePadding: %@ direction: %f duration: %f animationTimingFunction: %@",
- count,
- NSStringFromUIEdgeInsets(insets),
- direction,
- duration,
- function);
- [self setVisibleCoordinates:coordinates count:count edgePadding:insets direction:direction duration:duration animationTimingFunction:function completionHandler:NULL];
-}
-
-- (void)setVisibleCoordinates:(const CLLocationCoordinate2D *)coordinates count:(NSUInteger)count edgePadding:(UIEdgeInsets)insets direction:(CLLocationDirection)direction duration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting: %lu coordinates edgePadding: %@ direction: %f duration: %f animationTimingFunction: %@ completionHandler: %@", count, NSStringFromUIEdgeInsets(insets), direction, duration, function, completion);
- self.userTrackingMode = MGLUserTrackingModeNone;
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- [self _setVisibleCoordinates:coordinates count:count edgePadding:insets direction:direction duration:duration animationTimingFunction:function completionHandler:completion];
-}
-
-- (void)_setVisibleCoordinates:(const CLLocationCoordinate2D *)coordinates count:(NSUInteger)count edgePadding:(UIEdgeInsets)insets direction:(CLLocationDirection)direction duration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion
-{
- if (!_mbglMap)
- {
- if (completion)
- {
- completion();
- }
- return;
- }
-
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- std::vector<mbgl::LatLng> latLngs;
- latLngs.reserve(count);
- for (NSUInteger i = 0; i < count; i++)
- {
- latLngs.push_back({coordinates[i].latitude, coordinates[i].longitude});
- }
-
- CLLocationDirection cameraDirection = direction >= 0 ? direction : self.direction;
-
- mbgl::CameraOptions cameraOptions = self.mbglMap.cameraForLatLngs(latLngs, padding, cameraDirection);
-
- mbgl::AnimationOptions animationOptions;
- if (duration > 0)
- {
- animationOptions.duration.emplace(MGLDurationFromTimeInterval(duration));
- animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
- }
-
- dispatch_block_t pendingCompletion;
-
- if (completion)
- {
- __weak __typeof__(self) weakSelf = self;
-
- pendingCompletion = ^{
- if (![weakSelf scheduleTransitionCompletion:completion])
- {
- completion();
- }
- };
-
- animationOptions.transitionFinishFn = [pendingCompletion]() {
- dispatch_async(dispatch_get_main_queue(), pendingCompletion);
- };
- }
-
- // Padding is baked in adjusted camera center (in cameraForLatLngs) and
- // cameraOptions.padding at this point is (0, 0, 0, 0) and we don't need to
- // check if cameraOptions.contentInsets are equal to contentInsets.
- MGLMapCamera *camera = [self cameraForCameraOptions:cameraOptions];
- if ([self.camera isEqualToMapCamera:camera])
- {
- if (pendingCompletion)
- {
- [self animateWithDelay:duration animations:pendingCompletion];
- }
- return;
- }
-
- [self willChangeValueForKey:@"visibleCoordinateBounds"];
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- self.mbglMap.easeTo(cameraOptions, animationOptions);
- [self didChangeValueForKey:@"visibleCoordinateBounds"];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingDirection
-{
- return [NSSet setWithObject:@"camera"];
-}
-
-- (CLLocationDirection)direction
-{
- return mbgl::util::wrap(*self.mbglMap.getCameraOptions().bearing, 0., 360.);
-}
-
-- (void)setDirection:(CLLocationDirection)direction animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting direction: %f animated: %@", direction, MGLStringFromBOOL(animated));
- if ( ! animated && ! self.rotationAllowed) return;
-
- if (self.userTrackingMode == MGLUserTrackingModeFollowWithHeading ||
- self.userTrackingMode == MGLUserTrackingModeFollowWithCourse)
- {
- self.userTrackingMode = MGLUserTrackingModeFollow;
- }
-
- [self _setDirection:direction animated:animated];
-}
-
-- (void)_setDirection:(CLLocationDirection)direction animated:(BOOL)animated
-{
- if (!_mbglMap)
- {
- return;
- }
-
- if (direction == self.direction) return;
- [self cancelTransitions];
-
- CGFloat duration = animated ? MGLAnimationDuration : 0;
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- if (self.userTrackingMode == MGLUserTrackingModeNone)
- {
- self.mbglMap.easeTo(mbgl::CameraOptions()
- .withBearing(direction)
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInset)),
- MGLDurationFromTimeInterval(duration));
- }
- else
- {
- CGPoint anchor = self.userLocationAnnotationViewCenter;
- self.mbglMap.easeTo(mbgl::CameraOptions()
- .withBearing(direction)
- .withAnchor(mbgl::ScreenCoordinate { anchor.x, anchor.y }),
- MGLDurationFromTimeInterval(duration));
- }
-}
-
-- (void)setDirection:(CLLocationDirection)direction
-{
- MGLLogDebug(@"Setting direction: %f", direction);
- [self setDirection:direction animated:NO];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingPitch
-{
- return [NSSet setWithObject:@"camera"];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCamera
-{
- return [NSSet setWithObjects:@"longitude", @"latitude", @"centerCoordinate", @"zoomLevel", @"direction", nil];
-}
-
-- (MGLMapCamera *)camera
-{
- if (!_mbglMap)
- {
- NSAssert(self.terminated, @"_mbglMap should only be unavailable during app termination");
- return self.residualCamera;
- }
-
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- return [self cameraForCameraOptions:self.mbglMap.getCameraOptions(padding)];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera
-{
- MGLLogDebug(@"Setting camera: %@", camera);
- [self setCamera:camera animated:NO];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera animated:(BOOL)animated
-{
- MGLLogDebug(@"Setting camera: %@ animated: %@", camera, MGLStringFromBOOL(animated));
- [self setCamera:camera withDuration:animated ? MGLAnimationDuration : 0 animationTimingFunction:nil];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function
-{
- MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@", camera, duration, function);
- [self setCamera:camera withDuration:duration animationTimingFunction:function completionHandler:nil];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@ completionHandler: %@", camera, duration, function, completion);
- [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:UIEdgeInsetsZero completionHandler:completion];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(UIEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion {
- if (!_mbglMap)
- {
- if (completion)
- {
- completion();
- }
- return;
- }
-
- MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@ edgePadding: %@ completionHandler: %@", camera, duration, function, NSStringFromUIEdgeInsets(edgePadding), completion);
-
- edgePadding = MGLEdgeInsetsInsetEdgeInset(edgePadding, self.contentInset);
-
- mbgl::AnimationOptions animationOptions;
- if (duration > 0)
- {
- animationOptions.duration.emplace(MGLDurationFromTimeInterval(duration));
- animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
- }
-
- dispatch_block_t pendingCompletion;
-
- if (completion)
- {
- __weak __typeof__(self) weakSelf = self;
-
- pendingCompletion = ^{
- if (![weakSelf scheduleTransitionCompletion:completion])
- {
- completion();
- }
- };
-
- animationOptions.transitionFinishFn = [pendingCompletion]() {
- dispatch_async(dispatch_get_main_queue(), pendingCompletion);
- };
- }
-
- if ([self.camera isEqualToMapCamera:camera] && UIEdgeInsetsEqualToEdgeInsets(_contentInset, edgePadding))
- {
- if (pendingCompletion)
- {
- [self animateWithDelay:duration animations:pendingCompletion];
- }
- return;
- }
-
- [self willChangeValueForKey:@"camera"];
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera edgePadding:edgePadding];
- self.mbglMap.easeTo(cameraOptions, animationOptions);
- [self didChangeValueForKey:@"camera"];
-}
-
-- (void)flyToCamera:(MGLMapCamera *)camera completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting flyToCamera: %@ completionHandler: %@", camera, completion);
- [self flyToCamera:camera withDuration:-1 completionHandler:completion];
-}
-
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting flyToCamera: %@ withDuration: %f completionHandler: %@", camera, duration, completion);
- [self flyToCamera:camera withDuration:duration peakAltitude:-1 completionHandler:completion];
-}
-
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration peakAltitude:(CLLocationDistance)peakAltitude completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting flyToCamera: %@ withDuration: %f peakAltitude: %f completionHandler: %@", camera, duration, peakAltitude, completion);
- [self _flyToCamera:camera edgePadding:self.contentInset withDuration:duration peakAltitude:peakAltitude completionHandler:completion];
-}
-
-- (void)_flyToCamera:(MGLMapCamera *)camera edgePadding:(UIEdgeInsets)insets withDuration:(NSTimeInterval)duration peakAltitude:(CLLocationDistance)peakAltitude completionHandler:(nullable void (^)(void))completion
-{
- if (!_mbglMap)
- {
- if (completion)
- {
- completion();
- }
- return;
- }
-
- mbgl::AnimationOptions animationOptions;
- if (duration >= 0)
- {
- animationOptions.duration = MGLDurationFromTimeInterval(duration);
- }
- if (peakAltitude >= 0)
- {
- CLLocationDegrees peakLatitude = (self.centerCoordinate.latitude + camera.centerCoordinate.latitude) / 2;
- CLLocationDegrees peakPitch = (self.camera.pitch + camera.pitch) / 2;
- animationOptions.minZoom = MGLZoomLevelForAltitude(peakAltitude, peakPitch,
- peakLatitude, self.frame.size);
- }
-
- dispatch_block_t pendingCompletion;
-
- if (completion)
- {
- __weak __typeof__(self) weakSelf = self;
-
- pendingCompletion = ^{
- if (![weakSelf scheduleTransitionCompletion:completion])
- {
- completion();
- }
- };
-
- animationOptions.transitionFinishFn = [pendingCompletion]() {
- dispatch_async(dispatch_get_main_queue(), pendingCompletion);
- };
- }
-
- if ([self.camera isEqualToMapCamera:camera] && UIEdgeInsetsEqualToEdgeInsets(_contentInset, insets))
- {
- if (pendingCompletion)
- {
- [self animateWithDelay:duration animations:pendingCompletion];
- }
- return;
- }
-
- [self willChangeValueForKey:@"camera"];
- [self cancelTransitions];
-
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonProgrammatic;
-
- mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera edgePadding:insets];
- self.mbglMap.flyTo(cameraOptions, animationOptions);
- [self didChangeValueForKey:@"camera"];
-}
-
-- (void)cancelTransitions {
- if (!_mbglMap)
- {
- return;
- }
- self.cameraChangeReasonBitmask |= MGLCameraChangeReasonTransitionCancelled;
- self.mbglMap.cancelTransitions();
- self.cameraChangeReasonBitmask &= ~MGLCameraChangeReasonTransitionCancelled;
-}
-
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds
-{
- return [self cameraThatFitsCoordinateBounds:bounds edgePadding:UIEdgeInsetsZero];
-}
-
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets
-{
- if (!_mbglMap)
- {
- return self.residualCamera;
- }
-
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- mbgl::CameraOptions cameraOptions = self.mbglMap.cameraForLatLngBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), padding);
- return [self cameraForCameraOptions:cameraOptions];
-}
-
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets
-{
- if (!_mbglMap)
- {
- return self.residualCamera;
- }
-
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
-
- MGLMapCamera *currentCamera = self.camera;
- CGFloat pitch = camera.pitch < 0 ? currentCamera.pitch : camera.pitch;
- CLLocationDirection direction = camera.heading < 0 ? currentCamera.heading : camera.heading;
-
- mbgl::CameraOptions cameraOptions = self.mbglMap.cameraForLatLngBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), padding, direction, pitch);
- return [self cameraForCameraOptions:cameraOptions];
-}
-
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingShape:(MGLShape *)shape edgePadding:(UIEdgeInsets)insets {
- if (!_mbglMap)
- {
- return self.residualCamera;
- }
-
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
-
- MGLMapCamera *currentCamera = self.camera;
- CGFloat pitch = camera.pitch < 0 ? currentCamera.pitch : camera.pitch;
- CLLocationDirection direction = camera.heading < 0 ? currentCamera.heading : camera.heading;
-
- mbgl::CameraOptions cameraOptions = self.mbglMap.cameraForGeometry([shape geometryObject], padding, direction, pitch);
-
- return [self cameraForCameraOptions: cameraOptions];
-}
-
-- (MGLMapCamera *)cameraThatFitsShape:(MGLShape *)shape direction:(CLLocationDirection)direction edgePadding:(UIEdgeInsets)insets {
- if (!_mbglMap)
- {
- return self.residualCamera;
- }
-
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
-
- mbgl::CameraOptions cameraOptions = self.mbglMap.cameraForGeometry([shape geometryObject], padding, direction);
-
- return [self cameraForCameraOptions:cameraOptions];
-}
-
-- (MGLMapCamera *)cameraForCameraOptions:(const mbgl::CameraOptions &)cameraOptions
-{
- if (!_mbglMap)
- {
- return self.residualCamera;
- }
-
- mbgl::CameraOptions mapCamera = self.mbglMap.getCameraOptions();
- CLLocationCoordinate2D centerCoordinate = MGLLocationCoordinate2DFromLatLng(cameraOptions.center ? *cameraOptions.center : *mapCamera.center);
- double zoomLevel = cameraOptions.zoom ? *cameraOptions.zoom : self.zoomLevel;
- CLLocationDirection direction = cameraOptions.bearing ? mbgl::util::wrap(*cameraOptions.bearing, 0., 360.) : self.direction;
- CGFloat pitch = cameraOptions.pitch ? *cameraOptions.pitch : *mapCamera.pitch;
- CLLocationDistance altitude = MGLAltitudeForZoomLevel(zoomLevel, pitch, centerCoordinate.latitude, self.frame.size);
- return [MGLMapCamera cameraLookingAtCenterCoordinate:centerCoordinate altitude:altitude pitch:pitch heading:direction];
-}
-
-/// Returns a CameraOptions object that specifies parameters for animating to
-/// the given camera.
-- (mbgl::CameraOptions)cameraOptionsObjectForAnimatingToCamera:(MGLMapCamera *)camera edgePadding:(UIEdgeInsets)insets
-{
- mbgl::CameraOptions options;
- if (CLLocationCoordinate2DIsValid(camera.centerCoordinate))
- {
- options.center = MGLLatLngFromLocationCoordinate2D(camera.centerCoordinate);
- }
- options.padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- options.zoom = MGLZoomLevelForAltitude(camera.altitude, camera.pitch,
- camera.centerCoordinate.latitude,
- self.frame.size);
- if (camera.heading >= 0)
- {
- options.bearing = camera.heading;
- }
- if (camera.pitch >= 0)
- {
- options.pitch = camera.pitch;
- }
- return options;
-}
-
-- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(nullable UIView *)view
-{
- return MGLLocationCoordinate2DFromLatLng([self convertPoint:point toLatLngFromView:view]);
-}
-
-/// Converts a point in the view’s coordinate system to a geographic coordinate.
-- (mbgl::LatLng)convertPoint:(CGPoint)point toLatLngFromView:(nullable UIView *)view
-{
- CGPoint convertedPoint = [self convertPoint:point fromView:view];
- return self.mbglMap.latLngForPixel(mbgl::ScreenCoordinate(convertedPoint.x, convertedPoint.y)).wrapped();
-}
-
-- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(nullable UIView *)view
-{
- if ( ! CLLocationCoordinate2DIsValid(coordinate))
- {
- return CGPointMake(NAN, NAN);
- }
- return [self convertLatLng:MGLLatLngFromLocationCoordinate2D(coordinate) toPointToView:view];
-}
-
-/// Converts a geographic coordinate to a point in the view’s coordinate system.
-- (CGPoint)convertLatLng:(mbgl::LatLng)latLng toPointToView:(nullable UIView *)view
-{
- mbgl::ScreenCoordinate pixel = self.mbglMap.pixelForLatLng(latLng);
- return [self convertPoint:CGPointMake(pixel.x, pixel.y) toView:view];
-}
-
-- (MGLCoordinateBounds)convertRect:(CGRect)rect toCoordinateBoundsFromView:(nullable UIView *)view
-{
- return MGLCoordinateBoundsFromLatLngBounds([self convertRect:rect toLatLngBoundsFromView:view]);
-}
-
-- (CGRect)convertCoordinateBounds:(MGLCoordinateBounds)bounds toRectToView:(nullable UIView *)view
-{
- return [self convertLatLngBounds:MGLLatLngBoundsFromCoordinateBounds(bounds) toRectToView:view];
-}
-
-/// Converts a geographic bounding box to a rectangle in the view’s coordinate
-/// system.
-- (CGRect)convertLatLngBounds:(mbgl::LatLngBounds)bounds toRectToView:(nullable UIView *)view {
- auto northwest = bounds.northwest();
- auto northeast = bounds.northeast();
- auto southwest = bounds.southwest();
- auto southeast = bounds.southeast();
-
- auto center = [self convertPoint:{ CGRectGetMidX(view.bounds), CGRectGetMidY(view.bounds) } toLatLngFromView:view];
-
- // Extend bounds to account for the antimeridian
- northwest.unwrapForShortestPath(center);
- northeast.unwrapForShortestPath(center);
- southwest.unwrapForShortestPath(center);
- southeast.unwrapForShortestPath(center);
-
- auto correctedLatLngBounds = mbgl::LatLngBounds::empty();
- correctedLatLngBounds.extend(northwest);
- correctedLatLngBounds.extend(northeast);
- correctedLatLngBounds.extend(southwest);
- correctedLatLngBounds.extend(southeast);
-
- CGRect rect = { [self convertLatLng:correctedLatLngBounds.southwest() toPointToView:view], CGSizeZero };
- rect = MGLExtendRect(rect, [self convertLatLng:correctedLatLngBounds.northeast() toPointToView:view]);
- return rect;
-}
-
-/// Converts a rectangle in the given view’s coordinate system to a geographic
-/// bounding box.
-- (mbgl::LatLngBounds)convertRect:(CGRect)rect toLatLngBoundsFromView:(nullable UIView *)view
-{
- auto bounds = mbgl::LatLngBounds::empty();
- auto topLeft = [self convertPoint:{ CGRectGetMinX(rect), CGRectGetMinY(rect) } toLatLngFromView:view];
- auto topRight = [self convertPoint:{ CGRectGetMaxX(rect), CGRectGetMinY(rect) } toLatLngFromView:view];
- auto bottomRight = [self convertPoint:{ CGRectGetMaxX(rect), CGRectGetMaxY(rect) } toLatLngFromView:view];
- auto bottomLeft = [self convertPoint:{ CGRectGetMinX(rect), CGRectGetMaxY(rect) } toLatLngFromView:view];
-
- // If the bounds straddles the antimeridian, unwrap it so that one side
- // extends beyond ±180° longitude.
- auto center = [self convertPoint:{ CGRectGetMidX(rect), CGRectGetMidY(rect) } toLatLngFromView:view];
- topLeft.unwrapForShortestPath(center);
- topRight.unwrapForShortestPath(center);
- bottomRight.unwrapForShortestPath(center);
- bottomLeft.unwrapForShortestPath(center);
-
- bounds.extend(topLeft);
- bounds.extend(topRight);
- bounds.extend(bottomRight);
- bounds.extend(bottomLeft);
-
- return bounds;
-}
-
-- (CLLocationDistance)metersPerPointAtLatitude:(CLLocationDegrees)latitude
-{
- return mbgl::Projection::getMetersPerPixelAtLatitude(latitude, self.zoomLevel);
-}
-
-#pragma mark - Camera Change Reason -
-
-- (void)resetCameraChangeReason
-{
- self.cameraChangeReasonBitmask = MGLCameraChangeReasonNone;
-}
-
-#pragma mark - Annotations -
-
-- (nullable NSArray<id <MGLAnnotation>> *)annotations
-{
- if (_annotationContextsByAnnotationTag.empty())
- {
- return nil;
- }
-
- // Map all the annotation tags to the annotations themselves.
- std::vector<id <MGLAnnotation>> annotations;
- std::transform(_annotationContextsByAnnotationTag.begin(),
- _annotationContextsByAnnotationTag.end(),
- std::back_inserter(annotations),
- ^ id <MGLAnnotation> (const std::pair<MGLAnnotationTag, MGLAnnotationContext> &pair)
- {
- return pair.second.annotation;
- });
-
- annotations.erase(std::remove_if(annotations.begin(), annotations.end(),
- [](const id <MGLAnnotation> annotation) { return annotation == nullptr; }),
- annotations.end());
-
- return [NSArray arrayWithObjects:&annotations[0] count:annotations.size()];
-}
-
-- (nullable NSArray<id <MGLAnnotation>> *)visibleAnnotations
-{
- return [self visibleAnnotationsInRect:self.bounds];
-}
-
-- (nullable NSArray<id <MGLAnnotation>> *)visibleAnnotationsInRect:(CGRect)rect
-{
- if (_annotationContextsByAnnotationTag.empty())
- {
- return nil;
- }
-
- std::vector<MGLAnnotationTag> annotationTags = [self annotationTagsInRect:rect];
- std::vector<MGLAnnotationTag> shapeAnnotationTags = [self shapeAnnotationTagsInRect:rect];
-
- if (shapeAnnotationTags.size()) {
- annotationTags.insert(annotationTags.end(), shapeAnnotationTags.begin(), shapeAnnotationTags.end());
- }
-
- if (annotationTags.size())
- {
- NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:annotationTags.size()];
-
- for (auto const& annotationTag: annotationTags)
- {
- if (!_annotationContextsByAnnotationTag.count(annotationTag) ||
- annotationTag == MGLAnnotationTagNotFound)
- {
- continue;
- }
-
- MGLAnnotationContext annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- MGLAssert(annotationContext.annotation, @"Missing annotation for tag %llu.", annotationTag);
- if (annotationContext.annotation)
- {
- [annotations addObject:annotationContext.annotation];
- }
- }
-
- return [annotations copy];
- }
-
- return nil;
-}
-
-/// Returns the annotation assigned the given tag. Cheap.
-- (id <MGLAnnotation>)annotationWithTag:(MGLAnnotationTag)tag
-{
- if ( ! _annotationContextsByAnnotationTag.count(tag) ||
- tag == MGLAnnotationTagNotFound) {
- return nil;
- }
-
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(tag);
- return annotationContext.annotation;
-}
-
-/// Returns the annotation tag assigned to the given annotation.
-- (MGLAnnotationTag)annotationTagForAnnotation:(id <MGLAnnotation>)annotation
-{
- if ( ! annotation || annotation == self.userLocation
- || _annotationTagsByAnnotation.count(annotation) == 0)
- {
- return MGLAnnotationTagNotFound;
- }
-
- return _annotationTagsByAnnotation.at(annotation);
-}
-
-- (void)addAnnotation:(id <MGLAnnotation>)annotation
-{
- MGLLogDebug(@"Adding annotation: %@", annotation);
- if ( ! annotation) return;
-
- // The core bulk add API is efficient with respect to indexing and
- // screen refreshes, thus we should defer to it even for individual adds.
- //
- [self addAnnotations:@[ annotation ]];
-}
-
-- (void)addAnnotations:(NSArray<id <MGLAnnotation>> *)annotations
-{
- MGLLogDebug(@"Adding: %lu annotations", annotations.count);
- if ( ! annotations) return;
- [self willChangeValueForKey:@"annotations"];
-
- NSMutableDictionary *annotationImagesForAnnotation = [NSMutableDictionary dictionary];
- NSMutableDictionary *annotationViewsForAnnotation = [NSMutableDictionary dictionary];
-
- BOOL delegateImplementsViewForAnnotation = [self.delegate respondsToSelector:@selector(mapView:viewForAnnotation:)];
- BOOL delegateImplementsImageForPoint = [self.delegate respondsToSelector:@selector(mapView:imageForAnnotation:)];
-
- NSMutableArray *newAnnotationViews = [[NSMutableArray alloc] initWithCapacity:annotations.count];
-
- for (id <MGLAnnotation> annotation in annotations)
- {
- MGLAssert([annotation conformsToProtocol:@protocol(MGLAnnotation)], @"annotation should conform to MGLAnnotation");
-
- // adding the same annotation object twice is a no-op
- if (_annotationTagsByAnnotation.count(annotation) != 0)
- {
- continue;
- }
-
- if ([annotation isKindOfClass:[MGLMultiPoint class]])
- {
- // The polyline or polygon knows how to style itself (with the map view’s help).
- MGLMultiPoint *multiPoint = (MGLMultiPoint *)annotation;
- if (!multiPoint.pointCount) {
- continue;
- }
-
- _isChangingAnnotationLayers = YES;
- MGLAnnotationTag annotationTag = self.mbglMap.addAnnotation([multiPoint annotationObjectWithDelegate:self]);
- MGLAnnotationContext context;
- context.annotation = annotation;
- _annotationContextsByAnnotationTag[annotationTag] = context;
- _annotationTagsByAnnotation[annotation] = annotationTag;
-
- [(NSObject *)annotation addObserver:self forKeyPath:@"coordinates" options:0 context:(void *)(NSUInteger)annotationTag];
- }
- else if ( ! [annotation isKindOfClass:[MGLMultiPolyline class]]
- && ![annotation isKindOfClass:[MGLMultiPolygon class]]
- && ![annotation isKindOfClass:[MGLShapeCollection class]]
- && ![annotation isKindOfClass:[MGLPointCollection class]])
- {
- MGLAnnotationView *annotationView;
- NSString *symbolName;
- NSValue *annotationValue = [NSValue valueWithNonretainedObject:annotation];
-
- if (delegateImplementsViewForAnnotation)
- {
- annotationView = [self annotationViewForAnnotation:annotation];
- if (annotationView)
- {
- annotationViewsForAnnotation[annotationValue] = annotationView;
- annotationView.annotation = annotation;
- annotationView.center = MGLPointRounded([self convertCoordinate:annotation.coordinate toPointToView:self]);
- [newAnnotationViews addObject:annotationView];
-
- MGLAnnotationImage *annotationImage = self.invisibleAnnotationImage;
- symbolName = annotationImage.styleIconIdentifier;
- annotationImagesForAnnotation[annotationValue] = annotationImage;
- if ( ! self.annotationImagesByIdentifier[annotationImage.reuseIdentifier])
- {
- [self installAnnotationImage:annotationImage];
- }
- }
- }
-
- if ( ! annotationView) {
- MGLAnnotationImage *annotationImage;
-
- if (delegateImplementsImageForPoint)
- {
- annotationImage = [self.delegate mapView:self imageForAnnotation:annotation];
- }
- if ( ! annotationImage)
- {
- annotationImage = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName];
- }
- if ( ! annotationImage)
- {
- annotationImage = self.defaultAnnotationImage;
- }
-
- symbolName = annotationImage.styleIconIdentifier;
-
- if ( ! symbolName)
- {
- symbolName = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
- annotationImage.styleIconIdentifier = symbolName;
- }
- if ( ! self.annotationImagesByIdentifier[annotationImage.reuseIdentifier])
- {
- [self installAnnotationImage:annotationImage];
- }
-
- annotationImagesForAnnotation[annotationValue] = annotationImage;
- }
-
- MGLAnnotationTag annotationTag = self.mbglMap.addAnnotation(mbgl::SymbolAnnotation {
- MGLPointFromLocationCoordinate2D(annotation.coordinate),
- symbolName.UTF8String
- });
-
- MGLAnnotationContext context;
- context.annotation = annotation;
- MGLAnnotationImage *annotationImage = annotationImagesForAnnotation[annotationValue];
- context.imageReuseIdentifier = annotationImage.reuseIdentifier;
-
- if (annotationView) {
- context.annotationView = annotationView;
- context.viewReuseIdentifier = annotationView.reuseIdentifier;
- }
-
- _annotationTagsByAnnotation[annotation] = annotationTag;
- _annotationContextsByAnnotationTag[annotationTag] = context;
-
- if ([annotation isKindOfClass:[NSObject class]]) {
- MGLAssert(![annotation isKindOfClass:[MGLMultiPoint class]], @"Point annotation should not be MGLMultiPoint.");
- [(NSObject *)annotation addObserver:self forKeyPath:@"coordinate" options:0 context:(void *)(NSUInteger)annotationTag];
- }
- }
- }
-
- [self updateAnnotationContainerViewWithAnnotationViews:newAnnotationViews];
-
- [self didChangeValueForKey:@"annotations"];
- if (_isChangingAnnotationLayers)
- {
- [self.style willChangeValueForKey:@"layers"];
- }
-
- if ([self.delegate respondsToSelector:@selector(mapView:didAddAnnotationViews:)])
- {
- [self.delegate mapView:self didAddAnnotationViews:newAnnotationViews];
- }
-
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
-}
-
-- (void)updateAnnotationContainerViewWithAnnotationViews:(NSArray<MGLAnnotationView *> *)annotationViews
-{
- if (annotationViews.count == 0) return;
-
- MGLAnnotationContainerView *newAnnotationContainerView;
- if (self.annotationContainerView)
- {
- // reload any previously added views
- newAnnotationContainerView = [MGLAnnotationContainerView annotationContainerViewWithAnnotationContainerView:self.annotationContainerView];
- [self.annotationContainerView removeFromSuperview];
- }
- else
- {
- newAnnotationContainerView = [[MGLAnnotationContainerView alloc] initWithFrame:self.bounds];
- }
- newAnnotationContainerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- newAnnotationContainerView.contentMode = UIViewContentModeCenter;
- [newAnnotationContainerView addSubviews:annotationViews];
- [_mbglView->getView() insertSubview:newAnnotationContainerView atIndex:0];
- self.annotationContainerView = newAnnotationContainerView;
-
- [self updatePresentsWithTransaction];
-}
-
-/// Initialize and return a default annotation image that depicts a round pin
-/// rising from the center, with a shadow slightly below center. The alignment
-/// rect therefore excludes the bottom half.
-- (MGLAnnotationImage *)defaultAnnotationImage
-{
- UIImage *image = [UIImage mgl_resourceImageNamed:MGLDefaultStyleMarkerSymbolName];
- image = [image imageWithAlignmentRectInsets:
- UIEdgeInsetsMake(0, 0, image.size.height / 2, 0)];
- MGLAnnotationImage *annotationImage = [MGLAnnotationImage annotationImageWithImage:image
- reuseIdentifier:MGLDefaultStyleMarkerSymbolName];
- annotationImage.styleIconIdentifier = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
- return annotationImage;
-}
-
-- (MGLAnnotationImage *)invisibleAnnotationImage
-{
- MGLAnnotationImage *annotationImage = [self dequeueReusableAnnotationImageWithIdentifier:MGLInvisibleStyleMarkerSymbolName];
-
- if (!annotationImage)
- {
- UIGraphicsBeginImageContext(CGSizeMake(1, 1));
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- annotationImage = [MGLAnnotationImage annotationImageWithImage:image
- reuseIdentifier:MGLInvisibleStyleMarkerSymbolName];
- annotationImage.styleIconIdentifier = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
- }
-
- return annotationImage;
-}
-
-- (MGLAnnotationView *)annotationViewForAnnotation:(id<MGLAnnotation>)annotation
-{
- MGLAnnotationView *annotationView = [self.delegate mapView:self viewForAnnotation:annotation];
-
- if (annotationView)
- {
- // Make sure that the annotation views are selected/deselected correctly because
- // annotations are not dismissed when they move out of the visible bounds
- BOOL isViewForSelectedAnnotation = self.selectedAnnotation == annotation;
- [annotationView setSelected:isViewForSelectedAnnotation];
-
- annotationView.annotation = annotation;
- annotationView.mapView = self;
- CGRect bounds = UIEdgeInsetsInsetRect({ CGPointZero, annotationView.frame.size }, annotationView.alignmentRectInsets);
-
- // Take any offset into consideration
- CGFloat adjustedAnnotationWidth = CGRectGetWidth(bounds) + fabs(annotationView.centerOffset.dx);
- CGFloat adjustedAnnotationHeight = CGRectGetHeight(bounds) + fabs(annotationView.centerOffset.dx);
-
- _largestAnnotationViewSize = CGSizeMake(MAX(_largestAnnotationViewSize.width, adjustedAnnotationWidth),
- MAX(_largestAnnotationViewSize.height, adjustedAnnotationHeight));
-
- _unionedAnnotationRepresentationSize = CGSizeMake(MAX(_unionedAnnotationRepresentationSize.width, _largestAnnotationViewSize.width),
- MAX(_unionedAnnotationRepresentationSize.height, _largestAnnotationViewSize.height));
- }
-
- return annotationView;
-}
-
-- (nullable MGLAnnotationView *)viewForAnnotation:(id<MGLAnnotation>)annotation
-{
- MGLLogDebug(@"Retrieving the annotation view for: %@", annotation);
- if (annotation == self.userLocation)
- {
- return self.userLocationAnnotationView;
- }
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- if (annotationTag == MGLAnnotationTagNotFound) {
- return nil;
- }
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- return annotationContext.annotationView;
-}
-
-- (double)alphaForShapeAnnotation:(MGLShape *)annotation
-{
- if (_delegateHasAlphasForShapeAnnotations)
- {
- return [self.delegate mapView:self alphaForShapeAnnotation:annotation];
- }
- return 1.0;
-}
-
-- (mbgl::Color)strokeColorForShapeAnnotation:(MGLShape *)annotation
-{
- UIColor *color = (_delegateHasStrokeColorsForShapeAnnotations
- ? [self.delegate mapView:self strokeColorForShapeAnnotation:annotation]
- : self.tintColor);
- return color.mgl_color;
-}
-
-- (mbgl::Color)fillColorForPolygonAnnotation:(MGLPolygon *)annotation
-{
- UIColor *color = (_delegateHasFillColorsForShapeAnnotations
- ? [self.delegate mapView:self fillColorForPolygonAnnotation:annotation]
- : self.tintColor);
- return color.mgl_color;
-}
-
-- (CGFloat)lineWidthForPolylineAnnotation:(MGLPolyline *)annotation
-{
- if (_delegateHasLineWidthsForShapeAnnotations)
- {
- return [self.delegate mapView:self lineWidthForPolylineAnnotation:(MGLPolyline *)annotation];
- }
- return 3.0;
-}
-
-- (void)installAnnotationImage:(MGLAnnotationImage *)annotationImage
-{
- NSString *iconIdentifier = annotationImage.styleIconIdentifier;
- self.annotationImagesByIdentifier[annotationImage.reuseIdentifier] = annotationImage;
- annotationImage.delegate = self;
-
- // add sprite
- self.mbglMap.addAnnotationImage([annotationImage.image mgl_styleImageWithIdentifier:iconIdentifier]);
-
- // Create a slop area with a “radius” equal in size to the annotation
- // image’s alignment rect, allowing the eventual tap to be on any point
- // within this image. Union this slop area with any existing slop areas.
- CGRect bounds = UIEdgeInsetsInsetRect({ CGPointZero, annotationImage.image.size },
- annotationImage.image.alignmentRectInsets);
- _unionedAnnotationRepresentationSize = CGSizeMake(MAX(_unionedAnnotationRepresentationSize.width, bounds.size.width),
- MAX(_unionedAnnotationRepresentationSize.height, bounds.size.height));
-}
-
-- (void)removeAnnotation:(id <MGLAnnotation>)annotation
-{
- MGLLogDebug(@"Removing annotation: %@", annotation);
- if ( ! annotation) return;
-
- // The core bulk deletion API is efficient with respect to indexing
- // and screen refreshes, thus we should defer to it even for
- // individual deletes.
- //
- [self removeAnnotations:@[ annotation ]];
-}
-
-- (void)removeAnnotations:(NSArray<id <MGLAnnotation>> *)annotations
-{
- MGLLogDebug(@"Removing: %lu annotations", annotations.count);
- if ( ! annotations) return;
-
- [self willChangeValueForKey:@"annotations"];
-
- for (id <MGLAnnotation> annotation in annotations)
- {
- MGLAssert([annotation conformsToProtocol:@protocol(MGLAnnotation)], @"annotation should conform to MGLAnnotation");
-
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- if (annotationTag == MGLAnnotationTagNotFound)
- {
- continue;
- }
-
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- MGLAnnotationView *annotationView = annotationContext.annotationView;
-
- if (annotationContext.viewReuseIdentifier)
- {
- NSMutableArray *annotationViewReuseQueue = [self annotationViewReuseQueueForIdentifier:annotationContext.viewReuseIdentifier];
- if (![annotationViewReuseQueue containsObject:annotationView])
- {
- [annotationViewReuseQueue removeObject:annotationView];
- }
- }
-
- annotationView.annotation = nil;
- [annotationView removeFromSuperview];
- [self.annotationContainerView.annotationViews removeObject:annotationView];
-
- if (annotationTag == _selectedAnnotationTag)
- {
- [self deselectAnnotation:annotation animated:NO];
- }
-
- _annotationContextsByAnnotationTag.erase(annotationTag);
- _annotationTagsByAnnotation.erase(annotation);
-
- if ([annotation isKindOfClass:[NSObject class]] && ![annotation isKindOfClass:[MGLMultiPoint class]])
- {
- [(NSObject *)annotation removeObserver:self forKeyPath:@"coordinate" context:(void *)(NSUInteger)annotationTag];
- }
- else if ([annotation isKindOfClass:[MGLMultiPoint class]])
- {
- [(NSObject *)annotation removeObserver:self forKeyPath:@"coordinates" context:(void *)(NSUInteger)annotationTag];
- }
-
- _isChangingAnnotationLayers = YES;
- self.mbglMap.removeAnnotation(annotationTag);
- }
-
- [self updatePresentsWithTransaction];
-
- [self didChangeValueForKey:@"annotations"];
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
- if (_isChangingAnnotationLayers)
- {
- [self.style willChangeValueForKey:@"layers"];
- }
-}
-
-- (nonnull NSArray<id <MGLOverlay>> *)overlays
-{
- if (self.annotations == nil) { return @[]; }
-
- NSMutableArray<id <MGLOverlay>> *mutableOverlays = [NSMutableArray array];
-
- [self.annotations enumerateObjectsUsingBlock:^(id<MGLAnnotation> _Nonnull annotation, NSUInteger idx, BOOL * _Nonnull stop) {
- if ([annotation conformsToProtocol:@protocol(MGLOverlay)])
- {
- [mutableOverlays addObject:(id<MGLOverlay>)annotation];
- }
- }];
-
- return [NSArray arrayWithArray:mutableOverlays];
-}
-
-- (void)addOverlay:(id <MGLOverlay>)overlay
-{
- MGLLogDebug(@"Adding overlay: %@", overlay);
- [self addOverlays:@[ overlay ]];
-}
-
-- (void)addOverlays:(NSArray<id <MGLOverlay>> *)overlays
-{
- MGLLogDebug(@"Adding: %lu overlays", overlays.count);
-#if DEBUG
- for (id <MGLOverlay> overlay in overlays)
- {
- MGLAssert([overlay conformsToProtocol:@protocol(MGLOverlay)], @"overlay should conform to MGLOverlay");
- }
-#endif
-
- [self addAnnotations:overlays];
-}
-
-- (void)removeOverlay:(id <MGLOverlay>)overlay
-{
- MGLLogDebug(@"Removing overlay: %@", overlay);
- [self removeOverlays:@[ overlay ]];
-}
-
-- (void)removeOverlays:(NSArray<id <MGLOverlay>> *)overlays
-{
- MGLLogDebug(@"Removing: %lu overlays", overlays.count);
-#if DEBUG
- for (id <MGLOverlay> overlay in overlays)
- {
- MGLAssert([overlay conformsToProtocol:@protocol(MGLOverlay)], @"overlay should conform to MGLOverlay");
- }
-#endif
-
- [self removeAnnotations:overlays];
-}
-
-- (nullable MGLAnnotationImage *)dequeueReusableAnnotationImageWithIdentifier:(NSString *)identifier
-{
- return self.annotationImagesByIdentifier[identifier];
-}
-
-- (nullable MGLAnnotationView *)dequeueReusableAnnotationViewWithIdentifier:(NSString *)identifier
-{
- NSMutableArray *annotationViewReuseQueue = [self annotationViewReuseQueueForIdentifier:identifier];
- MGLAnnotationView *reusableView = annotationViewReuseQueue.firstObject;
- [reusableView prepareForReuse];
- [annotationViewReuseQueue removeObject:reusableView];
-
- return reusableView;
-}
-
-/**
- Returns the tag of the annotation at the given point in the view.
-
- This is more involved than it sounds: if multiple point annotations overlap
- near the point, this method cycles through them so that each of them is
- accessible to the user at some point.
-
- @param persist True to remember the cycleable set of annotations, so that a
- different annotation is returned the next time this method is called
- with the same point. Setting this parameter to false is useful for
- asking “what if?”
- */
-- (MGLAnnotationTag)annotationTagAtPoint:(CGPoint)point persistingResults:(BOOL)persist
-{
- // Look for any annotation near the tap. An annotation is “near” if the
- // distance between its center and the tap is less than the maximum height
- // or width of an installed annotation image or annotation view.
- CGRect queryRect = CGRectInset({ point, CGSizeZero },
- -_unionedAnnotationRepresentationSize.width,
- -_unionedAnnotationRepresentationSize.height);
- queryRect = CGRectInset(queryRect, -MGLAnnotationImagePaddingForHitTest,
- -MGLAnnotationImagePaddingForHitTest);
- std::vector<MGLAnnotationTag> nearbyAnnotations = [self annotationTagsInRect:queryRect];
- std::vector<MGLAnnotationTag> nearbyShapeAnnotations = [self shapeAnnotationTagsInRect:queryRect];
-
- if (nearbyShapeAnnotations.size()) {
- nearbyAnnotations.insert(nearbyAnnotations.end(), nearbyShapeAnnotations.begin(), nearbyShapeAnnotations.end());
- }
-
- if (nearbyAnnotations.size())
- {
- // Assume that the user is fat-fingering an annotation.
- CGRect hitRect = CGRectInset({ point, CGSizeZero },
- -MGLAnnotationImagePaddingForHitTest,
- -MGLAnnotationImagePaddingForHitTest);
-
- // Filter out any annotation whose image or view is unselectable or for which
- // hit testing fails.
- auto end = std::remove_if(nearbyAnnotations.begin(), nearbyAnnotations.end(), [&](const MGLAnnotationTag annotationTag) {
- id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
- MGLAssert(annotation, @"Unknown annotation found nearby tap");
- if ( ! annotation)
- {
- return true;
- }
-
- MGLAnnotationContext annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- CGRect annotationRect;
-
- MGLAnnotationView *annotationView = annotationContext.annotationView;
-
- if (annotationView)
- {
- if ( ! annotationView.enabled)
- {
- return true;
- }
-
- CGPoint calloutAnchorPoint = MGLPointRounded([self convertCoordinate:annotation.coordinate toPointToView:self]);
- CGRect frame = CGRectInset({ calloutAnchorPoint, CGSizeZero }, -CGRectGetWidth(annotationView.frame) / 2, -CGRectGetHeight(annotationView.frame) / 2);
-
- // We need to take any offset into consideration. Note that a large offset will result in a
- // large value for `_unionedAnnotationRepresentationSize` (and thus a larger feature query rect).
- // Aim to keep the offset as small as possible.
- frame = CGRectOffset(frame, annotationView.centerOffset.dx, annotationView.centerOffset.dy);
-
- annotationRect = UIEdgeInsetsInsetRect(frame, annotationView.alignmentRectInsets);
- }
- else
- {
- if ([annotation isKindOfClass:[MGLMultiPoint class]])
- {
- if ([self.delegate respondsToSelector:@selector(mapView:shapeAnnotationIsEnabled:)]) {
- return !!(![self.delegate mapView:self shapeAnnotationIsEnabled:(MGLMultiPoint *)annotation]);
- } else {
- return false;
- }
- }
-
- MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
- if ( ! annotationImage.enabled)
- {
- return true;
- }
-
- MGLAnnotationImage *fallbackAnnotationImage = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName];
- UIImage *fallbackImage = fallbackAnnotationImage.image;
-
- annotationRect = [self frameOfImage:annotationImage.image ?: fallbackImage centeredAtCoordinate:annotation.coordinate];
- }
-
- // Filter out the annotation if the fattened finger didn’t land
- // within the image’s alignment rect.
- return !!!CGRectIntersectsRect(annotationRect, hitRect);
- });
-
- nearbyAnnotations.resize(std::distance(nearbyAnnotations.begin(), end));
-
- }
-
- MGLAnnotationTag hitAnnotationTag = MGLAnnotationTagNotFound;
- if (nearbyAnnotations.size())
- {
- // The first selection in the cycle should be the one nearest to the
- // tap. Also the annotation tags need to be stable in order to compare them with
- // the remembered tags _annotationsNearbyLastTap.
- CLLocationCoordinate2D currentCoordinate = [self convertPoint:point toCoordinateFromView:self];
- std::sort(nearbyAnnotations.begin(), nearbyAnnotations.end(), [&](const MGLAnnotationTag tagA, const MGLAnnotationTag tagB) {
- CLLocationCoordinate2D coordinateA = [[self annotationWithTag:tagA] coordinate];
- CLLocationCoordinate2D coordinateB = [[self annotationWithTag:tagB] coordinate];
- CLLocationDegrees deltaA = hypot(coordinateA.latitude - currentCoordinate.latitude,
- coordinateA.longitude - currentCoordinate.longitude);
- CLLocationDegrees deltaB = hypot(coordinateB.latitude - currentCoordinate.latitude,
- coordinateB.longitude - currentCoordinate.longitude);
- return deltaA < deltaB;
- });
-
- if (nearbyAnnotations == _annotationsNearbyLastTap)
- {
- // The last time we persisted a set of annotations, we had the same
- // set of annotations as we do now. Cycle through them.
- if (_selectedAnnotationTag == MGLAnnotationTagNotFound
- || _selectedAnnotationTag == nearbyAnnotations.back())
- {
- // Either no annotation is selected or the last annotation in
- // the set was selected. Wrap around to the first annotation in
- // the set.
- hitAnnotationTag = nearbyAnnotations.front();
- }
- else
- {
- auto result = std::find(nearbyAnnotations.begin(),
- nearbyAnnotations.end(),
- _selectedAnnotationTag);
- if (result == nearbyAnnotations.end())
- {
- // An annotation from this set hasn’t been selected before.
- // Select the first (nearest) one.
- hitAnnotationTag = nearbyAnnotations.front();
- }
- else
- {
- // Step to the next annotation in the set.
- auto distance = std::distance(nearbyAnnotations.begin(), result);
- hitAnnotationTag = nearbyAnnotations[distance + 1];
- }
- }
- }
- else
- {
- // Remember the nearby annotations for the next time this method is
- // called.
- if (persist)
- {
- _annotationsNearbyLastTap = nearbyAnnotations;
- }
-
- // Choose the first nearby annotation.
- if (nearbyAnnotations.size())
- {
- hitAnnotationTag = nearbyAnnotations.front();
- }
- }
- }
-
- return hitAnnotationTag;
-}
-
-/// Returns the tags of the annotations coincident with the given rectangle.
-- (std::vector<MGLAnnotationTag>)annotationTagsInRect:(CGRect)rect
-{
- return _rendererFrontend->getRenderer()->queryPointAnnotations({
- { CGRectGetMinX(rect), CGRectGetMinY(rect) },
- { CGRectGetMaxX(rect), CGRectGetMaxY(rect) },
- });
-}
-
-- (std::vector<MGLAnnotationTag>)shapeAnnotationTagsInRect:(CGRect)rect
-{
- return _rendererFrontend->getRenderer()->queryShapeAnnotations({
- { CGRectGetMinX(rect), CGRectGetMinY(rect) },
- { CGRectGetMaxX(rect), CGRectGetMaxY(rect) },
- });
-}
-
-
-- (BOOL)isMovingAnnotationIntoViewSupportedForAnnotation:(id<MGLAnnotation>)annotation animated:(BOOL)animated {
- // Consider delegating
- return [annotation isKindOfClass:[MGLPointAnnotation class]];
-}
-
-- (id <MGLAnnotation>)selectedAnnotation
-{
- if (_userLocationAnnotationIsSelected)
- {
- return self.userLocation;
- }
-
- if ( ! _annotationContextsByAnnotationTag.count(_selectedAnnotationTag) ||
- _selectedAnnotationTag == MGLAnnotationTagNotFound) {
- return nil;
- }
-
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(_selectedAnnotationTag);
- return annotationContext.annotation;
-}
-
-- (void)setSelectedAnnotation:(id <MGLAnnotation>)annotation
-{
- MGLLogDebug(@"Selecting annotation: %@", annotation);
- [self willChangeValueForKey:@"selectedAnnotations"];
- _selectedAnnotationTag = [self annotationTagForAnnotation:annotation];
- _userLocationAnnotationIsSelected = annotation && annotation == self.userLocation;
- [self didChangeValueForKey:@"selectedAnnotations"];
-}
-
-- (NSArray<id <MGLAnnotation>> *)selectedAnnotations
-{
- id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
- return (selectedAnnotation ? @[ selectedAnnotation ] : @[]);
-}
-
-- (void)setSelectedAnnotations:(NSArray<id <MGLAnnotation>> *)selectedAnnotations
-{
- if ( ! selectedAnnotations.count) return;
-
- id <MGLAnnotation> firstAnnotation = selectedAnnotations[0];
-
- MGLAssert([firstAnnotation conformsToProtocol:@protocol(MGLAnnotation)], @"annotation should conform to MGLAnnotation");
-
- if ([firstAnnotation isKindOfClass:[MGLMultiPoint class]]) return;
-
- [self selectAnnotation:firstAnnotation animated:YES completionHandler:nil];
-}
-
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation animated:(BOOL)animated
-{
- [self selectAnnotation:annotation animated:animated completionHandler:nil];
-}
-
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- [self selectAnnotation:annotation moveIntoView:animated animateSelection:animated completionHandler:completion];
-}
-
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation moveIntoView:(BOOL)moveIntoView animateSelection:(BOOL)animateSelection completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Selecting annotation: %@ moveIntoView: %@ animateSelection: %@", annotation, MGLStringFromBOOL(moveIntoView), MGLStringFromBOOL(animateSelection));
- CGRect positioningRect = [self positioningRectForAnnotation:annotation defaultCalloutPoint:CGPointZero];
- [self selectAnnotation:annotation moveIntoView:moveIntoView animateSelection:animateSelection calloutPositioningRect:positioningRect completionHandler:completion];
-}
-
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation moveIntoView:(BOOL)moveIntoView animateSelection:(BOOL)animateSelection calloutPositioningRect:(CGRect)calloutPositioningRect completionHandler:(nullable void (^)(void))completion
-{
- if ( ! annotation) return;
-
- if (annotation == self.selectedAnnotation) return;
-
- [self deselectAnnotation:self.selectedAnnotation animated:NO];
-
- // Add the annotation to the map if it hasn’t been added yet.
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- if (annotationTag == MGLAnnotationTagNotFound && annotation != self.userLocation)
- {
- [self addAnnotation:annotation];
- annotationTag = [self annotationTagForAnnotation:annotation];
- if (annotationTag == MGLAnnotationTagNotFound) return;
- }
-
- MGLAnnotationView *annotationView = nil;
-
- if (annotation != self.userLocation)
- if (annotationTag != MGLAnnotationTagNotFound) {
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- annotationView = annotationContext.annotationView;
- if (annotationView && annotationView.enabled) {
- // Annotations represented by views use the view frame as the positioning rect.
- calloutPositioningRect = annotationView.frame;
- [annotationView.superview bringSubviewToFront:annotationView];
-
- [annotationView setSelected:YES animated:animateSelection];
- }
- }
-
- self.selectedAnnotation = annotation;
-
- // Determine if we're allowed to move this offscreen annotation on screen, even though we've asked it to
- if (moveIntoView) {
- moveIntoView = [self isMovingAnnotationIntoViewSupportedForAnnotation:annotation animated:animateSelection];
- }
-
- // If we have an invalid positioning rect, we need to provide a suitable default.
- // This (currently) happens if you select an annotation that has NOT yet been
- // added. See https://github.com/mapbox/mapbox-gl-native/issues/11476
- if (CGRectIsNull(calloutPositioningRect)) {
- CLLocationCoordinate2D origin = annotation.coordinate;
- CGPoint originPoint = [self convertCoordinate:origin toPointToView:self];
- calloutPositioningRect = { .origin = originPoint, .size = CGSizeZero };
- }
-
- CGRect expandedPositioningRect = calloutPositioningRect;
-
- // Used for callout positioning, and moving offscreen annotations onscreen.
- CGRect constrainedRect = self.contentFrame;
- CGRect bounds = constrainedRect;
-
- BOOL expandedPositioningRectToMoveCalloutIntoViewWithMargins = NO;
-
- UIView <MGLCalloutView> *calloutView = nil;
-
- if ([annotation respondsToSelector:@selector(title)] &&
- annotation.title &&
- [self.delegate respondsToSelector:@selector(mapView:annotationCanShowCallout:)] &&
- [self.delegate mapView:self annotationCanShowCallout:annotation])
- {
- // build the callout
- if ([self.delegate respondsToSelector:@selector(mapView:calloutViewForAnnotation:)])
- {
- id providedCalloutView = [self.delegate mapView:self calloutViewForAnnotation:annotation];
- if (providedCalloutView) {
- if (![providedCalloutView isKindOfClass:[UIView class]]) {
- [NSException raise:NSInvalidArgumentException format:@"Callout view must be a kind of UIView"];
- }
- MGLAssert([providedCalloutView conformsToProtocol:@protocol(MGLCalloutView)], @"callout view must conform to MGLCalloutView");
- calloutView = providedCalloutView;
- }
- }
- if (!calloutView)
- {
- calloutView = [self calloutViewForAnnotation:annotation];
- }
- self.calloutViewForSelectedAnnotation = calloutView;
-
- if (_userLocationAnnotationIsSelected)
- {
- calloutPositioningRect = [self.userLocationAnnotationView.layer.presentationLayer frame];
-
- CGRect implicitAnnotationFrame = [self.userLocationAnnotationView.layer.presentationLayer frame];
- CGRect explicitAnnotationFrame = self.userLocationAnnotationView.frame;
- _initialImplicitCalloutViewOffset = CGPointMake(CGRectGetMinX(explicitAnnotationFrame) - CGRectGetMinX(implicitAnnotationFrame),
- CGRectGetMinY(explicitAnnotationFrame) - CGRectGetMinY(implicitAnnotationFrame));
- }
-
- // consult delegate for left and/or right accessory views
- if ([self.delegate respondsToSelector:@selector(mapView:leftCalloutAccessoryViewForAnnotation:)])
- {
- calloutView.leftAccessoryView = [self.delegate mapView:self leftCalloutAccessoryViewForAnnotation:annotation];
-
- if ([calloutView.leftAccessoryView isKindOfClass:[UIControl class]])
- {
- UITapGestureRecognizer *calloutAccessoryTap = [[UITapGestureRecognizer alloc] initWithTarget:self
- action:@selector(handleCalloutAccessoryTapGesture:)];
-
- [calloutView.leftAccessoryView addGestureRecognizer:calloutAccessoryTap];
- }
- }
-
- if ([self.delegate respondsToSelector:@selector(mapView:rightCalloutAccessoryViewForAnnotation:)])
- {
- calloutView.rightAccessoryView = [self.delegate mapView:self rightCalloutAccessoryViewForAnnotation:annotation];
-
- if ([calloutView.rightAccessoryView isKindOfClass:[UIControl class]])
- {
- UITapGestureRecognizer *calloutAccessoryTap = [[UITapGestureRecognizer alloc] initWithTarget:self
- action:@selector(handleCalloutAccessoryTapGesture:)];
-
- [calloutView.rightAccessoryView addGestureRecognizer:calloutAccessoryTap];
- }
- }
-
- // set annotation delegate to handle taps on the callout view
- calloutView.delegate = self;
-
- // If the callout view provides inset (outset) information, we can use it to expand our positioning
- // rect, which we then use to help move the annotation on-screen if want need to.
- if (moveIntoView && [calloutView respondsToSelector:@selector(marginInsetsHintForPresentationFromRect:)]) {
- UIEdgeInsets margins = [calloutView marginInsetsHintForPresentationFromRect:calloutPositioningRect];
- expandedPositioningRect = UIEdgeInsetsInsetRect(expandedPositioningRect, margins);
- expandedPositioningRectToMoveCalloutIntoViewWithMargins = YES;
- }
- }
-
- if (!expandedPositioningRectToMoveCalloutIntoViewWithMargins)
- {
- // We don't have a callout (OR our callout didn't implement
- // marginInsetsHintForPresentationFromRect: - in this case we need to
- // ensure that partially off-screen annotations are NOT moved into view.
- //
- // We may want to create (and fallback to) an `MGLMapViewDelegate` version
- // of the `-[MGLCalloutView marginInsetsHintForPresentationFromRect:]
- // protocol method.
- bounds = CGRectInset(bounds, -calloutPositioningRect.size.width, -calloutPositioningRect.size.height);
- }
-
- if (moveIntoView)
- {
- moveIntoView = NO;
-
- // Any one of these cases should trigger a move onscreen
- CGFloat minX = CGRectGetMinX(expandedPositioningRect);
-
- if (minX < CGRectGetMinX(bounds)) {
- constrainedRect.origin.x = minX;
- moveIntoView = YES;
- }
- else {
- CGFloat maxX = CGRectGetMaxX(expandedPositioningRect);
-
- if (maxX > CGRectGetMaxX(bounds)) {
- constrainedRect.origin.x = maxX - CGRectGetWidth(constrainedRect);
- moveIntoView = YES;
- }
- }
-
- CGFloat minY = CGRectGetMinY(expandedPositioningRect);
-
- if (minY < CGRectGetMinY(bounds)) {
- constrainedRect.origin.y = minY;
- moveIntoView = YES;
- }
- else {
- CGFloat maxY = CGRectGetMaxY(expandedPositioningRect);
-
- if (maxY > CGRectGetMaxY(bounds)) {
- constrainedRect.origin.y = maxY - CGRectGetHeight(constrainedRect);
- moveIntoView = YES;
- }
- }
- }
-
- // Remember, calloutView can be nil here.
- [calloutView presentCalloutFromRect:calloutPositioningRect
- inView:_mbglView->getView()
- constrainedToRect:constrainedRect
- animated:animateSelection];
-
- // Save the anchor coordinate
- if ([annotation isKindOfClass:[MGLPointAnnotation class]]) {
- self.anchorCoordinateForSelectedAnnotation = annotation.coordinate;
- }
- else {
- // This is used for features like polygons, so that if the map is dragged
- // the callout doesn't ping to its coordinate.
- CGPoint anchorPoint = CGPointMake(CGRectGetMidX(calloutPositioningRect), CGRectGetMidY(calloutPositioningRect));
- self.anchorCoordinateForSelectedAnnotation = [self convertPoint:anchorPoint toCoordinateFromView:self];
- }
-
- // notify delegate
- if ([self.delegate respondsToSelector:@selector(mapView:didSelectAnnotation:)])
- {
- [self.delegate mapView:self didSelectAnnotation:annotation];
- }
-
- if (annotationView && [self.delegate respondsToSelector:@selector(mapView:didSelectAnnotationView:)])
- {
- [self.delegate mapView:self didSelectAnnotationView:annotationView];
- }
-
- if (moveIntoView)
- {
- CGPoint center = CGPointMake(CGRectGetMidX(constrainedRect), CGRectGetMidY(constrainedRect));
- CLLocationCoordinate2D centerCoord = [self convertPoint:center toCoordinateFromView:self];
- [self setCenterCoordinate:centerCoord zoomLevel:self.zoomLevel direction:self.direction animated:animateSelection completionHandler:completion];
- }
- else if (completion)
- {
- completion();
- }
-}
-
-- (MGLCompactCalloutView *)calloutViewForAnnotation:(id <MGLAnnotation>)annotation
-{
- MGLCompactCalloutView *calloutView = [MGLCompactCalloutView platformCalloutView];
- calloutView.representedObject = annotation;
- calloutView.tintColor = self.tintColor;
-
- return calloutView;
-}
-
-/// Returns the rectangle that represents the annotation image of the annotation
-/// with the given tag. This rectangle is fitted to the image’s alignment rect
-/// and is appropriate for positioning a popover.
-/// If a shape annotation is visible but its centroid is not, and a default point is specified,
-/// the callout view is anchored to the default callout point.
-- (CGRect)positioningRectForAnnotation:(id <MGLAnnotation>)annotation defaultCalloutPoint:(CGPoint)calloutPoint
-{
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- CGRect positioningRect = [self positioningRectForCalloutForAnnotationWithTag:annotationTag];
-
- if (CGRectIsNull(positioningRect)) {
- return positioningRect;
- }
-
- // For annotations which `coordinate` falls offscreen it will use the current tap point as anchor instead.
- if ( ! CGRectIntersectsRect(positioningRect, self.bounds) && annotation != self.userLocation)
- {
- if (!CGPointEqualToPoint(calloutPoint, CGPointZero)) {
- positioningRect = CGRectMake(calloutPoint.x, calloutPoint.y, positioningRect.size.width, positioningRect.size.height);
- }
- }
-
- return positioningRect;
-}
-
-/// Returns the rectangle that represents the annotation image of the annotation
-/// with the given tag. This rectangle is fitted to the image’s alignment rect
-/// and is appropriate for positioning a popover.
-- (CGRect)positioningRectForCalloutForAnnotationWithTag:(MGLAnnotationTag)annotationTag
-{
- id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
- if ( ! annotation)
- {
- return CGRectNull;
- }
-
- CLLocationCoordinate2D coordinate;
-
- if ((annotation == self.selectedAnnotation) &&
- CLLocationCoordinate2DIsValid(self.anchorCoordinateForSelectedAnnotation)) {
- coordinate = self.anchorCoordinateForSelectedAnnotation;
- }
- else {
- coordinate = annotation.coordinate;
- }
-
- if ([annotation isKindOfClass:[MGLMultiPoint class]]) {
- CLLocationCoordinate2D origin = coordinate;
- CGPoint originPoint = [self convertCoordinate:origin toPointToView:self];
- return CGRectMake(originPoint.x, originPoint.y, MGLAnnotationImagePaddingForHitTest, MGLAnnotationImagePaddingForHitTest);
- }
-
- UIImage *image = [self imageOfAnnotationWithTag:annotationTag].image;
- if ( ! image)
- {
- image = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName].image;
- }
- if ( ! image)
- {
- return CGRectZero;
- }
-
- CGRect positioningRect = [self frameOfImage:image centeredAtCoordinate:coordinate];
- positioningRect.origin.x -= 0.5;
-
- return CGRectInset(positioningRect, -MGLAnnotationImagePaddingForCallout,
- -MGLAnnotationImagePaddingForCallout);
-}
-
-/// Returns the rectangle relative to the viewport that represents the given
-/// image centered at the given coordinate.
-- (CGRect)frameOfImage:(UIImage *)image centeredAtCoordinate:(CLLocationCoordinate2D)coordinate
-{
- CGPoint calloutAnchorPoint = MGLPointRounded([self convertCoordinate:coordinate toPointToView:self]);
- CGRect frame = CGRectInset({ calloutAnchorPoint, CGSizeZero }, -image.size.width / 2, -image.size.height / 2);
- return UIEdgeInsetsInsetRect(frame, image.alignmentRectInsets);
-}
-
-/// Returns the annotation image assigned to the annotation with the given tag.
-- (MGLAnnotationImage *)imageOfAnnotationWithTag:(MGLAnnotationTag)annotationTag
-{
- if (annotationTag == MGLAnnotationTagNotFound
- || _annotationContextsByAnnotationTag.count(annotationTag) == 0)
- {
- return nil;
- }
-
- NSString *customSymbol = _annotationContextsByAnnotationTag.at(annotationTag).imageReuseIdentifier;
- NSString *symbolName = customSymbol.length ? customSymbol : MGLDefaultStyleMarkerSymbolName;
-
- return [self dequeueReusableAnnotationImageWithIdentifier:symbolName];
-}
-
-- (void)deselectAnnotation:(id <MGLAnnotation>)annotation animated:(BOOL)animated
-{
- if ( ! annotation) return;
-
- if (self.selectedAnnotation == annotation)
- {
- MGLLogDebug(@"Deselecting annotation: %@ animated: %@", annotation, MGLStringFromBOOL(animated));
- // dismiss popup
- [self.calloutViewForSelectedAnnotation dismissCalloutAnimated:animated];
-
- // deselect annotation view
- MGLAnnotationView *annotationView = nil;
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
-
- if (annotationTag != MGLAnnotationTagNotFound)
- {
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- annotationView = annotationContext.annotationView;
- [annotationView setSelected:NO animated:animated];
- }
-
- // clean up
- self.calloutViewForSelectedAnnotation = nil;
- self.selectedAnnotation = nil;
- self.anchorCoordinateForSelectedAnnotation = kCLLocationCoordinate2DInvalid;
-
- // notify delegate
- if ([self.delegate respondsToSelector:@selector(mapView:didDeselectAnnotation:)])
- {
- [self.delegate mapView:self didDeselectAnnotation:annotation];
- }
-
- if (annotationView && [self.delegate respondsToSelector:@selector(mapView:didDeselectAnnotationView:)])
- {
- [self.delegate mapView:self didDeselectAnnotationView:annotationView];
- }
-
- [self updatePresentsWithTransaction];
- }
-}
-
-- (void)calloutViewWillAppear:(UIView <MGLCalloutView> *)calloutView
-{
- if (_userLocationAnnotationIsSelected ||
- CGPointEqualToPoint(_initialImplicitCalloutViewOffset, CGPointZero))
- {
- return;
- }
-
- __weak __typeof__(self) weakSelf = self;
-
- // The user location callout view initially points to the user location
- // annotation’s implicit (visual) frame, which is offset from the
- // annotation’s explicit frame. Now the callout view needs to rendezvous
- // with the explicit frame. Then,
- // -updateUserLocationAnnotationViewAnimatedWithDuration: will take over the
- // next time an updated location arrives.
- [UIView animateWithDuration:_userLocationAnimationCompletionDate.timeIntervalSinceNow
- delay:0
- options:(UIViewAnimationOptionCurveLinear |
- UIViewAnimationOptionAllowUserInteraction |
- UIViewAnimationOptionBeginFromCurrentState)
- animations:^
- {
- __typeof__(self) strongSelf = weakSelf;
- if ( ! strongSelf)
- {
- return;
- }
-
- calloutView.frame = CGRectOffset(calloutView.frame,
- strongSelf->_initialImplicitCalloutViewOffset.x,
- strongSelf->_initialImplicitCalloutViewOffset.y);
- strongSelf->_initialImplicitCalloutViewOffset = CGPointZero;
- }
- completion:NULL];
-}
-
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations animated:(BOOL)animated
-{
- CGFloat maximumPadding = 100;
- CGFloat yPadding = (self.frame.size.height / 5 <= maximumPadding) ? (self.frame.size.height / 5) : maximumPadding;
- CGFloat xPadding = (self.frame.size.width / 5 <= maximumPadding) ? (self.frame.size.width / 5) : maximumPadding;
-
- UIEdgeInsets edgeInsets = UIEdgeInsetsMake(yPadding, xPadding, yPadding, xPadding);
-
- [self showAnnotations:annotations edgePadding:edgeInsets animated:animated completionHandler:nil];
-}
-
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated
-{
- [self showAnnotations:annotations edgePadding:insets animated:animated completionHandler:nil];
-}
-
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Showing: %lu annotations edgePadding: %@ animated: %@", annotations.count, NSStringFromUIEdgeInsets(insets), MGLStringFromBOOL(animated));
- if ( ! annotations.count)
- {
- if (completion) {
- completion();
- }
- return;
- }
-
- mbgl::LatLngBounds bounds = mbgl::LatLngBounds::empty();
-
- for (id <MGLAnnotation> annotation in annotations)
- {
- if ([annotation conformsToProtocol:@protocol(MGLOverlay)])
- {
- bounds.extend(MGLLatLngBoundsFromCoordinateBounds(((id <MGLOverlay>)annotation).overlayBounds));
- }
- else
- {
- bounds.extend(MGLLatLngFromLocationCoordinate2D(annotation.coordinate));
- }
- }
-
- [self setVisibleCoordinateBounds:MGLCoordinateBoundsFromLatLngBounds(bounds)
- edgePadding:insets
- animated:animated
- completionHandler:completion];
-}
-
-
-#pragma mark Annotation Image Delegate
-
-- (void)annotationImageNeedsRedisplay:(MGLAnnotationImage *)annotationImage
-{
- NSString *reuseIdentifier = annotationImage.reuseIdentifier;
- NSString *iconIdentifier = annotationImage.styleIconIdentifier;
- NSString *fallbackReuseIdentifier = MGLDefaultStyleMarkerSymbolName;
- NSString *fallbackIconIdentifier = [MGLAnnotationSpritePrefix stringByAppendingString:fallbackReuseIdentifier];
-
- if (annotationImage.image)
- {
- // Add the new icon to the style.
- NSString *updatedIconIdentifier = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
- annotationImage.styleIconIdentifier = updatedIconIdentifier;
- [self installAnnotationImage:annotationImage];
-
- if ([iconIdentifier isEqualToString:fallbackIconIdentifier])
- {
- // Update any annotations associated with the annotation image.
- [self applyIconIdentifier:updatedIconIdentifier toAnnotationsWithImageReuseIdentifier:reuseIdentifier];
- }
- }
- else
- {
- // Add the default icon to the style if necessary.
- annotationImage.styleIconIdentifier = fallbackIconIdentifier;
- if ( ! [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName])
- {
- [self installAnnotationImage:self.defaultAnnotationImage];
- }
-
- // Update any annotations associated with the annotation image.
- [self applyIconIdentifier:fallbackIconIdentifier toAnnotationsWithImageReuseIdentifier:reuseIdentifier];
- }
-}
-
-- (void)applyIconIdentifier:(NSString *)iconIdentifier toAnnotationsWithImageReuseIdentifier:(NSString *)reuseIdentifier
-{
- for (auto &pair : _annotationContextsByAnnotationTag)
- {
- if ([pair.second.imageReuseIdentifier isEqualToString:reuseIdentifier])
- {
- const mbgl::Point<double> point = MGLPointFromLocationCoordinate2D(pair.second.annotation.coordinate);
- self.mbglMap.updateAnnotation(pair.first, mbgl::SymbolAnnotation { point, iconIdentifier.UTF8String ?: "" });
- }
- }
-}
-
-#pragma mark - User Location -
-
-- (void)setLocationManager:(nullable id<MGLLocationManager>)locationManager
-{
- MGLLogDebug(@"Setting locationManager: %@", locationManager);
- if (!locationManager) {
- locationManager = [[MGLCLLocationManager alloc] init];
- }
- [_locationManager stopUpdatingLocation];
- [_locationManager stopUpdatingHeading];
- _locationManager.delegate = nil;
-
- _locationManager = locationManager;
- _locationManager.delegate = self;
-}
-
-- (void)validateLocationServices
-{
- BOOL shouldEnableLocationServices = self.showsUserLocation && !self.dormant;
-
- if (shouldEnableLocationServices)
- {
- if (self.locationManager.authorizationStatus == kCLAuthorizationStatusNotDetermined) {
- BOOL hasWhenInUseUsageDescription = !![[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"];
-
- if (@available(iOS 11.0, *)) {
- // A WhenInUse string is required in iOS 11+ and the map never has any need for Always, so it's enough to just ask for WhenInUse.
- if (hasWhenInUseUsageDescription) {
- [self.locationManager requestWhenInUseAuthorization];
- } else {
- [NSException raise:MGLMissingLocationServicesUsageDescriptionException
- format:@"To use location services this app must have a NSLocationWhenInUseUsageDescription string in its Info.plist."];
- }
- } else {
- // We might have to ask for Always if the app does not provide a WhenInUse string.
- BOOL hasAlwaysUsageDescription = !![[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"];
-
- if (hasWhenInUseUsageDescription) {
- [self.locationManager requestWhenInUseAuthorization];
- } else if (hasAlwaysUsageDescription) {
- [self.locationManager requestAlwaysAuthorization];
- } else {
- [NSException raise:MGLMissingLocationServicesUsageDescriptionException
- format:@"To use location services this app must have a NSLocationWhenInUseUsageDescription and/or NSLocationAlwaysUsageDescription string in its Info.plist."];
- }
- }
- }
-
- [self.locationManager startUpdatingLocation];
-
- [self validateUserHeadingUpdating];
- }
- else if ( ! shouldEnableLocationServices && self.locationManager)
- {
- [self.locationManager stopUpdatingLocation];
- [self.locationManager stopUpdatingHeading];
- }
-}
-
-- (void)setShowsUserLocation:(BOOL)showsUserLocation
-{
- MGLLogDebug(@"Setting showsUserLocation: %@", MGLStringFromBOOL(showsUserLocation));
- if (showsUserLocation == _showsUserLocation) return;
-
- _showsUserLocation = showsUserLocation;
-
- if (showsUserLocation)
- {
- if ([self.delegate respondsToSelector:@selector(mapViewWillStartLocatingUser:)])
- {
- [self.delegate mapViewWillStartLocatingUser:self];
- }
-
- self.userLocation = [[MGLUserLocation alloc] initWithMapView:self];
-
- MGLUserLocationAnnotationView *userLocationAnnotationView;
-
- if ([self.delegate respondsToSelector:@selector(mapView:viewForAnnotation:)])
- {
- userLocationAnnotationView = (MGLUserLocationAnnotationView *)[self.delegate mapView:self viewForAnnotation:self.userLocation];
- if (userLocationAnnotationView && ! [userLocationAnnotationView isKindOfClass:MGLUserLocationAnnotationView.class])
- {
- [NSException raise:MGLUserLocationAnnotationTypeException
- format:@"User location annotation view must be a kind of MGLUserLocationAnnotationView. %@", userLocationAnnotationView.debugDescription];
- }
- }
-
- self.userLocationAnnotationView = userLocationAnnotationView ?: [[MGLFaux3DUserLocationAnnotationView alloc] init];
- self.userLocationAnnotationView.mapView = self;
- self.userLocationAnnotationView.userLocation = self.userLocation;
-
- self.userLocationAnnotationView.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin |
- UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
-
- [self validateLocationServices];
- }
- else
- {
- [self validateLocationServices];
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidStopLocatingUser:)])
- {
- [self.delegate mapViewDidStopLocatingUser:self];
- }
-
- [self setUserTrackingMode:MGLUserTrackingModeNone animated:YES completionHandler:nil];
-
- [self.userLocationAnnotationView removeFromSuperview];
- self.userLocationAnnotationView = nil;
- }
-}
-
-- (void)setUserLocationAnnotationView:(MGLUserLocationAnnotationView *)newAnnotationView
-{
- if ( ! [newAnnotationView isEqual:_userLocationAnnotationView])
- {
- _userLocationAnnotationView = newAnnotationView;
- [self updateUserLocationAnnotationView];
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingUserLocation
-{
- return [NSSet setWithObject:@"userLocationAnnotationView"];
-}
-
-- (BOOL)isUserLocationVisible
-{
- if (self.userLocationAnnotationView)
- {
- CGPoint locationPoint = [self convertCoordinate:self.userLocation.coordinate toPointToView:self];
-
- CGRect locationRect = CGRectMake(locationPoint.x - self.userLocation.location.horizontalAccuracy,
- locationPoint.y - self.userLocation.location.horizontalAccuracy,
- self.userLocation.location.horizontalAccuracy * 2,
- self.userLocation.location.horizontalAccuracy * 2);
-
- return CGRectIntersectsRect([self bounds], locationRect);
- }
-
- return NO;
-}
-
-- (void)setUserTrackingMode:(MGLUserTrackingMode)mode
-{
- [self setUserTrackingMode:mode animated:YES completionHandler:nil];
-}
-
-- (void)setUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated
-{
- [self setUserTrackingMode:mode animated:animated completionHandler:nil];
-}
-
-- (void)setUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting userTrackingMode: %lu animated: %@", mode, MGLStringFromBOOL(animated));
- if (mode == _userTrackingMode)
- {
- if (completion)
- {
- completion();
- }
- return;
- }
-
- MGLUserTrackingMode oldMode = _userTrackingMode;
- [self willChangeValueForKey:@"userTrackingMode"];
- _userTrackingMode = mode;
- [self didChangeValueForKey:@"userTrackingMode"];
-
- switch (_userTrackingMode)
- {
- case MGLUserTrackingModeNone:
- {
- self.userTrackingState = MGLUserTrackingStatePossible;
-
- // Immediately update the annotation view; other cases update inside
- // the locationManager:didUpdateLocations: method.
- [self updateUserLocationAnnotationView];
-
- break;
- }
- case MGLUserTrackingModeFollow:
- case MGLUserTrackingModeFollowWithCourse:
- {
- self.userTrackingState = animated ? MGLUserTrackingStatePossible : MGLUserTrackingStateChanged;
- self.showsUserLocation = YES;
-
- break;
- }
- case MGLUserTrackingModeFollowWithHeading:
- {
- if (oldMode == MGLUserTrackingModeNone)
- {
- self.userTrackingState = animated ? MGLUserTrackingStatePossible : MGLUserTrackingStateChanged;
- }
-
- self.showsUserLocation = YES;
-
- if (self.zoomLevel < self.currentMinimumZoom)
- {
- [self setZoomLevel:self.currentMinimumZoom animated:YES];
- }
-
- break;
- }
- }
-
- CLLocation *location;
- if (_userTrackingMode != MGLUserTrackingModeNone && (location = self.userLocation.location) && self.userLocationAnnotationView)
- {
- [self locationManager:self.locationManager didUpdateLocations:@[location] animated:animated completionHandler:completion];
- }
- else if (completion)
- {
- completion();
- }
-
- [self validateUserHeadingUpdating];
-
- if ([self.delegate respondsToSelector:@selector(mapView:didChangeUserTrackingMode:animated:)])
- {
- [self.delegate mapView:self didChangeUserTrackingMode:_userTrackingMode animated:animated];
- }
-}
-
-- (void)setUserLocationVerticalAlignment:(MGLAnnotationVerticalAlignment)alignment
-{
- [self setUserLocationVerticalAlignment:alignment animated:YES];
-}
-
-- (void)setUserLocationVerticalAlignment:(MGLAnnotationVerticalAlignment)alignment animated:(BOOL)animated
-{
- _userLocationVerticalAlignment = alignment;
- if (self.userTrackingMode != MGLUserTrackingModeNone)
- {
- CLLocation *location = self.userLocation.location;
- if (location)
- {
- [self locationManager:self.locationManager didUpdateLocations:@[location] animated:animated completionHandler:nil];
- }
- }
-}
-
-- (void)setTargetCoordinate:(CLLocationCoordinate2D)targetCoordinate
-{
- [self setTargetCoordinate:targetCoordinate animated:YES completionHandler:nil];
-}
-
-- (void)setTargetCoordinate:(CLLocationCoordinate2D)targetCoordinate animated:(BOOL)animated
-{
- [self setTargetCoordinate:targetCoordinate animated:animated completionHandler:nil];
-}
-
-- (void)setTargetCoordinate:(CLLocationCoordinate2D)targetCoordinate animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- MGLLogDebug(@"Setting targetCoordinate: %@ animated: %@", MGLStringFromCLLocationCoordinate2D(targetCoordinate), MGLStringFromBOOL(animated));
- BOOL isSynchronous = YES;
- if (targetCoordinate.latitude != self.targetCoordinate.latitude
- || targetCoordinate.longitude != self.targetCoordinate.longitude)
- {
- _targetCoordinate = targetCoordinate;
- if (self.userTrackingMode == MGLUserTrackingModeFollowWithCourse)
- {
- self.userTrackingState = MGLUserTrackingStatePossible;
-
- if (CLLocation *location = self.userLocation.location)
- {
- isSynchronous = NO;
- [self locationManager:self.locationManager didUpdateLocations:@[location] animated:animated completionHandler:completion];
- }
- }
- }
- if (isSynchronous && completion)
- {
- completion();
- }
-}
-
-- (void)setShowsUserHeadingIndicator:(BOOL)showsUserHeadingIndicator
-{
- MGLLogDebug(@"Setting showsUserHeadingIndicator: %@", MGLStringFromBOOL(showsUserHeadingIndicator));
- _showsUserHeadingIndicator = showsUserHeadingIndicator;
-
- if (_showsUserHeadingIndicator)
- {
- self.showsUserLocation = YES;
- }
- [self validateUserHeadingUpdating];
-}
-
-- (void)validateUserHeadingUpdating
-{
- BOOL canShowPermanentHeadingIndicator = self.showsUserHeadingIndicator && self.userTrackingMode != MGLUserTrackingModeFollowWithCourse;
-
- if (canShowPermanentHeadingIndicator || self.userTrackingMode == MGLUserTrackingModeFollowWithHeading)
- {
- [self updateHeadingForDeviceOrientation];
- [self.locationManager startUpdatingHeading];
- }
- else
- {
- [self.locationManager stopUpdatingHeading];
- }
-}
-
-- (void)locationManager:(id<MGLLocationManager>)manager didUpdateLocations:(NSArray *)locations
-{
- [self locationManager:manager didUpdateLocations:locations animated:YES completionHandler:nil];
-}
-
-- (void)locationManager:(__unused id<MGLLocationManager>)manager didUpdateLocations:(NSArray *)locations animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- CLLocation *oldLocation = self.userLocation.location;
- CLLocation *newLocation = locations.lastObject;
- _distanceFromOldUserLocation = [newLocation distanceFromLocation:oldLocation];
-
- if ( ! _showsUserLocation || ! newLocation || ! CLLocationCoordinate2DIsValid(newLocation.coordinate)) return;
-
- if (! oldLocation || ! CLLocationCoordinate2DIsValid(oldLocation.coordinate) || [newLocation distanceFromLocation:oldLocation]
- || oldLocation.course != newLocation.course)
- {
- if ( ! oldLocation || ! CLLocationCoordinate2DIsValid(oldLocation.coordinate) || self.userTrackingState != MGLUserTrackingStateBegan)
- {
- self.userLocation.location = newLocation;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapView:didUpdateUserLocation:)])
- {
- [self.delegate mapView:self didUpdateUserLocation:self.userLocation];
- }
- }
-
- [self didUpdateLocationWithUserTrackingAnimated:animated completionHandler:completion];
-
- NSTimeInterval duration = MGLAnimationDuration;
- if (oldLocation && ! CGPointEqualToPoint(self.userLocationAnnotationView.center, CGPointZero))
- {
- duration = MIN([newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp], MGLUserLocationAnimationDuration);
- }
- [self updateUserLocationAnnotationViewAnimatedWithDuration:duration];
-
- if (self.userTrackingMode == MGLUserTrackingModeNone &&
- self.userLocationAnnotationView.accessibilityElementIsFocused &&
- [UIApplication sharedApplication].applicationState == UIApplicationStateActive)
- {
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self.userLocationAnnotationView);
- }
-}
-
-- (void)didUpdateLocationWithUserTrackingAnimated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- CLLocation *location = self.userLocation.location;
- if ( ! _showsUserLocation || ! location
- || ! CLLocationCoordinate2DIsValid(location.coordinate)
- || self.userTrackingMode == MGLUserTrackingModeNone)
- {
- if (completion)
- {
- completion();
- }
- return;
- }
-
- // If the user location annotation is already where it’s supposed to be,
- // don’t change the viewport.
- CGPoint correctPoint = self.userLocationAnnotationViewCenter;
- CGPoint currentPoint = [self convertCoordinate:self.userLocation.coordinate toPointToView:self];
- if (std::abs(currentPoint.x - correctPoint.x) <= 1.0 && std::abs(currentPoint.y - correctPoint.y) <= 1.0
- && self.userTrackingMode != MGLUserTrackingModeFollowWithCourse)
- {
- if (completion)
- {
- completion();
- }
- return;
- }
-
- if (self.userTrackingMode == MGLUserTrackingModeFollowWithCourse
- && CLLocationCoordinate2DIsValid(self.targetCoordinate))
- {
- if (self.userTrackingState != MGLUserTrackingStateBegan)
- {
- // Keep both the user and the destination in view.
- [self didUpdateLocationWithTargetAnimated:animated completionHandler:completion];
- }
- }
- else if (self.userTrackingState == MGLUserTrackingStatePossible)
- {
- // The first location update is often a great distance away from the
- // current viewport, so fly there to provide additional context.
- [self didUpdateLocationSignificantlyAnimated:animated completionHandler:completion];
- }
- else if (self.userTrackingState == MGLUserTrackingStateChanged)
- {
- // Subsequent updates get a more subtle animation.
- [self didUpdateLocationIncrementallyAnimated:animated completionHandler:completion];
- }
- [self unrotateIfNeededAnimated:YES];
-}
-
-/// Changes the viewport based on an incremental location update.
-- (void)didUpdateLocationIncrementallyAnimated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- [self _setCenterCoordinate:self.userLocation.location.coordinate
- edgePadding:self.edgePaddingForFollowing
- zoomLevel:self.zoomLevel
- direction:self.directionByFollowingWithCourse
- duration:animated ? MGLUserLocationAnimationDuration : 0
- animationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]
- completionHandler:completion];
-}
-
-/// Changes the viewport based on a significant location update, such as the
-/// first location update.
-- (void)didUpdateLocationSignificantlyAnimated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
-
- if (_distanceFromOldUserLocation >= MGLDistanceThresholdForCameraPause) {
- self.userTrackingState = MGLUserTrackingStateBeginSignificantTransition;
- } else {
- self.userTrackingState = MGLUserTrackingStateBegan;
- }
-
- MGLMapCamera *camera = self.camera;
- camera.centerCoordinate = self.userLocation.location.coordinate;
- camera.heading = self.directionByFollowingWithCourse;
- if (self.zoomLevel < MGLMinimumZoomLevelForUserTracking)
- {
- camera.altitude = MGLAltitudeForZoomLevel(MGLDefaultZoomLevelForUserTracking,
- camera.pitch,
- camera.centerCoordinate.latitude,
- self.frame.size);
- }
-
- __weak MGLMapView *weakSelf = self;
- [self _flyToCamera:camera
- edgePadding:self.edgePaddingForFollowing
- withDuration:animated ? -1 : 0
- peakAltitude:-1
- completionHandler:^{
- MGLMapView *strongSelf = weakSelf;
- if (strongSelf.userTrackingState == MGLUserTrackingStateBegan ||
- strongSelf.userTrackingState == MGLDistanceThresholdForCameraPause)
- {
- strongSelf.userTrackingState = MGLUserTrackingStateChanged;
- }
- if (completion)
- {
- completion();
- }
- }];
-}
-
-/// Changes the viewport based on a location update in the presence of a target
-/// coordinate that must also be displayed on the map concurrently.
-- (void)didUpdateLocationWithTargetAnimated:(BOOL)animated completionHandler:(nullable void (^)(void))completion
-{
- BOOL firstUpdate = self.userTrackingState == MGLUserTrackingStatePossible;
- void (^animationCompletion)(void);
- if (animated && firstUpdate)
- {
- self.userTrackingState = MGLUserTrackingStateBegan;
- __weak MGLMapView *weakSelf = self;
- animationCompletion = ^{
- MGLMapView *strongSelf = weakSelf;
- if (strongSelf.userTrackingState == MGLUserTrackingStateBegan)
- {
- strongSelf.userTrackingState = MGLUserTrackingStateChanged;
- }
- if (completion)
- {
- completion();
- }
- };
- }
-
- CLLocationCoordinate2D foci[] = {
- self.userLocation.location.coordinate,
- self.targetCoordinate,
- };
- UIEdgeInsets inset = self.edgePaddingForFollowingWithCourse;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- if (self.userLocationVerticalAlignment == MGLAnnotationVerticalAlignmentCenter)
- {
- inset.bottom = CGRectGetMaxY(self.bounds) - CGRectGetMidY(self.contentFrame);
- }
-#pragma clang diagnostic pop
-
- [self _setVisibleCoordinates:foci
- count:sizeof(foci) / sizeof(foci[0])
- edgePadding:inset
- direction:self.directionByFollowingWithCourse
- duration:animated ? MGLUserLocationAnimationDuration : 0
- animationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]
- completionHandler:animationCompletion];
-}
-
-/// Returns the edge padding to apply when moving the map to a tracked location.
-- (UIEdgeInsets)edgePaddingForFollowing
-{
- // Center on user location unless we're already centered there (or very close).
- CGPoint correctPoint = self.userLocationAnnotationViewCenter;
-
- // Shift the entire frame upward or downward to accommodate a shifted user
- // location annotation view.
- CGRect bounds = self.bounds;
- CGRect boundsAroundCorrectPoint = CGRectOffset(bounds,
- correctPoint.x - CGRectGetMidX(bounds),
- correctPoint.y - CGRectGetMidY(bounds));
- return UIEdgeInsetsMake(CGRectGetMinY(boundsAroundCorrectPoint) - CGRectGetMinY(bounds),
- CGRectGetMaxX(boundsAroundCorrectPoint) - CGRectGetMaxX(bounds),
- CGRectGetMaxY(bounds) - CGRectGetMaxY(boundsAroundCorrectPoint),
- CGRectGetMaxX(bounds) - CGRectGetMaxX(boundsAroundCorrectPoint));
-}
-
-/// Returns the edge padding to apply during bifocal course tracking.
-- (UIEdgeInsets)edgePaddingForFollowingWithCourse
-{
- UIEdgeInsets inset = MGLUserLocationAnnotationViewInset;
- inset.top += CGRectGetHeight(self.userLocationAnnotationView.frame);
- inset.bottom += CGRectGetHeight(self.userLocationAnnotationView.frame);
- return inset;
-}
-
-/// Returns the direction the map should be turned to due to course tracking.
-- (CLLocationDirection)directionByFollowingWithCourse
-{
- CLLocationDirection direction = -1;
- if (self.userTrackingMode == MGLUserTrackingModeFollowWithCourse)
- {
- if (CLLocationCoordinate2DIsValid(self.targetCoordinate))
- {
- mbgl::LatLng userLatLng = MGLLatLngFromLocationCoordinate2D(self.userLocation.coordinate);
- mbgl::LatLng targetLatLng = MGLLatLngFromLocationCoordinate2D(self.targetCoordinate);
- mbgl::ProjectedMeters userMeters = mbgl::Projection::projectedMetersForLatLng(userLatLng);
- mbgl::ProjectedMeters targetMeters = mbgl::Projection::projectedMetersForLatLng(targetLatLng);
- double angle = atan2(targetMeters.easting() - userMeters.easting(),
- targetMeters.northing() - userMeters.northing());
- direction = mbgl::util::wrap(MGLDegreesFromRadians(angle), 0., 360.);
- }
- else
- {
- direction = self.userLocation.location.course;
- }
-
- if (direction >= 0)
- {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- if (self.userLocationVerticalAlignment == MGLAnnotationVerticalAlignmentTop)
- {
- direction += 180;
- }
-#pragma clang diagnostic pop
- }
- }
- return direction;
-}
-
-- (BOOL)locationManagerShouldDisplayHeadingCalibration:(id<MGLLocationManager>)manager
-{
- if (self.displayHeadingCalibration) [self performSelector:@selector(dismissHeadingCalibrationDisplay:)
- withObject:manager
- afterDelay:10.0];
-
- return self.displayHeadingCalibration;
-}
-
-- (void)dismissHeadingCalibrationDisplay:(id<MGLLocationManager>)manager
-{
- [manager dismissHeadingCalibrationDisplay];
-}
-
-- (void)locationManager:(__unused id<MGLLocationManager>)manager didUpdateHeading:(CLHeading *)newHeading
-{
- if ( ! _showsUserLocation || self.pan.state == UIGestureRecognizerStateBegan || newHeading.headingAccuracy < 0) return;
-
- self.userLocation.heading = newHeading;
-
- if (self.showsUserHeadingIndicator || self.userTrackingMode == MGLUserTrackingModeFollowWithHeading)
- {
- [self updateUserLocationAnnotationView];
- }
-
- if ([self.delegate respondsToSelector:@selector(mapView:didUpdateUserLocation:)])
- {
- [self.delegate mapView:self didUpdateUserLocation:self.userLocation];
-
- if ( ! _showsUserLocation) return;
- }
-
- CLLocationDirection headingDirection = (newHeading.trueHeading >= 0 ? newHeading.trueHeading : newHeading.magneticHeading);
-
- if (headingDirection >= 0 && self.userTrackingMode == MGLUserTrackingModeFollowWithHeading
- && self.userTrackingState != MGLUserTrackingStateBegan)
- {
- [self _setDirection:headingDirection animated:YES];
- }
-}
-
-- (void)locationManager:(__unused id<MGLLocationManager>)manager didFailWithError:(NSError *)error
-{
- if ([error code] == kCLErrorDenied)
- {
- self.userTrackingMode = MGLUserTrackingModeNone;
- self.showsUserLocation = NO;
-
- if ([self.delegate respondsToSelector:@selector(mapView:didFailToLocateUserWithError:)])
- {
- [self.delegate mapView:self didFailToLocateUserWithError:error];
- }
- }
-}
-
-- (void)updateHeadingForDeviceOrientation
-{
- if (self.locationManager)
- {
- // note that right/left device and interface orientations are opposites (see UIApplication.h)
- //
- CLDeviceOrientation orientation;
- switch ([[UIApplication sharedApplication] statusBarOrientation])
- {
- case (UIInterfaceOrientationLandscapeLeft):
- {
- orientation = CLDeviceOrientationLandscapeRight;
- break;
- }
- case (UIInterfaceOrientationLandscapeRight):
- {
- orientation = CLDeviceOrientationLandscapeLeft;
- break;
- }
- case (UIInterfaceOrientationPortraitUpsideDown):
- {
- orientation = CLDeviceOrientationPortraitUpsideDown;
- break;
- }
- case (UIInterfaceOrientationPortrait):
- default:
- {
- orientation = CLDeviceOrientationPortrait;
- break;
- }
- }
-
- // Setting the location manager's heading orientation causes it to send
- // a heading event, which in turn makes us redraw, which kicks off a
- // loop... so don't do that. rdar://34059173
- if (self.locationManager.headingOrientation != orientation)
- {
- self.locationManager.headingOrientation = orientation;
- }
- }
-}
-
-#pragma mark Data
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(CGPoint)point
-{
- MGLLogDebug(@"Querying visibleFeaturesAtPoint: %@", NSStringFromCGPoint(point));
- return [self visibleFeaturesAtPoint:point inStyleLayersWithIdentifiers:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(CGPoint)point inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers {
- MGLLogDebug(@"Querying visibleFeaturesAtPoint: %@ inStyleLayersWithIdentifiers: %@", NSStringFromCGPoint(point), styleLayerIdentifiers);
- return [self visibleFeaturesAtPoint:point inStyleLayersWithIdentifiers:styleLayerIdentifiers predicate:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(CGPoint)point inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers predicate:(NSPredicate *)predicate
-{
- MGLLogDebug(@"Querying visibleFeaturesAtPoint: %@ inStyleLayersWithIdentifiers: %@ predicate: %@", NSStringFromCGPoint(point), styleLayerIdentifiers, predicate);
- mbgl::ScreenCoordinate screenCoordinate = { point.x, point.y };
-
- mbgl::optional<std::vector<std::string>> optionalLayerIDs;
- if (styleLayerIdentifiers)
- {
- __block std::vector<std::string> layerIDs;
- layerIDs.reserve(styleLayerIdentifiers.count);
- [styleLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop)
- {
- layerIDs.push_back(identifier.UTF8String);
- }];
- optionalLayerIDs = layerIDs;
- }
-
- mbgl::optional<mbgl::style::Filter> optionalFilter;
- if (predicate) {
- optionalFilter = predicate.mgl_filter;
- }
-
- std::vector<mbgl::Feature> features = _rendererFrontend->getRenderer()->queryRenderedFeatures(screenCoordinate, { optionalLayerIDs, optionalFilter });
- return MGLFeaturesFromMBGLFeatures(features);
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(CGRect)rect {
- MGLLogDebug(@"Querying visibleFeaturesInRect: %@", NSStringFromCGRect(rect));
- return [self visibleFeaturesInRect:rect inStyleLayersWithIdentifiers:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(CGRect)rect inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers {
- MGLLogDebug(@"Querying visibleFeaturesInRect: %@ inStyleLayersWithIdentifiers: %@", NSStringFromCGRect(rect), styleLayerIdentifiers);
- return [self visibleFeaturesInRect:rect inStyleLayersWithIdentifiers:styleLayerIdentifiers predicate:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(CGRect)rect inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers predicate:(NSPredicate *)predicate {
- MGLLogDebug(@"Querying visibleFeaturesInRect: %@ inStyleLayersWithIdentifiers: %@ predicate: %@", NSStringFromCGRect(rect), styleLayerIdentifiers, predicate);
- mbgl::ScreenBox screenBox = {
- { CGRectGetMinX(rect), CGRectGetMinY(rect) },
- { CGRectGetMaxX(rect), CGRectGetMaxY(rect) },
- };
-
- mbgl::optional<std::vector<std::string>> optionalLayerIDs;
- if (styleLayerIdentifiers) {
- __block std::vector<std::string> layerIDs;
- layerIDs.reserve(styleLayerIdentifiers.count);
- [styleLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop) {
- layerIDs.push_back(identifier.UTF8String);
- }];
- optionalLayerIDs = layerIDs;
- }
-
- mbgl::optional<mbgl::style::Filter> optionalFilter;
- if (predicate) {
- optionalFilter = predicate.mgl_filter;
- }
-
- std::vector<mbgl::Feature> features = _rendererFrontend->getRenderer()->queryRenderedFeatures(screenBox, { optionalLayerIDs, optionalFilter });
- return MGLFeaturesFromMBGLFeatures(features);
-}
-
-#pragma mark - Utility -
-
-- (void)animateWithDelay:(NSTimeInterval)delay animations:(void (^)(void))animations
-{
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), animations);
-}
-
-- (CGFloat)currentMinimumZoom
-{
- return fmaxf(*self.mbglMap.getBounds().minZoom, MGLMinimumZoom);
-}
-
-- (BOOL)isRotationAllowed
-{
- return (self.zoomLevel >= self.currentMinimumZoom);
-}
-
-- (void)unrotateIfNeededForGesture
-{
- // Avoid contention with in-progress gestures.
- UIGestureRecognizerState state = self.pinch.state;
- if (self.direction != 0
- && state != UIGestureRecognizerStateBegan
- && state != UIGestureRecognizerStateChanged)
- {
- [self unrotateIfNeededAnimated:YES];
-
- // Snap to north.
- if ((self.direction < MGLToleranceForSnappingToNorth
- || self.direction > 360 - MGLToleranceForSnappingToNorth)
- && self.userTrackingMode != MGLUserTrackingModeFollowWithHeading
- && self.userTrackingMode != MGLUserTrackingModeFollowWithCourse)
- {
- [self resetNorthAnimated:YES];
- }
- }
-}
-
-/// Rotate back to true north if the map view is zoomed too far out.
-- (void)unrotateIfNeededAnimated:(BOOL)animated
-{
- if (self.direction != 0 && ! self.isRotationAllowed
- && self.userTrackingState != MGLUserTrackingStateBegan)
- {
- if (animated)
- {
- self.userInteractionEnabled = NO;
-
- __weak MGLMapView *weakSelf = self;
-
- [self animateWithDelay:0.1 animations:^
- {
- [weakSelf resetNorthAnimated:YES];
-
- [self animateWithDelay:MGLAnimationDuration animations:^
- {
- weakSelf.userInteractionEnabled = YES;
- }];
-
- }];
- }
- else
- {
- [self resetNorthAnimated:NO];
- }
- }
-}
-
-- (void)cameraWillChangeAnimated:(BOOL)animated {
- if (!_mbglMap)
- {
- return;
- }
-
- if ( ! _userLocationAnnotationIsSelected
- || self.userTrackingMode == MGLUserTrackingModeNone
- || self.userTrackingState != MGLUserTrackingStateChanged)
- {
- UIView<MGLCalloutView> *calloutView = self.calloutViewForSelectedAnnotation;
- BOOL dismissesAutomatically = (calloutView
- && [calloutView respondsToSelector:@selector(dismissesAutomatically)]
- && calloutView.dismissesAutomatically);
- // dismissesAutomatically is an optional property and we want to dismiss
- // the callout view if it's unimplemented.
- if (dismissesAutomatically || (calloutView && ![calloutView respondsToSelector:@selector(dismissesAutomatically)]))
- {
- [self deselectAnnotation:self.selectedAnnotation animated:NO];
- }
- }
-
- if ( ! [self isSuppressingChangeDelimiters] )
- {
- if ([self.delegate respondsToSelector:@selector(mapView:regionWillChangeWithReason:animated:)])
- {
- [self.delegate mapView:self regionWillChangeWithReason:self.cameraChangeReasonBitmask animated:animated];
- }
- else if ([self.delegate respondsToSelector:@selector(mapView:regionWillChangeAnimated:)])
- {
- [self.delegate mapView:self regionWillChangeAnimated:animated];
- }
- }
-}
-
-- (void)cameraIsChanging {
- if (!_mbglMap)
- {
- return;
- }
-
- [self updateCompass];
- [self updateScaleBar];
-
- if ([self.delegate respondsToSelector:@selector(mapView:regionIsChangingWithReason:)])
- {
- [self.delegate mapView:self regionIsChangingWithReason:self.cameraChangeReasonBitmask];
- }
- else if ([self.delegate respondsToSelector:@selector(mapViewRegionIsChanging:)])
- {
- [self.delegate mapViewRegionIsChanging:self];
- }
-}
-
-- (void)cameraDidChangeAnimated:(BOOL)animated {
- if (!_mbglMap)
- {
- return;
- }
-
- [self updateCompass];
- [self updateScaleBar];
-
- if ( ! [self isSuppressingChangeDelimiters])
- {
- BOOL respondsToSelector = [self.delegate respondsToSelector:@selector(mapView:regionDidChangeAnimated:)];
- BOOL respondsToSelectorWithReason = [self.delegate respondsToSelector:@selector(mapView:regionDidChangeWithReason:animated:)];
-
- if ((respondsToSelector || respondsToSelectorWithReason) &&
- ([UIApplication sharedApplication].applicationState == UIApplicationStateActive))
- {
- _featureAccessibilityElements = nil;
- _visiblePlaceFeatures = nil;
- _visibleRoadFeatures = nil;
- if (_accessibilityValueAnnouncementIsPending) {
- _accessibilityValueAnnouncementIsPending = NO;
- [self performSelector:@selector(announceAccessibilityValue) withObject:nil afterDelay:0.1];
- } else {
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
- }
- }
-
- if (respondsToSelectorWithReason)
- {
- [self.delegate mapView:self regionDidChangeWithReason:self.cameraChangeReasonBitmask animated:animated];
- }
- else if (respondsToSelector)
- {
- [self.delegate mapView:self regionDidChangeAnimated:animated];
- }
-
- [self resetCameraChangeReason];
- }
-}
-
-- (void)announceAccessibilityValue
-{
- UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, self.accessibilityValue);
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
-}
-
-- (void)mapViewWillStartLoadingMap {
- if (!_mbglMap)
- {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewWillStartLoadingMap:)])
- {
- [self.delegate mapViewWillStartLoadingMap:self];
- }
-}
-
-- (void)mapViewDidFinishLoadingMap {
- if (!_mbglMap)
- {
- return;
- }
-
- [self.style willChangeValueForKey:@"sources"];
- [self.style didChangeValueForKey:@"sources"];
- [self.style willChangeValueForKey:@"layers"];
- [self.style didChangeValueForKey:@"layers"];
- if ([self.delegate respondsToSelector:@selector(mapViewDidFinishLoadingMap:)])
- {
- [self.delegate mapViewDidFinishLoadingMap:self];
- }
-}
-
-- (void)mapViewDidFailLoadingMapWithError:(NSError *)error {
- if (!_mbglMap)
- {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidFailLoadingMap:withError:)])
- {
- [self.delegate mapViewDidFailLoadingMap:self withError:error];
- }
-}
-
-- (void)mapViewWillStartRenderingFrame {
- if (!_mbglMap)
- {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewWillStartRenderingFrame:)])
- {
- [self.delegate mapViewWillStartRenderingFrame:self];
- }
-}
-
-- (void)mapViewDidFinishRenderingFrameFullyRendered:(BOOL)fullyRendered {
- if (!_mbglMap)
- {
- return;
- }
-
- if (_isChangingAnnotationLayers)
- {
- _isChangingAnnotationLayers = NO;
- [self.style didChangeValueForKey:@"layers"];
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingFrame:fullyRendered:)])
- {
- [self.delegate mapViewDidFinishRenderingFrame:self fullyRendered:fullyRendered];
- }
-}
-
-- (void)mapViewWillStartRenderingMap {
- if (!_mbglMap)
- {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewWillStartRenderingMap:)])
- {
- [self.delegate mapViewWillStartRenderingMap:self];
- }
-}
-
-- (void)mapViewDidFinishRenderingMapFullyRendered:(BOOL)fullyRendered {
- if (!_mbglMap)
- {
- return;
- }
-
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingMap:fullyRendered:)])
- {
- [self.delegate mapViewDidFinishRenderingMap:self fullyRendered:fullyRendered];
- }
-}
-
-- (void)mapViewDidBecomeIdle {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidBecomeIdle:)]) {
- [self.delegate mapViewDidBecomeIdle:self];
- }
-}
-
-- (void)mapViewDidFinishLoadingStyle {
- if (!_mbglMap)
- {
- return;
- }
-
- self.style = [[MGLStyle alloc] initWithRawStyle:&self.mbglMap.getStyle() mapView:self];
- if ([self.delegate respondsToSelector:@selector(mapView:didFinishLoadingStyle:)])
- {
- [self.delegate mapView:self didFinishLoadingStyle:self.style];
- }
-}
-
-- (void)sourceDidChange:(MGLSource *)source {
- // no-op: we only show attribution after tapping the info button, so there's no
- // interactive update needed.
-}
-
-- (void)didFailToLoadImage:(NSString *)imageName {
-
- if ([self.delegate respondsToSelector:@selector(mapView:didFailToLoadImage:)]) {
- MGLImage *imageToLoad = [self.delegate mapView:self didFailToLoadImage:imageName];
- if (imageToLoad) {
- auto image = [imageToLoad mgl_styleImageWithIdentifier:imageName];
- _mbglMap->getStyle().addImage(std::move(image));
- }
- }
-}
-
-- (BOOL)shouldRemoveStyleImage:(NSString *)imageName {
- if ([self.delegate respondsToSelector:@selector(mapView:shouldRemoveStyleImage:)]) {
- return [self.delegate mapView:self shouldRemoveStyleImage:imageName];
- }
-
- return YES;
-}
-
-- (void)updateUserLocationAnnotationView
-{
- [self updateUserLocationAnnotationViewAnimatedWithDuration:0];
-}
-
-- (void)updateAnnotationViews
-{
- BOOL delegateImplementsViewForAnnotation = [self.delegate respondsToSelector:@selector(mapView:viewForAnnotation:)];
-
- if (!delegateImplementsViewForAnnotation)
- {
- return;
- }
-
- // If the map is pitched consider the viewport to be exactly the same as the bounds.
- // Otherwise, add a small buffer.
- CGFloat largestWidth = MAX(_largestAnnotationViewSize.width, CGRectGetWidth(self.frame));
- CGFloat largestHeight = MAX(_largestAnnotationViewSize.height, CGRectGetHeight(self.frame));
- CGFloat widthAdjustment = self.camera.pitch > 0.0 ? 0.0 : -largestWidth * 2.0;
- CGFloat heightAdjustment = self.camera.pitch > 0.0 ? 0.0 : -largestHeight * 2.0;
- CGRect viewPort = CGRectInset(self.bounds, widthAdjustment, heightAdjustment);
-
- NSArray *visibleAnnotations = [self visibleAnnotationsInRect:viewPort];
- NSMutableArray *offscreenAnnotations = [self.annotations mutableCopy];
- [offscreenAnnotations removeObjectsInArray:visibleAnnotations];
-
- // Update the center of visible annotation views
- for (id<MGLAnnotation> annotation in visibleAnnotations)
- {
- // Defer to the shape/polygon styling delegate methods
- if ([annotation isKindOfClass:[MGLMultiPoint class]])
- {
- continue;
- }
-
- // Get the annotation tag then use it to get the context.
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- MGLAssert(annotationTag != MGLAnnotationTagNotFound, @"-visibleAnnotationsInRect: returned unrecognized annotation");
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
-
- MGLAnnotationView *annotationView = annotationContext.annotationView;
- if (!annotationView)
- {
- // This will dequeue views if the delegate implements the dequeue call
- annotationView = [self annotationViewForAnnotation:annotationContext.annotation];
-
- if (annotationView)
- {
- annotationView.mapView = self;
- annotationContext.annotationView = annotationView;
-
- // New annotation (created because there is nothing to dequeue) may not have been added to the
- // container view yet. Add them here.
- if (!annotationView.superview) {
- [self.annotationContainerView insertSubview:annotationView atIndex:0];
- }
- }
- }
-
- if (annotationView)
- {
- annotationView.center = MGLPointRounded([self convertCoordinate:annotationContext.annotation.coordinate toPointToView:self]);
- }
- }
-
- MGLCoordinateBounds coordinateBounds = [self convertRect:viewPort toCoordinateBoundsFromView:self];
-
- // Enqueue (and move if required) offscreen annotation views
- for (id<MGLAnnotation> annotation in offscreenAnnotations)
- {
- // Defer to the shape/polygon styling delegate methods
- if ([annotation isKindOfClass:[MGLMultiPoint class]])
- {
- continue;
- }
-
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- MGLAssert(annotationTag != MGLAnnotationTagNotFound, @"-visibleAnnotationsInRect: returned unrecognized annotation");
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- UIView *annotationView = annotationContext.annotationView;
-
- if (annotationView)
- {
- CLLocationCoordinate2D coordinate = annotation.coordinate;
- // Every so often (1 out of 1000 frames?) the mbgl query mechanism fails. This logic spot checks the
- // offscreenAnnotations values -- if they are actually still on screen then the view center is
- // moved and the enqueue operation is avoided. This allows us to keep the performance benefit of
- // using the mbgl query result. It also forces views that have just gone offscreen to be cleared
- // fully from view.
- if (MGLCoordinateInCoordinateBounds(coordinate, coordinateBounds))
- {
- annotationView.center = [self convertCoordinate:annotationContext.annotation.coordinate toPointToView:self];
- }
- else
- {
- if (annotationView.layer.animationKeys.count > 0) {
- continue;
- }
-
- // Move the annotation view far out of view to the left
- CGPoint adjustedCenter = annotationView.center;
- adjustedCenter.x = -CGRectGetWidth(self.frame) * 10.0;
- annotationView.center = adjustedCenter;
-
- [self enqueueAnnotationViewForAnnotationContext:annotationContext];
- }
- }
- }
-}
-
-- (BOOL)hasAnAnchoredAnnotationCalloutView
-{
- // TODO: Remove duplicate code.
- UIView <MGLCalloutView> *calloutView = self.calloutViewForSelectedAnnotation;
- id <MGLAnnotation> annotation = calloutView.representedObject;
-
- BOOL isAnchoredToAnnotation = (calloutView
- && annotation
- && [calloutView respondsToSelector:@selector(isAnchoredToAnnotation)]
- && calloutView.isAnchoredToAnnotation);
- return isAnchoredToAnnotation;
-}
-
-- (void)updateCalloutView
-{
- UIView <MGLCalloutView> *calloutView = self.calloutViewForSelectedAnnotation;
- id <MGLAnnotation> annotation = calloutView.representedObject;
-
- BOOL isAnchoredToAnnotation = (calloutView
- && annotation
- && [calloutView respondsToSelector:@selector(isAnchoredToAnnotation)]
- && calloutView.isAnchoredToAnnotation);
-
- if (isAnchoredToAnnotation)
- {
- MGLAnnotationTag tag = [self annotationTagForAnnotation:annotation];
- MGLAnnotationView *annotationView = nil;
-
- if (tag != MGLAnnotationTagNotFound) {
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(tag);
- annotationView = annotationContext.annotationView;
- } else if (annotation == self.userLocation) {
- annotationView = self.userLocationAnnotationView;
- }
-
- CGRect positioningRect = annotationView ?
- annotationView.frame :
- [self positioningRectForCalloutForAnnotationWithTag:tag];
-
- MGLAssert( ! CGRectIsNull(positioningRect), @"Positioning rect should not be CGRectNull by this point");
-
- CGPoint centerPoint = CGPointMake(CGRectGetMidX(positioningRect), CGRectGetMinY(positioningRect));
-
- if ( ! CGPointEqualToPoint(calloutView.center, centerPoint)) {
- calloutView.center = centerPoint;
- }
- }
-}
-
-- (void)updateAttributionAlertView {
- if (self.attributionController.presentingViewController) {
- self.attributionController.popoverPresentationController.sourceRect = self.attributionButton.frame;
- switch (self.attributionButtonPosition) {
- case MGLOrnamentPositionTopLeft:
- case MGLOrnamentPositionTopRight:
- [self.attributionController.popoverPresentationController setPermittedArrowDirections:UIMenuControllerArrowUp];
- break;
- case MGLOrnamentPositionBottomLeft:
- case MGLOrnamentPositionBottomRight:
- [self.attributionController.popoverPresentationController setPermittedArrowDirections:UIMenuControllerArrowDown];
- break;
- }
- [self.attributionController.popoverPresentationController.containerView setNeedsLayout];
- }
-}
-
-- (void)enqueueAnnotationViewForAnnotationContext:(MGLAnnotationContext &)annotationContext
-{
- MGLAnnotationView *annotationView = annotationContext.annotationView;
-
- if (!annotationView) return;
-
- if (annotationContext.viewReuseIdentifier)
- {
- annotationView.annotation = nil;
- NSMutableArray *annotationViewReuseQueue = [self annotationViewReuseQueueForIdentifier:annotationContext.viewReuseIdentifier];
- if (![annotationViewReuseQueue containsObject:annotationView])
- {
- [annotationViewReuseQueue addObject:annotationView];
- annotationContext.annotationView = nil;
- }
- }
-}
-
-- (void)updateUserLocationAnnotationViewAnimatedWithDuration:(NSTimeInterval)duration
-{
- MGLUserLocationAnnotationView *annotationView = self.userLocationAnnotationView;
- if ( ! CLLocationCoordinate2DIsValid(self.userLocation.coordinate)) {
- annotationView.hidden = YES;
- return;
- }
-
- CGPoint userPoint;
- if (self.userTrackingMode != MGLUserTrackingModeNone
- && self.userTrackingState == MGLUserTrackingStateChanged)
- {
- userPoint = self.userLocationAnnotationViewCenter;
- }
- else
- {
- userPoint = MGLPointRounded([self convertCoordinate:self.userLocation.coordinate toPointToView:self]);
- }
-
- if ( ! annotationView.superview)
- {
- [_mbglView->getView() addSubview:annotationView];
- // Prevents the view from sliding in from the origin.
- annotationView.center = userPoint;
- }
-
- if (CGRectContainsPoint(CGRectInset(self.bounds, -MGLAnnotationUpdateViewportOutset.width,
- -MGLAnnotationUpdateViewportOutset.height), userPoint))
- {
- // Smoothly move the user location annotation view and callout view to
- // the new location.
-
- dispatch_block_t animation = ^{
- if (self.selectedAnnotation == self.userLocation)
- {
- UIView <MGLCalloutView> *calloutView = self.calloutViewForSelectedAnnotation;
- calloutView.frame = CGRectOffset(calloutView.frame,
- userPoint.x - annotationView.center.x,
- userPoint.y - annotationView.center.y);
- }
- annotationView.center = userPoint;
- };
-
- if (duration > 0) {
- [UIView animateWithDuration:duration
- delay:0
- options:(UIViewAnimationOptionCurveLinear |
- UIViewAnimationOptionAllowUserInteraction |
- UIViewAnimationOptionBeginFromCurrentState)
- animations:animation
- completion:NULL];
- }
- else {
- animation();
- }
- _userLocationAnimationCompletionDate = [NSDate dateWithTimeIntervalSinceNow:duration];
-
- annotationView.hidden = NO;
- [annotationView update];
- }
- else
- {
- // User has moved far enough outside of the viewport that showing it or
- // its callout would be useless.
- annotationView.hidden = YES;
-
- if (_userLocationAnnotationIsSelected)
- {
- [self deselectAnnotation:self.selectedAnnotation animated:YES];
- }
- }
-}
-
-/// Intended center point of the user location annotation view with respect to
-/// the overall map view (but respecting the content inset).
-- (CGPoint)userLocationAnnotationViewCenter
-{
- if ([self.delegate respondsToSelector:@selector(mapViewUserLocationAnchorPoint:)])
- {
- CGPoint anchorPoint = [self.delegate mapViewUserLocationAnchorPoint:self];
- return CGPointMake(anchorPoint.x + self.contentInset.left, anchorPoint.y + self.contentInset.top);
- }
-
- CGRect contentFrame = UIEdgeInsetsInsetRect(self.contentFrame, self.edgePaddingForFollowingWithCourse);
-
- if (CGRectIsEmpty(contentFrame))
- {
- contentFrame = self.contentFrame;
- }
-
- CGPoint center = CGPointMake(CGRectGetMidX(contentFrame), CGRectGetMidY(contentFrame));
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- switch (self.userLocationVerticalAlignment) {
- case MGLAnnotationVerticalAlignmentCenter:
- break;
- case MGLAnnotationVerticalAlignmentTop:
- center.y = CGRectGetMinY(contentFrame);
- break;
- case MGLAnnotationVerticalAlignmentBottom:
- center.y = CGRectGetMaxY(contentFrame);
- break;
- }
-#pragma clang diagnostic pop
-
- return center;
-}
-
-- (void)updateCompass
-{
- [self.compassView updateCompass];
-}
-
-- (void)updateScaleBar
-{
- // Use the `hidden` property (instead of `self.showsScale`) so that we don't
- // break developers who still rely on the <4.0.0 approach of directly
- // setting this property.
- if ( ! self.scaleBar.hidden)
- {
- [(MGLScaleBar *)self.scaleBar setMetersPerPoint:[self metersPerPointAtLatitude:self.centerCoordinate.latitude]];
- }
-}
-
-- (BOOL)isFullyLoaded
-{
- return self.mbglMap.isFullyLoaded();
-}
-
-- (void)prepareForInterfaceBuilder
-{
- [super prepareForInterfaceBuilder];
-
- self.layer.borderColor = [UIColor colorWithRed:59/255.
- green:178/255.
- blue:208/255.
- alpha:0.8].CGColor;
- self.layer.borderWidth = 4;
- self.layer.backgroundColor = [UIColor whiteColor].CGColor;
-
- UIView *diagnosticView = [[UIView alloc] init];
- diagnosticView.translatesAutoresizingMaskIntoConstraints = NO;
- [self addSubview:diagnosticView];
-
- // Headline
- UILabel *headlineLabel = [[UILabel alloc] init];
- headlineLabel.text = NSStringFromClass([self class]);
- headlineLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
- headlineLabel.textAlignment = NSTextAlignmentCenter;
- headlineLabel.numberOfLines = 1;
- headlineLabel.translatesAutoresizingMaskIntoConstraints = NO;
- [headlineLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
- forAxis:UILayoutConstraintAxisHorizontal];
- [diagnosticView addSubview:headlineLabel];
-
- // Explanation
- UILabel *explanationLabel = [[UILabel alloc] init];
- explanationLabel.text = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"DESIGNABLE", nil, nil, @"To display a Mapbox-hosted map here, set %@ to your access token in %@\n\nFor detailed instructions, see:", @"Instructions in Interface Builder designable; {key}, {plist file name}"), @"MGLMapboxAccessToken", @"Info.plist"];
- explanationLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
- explanationLabel.numberOfLines = 0;
- explanationLabel.translatesAutoresizingMaskIntoConstraints = NO;
- [explanationLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
- forAxis:UILayoutConstraintAxisHorizontal];
- [diagnosticView addSubview:explanationLabel];
-
- // Link
- UIButton *linkButton = [UIButton buttonWithType:UIButtonTypeSystem];
- [linkButton setTitle:NSLocalizedStringWithDefaultValue(@"FIRST_STEPS_URL", nil, nil, @"docs.mapbox.com/help/tutorials/first-steps-ios-sdk", @"Setup documentation URL display string; keep as short as possible") forState:UIControlStateNormal];
- linkButton.translatesAutoresizingMaskIntoConstraints = NO;
- linkButton.titleLabel.numberOfLines = 0;
- [linkButton setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
- forAxis:UILayoutConstraintAxisHorizontal];
- [diagnosticView addSubview:linkButton];
-
- // Constraints
- NSDictionary *views = @{
- @"container": diagnosticView,
- @"headline": headlineLabel,
- @"explanation": explanationLabel,
- @"link": linkButton,
- };
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:diagnosticView
- attribute:NSLayoutAttributeCenterYWithinMargins
- relatedBy:NSLayoutRelationEqual
- toItem:self
- attribute:NSLayoutAttributeCenterYWithinMargins
- multiplier:1
- constant:0]];
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:diagnosticView
- attribute:NSLayoutAttributeTopMargin
- relatedBy:NSLayoutRelationGreaterThanOrEqual
- toItem:self
- attribute:NSLayoutAttributeTopMargin
- multiplier:1
- constant:8]];
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:self
- attribute:NSLayoutAttributeBottomMargin
- relatedBy:NSLayoutRelationGreaterThanOrEqual
- toItem:diagnosticView
- attribute:NSLayoutAttributeBottomMargin
- multiplier:1
- constant:8]];
- [self addConstraints:
- [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[container(20@20)]-|"
- options:NSLayoutFormatAlignAllCenterY
- metrics:nil
- views:views]];
- [self addConstraints:
- [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[headline]-[explanation]-[link]|"
- options:0
- metrics:nil
- views:views]];
- [self addConstraints:
- [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[headline]|"
- options:0
- metrics:nil
- views:views]];
- [self addConstraints:
- [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[explanation]|"
- options:0
- metrics:nil
- views:views]];
- [self addConstraints:
- [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[link]|"
- options:0
- metrics:nil
- views:views]];
-}
-
-- (NSMutableArray<MGLAnnotationView *> *)annotationViewReuseQueueForIdentifier:(NSString *)identifier {
- if (!_annotationViewReuseQueueByIdentifier[identifier])
- {
- _annotationViewReuseQueueByIdentifier[identifier] = [NSMutableArray array];
- }
-
- return _annotationViewReuseQueueByIdentifier[identifier];
-}
-
-@end
-
-#pragma mark - IBAdditions methods
-
-@implementation MGLMapView (IBAdditions)
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingStyleURL__
-{
- return [NSSet setWithObject:@"styleURL"];
-}
-
-- (nullable NSString *)styleURL__
-{
- return self.styleURL.absoluteString;
-}
-
-- (void)setStyleURL__:(nullable NSString *)URLString
-{
- URLString = [URLString stringByTrimmingCharactersInSet:
- [NSCharacterSet whitespaceAndNewlineCharacterSet]];
- NSURL *url = URLString.length ? [NSURL URLWithString:URLString] : nil;
- if (URLString.length && !url)
- {
- [NSException raise:MGLInvalidStyleURLException
- format:@"“%@” is not a valid style URL.", URLString];
- }
- self.styleURL = url;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingLatitude
-{
- return [NSSet setWithObjects:@"centerCoordinate", @"camera", nil];
-}
-
-- (double)latitude
-{
- return self.centerCoordinate.latitude;
-}
-
-- (void)setLatitude:(double)latitude
-{
- if ( ! isnan(_pendingLongitude))
- {
- self.centerCoordinate = CLLocationCoordinate2DMake(latitude, _pendingLongitude);
- _pendingLatitude = NAN;
- _pendingLongitude = NAN;
- }
- else
- {
- // Not enough info to make a valid center coordinate yet. Stash this
- // latitude away until the longitude is set too.
- _pendingLatitude = latitude;
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingLongitude
-{
- return [NSSet setWithObjects:@"centerCoordinate", @"camera", nil];
-}
-
-- (double)longitude
-{
- return self.centerCoordinate.longitude;
-}
-
-- (void)setLongitude:(double)longitude
-{
- if ( ! isnan(_pendingLatitude))
- {
- self.centerCoordinate = CLLocationCoordinate2DMake(_pendingLatitude, longitude);
- _pendingLatitude = NAN;
- _pendingLongitude = NAN;
- }
- else
- {
- // Not enough info to make a valid center coordinate yet. Stash this
- // longitude away until the latitude is set too.
- _pendingLongitude = longitude;
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsZooming
-{
- return [NSSet setWithObject:@"zoomEnabled"];
-}
-
-- (BOOL)allowsZooming
-{
- return self.zoomEnabled;
-}
-
-- (void)setAllowsZooming:(BOOL)allowsZooming
-{
- MGLLogDebug(@"Setting allowsZooming: %@", MGLStringFromBOOL(allowsZooming));
- self.zoomEnabled = allowsZooming;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsScrolling
-{
- return [NSSet setWithObject:@"scrollEnabled"];
-}
-
-- (BOOL)allowsScrolling
-{
- return self.scrollEnabled;
-}
-
-- (void)setAllowsScrolling:(BOOL)allowsScrolling
-{
- MGLLogDebug(@"Setting allowsScrolling: %@", MGLStringFromBOOL(allowsScrolling));
- self.scrollEnabled = allowsScrolling;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsRotating
-{
- return [NSSet setWithObject:@"rotateEnabled"];
-}
-
-- (BOOL)allowsRotating
-{
- return self.rotateEnabled;
-}
-
-- (void)setAllowsRotating:(BOOL)allowsRotating
-{
- MGLLogDebug(@"Setting allowsRotating: %@", MGLStringFromBOOL(allowsRotating));
- self.rotateEnabled = allowsRotating;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsTilting
-{
- return [NSSet setWithObject:@"pitchEnabled"];
-}
-
-- (BOOL)allowsTilting
-{
- return self.pitchEnabled;
-}
-
-- (void)setAllowsTilting:(BOOL)allowsTilting
-{
- MGLLogDebug(@"Setting allowsTilting: %@", MGLStringFromBOOL(allowsTilting));
- self.pitchEnabled = allowsTilting;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingShowsHeading
-{
- return [NSSet setWithObject:@"showsUserHeadingIndicator"];
-}
-
-- (BOOL)showsHeading
-{
- return self.showsUserHeadingIndicator;
-}
-
-- (void)setShowsHeading:(BOOL)showsHeading
-{
- MGLLogDebug(@"Setting showsHeading: %@", MGLStringFromBOOL(showsHeading));
- self.showsUserHeadingIndicator = showsHeading;
-}
-
-@end
diff --git a/platform/ios/src/MGLMapViewDelegate.h b/platform/ios/src/MGLMapViewDelegate.h
deleted file mode 100644
index 3ddb7b007f..0000000000
--- a/platform/ios/src/MGLMapViewDelegate.h
+++ /dev/null
@@ -1,775 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "Mapbox.h"
-#import "MGLCameraChangeReason.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLMapView;
-
-/**
- The `MGLMapViewDelegate` protocol defines a set of optional methods that you
- can use to receive map-related update messages. Because many map operations
- require the `MGLMapView` class to load data asynchronously, the map view calls
- these methods to notify your application when specific operations complete. The
- map view also uses these methods to request information about annotations
- displayed on the map, such as the styles and interaction modes to apply to
- individual annotations.
- */
-@protocol MGLMapViewDelegate <NSObject>
-
-@optional
-
-#pragma mark Responding to Map Position Changes
-
-/**
- Asks the delegate whether the map view should be allowed to change from the
- existing camera to the new camera in response to a user gesture.
-
- This method is called as soon as the user gesture is recognized. It is not
- called in response to a programmatic camera change, such as by setting the
- `centerCoordinate` property or calling `-flyToCamera:completionHandler:`.
-
- This method is called many times during gesturing, so you should avoid performing
- complex or performance-intensive tasks in your implementation.
-
- @param mapView The map view that the user is manipulating.
- @param oldCamera The camera representing the viewpoint at the moment the
- gesture is recognized. If this method returns `NO`, the map view’s camera
- continues to be this camera.
- @param newCamera The expected camera after the gesture completes. If this
- method returns `YES`, this camera becomes the map view’s camera.
- @return A Boolean value indicating whether the map view should stay at
- `oldCamera` or change to `newCamera`.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/constraining-gestures/">
- Restrict map panning to an area</a> example to learn how to use this method
- and `MGLMapCamera` objects to restrict a users ability to pan your map.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldChangeFromCamera:(MGLMapCamera *)oldCamera toCamera:(MGLMapCamera *)newCamera;
-
-/**
- :nodoc:
- Asks the delegate whether the map view should be allowed to change from the
- existing camera to the new camera in response to a user gesture.
-
- This method is called as soon as the user gesture is recognized. It is not
- called in response to a programmatic camera change, such as by setting the
- `centerCoordinate` property or calling `-flyToCamera:completionHandler:`.
-
- This method is called many times during gesturing, so you should avoid performing
- complex or performance-intensive tasks in your implementation.
-
- @param mapView The map view that the user is manipulating.
- @param oldCamera The camera representing the viewpoint at the moment the
- gesture is recognized. If this method returns `NO`, the map view’s camera
- continues to be this camera.
- @param newCamera The expected camera after the gesture completes. If this
- method returns `YES`, the viewport of the map will transition to the new camera. Note that the new camera cannot be modified.
- @param reason The reason for the camera change.
- @return A Boolean value indicating whether the map view should stay at
- `oldCamera` or transition to `newCamera`.
-
- @note If this method is implemented `-mapView:shouldChangeFromCamera:toCamera:` will not be called.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldChangeFromCamera:(MGLMapCamera *)oldCamera toCamera:(MGLMapCamera *)newCamera reason:(MGLCameraChangeReason)reason;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view is about to change.
-
- This method is called whenever the currently displayed map camera will start
- changing for any reason.
-
- @param mapView The map view whose viewpoint will change.
- @param animated Whether the change will cause an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
-
-/**
- :nodoc:
- Tells the delegate that the viewpoint depicted by the map view is about to change.
-
- This method is called whenever the currently displayed map camera will start
- changing for any reason.
-
- @param mapView The map view whose viewpoint will change.
- @param animated Whether the change will cause an animated effect on the map.
- @param reason The reason for the camera change.
-
- @note If this method is implemented `-mapView:regionWillChangeAnimated:` will not be called.
- */
-- (void)mapView:(MGLMapView *)mapView regionWillChangeWithReason:(MGLCameraChangeReason)reason animated:(BOOL)animated;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view is changing.
-
- This method is called as the currently displayed map camera changes as part of
- an animation, whether due to a user gesture or due to a call to a method such
- as `-[MGLMapView setCamera:animated:]`. This method can be called before
- `-mapViewDidFinishLoadingMap:` is called.
-
- During the animation, this method may be called many times to report updates to
- the viewpoint. Therefore, your implementation of this method should be as lightweight
- as possible to avoid affecting performance.
-
- @param mapView The map view whose viewpoint is changing.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">
- Cluster point data</a> example to learn how to trigger an action whenever
- the map region changes.
- */
-- (void)mapViewRegionIsChanging:(MGLMapView *)mapView;
-
-/**
- :nodoc:
- Tells the delegate that the viewpoint depicted by the map view is changing.
-
- This method is called as the currently displayed map camera changes as part of
- an animation, whether due to a user gesture or due to a call to a method such
- as `-[MGLMapView setCamera:animated:]`. This method can be called before
- `-mapViewDidFinishLoadingMap:` is called.
-
- During the animation, this method may be called many times to report updates to
- the viewpoint. Therefore, your implementation of this method should be as lightweight
- as possible to avoid affecting performance.
-
- @param mapView The map view whose viewpoint is changing.
- @param reason The reason for the camera change.
-
- @note If this method is implemented `-mapViewRegionIsChanging:` will not be called.
- */
-- (void)mapView:(MGLMapView *)mapView regionIsChangingWithReason:(MGLCameraChangeReason)reason;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view has finished
- changing.
-
- This method is called whenever the currently displayed map camera has finished
- changing, after any calls to `-mapViewRegionIsChanging:` due to animation. Therefore,
- this method can be called before `-mapViewDidFinishLoadingMap:` is called.
-
- @param mapView The map view whose viewpoint has changed.
- @param animated Whether the change caused an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
-
-/**
- :nodoc:
- Tells the delegate that the viewpoint depicted by the map view has finished
- changing.
-
- This method is called whenever the currently displayed map camera has finished
- changing, after any calls to `-mapViewRegionIsChanging:` due to animation. Therefore,
- this method can be called before `-mapViewDidFinishLoadingMap:` is called.
-
- @param mapView The map view whose viewpoint has changed.
- @param animated Whether the change caused an animated effect on the map.
- @param reason The reason for the camera change.
-
- @note If this method is implemented `-mapView:regionDidChangeAnimated:` will not be called.
- */
-- (void)mapView:(MGLMapView *)mapView regionDidChangeWithReason:(MGLCameraChangeReason)reason animated:(BOOL)animated;
-
-#pragma mark Loading the Map
-
-/**
- Tells the delegate that the map view will begin to load.
-
- This method is called whenever the map view starts loading, including when a
- new style has been set and the map must reload.
-
- @param mapView The map view that is starting to load.
- */
-- (void)mapViewWillStartLoadingMap:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has finished loading.
-
- This method is called whenever the map view finishes loading, either after the
- initial load or after a style change has forced a reload.
-
- @param mapView The map view that has finished loading.
- */
-- (void)mapViewDidFinishLoadingMap:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view was unable to load data needed for
- displaying the map.
-
- This method may be called for a variety of reasons, including a network
- connection failure or a failure to fetch the style from the server. You can use
- the given error message to notify the user that map data is unavailable.
-
- @param mapView The map view that is unable to load the data.
- @param error The reason the data could not be loaded.
- */
-- (void)mapViewDidFailLoadingMap:(MGLMapView *)mapView withError:(NSError *)error;
-
-// TODO
-- (void)mapViewWillStartRenderingMap:(MGLMapView *)mapView;
-
-// TODO
-- (void)mapViewDidFinishRenderingMap:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-/**
- Tells the delegate that the map view is about to redraw.
-
- This method is called any time the map view needs to redraw due to a change in
- the viewpoint or style property transition. This method may be called very
- frequently, even moreso than `-mapViewRegionIsChanging:`. Therefore, your
- implementation of this method should be as lightweight as possible to avoid
- affecting performance.
-
- @param mapView The map view that is about to redraw.
- */
-- (void)mapViewWillStartRenderingFrame:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has just redrawn.
-
- This method is called any time the map view needs to redraw due to a change in
- the viewpoint or style property transition. This method may be called very
- frequently, even moreso than `-mapViewRegionIsChanging:`. Therefore, your
- implementation of this method should be as lightweight as possible to avoid
- affecting performance.
-
- @param mapView The map view that has just redrawn.
- */
-- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-/**
- Tells the delegate that the map view is entering an idle state, and no more
- drawing will be necessary until new data is loaded or there is some interaction
- with the map.
-
- - No camera transitions are in progress
- - All currently requested tiles have loaded
- - All fade/transition animations have completed
-
- @param mapView The map view that has just entered the idle state.
- */
-- (void)mapViewDidBecomeIdle:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map has just finished loading a style.
-
- This method is called during the initialization of the map view and after any
- subsequent loading of a new style. This method is called between the
- `-mapViewWillStartRenderingMap:` and `-mapViewDidFinishRenderingMap:` delegate
- methods. Changes to sources or layers of the current style do not cause this
- method to be called.
-
- This method is the earliest opportunity to modify the layout or appearance of
- the current style before the map view is displayed to the user.
-
- @param mapView The map view that has just loaded a style.
- @param style The style that was loaded.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/">
- Dynamically style interactive points</a> and <a href="https://docs.mapbox.com/ios/maps/examples/shape-collection/">
- Add multiple shapes from a single shape source</a> examples to learn how to
- ensure a map's style has loaded before modifying it at runtime.
- */
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style;
-
-- (nullable UIImage *)mapView:(MGLMapView *)mapView didFailToLoadImage:(NSString *)imageName;
-
-/**
- Asks the delegate whether the map view should evict cached images.
-
- This method is called in two scenarios: when the cumulative size of unused images
- exceeds the cache size or when the last tile that includes the image is removed from
- memory.
-
- @param mapView The map view that is evicting the image.
- @param imageName The image name that is going to be removed.
- @return A Boolean value indicating whether the map view should evict
- the cached image.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldRemoveStyleImage:(NSString *)imageName;
-
-#pragma mark Tracking User Location
-
-/**
- Tells the delegate that the map view will begin tracking the user’s location.
-
- This method is called when the value of the `showsUserLocation` property
- changes to `YES`.
-
- @param mapView The map view that is tracking the user’s location.
- */
-- (void)mapViewWillStartLocatingUser:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has stopped tracking the user’s location.
-
- This method is called when the value of the `showsUserLocation` property
- changes to `NO`.
-
- @param mapView The map view that is tracking the user’s location.
- */
-- (void)mapViewDidStopLocatingUser:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the location of the user was updated.
-
- While the `showsUserLocation` property is set to `YES`, this method is called
- whenever a new location update is received by the map view. This method is also
- called if the map view’s user tracking mode is set to
- `MGLUserTrackingModeFollowWithHeading` and the heading changes, or if it is set
- to `MGLUserTrackingModeFollowWithCourse` and the course changes.
-
- This method is not called if the application is currently running in the
- background. If you want to receive location updates while running in the
- background, you must use the Core Location framework.
-
- @param mapView The map view that is tracking the user’s location.
- @param userLocation The location object representing the user’s latest
- location. This property may be `nil`.
- */
-- (void)mapView:(MGLMapView *)mapView didUpdateUserLocation:(nullable MGLUserLocation *)userLocation;
-
-/**
- Tells the delegate that an attempt to locate the user’s position failed.
-
- @param mapView The map view that is tracking the user’s location.
- @param error An error object containing the reason why location tracking
- failed.
- */
-- (void)mapView:(MGLMapView *)mapView didFailToLocateUserWithError:(NSError *)error;
-
-/**
- Tells the delegate that the map view’s user tracking mode has changed.
-
- This method is called after the map view asynchronously changes to reflect the
- new user tracking mode, for example by beginning to zoom or rotate.
-
- @param mapView The map view that changed its tracking mode.
- @param mode The new tracking mode.
- @param animated Whether the change caused an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView didChangeUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated;
-
-/**
- Returns a screen coordinate at which to position the user location annotation.
- This coordinate is relative to the map view’s origin after applying the map view’s
- content insets.
-
- When unimplemented, the user location annotation is aligned within the center of
- the map view with respect to the content insets.
-
- This method will override any values set by `MGLMapView.userLocationVerticalAlignment`
- or `-[MGLMapView setUserLocationVerticalAlignment:animated:]`.
-
- @param mapView The map view that is tracking the user's location.
- */
-- (CGPoint)mapViewUserLocationAnchorPoint:(MGLMapView *)mapView;
-
-#pragma mark Managing the Appearance of Annotations
-
-/**
- Returns an annotation image object to mark the given point annotation object on
- the map.
-
- Implement this method to mark a point annotation with a static image. If you
- want to mark a particular point annotation with an annotation view instead,
- omit this method or have it return `nil` for that annotation, then implement
- `-mapView:viewForAnnotation:`.
-
- Static annotation images use less memory and draw more quickly than annotation
- views. On the other hand, annotation views are compatible with UIKit, Core
- Animation, and other Cocoa Touch frameworks.
-
- @param mapView The map view that requested the annotation image.
- @param annotation The object representing the annotation that is about to be
- displayed.
- @return The annotation image object to display for the given annotation or
- `nil` if you want to display the default marker image or an annotation view.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-models/">
- Annotation models</a>, <a href="https://docs.mapbox.com/ios/maps/examples/annotation-view-image/">
- Add annotation views and images</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/marker-image/">
- Mark a place on the map with an image</a> examples to learn to specify which
- image should be used for `MGLAnnotation` objects that have been added to
- your map.
- */
-- (nullable MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the alpha value to use when rendering a shape annotation.
-
- A value of `0.0` results in a completely transparent shape. A value of `1.0`,
- the default, results in a completely opaque shape.
-
- This method sets the opacity of an entire shape, inclusive of its stroke and
- fill. To independently set the values for stroke or fill, specify an alpha
- component in the color returned by `-mapView:strokeColorForShapeAnnotation:` or
- `-mapView:fillColorForPolygonAnnotation:`.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return An alpha value between `0` and `1.0`.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the color to use when rendering the outline of a shape annotation.
-
- The default stroke color is the map view’s tint color. If a pattern color is
- specified, the result is undefined.
-
- Opacity may be set by specifying an alpha component. The default alpha value is
- `1.0` and results in a completely opaque stroke.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return A color to use for the shape outline.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-models/">
- Annotation models</a> example to learn how to modify the outline color of an
- `MGLShape` object that has been added to your map as an annotation.
- */
-- (UIColor *)mapView:(MGLMapView *)mapView strokeColorForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the color to use when rendering the fill of a polygon annotation.
-
- The default fill color is the map view’s tint color. If a pattern color is
- specified, the result is undefined.
-
- Opacity may be set by specifying an alpha component. The default alpha value is
- `1.0` and results in a completely opaque shape.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return The polygon’s interior fill color.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/polygon/">Add
- a polygon annotation</a> example to learn how to modify the color of a an
- `MGLPolygon` at runtime.
- */
-- (UIColor *)mapView:(MGLMapView *)mapView fillColorForPolygonAnnotation:(MGLPolygon *)annotation;
-
-/**
- Returns the line width in points to use when rendering the outline of a
- polyline annotation.
-
- By default, the polyline is outlined with a line `3.0` points wide.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return A line width for the polyline, measured in points.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/line-geojson/">
- Add a line annotation from GeoJSON</a> example to learn how to modify the
- line width of an `MGLPolylineFeature` on your map.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView lineWidthForPolylineAnnotation:(MGLPolyline *)annotation;
-
-#pragma mark Managing Annotation Views
-
-/**
- Returns a view object to mark the given point annotation object on the map.
-
- Implement this method to mark a point annotation with a view object. If you
- want to mark a particular point annotation with a static image instead, omit
- this method or have it return `nil` for that annotation, then implement
- `-mapView:imageForAnnotation:` instead.
-
- Annotation views are compatible with UIKit, Core Animation, and other Cocoa
- Touch frameworks. On the other hand, static annotation images use less memory
- and draw more quickly than annotation views.
-
- The user location annotation view can also be customized via this method. When
- `annotation` is an instance of `MGLUserLocation` (or equal to the map view’s
- `userLocation` property), return an instance of `MGLUserLocationAnnotationView`
- (or a subclass thereof).
-
- @param mapView The map view that requested the annotation view.
- @param annotation The object representing the annotation that is about to be
- displayed.
- @return The view object to display for the given annotation or `nil` if you
- want to display an annotation image instead.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-view-image/">
- Add annotation views and images</a> example to learn how to specify what
- `MGLViewAnnotation` to use for a given `MGLPointAnnotation` object on your
- map.
- */
-- (nullable MGLAnnotationView *)mapView:(MGLMapView *)mapView viewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one or more annotation views have been added and
- positioned on the map.
-
- This method is called just after the views are added to the map. You can
- implement this method to animate the addition of the annotation views.
-
- @param mapView The map view to which the annotation views were added.
- @param annotationViews An array of `MGLAnnotationView` objects representing the
- views that were added.
- */
-- (void)mapView:(MGLMapView *)mapView didAddAnnotationViews:(NSArray<MGLAnnotationView *> *)annotationViews;
-
-#pragma mark Selecting Annotations
-
-/**
- Returns a Boolean value indicating whether the shape annotation can be selected.
-
- If the return value is `YES`, the user can select the annotation by tapping
- on it. If the delegate does not implement this method, the default value is `YES`.
-
- @param mapView The map view that has selected the annotation.
- @param annotation The object representing the shape annotation.
- @return A Boolean value indicating whether the annotation can be selected.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shapeAnnotationIsEnabled:(MGLShape *)annotation;
-
-/**
- Tells the delegate that one of its annotations was selected.
-
- You can use this method to track changes in the selection state of annotations.
-
- If the annotation is associated with an annotation view, you can also implement
- `-mapView:didSelectAnnotationView:`, which is called immediately after this
- method is called.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was selected.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/">
- Dynamically style interactive points</a> example to learn how to remove an
- annotation view if it has already been selected.
- */
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one of its annotations was deselected.
-
- You can use this method to track changes in the selection state of annotations.
-
- If the annotation is associated with an annotation view, you can also implement
- `-mapView:didDeselectAnnotationView:`, which is called immediately after this
- method is called.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was deselected.
- */
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one of its annotation views was selected.
-
- You can use this method to track changes in the selection state of annotation
- views.
-
- This method is only called for annotation views. To track changes in the
- selection state of all annotations, including those associated with static
- annotation images, implement `-mapView:didSelectAnnotation:`, which is called
- immediately before this method is called.
-
- @param mapView The map view containing the annotation.
- @param annotationView The annotation view that was selected.
- */
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotationView:(MGLAnnotationView *)annotationView;
-
-/**
- Tells the delegate that one of its annotation views was deselected.
-
- You can use this method to track changes in the selection state of annotation
- views.
-
- This method is only called for annotation views. To track changes in the
- selection state of all annotations, including those associated with static
- annotation images, implement `-mapView:didDeselectAnnotation:`, which is called
- immediately before this method is called.
-
- @param mapView The map view containing the annotation.
- @param annotationView The annotation view that was deselected.
- */
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotationView:(MGLAnnotationView *)annotationView;
-
-#pragma mark Managing Callout Views
-
-/**
- Returns a Boolean value indicating whether the annotation is able to display
- extra information in a callout bubble.
-
- This method is called after an annotation is selected, before any callout is
- displayed for the annotation.
-
- If the return value is `YES`, a callout view is shown when the user taps on an
- annotation, selecting it. The default callout displays the annotation’s title
- and subtitle. You can add accessory views to either end of the callout by
- implementing the `-mapView:leftCalloutAccessoryViewForAnnotation:` and
- `-mapView:rightCalloutAccessoryViewForAnnotation:` methods. You can further
- customize the callout’s contents by implementing the
- `-mapView:calloutViewForAnnotation:` method.
-
- If the return value is `NO`, or if this method is absent from the delegate, or
- if the annotation lacks a title, the annotation will not show a callout even
- when selected.
-
- @param mapView The map view that has selected the annotation.
- @param annotation The object representing the annotation.
- @return A Boolean value indicating whether the annotation should show a
- callout.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-view-image/">
- Add annotation views and images</a>, <a href="https://docs.mapbox.com/ios/maps/examples/custom-callout/">
- Display custom views as callouts</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> examples to learn how to show callouts for
- `MGLAnnotation` objects.
- */
-- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation;
-
-/**
- Returns a callout view to display for the given annotation.
-
- If this method is present in the delegate, it must return a new instance of a
- view dedicated to display the callout. The returned view will be configured by
- the map view.
-
- If this method is absent from the delegate, or if it returns `nil`, a standard,
- two-line, bubble-like callout view is displayed by default.
-
- @param mapView The map view that requested the callout view.
- @param annotation The object representing the annotation.
- @return A view conforming to the `MGLCalloutView` protocol, or `nil` to use the
- default callout view.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/custom-callout/">
- Display custom views as callouts</a> example to learn how to customize an
- `MGLAnnotation` object's `MGLCalloutView`.
- */
-- (nullable id <MGLCalloutView>)mapView:(MGLMapView *)mapView calloutViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the view to display on the left side of the standard callout bubble.
-
- The left callout view is typically used to convey information about the
- annotation or to link to custom information provided by your application.
-
- If the view you specify is a descendant of the `UIControl` class, you can use
- the map view’s delegate to receive notifications when your control is tapped,
- by implementing the `-mapView:annotation:calloutAccessoryControlTapped:`
- method. If the view you specify does not descend from `UIControl`, your view is
- responsible for handling any touch events within its bounds.
-
- If this method is absent from the delegate, or if it returns `nil`, the
- standard callout view has no accessory view on its left side. The return value
- of this method is ignored if `-mapView:calloutViewForAnnotation:` is present in
- the delegate.
-
- To display a view on the callout’s right side, implement the
- `-mapView:rightCalloutAccessoryViewForAnnotation:` method.
-
- @param mapView The map view presenting the annotation callout.
- @param annotation The object representing the annotation with the callout.
- @return The accessory view to display.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> example to learn how to modify the view that is
- displayed on the left side of the standard callout bubble.
- */
-- (nullable UIView *)mapView:(MGLMapView *)mapView leftCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the view to display on the right side of the standard callout bubble.
-
- The right callout view is typically used to convey information about the
- annotation or to link to custom information provided by your application.
-
- If the view you specify is a descendant of the `UIControl` class, you can use
- the map view’s delegate to receive notifications when your control is tapped,
- by implementing the `-mapView:annotation:calloutAccessoryControlTapped:`
- method. If the view you specify does not descend from `UIControl`, your view is
- responsible for handling any touch events within its bounds.
-
- If this method is absent from the delegate, or if it returns `nil`, the
- standard callout view has no accessory view on its right side. The return value
- of this method is ignored if `-mapView:calloutViewForAnnotation:` is present in
- the delegate.
-
- To display a view on the callout’s left side, implement the
- `-mapView:leftCalloutAccessoryViewForAnnotation:` method.
-
- @param mapView The map view presenting the annotation callout.
- @param annotation The object representing the annotation with the callout.
- @return The accessory view to display.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> example to learn how to modify the view that is
- displayed on the right side of the standard callout bubble.
- */
-- (nullable UIView *)mapView:(MGLMapView *)mapView rightCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that the user tapped one of the accessory controls in the
- annotation’s callout view.
-
- In a standard callout view, accessory views contain custom content and are
- positioned on either side of the annotation title text. If an accessory view
- you specify is a descendant of the `UIControl` class, the map view calls this
- method as a convenience whenever the user taps your view. You can use this
- method to respond to taps and perform any actions associated with that control.
- For example, if your control displays additional information about the
- annotation, you could use this method to present a modal panel with that
- information.
-
- If your custom accessory views are not descendants of the `UIControl` class,
- the map view does not call this method. If the annotation has a custom callout
- view via the `-mapView:calloutViewForAnnotation:` method, you can specify the
- custom accessory views using the `MGLCalloutView` protocol’s
- `leftAccessoryView` and `rightAccessoryView` properties.
-
- @param mapView The map view containing the specified annotation.
- @param annotation The annotation whose accessory view was tapped.
- @param control The control that was tapped.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> example to learn how to trigger an action when the
- standard callout bubble's accessory control is tapped.
- */
-- (void)mapView:(MGLMapView *)mapView annotation:(id <MGLAnnotation>)annotation calloutAccessoryControlTapped:(UIControl *)control;
-
-/**
- Tells the delegate that the user tapped on an annotation’s callout view.
-
- This method is called when the user taps on the body of the callout view, as
- opposed to the callout’s left or right accessory view. If the annotation has a
- custom callout view via the `-mapView:calloutViewForAnnotation:` method, this
- method is only called whenever the callout view calls its delegate’s
- `-[MGLCalloutViewDelegate calloutViewTapped:]` method.
-
- If this method is present on the delegate, the standard callout view’s body
- momentarily highlights when the user taps it, whether or not this method does
- anything in response to the tap.
-
- @param mapView The map view containing the specified annotation.
- @param annotation The annotation whose callout was tapped.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/custom-callout/">
- Display custom views as callouts</a> example to learn how to trigger an
- action when an `MGLAnnotation`s `MGLCalloutView` is tapped.
- */
-- (void)mapView:(MGLMapView *)mapView tapOnCalloutForAnnotation:(id <MGLAnnotation>)annotation;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLMapView_Experimental.h b/platform/ios/src/MGLMapView_Experimental.h
deleted file mode 100644
index 94f8d67fb0..0000000000
--- a/platform/ios/src/MGLMapView_Experimental.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-@interface MGLMapView (Experimental)
-
-#pragma mark Rendering Performance Measurement
-
-/** Enable rendering performance measurement. */
-@property (nonatomic) BOOL experimental_enableFrameRateMeasurement;
-
-/**
- Average frames per second over the previous second, updated once per second.
-
- Requires `experimental_enableFrameRateMeasurement`.
- */
-@property (nonatomic, readonly) CGFloat averageFrameRate;
-
-/**
- Frame render duration for the previous frame, updated instantaneously.
-
- Requires `experimental_enableFrameRateMeasurement`.
- */
-@property (nonatomic, readonly) CFTimeInterval frameTime;
-
-/**
- Average frame render duration over the previous second, updated once per
- second.
-
- Requires `experimental_enableFrameRateMeasurement`.
- */
-@property (nonatomic, readonly) CFTimeInterval averageFrameTime;
-
-@end
diff --git a/platform/ios/src/MGLMapView_Private.h b/platform/ios/src/MGLMapView_Private.h
deleted file mode 100644
index 155527000f..0000000000
--- a/platform/ios/src/MGLMapView_Private.h
+++ /dev/null
@@ -1,74 +0,0 @@
-#import "MGLMapView.h"
-#import "MGLUserLocationAnnotationView.h"
-#import "MGLAnnotationContainerView.h"
-
-#include <mbgl/util/size.hpp>
-
-namespace mbgl {
- class Map;
- class Renderer;
-}
-
-class MGLMapViewImpl;
-@class MGLSource;
-
-/// Standard animation duration for UI elements.
-FOUNDATION_EXTERN const NSTimeInterval MGLAnimationDuration;
-
-/// Minimum size of an annotation’s accessibility element.
-FOUNDATION_EXTERN const CGSize MGLAnnotationAccessibilityElementMinimumSize;
-
-/// Indicates that a method (that uses `mbgl::Map`) was called after app termination.
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const _Nonnull MGLUnderlyingMapUnavailableException;
-
-@interface MGLMapView (Private)
-
-/// The map view’s OpenGL rendering context.
-@property (nonatomic, readonly, nullable) EAGLContext *context;
-
-/// Currently shown popover representing the selected annotation.
-@property (nonatomic, nonnull) UIView<MGLCalloutView> *calloutViewForSelectedAnnotation;
-
-/// Map observers
-- (void)cameraWillChangeAnimated:(BOOL)animated;
-- (void)cameraIsChanging;
-- (void)cameraDidChangeAnimated:(BOOL)animated;
-- (void)mapViewWillStartLoadingMap;
-- (void)mapViewDidFinishLoadingMap;
-- (void)mapViewDidFailLoadingMapWithError:(nonnull NSError *)error;
-- (void)mapViewWillStartRenderingFrame;
-- (void)mapViewDidFinishRenderingFrameFullyRendered:(BOOL)fullyRendered;
-- (void)mapViewWillStartRenderingMap;
-- (void)mapViewDidFinishRenderingMapFullyRendered:(BOOL)fullyRendered;
-- (void)mapViewDidBecomeIdle;
-- (void)mapViewDidFinishLoadingStyle;
-- (void)sourceDidChange:(nonnull MGLSource *)source;
-- (void)didFailToLoadImage:(nonnull NSString *)imageName;
-- (BOOL)shouldRemoveStyleImage:(nonnull NSString *)imageName;
-
-/** Triggers another render pass even when it is not necessary. */
-- (void)setNeedsRerender;
-
-/// Synchronously render a frame of the map.
-- (void)renderSync;
-
-- (nonnull mbgl::Renderer *)renderer;
-
-/** Returns whether the map view is currently loading or processing any assets required to render the map */
-- (BOOL)isFullyLoaded;
-
-/** Empties the in-memory tile cache. */
-- (void)didReceiveMemoryWarning;
-
-/** Returns an instance of MGLMapView implementation. Used for integration testing. */
-- (nonnull MGLMapViewImpl *) viewImpl;
-
-- (void)pauseRendering:(nonnull NSNotification *)notification;
-- (void)resumeRendering:(nonnull NSNotification *)notification;
-@property (nonatomic, nonnull) MGLUserLocationAnnotationView *userLocationAnnotationView;
-@property (nonatomic, nonnull) MGLAnnotationContainerView *annotationContainerView;
-@property (nonatomic, readonly) BOOL enablePresentsWithTransaction;
-
-- (BOOL) _opaque;
-
-@end
diff --git a/platform/ios/src/MGLMapboxEvents.h b/platform/ios/src/MGLMapboxEvents.h
deleted file mode 100644
index a7d316cc06..0000000000
--- a/platform/ios/src/MGLMapboxEvents.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#import <Foundation/Foundation.h>
-#import "MMEEventsManager.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// NSUserDefaults key that controls telemetry user opt-out status
-FOUNDATION_EXTERN NSString * const MGLMapboxMetricsEnabledKey;
-
-@interface MGLMapboxEvents : NSObject
-
-+ (nullable instancetype)sharedInstance;
-
-+ (void)setupWithAccessToken:(NSString *)accessToken;
-+ (void)pushTurnstileEvent;
-+ (void)pushEvent:(NSString *)event withAttributes:(MMEMapboxEventAttributes *)attributeDictionary;
-+ (void)flush;
-+ (void)ensureMetricsOptoutExists;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLMapboxEvents.m b/platform/ios/src/MGLMapboxEvents.m
deleted file mode 100644
index 808c3a88bf..0000000000
--- a/platform/ios/src/MGLMapboxEvents.m
+++ /dev/null
@@ -1,200 +0,0 @@
-#import "MGLMapboxEvents.h"
-#import "MBXSKUToken.h"
-#import "NSBundle+MGLAdditions.h"
-#import "MGLAccountManager_Private.h"
-
-// NSUserDefaults and Info.plist keys
-NSString * const MGLMapboxMetricsEnabledKey = @"MGLMapboxMetricsEnabled";
-static NSString * const MGLMapboxMetricsDebugLoggingEnabledKey = @"MGLMapboxMetricsDebugLoggingEnabled";
-static NSString * const MGLMapboxMetricsEnabledSettingShownInAppKey = @"MGLMapboxMetricsEnabledSettingShownInApp";
-static NSString * const MGLTelemetryAccessTokenKey = @"MGLTelemetryAccessToken";
-static NSString * const MGLTelemetryBaseURLKey = @"MGLTelemetryBaseURL";
-static NSString * const MGLEventsProfileKey = @"MMEEventsProfile";
-static NSString * const MGLVariableGeofenceKey = @"VariableGeofence";
-
-static NSString * const MGLAPIClientUserAgentBase = @"mapbox-maps-ios";
-
-@interface MGLMapboxEvents ()
-
-@property (nonatomic) MMEEventsManager *eventsManager;
-@property (nonatomic) NSURL *baseURL;
-@property (nonatomic, copy) NSString *accessToken;
-
-@end
-
-@implementation MGLMapboxEvents
-
-+ (void)initialize {
- if (self == [MGLMapboxEvents class]) {
- NSBundle *bundle = [NSBundle mainBundle];
- NSNumber *accountTypeNumber = [bundle objectForInfoDictionaryKey:MGLMapboxAccountTypeKey];
- [[NSUserDefaults standardUserDefaults] registerDefaults:@{MGLMapboxAccountTypeKey: accountTypeNumber ?: @0,
- MGLMapboxMetricsEnabledKey: @YES,
- MGLMapboxMetricsDebugLoggingEnabledKey: @NO}];
- }
-}
-
-+ (nullable instancetype)sharedInstance {
-
- static dispatch_once_t onceToken;
- static MGLMapboxEvents *_sharedInstance;
- dispatch_once(&onceToken, ^{
- _sharedInstance = [[self alloc] init];
- });
- return _sharedInstance;
-}
-
-- (instancetype)init {
- self = [super init];
- if (self) {
- _eventsManager = MMEEventsManager.sharedManager;
- _eventsManager.debugLoggingEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:MGLMapboxMetricsDebugLoggingEnabledKey];
- _eventsManager.accountType = [[NSUserDefaults standardUserDefaults] integerForKey:MGLMapboxAccountTypeKey];
- _eventsManager.metricsEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:MGLMapboxMetricsEnabledKey];
-
- // It is possible for the shared instance of this class to be created because of a call to
- // +[MGLAccountManager load] early on in the app lifecycle of the host application.
- // If user default values for access token and base URL are available, they are stored here
- // on local properties so that they can be applied later once MMEEventsManager is fully initialized
- // (once -[MMEEventsManager initializeWithAccessToken:userAgentBase:hostSDKVersion:] is called.
- // Normally, the telem access token and base URL are not set this way. However, overriding these values
- // with user defaults can be useful for testing with an alternative (test) backend system.
- if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:MGLTelemetryAccessTokenKey]) {
- self.accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:MGLTelemetryAccessTokenKey];
- }
- if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:MGLTelemetryBaseURLKey]) {
- self.baseURL = [NSURL URLWithString:[[NSUserDefaults standardUserDefaults] objectForKey:MGLTelemetryBaseURLKey]];
- }
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDefaultsDidChange:) name:NSUserDefaultsDidChangeNotification object:nil];
- }
- return self;
-}
-
-- (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-- (void)userDefaultsDidChange:(NSNotification *)notification {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self updateNonDisablingConfigurationValues];
- [self updateDisablingConfigurationValuesWithNotification:notification];
- });
-}
-
-- (void)updateNonDisablingConfigurationValues {
- self.eventsManager.debugLoggingEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:MGLMapboxMetricsDebugLoggingEnabledKey];
-
- // It is possible for the telemetry access token key to have been set yet `userDefaultsDidChange:`
- // is called before `setupWithAccessToken:` is called.
- // In that case, setting the access token here will have no effect. In practice, that's fine
- // because the access token value will be resolved when `setupWithAccessToken:` is called eventually
- if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:MGLTelemetryAccessTokenKey]) {
- self.eventsManager.accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:MGLTelemetryAccessTokenKey];
- }
-
- // It is possible for the telemetry base URL key to have been set yet `userDefaultsDidChange:`
- // is called before setupWithAccessToken: is called.
- // In that case, setting the base URL here will have no effect. In practice, that's fine
- // because the base URL value will be resolved when `setupWithAccessToken:` is called eventually
- if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:MGLTelemetryBaseURLKey]) {
- NSURL *baseURL = [NSURL URLWithString:[[NSUserDefaults standardUserDefaults] objectForKey:MGLTelemetryBaseURLKey]];
- self.eventsManager.baseURL = baseURL;
- }
-}
-
-- (void)updateDisablingConfigurationValuesWithNotification:(NSNotification *)notification {
- // Guard against over calling pause / resume if the values this implementation actually
- // cares about have not changed. We guard because the pause and resume method checks CoreLocation's
- // authorization status and that can drag on the main thread if done too many times (e.g. if the host
- // app heavily uses the user defaults API and this method is called very frequently)
- if ([[notification object] respondsToSelector:@selector(objectForKey:)]) {
- NSUserDefaults *userDefaults = [notification object];
-
- NSInteger accountType = [userDefaults integerForKey:MGLMapboxAccountTypeKey];
- BOOL metricsEnabled = [userDefaults boolForKey:MGLMapboxMetricsEnabledKey];
-
- if (accountType != self.eventsManager.accountType || metricsEnabled != self.eventsManager.metricsEnabled) {
- self.eventsManager.accountType = accountType;
- self.eventsManager.metricsEnabled = metricsEnabled;
-
- [self.eventsManager pauseOrResumeMetricsCollectionIfRequired];
- }
- }
-}
-
-+ (void)setupWithAccessToken:(NSString *)accessToken {
- int64_t delayTime = 0;
-
- if ([[[NSBundle mainBundle] objectForInfoDictionaryKey:MGLEventsProfileKey] isEqualToString:MGLVariableGeofenceKey]) {
- delayTime = 10;
- }
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayTime * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- NSString *semanticVersion = [NSBundle mgl_frameworkInfoDictionary][@"MGLSemanticVersionString"];
- NSString *shortVersion = [NSBundle mgl_frameworkInfoDictionary][@"CFBundleShortVersionString"];
- NSString *sdkVersion = semanticVersion ?: shortVersion;
-
- // It is possible that an alternative access token was already set on this instance when the class was loaded
- // Use it if it exists
- NSString *resolvedAccessToken = [MGLMapboxEvents sharedInstance].accessToken ?: accessToken;
-
- [[[self sharedInstance] eventsManager] initializeWithAccessToken:resolvedAccessToken userAgentBase:MGLAPIClientUserAgentBase hostSDKVersion:sdkVersion];
-
- // It is possible that an alternative base URL was set on this instance when the class was loaded
- // Use it if it exists
- if ([MGLMapboxEvents sharedInstance].baseURL) {
- [[MGLMapboxEvents sharedInstance] eventsManager].baseURL = [MGLMapboxEvents sharedInstance].baseURL;
- }
-
- [[self sharedInstance] eventsManager].skuId = MBXAccountsSKUIDMapsUser;
-
- [self flush];
- });
-}
-
-+ (void)pushTurnstileEvent {
- [[[self sharedInstance] eventsManager] sendTurnstileEvent];
-}
-
-+ (void)pushEvent:(NSString *)event withAttributes:(MMEMapboxEventAttributes *)attributeDictionary {
- [[[self sharedInstance] eventsManager] enqueueEventWithName:event attributes:attributeDictionary];
-}
-
-+ (void)flush {
- [[[self sharedInstance] eventsManager] flush];
-}
-
-+ (void)ensureMetricsOptoutExists {
- NSNumber *shownInAppNumber = [[NSBundle mainBundle] objectForInfoDictionaryKey:MGLMapboxMetricsEnabledSettingShownInAppKey];
- BOOL metricsEnabledSettingShownInAppFlag = [shownInAppNumber boolValue];
-
- if (!metricsEnabledSettingShownInAppFlag &&
- [[NSUserDefaults standardUserDefaults] integerForKey:MGLMapboxAccountTypeKey] == 0) {
- // Opt-out is not configured in UI, so check for Settings.bundle
- id defaultEnabledValue;
- NSString *appSettingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
-
- if (appSettingsBundle) {
- // Dynamic Settings.bundle loading based on http://stackoverflow.com/a/510329/2094275
- NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[appSettingsBundle stringByAppendingPathComponent:@"Root.plist"]];
- NSArray *preferences = settings[@"PreferenceSpecifiers"];
- for (NSDictionary *prefSpecification in preferences) {
- if ([prefSpecification[@"Key"] isEqualToString:MGLMapboxMetricsEnabledKey]) {
- defaultEnabledValue = prefSpecification[@"DefaultValue"];
- }
- }
- }
-
- if (!defaultEnabledValue) {
- [NSException raise:@"Telemetry opt-out missing" format:
- @"End users must be able to opt out of Mapbox Telemetry in your app, either inside Settings (via Settings.bundle) or inside this app. "
- @"By default, this opt-out control is included as a menu item in the attribution action sheet. "
- @"If you reimplement the opt-out control inside this app, disable this assertion by setting MGLMapboxMetricsEnabledSettingShownInApp to YES in Info.plist."
- @"\n\nSee https://docs.mapbox.com/help/how-mapbox-works/attribution/#mapbox-maps-sdk-for-ios for more information."
- @"\n\nAdditionally, by hiding this attribution control you agree to display the required attribution elsewhere in this app."];
- }
- }
-}
-
-@end
diff --git a/platform/ios/src/MGLSDKUpdateChecker.h b/platform/ios/src/MGLSDKUpdateChecker.h
deleted file mode 100644
index 13cef46ad4..0000000000
--- a/platform/ios/src/MGLSDKUpdateChecker.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLSDKUpdateChecker : NSObject
-
-+ (void)checkForUpdates;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLSDKUpdateChecker.mm b/platform/ios/src/MGLSDKUpdateChecker.mm
deleted file mode 100644
index cfea139bdb..0000000000
--- a/platform/ios/src/MGLSDKUpdateChecker.mm
+++ /dev/null
@@ -1,37 +0,0 @@
-#import "MGLSDKUpdateChecker.h"
-#import "NSBundle+MGLAdditions.h"
-
-@implementation MGLSDKUpdateChecker
-
-+ (void)checkForUpdates {
-#if TARGET_IPHONE_SIMULATOR
- // Abort if running in a playground.
- if ([[NSBundle mainBundle].bundleIdentifier hasPrefix:@"com.apple.dt.playground."]) {
- return;
- }
-
- NSString *currentVersion = [NSBundle mgl_frameworkInfoDictionary][@"MGLSemanticVersionString"];
-
- // Skip version check if weʼre doing gl-native development, as the framework
- // version is `1` until built for packaging.
- if ([currentVersion isEqualToString:@"1.0.0"]) {
- return;
- }
-
- NSURL *url = [NSURL URLWithString:@"https://docs.mapbox.com/ios/maps/latest_version.txt"];
- [[NSURLSession.sharedSession dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- if (error || ((NSHTTPURLResponse *)response).statusCode != 200) {
- return;
- }
-
- NSString *latestVersion = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
- latestVersion = [latestVersion stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
- if (![currentVersion isEqualToString:latestVersion]) {
- NSString *updateAvailable = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"SDK_UPDATE_AVAILABLE", nil, nil, @"Mapbox Maps SDK for iOS version %@ is now available:", @"Developer-only SDK update notification; {latest version, in format x.x.x}"), latestVersion];
- NSLog(@"%@ https://github.com/mapbox/mapbox-gl-native/releases/tag/ios-v%@", updateAvailable, latestVersion);
- }
- }] resume];
-#endif
-}
-
-@end
diff --git a/platform/ios/src/MGLScaleBar.h b/platform/ios/src/MGLScaleBar.h
deleted file mode 100644
index 77fd6736b5..0000000000
--- a/platform/ios/src/MGLScaleBar.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#import <UIKit/UIKit.h>
-#import <CoreLocation/CoreLocation.h>
-
-@interface MGLScaleBar : UIView
-
-// Sets the scale and redraws the scale bar
-@property (nonatomic, assign) CLLocationDistance metersPerPoint;
-
-@end
diff --git a/platform/ios/src/MGLScaleBar.mm b/platform/ios/src/MGLScaleBar.mm
deleted file mode 100644
index 3efa80013f..0000000000
--- a/platform/ios/src/MGLScaleBar.mm
+++ /dev/null
@@ -1,556 +0,0 @@
-#import "Mapbox.h"
-#import "MGLScaleBar.h"
-
-static const CGFloat MGLFeetPerMile = 5280;
-
-struct MGLRow {
- CLLocationDistance distance;
- NSUInteger numberOfBars;
-};
-
-static const MGLRow MGLMetricTable[] = {
- {.distance = 1, .numberOfBars = 2},
- {.distance = 2, .numberOfBars = 2},
- {.distance = 4, .numberOfBars = 2},
- {.distance = 10, .numberOfBars = 2},
- {.distance = 20, .numberOfBars = 2},
- {.distance = 50, .numberOfBars = 2},
- {.distance = 75, .numberOfBars = 3},
- {.distance = 100, .numberOfBars = 2},
- {.distance = 150, .numberOfBars = 2},
- {.distance = 200, .numberOfBars = 2},
- {.distance = 300, .numberOfBars = 3},
- {.distance = 500, .numberOfBars = 2},
- {.distance = 1000, .numberOfBars = 2},
- {.distance = 1500, .numberOfBars = 2},
- {.distance = 3000, .numberOfBars = 3},
- {.distance = 5000, .numberOfBars = 2},
- {.distance = 10000, .numberOfBars = 2},
- {.distance = 20000, .numberOfBars = 2},
- {.distance = 30000, .numberOfBars = 3},
- {.distance = 50000, .numberOfBars = 2},
- {.distance = 100000, .numberOfBars = 2},
- {.distance = 200000, .numberOfBars = 2},
- {.distance = 300000, .numberOfBars = 3},
- {.distance = 400000, .numberOfBars = 2},
- {.distance = 500000, .numberOfBars = 2},
- {.distance = 600000, .numberOfBars = 3},
- {.distance = 800000, .numberOfBars = 2},
-};
-
-static const MGLRow MGLImperialTable[] ={
- {.distance = 4, .numberOfBars = 2},
- {.distance = 6, .numberOfBars = 2},
- {.distance = 10, .numberOfBars = 2},
- {.distance = 20, .numberOfBars = 2},
- {.distance = 30, .numberOfBars = 2},
- {.distance = 50, .numberOfBars = 2},
- {.distance = 75, .numberOfBars = 3},
- {.distance = 100, .numberOfBars = 2},
- {.distance = 200, .numberOfBars = 2},
- {.distance = 300, .numberOfBars = 3},
- {.distance = 400, .numberOfBars = 2},
- {.distance = 600, .numberOfBars = 3},
- {.distance = 800, .numberOfBars = 2},
- {.distance = 1000, .numberOfBars = 2},
- {.distance = 0.25f*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 0.5f*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 1*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 2*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 3*MGLFeetPerMile, .numberOfBars = 3},
- {.distance = 4*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 8*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 12*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 15*MGLFeetPerMile, .numberOfBars = 3},
- {.distance = 20*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 30*MGLFeetPerMile, .numberOfBars = 3},
- {.distance = 40*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 80*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 120*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 200*MGLFeetPerMile, .numberOfBars = 2},
- {.distance = 300*MGLFeetPerMile, .numberOfBars = 3},
- {.distance = 400*MGLFeetPerMile, .numberOfBars = 2},
-};
-
-@class MGLScaleBarLabel;
-
-@interface MGLScaleBar()
-@property (nonatomic) NSArray<UIView *> *labelViews;
-@property (nonatomic) NSArray<UIView *> *bars;
-@property (nonatomic) UIView *containerView;
-@property (nonatomic) MGLDistanceFormatter *formatter;
-@property (nonatomic, assign) MGLRow row;
-@property (nonatomic) UIColor *primaryColor;
-@property (nonatomic) UIColor *secondaryColor;
-@property (nonatomic, assign) CGFloat borderWidth;
-@property (nonatomic) NSMutableDictionary* labelImageCache;
-@property (nonatomic) MGLScaleBarLabel* prototypeLabel;
-@property (nonatomic) CGFloat lastLabelWidth;
-@property (nonatomic) CGSize size;
-@property (nonatomic) BOOL recalculateSize;
-@property (nonatomic) BOOL shouldLayoutBars;
-@property (nonatomic) NSNumber *testingRightToLeftOverride;
-@end
-
-static const CGFloat MGLBarHeight = 4;
-static const CGFloat MGLFeetPerMeter = 3.28084;
-static const CGFloat MGLScaleBarLabelWidthHint = 30.0;
-static const CGFloat MGLScaleBarMinimumBarWidth = 30.0; // Arbitrary
-
-@interface MGLScaleBarLabel : UILabel
-
-@end
-
-@implementation MGLScaleBarLabel
-
-- (void)drawTextInRect:(CGRect)rect {
- CGSize shadowOffset = self.shadowOffset;
-
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextSetLineWidth(context, 2);
- CGContextSetLineJoin(context, kCGLineJoinRound);
-
- CGContextSetTextDrawingMode(context, kCGTextStroke);
- self.textColor = [UIColor whiteColor];
- [super drawTextInRect:rect];
-
- CGContextSetTextDrawingMode(context, kCGTextFill);
- self.textColor = [UIColor blackColor];
- self.shadowOffset = CGSizeMake(0, 0);
- [super drawTextInRect:rect];
-
- self.shadowOffset = shadowOffset;
-}
-
-@end
-
-@implementation MGLScaleBar
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- if (self = [super initWithCoder:decoder]) {
- [self commonInit];
- }
- return self;
-}
-
-- (instancetype)initWithFrame:(CGRect)frame {
- if (self = [super initWithFrame:frame]) {
- [self commonInit];
- }
- return self;
-}
-
-- (void)commonInit {
- _size = CGSizeZero;
-
- _primaryColor = [UIColor colorWithRed:18.0/255.0 green:45.0/255.0 blue:17.0/255.0 alpha:1];
- _secondaryColor = [UIColor colorWithRed:247.0/255.0 green:247.0/255.0 blue:247.0/255.0 alpha:1];
- _borderWidth = 1.0f;
-
- self.clipsToBounds = NO;
- self.hidden = YES;
-
- _containerView = [[UIView alloc] init];
- _containerView.clipsToBounds = YES;
- _containerView.backgroundColor = _secondaryColor;
- _containerView.layer.borderColor = _primaryColor.CGColor;
- _containerView.layer.borderWidth = _borderWidth / [[UIScreen mainScreen] scale];
-
- _containerView.layer.cornerRadius = MGLBarHeight / 2.0;
- _containerView.layer.masksToBounds = YES;
-
- [self addSubview:_containerView];
-
- _formatter = [[MGLDistanceFormatter alloc] init];
-
- // Image labels are now images
- _labelImageCache = [[NSMutableDictionary alloc] init];
- _prototypeLabel = [[MGLScaleBarLabel alloc] init];
- _prototypeLabel.font = [UIFont systemFontOfSize:8 weight:UIFontWeightMedium];
- _prototypeLabel.clipsToBounds = NO;
-
- NSUInteger numberOfLabels = 4;
- NSMutableArray *labelViews = [NSMutableArray arrayWithCapacity:numberOfLabels];
-
- for (NSUInteger i = 0; i < numberOfLabels; i++) {
- UIView *view = [[UIView alloc] init];
- view.bounds = CGRectZero;
- view.clipsToBounds = NO;
- view.contentMode = UIViewContentModeCenter;
- view.hidden = YES;
- [labelViews addObject:view];
- [self addSubview:view];
- }
- _labelViews = [labelViews copy];
- _lastLabelWidth = MGLScaleBarLabelWidthHint;
-
- // Zero is a special case (no formatting)
- [self addZeroLabel];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetLabelImageCache) name:NSCurrentLocaleDidChangeNotification object:nil];
-}
-
-- (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-- (void)resetLabelImageCache {
- self.labelImageCache = [[NSMutableDictionary alloc] init];
- [self addZeroLabel];
-}
-
-#pragma mark - Dimensions
-
-- (void)setBorderWidth:(CGFloat)borderWidth {
- _borderWidth = borderWidth;
- _containerView.layer.borderWidth = borderWidth / [[UIScreen mainScreen] scale];
-}
-
-// Determines the width of the bars NOT the size of the entire scale bar,
-// which includes space for (half) a label.
-// Uses the current set `row`
-- (CGFloat)actualWidth {
- CGFloat unitsPerPoint = [self unitsPerPoint];
-
- if (unitsPerPoint == 0.0) {
- return 0.0;
- }
-
- CGFloat width = self.row.distance / unitsPerPoint;
-
- if (width <= MGLScaleBarMinimumBarWidth) {
- return 0.0;
- }
-
- // Round, so that each bar section has an integer width
- return self.row.numberOfBars * floor(width/self.row.numberOfBars);
-}
-
-- (CGFloat)maximumWidth {
- // TODO: Consider taking Scale Bar margins into account here.
- CGFloat fullWidth = CGRectGetWidth(self.superview.bounds);
- return floorf(fullWidth / 2);
-}
-
-- (CGFloat)unitsPerPoint {
- return [self usesMetricSystem] ? self.metersPerPoint : self.metersPerPoint * MGLFeetPerMeter;
-}
-
-#pragma mark - Convenience methods
-
-- (BOOL)usesRightToLeftLayout {
- if (self.testingRightToLeftOverride) {
- return [self.testingRightToLeftOverride boolValue];
- }
-
- return [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.superview.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft;
-}
-
-- (BOOL)usesMetricSystem {
- NSLocale *locale = [NSLocale currentLocale];
- return [[locale objectForKey:NSLocaleUsesMetricSystem] boolValue];
-}
-
-- (MGLRow)preferredRow {
- CLLocationDistance maximumDistance = [self maximumWidth] * [self unitsPerPoint];
-
- BOOL useMetric = [self usesMetricSystem];
-
- const MGLRow *row;
- const MGLRow *table;
- NSUInteger count;
-
- if (useMetric) {
- row = table = MGLMetricTable;
- count = sizeof(MGLMetricTable) / sizeof(MGLMetricTable[0]);
- }
- else {
- row = table = MGLImperialTable;
- count = sizeof(MGLImperialTable) / sizeof(MGLImperialTable[0]);
- }
-
- while (row < table + count) {
- if (row->distance > maximumDistance) {
- // use the previous row
- NSAssert(row != table, @"");
- return *(row - 1);
- }
- ++row;
- }
-
- // Didn't find it, just return the first.
- return *table;
-}
-
-#pragma mark - Setters
-
-- (void)setMetersPerPoint:(CLLocationDistance)metersPerPoint {
- if (_metersPerPoint == metersPerPoint) {
- return;
- }
-
- _metersPerPoint = metersPerPoint;
-
- [self updateVisibility];
-
- self.recalculateSize = YES;
- [self invalidateIntrinsicContentSize];
-}
-
-- (CGSize)intrinsicContentSize {
- // Size is calculated elsewhere - since intrinsicContentSize is part of the
- // constraint system, this should be done in updateConstraints
- if (self.size.width < 0.0) {
- return CGSizeZero;
- }
- return self.size;
-}
-
-/// updateConstraints
-///
-/// The primary job of updateConstraints here is to recalculate the
-/// intrinsicContentSize: _metersPerPoint and the maximum width determine the
-/// current "row", which in turn determines the "actualWidth". To obtain the full
-/// width of the scale bar, we also need to include some space for the "last"
-/// label
-
-- (void)updateConstraints {
- if (self.isHidden || !self.recalculateSize) {
- [super updateConstraints];
- return;
- }
-
- // TODO: Improve this (and the side-effects)
- self.row = [self preferredRow];
-
- NSAssert(self.row.numberOfBars > 0, @"");
-
- CGFloat totalBarWidth = self.actualWidth;
-
- if (totalBarWidth <= 0.0) {
- [super updateConstraints];
- return;
- }
-
- // Determine the "lastLabelWidth". This has changed to take a maximum of each
- // label, to ensure that the size does not change in LTR & RTL layouts, and
- // also to stop jiggling when the scale bar is on the right hand of the screen
- // This will most likely be a constant, as we take a max using a "hint" for
- // the initial value
-
- if (self.shouldLayoutBars) {
- [self updateLabels];
- }
-
- CGFloat halfLabelWidth = ceil(self.lastLabelWidth/2);
-
- self.size = CGSizeMake(totalBarWidth + halfLabelWidth, 16);
-
- [self setNeedsLayout];
- [super updateConstraints]; // This calls intrinsicContentSize
-}
-
-- (void)updateVisibility {
- BOOL metric = [self usesMetricSystem];
-
- NSUInteger count = metric
- ? sizeof(MGLMetricTable) / sizeof(MGLMetricTable[0])
- : sizeof(MGLImperialTable) / sizeof(MGLImperialTable[0]);
-
- CLLocationDistance maximumDistance = [self maximumWidth] * [self unitsPerPoint];
- CLLocationDistance allowedDistance = metric
- ? MGLMetricTable[count-1].distance
- : MGLImperialTable[count-1].distance;
-
- CGFloat alpha = maximumDistance > allowedDistance ? .0f : 1.0f;
-
- if (self.alpha != alpha) {
- [UIView animateWithDuration:.2f delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
- self.alpha = alpha;
- } completion:nil];
- }
-}
-
-- (void)setRow:(MGLRow)row {
- if (_row.distance == row.distance) {
- return;
- }
-
- self.shouldLayoutBars = YES;
-
- _row = row;
-}
-
-#pragma mark - Views
-
-- (NSArray<UIView *> *)bars {
- if (!_bars) {
- NSMutableArray *bars = [NSMutableArray array];
- for (NSUInteger i = 0; i < self.row.numberOfBars; i++) {
- UIView *bar = [[UIView alloc] init];
- [bars addObject:bar];
- [self.containerView addSubview:bar];
- }
- _bars = bars;
- }
- return _bars;
-}
-
-#pragma mark - Labels
-
-- (void)addZeroLabel {
- NSDecimalNumber *zeroNumber = [NSDecimalNumber decimalNumberWithString:@"0"];
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
- NSString *text = [formatter stringFromNumber:zeroNumber];
-
- UIImage* image = [self imageForLabelText:text];
- [self.labelImageCache setObject:image forKey:@(0)];
-}
-
-- (UIImage*)imageForLabelText:(NSString*)text {
- self.prototypeLabel.text = text;
- [self.prototypeLabel setNeedsDisplay];
- [self.prototypeLabel sizeToFit];
-
- // Now render
- UIGraphicsBeginImageContextWithOptions(self.prototypeLabel.bounds.size, NO, 0.0);
- [self.prototypeLabel.layer renderInContext: UIGraphicsGetCurrentContext()];
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return image;
-}
-
-- (UIImage*)cachedLabelImageForDistance:(CLLocationDistance)barDistance {
- // Make a slightly nicer key, rather than something that's a double.
- NSUInteger floorDist = (NSUInteger)(barDistance*100);
-
- NSNumber *key = @(floorDist);
- UIImage *cachedImage = [self.labelImageCache objectForKey:key];
-
- if (cachedImage) {
- return cachedImage;
- }
-
- // Calc it
- NSString *text = [self.formatter stringFromDistance:barDistance];
- UIImage *image = [self imageForLabelText:text];
-
- [self.labelImageCache setObject:image forKey:key];
-
- return image;
-}
-
-- (void)updateLabels {
- NSEnumerator<UIView*> *viewEnumerator = [self.labelViews objectEnumerator];
- NSUInteger i = 0;
- CLLocationDistance multiplier = (self.row.distance / self.row.numberOfBars);
-
- if (![self usesMetricSystem]) {
- multiplier /= MGLFeetPerMeter;
- }
-
- for (; i <= self.row.numberOfBars; i++) {
- UIView *labelView = [viewEnumerator nextObject];
- labelView.hidden = NO;
-
- CLLocationDistance barDistance = multiplier * i;
- UIImage *image = [self cachedLabelImageForDistance:barDistance];
-
- self.lastLabelWidth = MAX(self.lastLabelWidth, image.size.width);
-
- labelView.layer.contents = (id)image.CGImage;
- labelView.layer.contentsScale = image.scale;
- }
-
- // Hide the rest.
- for (; i < self.labelViews.count; i++) {
- UIView *labelView = [viewEnumerator nextObject];
- labelView.hidden = YES;
- }
-}
-
-#pragma mark - Layout
-
-- (void)layoutSubviews {
- [super layoutSubviews];
-
- if (!self.recalculateSize) {
- return;
- }
-
- self.recalculateSize = NO;
-
- // If size is 0, then we keep the existing layout (which will fade out)
- if (self.size.width <= 0.0) {
- return;
- }
-
- CGFloat totalBarWidth = self.actualWidth;
-
- if (totalBarWidth <= 0.0) {
- return;
- }
-
- if (self.shouldLayoutBars) {
- self.shouldLayoutBars = NO;
- [_bars makeObjectsPerformSelector:@selector(removeFromSuperview)];
- _bars = nil;
- }
-
- // Re-layout the component bars and labels of the scale bar
- CGFloat intrinsicContentHeight = self.intrinsicContentSize.height;
- CGFloat barWidth = totalBarWidth/self.bars.count;
-
- BOOL RTL = [self usesRightToLeftLayout];
- CGFloat halfLabelWidth = ceil(self.lastLabelWidth/2);
- CGFloat barOffset = RTL ? halfLabelWidth : 0.0;
-
- self.containerView.frame = CGRectMake(barOffset,
- intrinsicContentHeight - MGLBarHeight,
- totalBarWidth,
- MGLBarHeight);
-
- [self layoutBarsWithWidth:barWidth];
-
- CGFloat yPosition = round(0.5 * ( intrinsicContentHeight - MGLBarHeight));
- CGFloat barDelta = RTL ? -barWidth : barWidth;
- [self layoutLabelsWithOffset:barOffset delta:barDelta yPosition:yPosition];
-}
-
-- (void)layoutBarsWithWidth:(CGFloat)barWidth {
- NSUInteger i = 0;
- for (UIView *bar in self.bars) {
- CGFloat xPosition = barWidth * i;
- bar.backgroundColor = (i % 2 == 0) ? self.primaryColor : self.secondaryColor;
- bar.frame = CGRectMake(xPosition, 0, barWidth, MGLBarHeight);
- i++;
- }
-}
-
-- (void)layoutLabelsWithOffset:(CGFloat)barOffset delta:(CGFloat)barDelta yPosition:(CGFloat)yPosition {
-#if !defined(NS_BLOCK_ASSERTIONS)
- NSUInteger countOfVisibleLabels = 0;
- for (UIView *view in self.labelViews) {
- if (!view.isHidden) {
- countOfVisibleLabels++;
- }
- }
- NSAssert(self.bars.count == countOfVisibleLabels - 1, @"");
-#endif
-
- CGFloat xPosition = barOffset;
-
- if (barDelta < 0) {
- xPosition -= (barDelta*self.bars.count);
- }
-
- for (UIView *label in self.labelViews) {
- // Label frames have 0 size - though the layer contents use "center" and do
- // not clip to bounds. This way we don't need to worry about positioning the
- // label. (Though you won't see the label in the view debugger)
- label.frame = CGRectMake(xPosition, yPosition, 0.0, 0.0);
-
- xPosition += barDelta;
- }
-}
-@end
diff --git a/platform/ios/src/MGLTelemetryConfig.h b/platform/ios/src/MGLTelemetryConfig.h
deleted file mode 100644
index 96e525c969..0000000000
--- a/platform/ios/src/MGLTelemetryConfig.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLTelemetryConfig : NSObject
-
-@property (nonatomic) CLLocationDistance MGLLocationManagerHibernationRadius;
-
-extern NSString *const MGLMapboxMetricsProfile;
-
-@property (class, nullable, nonatomic, readonly) MGLTelemetryConfig *sharedConfig;
-
-- (void)configurationFromKey:(NSString *)key;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLTelemetryConfig.m b/platform/ios/src/MGLTelemetryConfig.m
deleted file mode 100644
index 828bafb14f..0000000000
--- a/platform/ios/src/MGLTelemetryConfig.m
+++ /dev/null
@@ -1,35 +0,0 @@
-#import "MGLTelemetryConfig.h"
-
-static const CLLocationDistance MGLConfigHibernationRadiusDefault = 300.0;
-static const CLLocationDistance MGLConfigHibernationRadiusWide = 600.0;
-
-NSString *const MGLMapboxMetricsProfile = @"MGLMapboxMetricsProfile";
-
-static NSString *const MGLConfigHibernationRadiusWideKey = @"WideGeoFence";
-
-@implementation MGLTelemetryConfig
-
-- (instancetype) init {
- self = [super init];
- if (self) {
- _MGLLocationManagerHibernationRadius = MGLConfigHibernationRadiusDefault;
- }
- return self;
-}
-
-+ (nullable instancetype)sharedConfig {
- static dispatch_once_t onceToken;
- static MGLTelemetryConfig *_sharedConfig;
- dispatch_once(&onceToken, ^{
- _sharedConfig = [[self alloc] init];
- });
- return _sharedConfig;
-}
-
-- (void)configurationFromKey:(NSString *)key {
- if ([key isEqualToString:MGLConfigHibernationRadiusWideKey]) {
- _MGLLocationManagerHibernationRadius = MGLConfigHibernationRadiusWide;
- }
-}
-
-@end
diff --git a/platform/ios/src/MGLUserLocation.h b/platform/ios/src/MGLUserLocation.h
deleted file mode 100644
index d7c8576c47..0000000000
--- a/platform/ios/src/MGLUserLocation.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLAnnotation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The MGLUserLocation class defines a specific type of annotation that identifies
- the user’s current location. You do not create instances of this class
- directly. Instead, you retrieve an existing `MGLUserLocation` object from the
- `userLocation` property of the map view displayed in your application.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/user-location-annotation/">
- Customize the user location annotation</a> example to learn how to overide the
- default user location annotation.
- */
-MGL_EXPORT
-@interface MGLUserLocation : NSObject <MGLAnnotation, NSSecureCoding>
-
-#pragma mark Determining the User’s Position
-
-/**
- The current location of the device. (read-only)
-
- This property returns `nil` if the user’s location has not yet been determined.
- */
-@property (nonatomic, readonly, nullable) CLLocation *location;
-
-/**
- A Boolean value indicating whether the user’s location is currently being
- updated. (read-only)
- */
-@property (nonatomic, readonly, getter=isUpdating) BOOL updating;
-
-/**
- The heading of the user location. (read-only)
-
- This property is `nil` if the user location tracking mode is not
- `MGLUserTrackingModeFollowWithHeading` or if
- `MGLMapView.showsUserHeadingIndicator` is disabled.
- */
-@property (nonatomic, readonly, nullable) CLHeading *heading;
-
-#pragma mark Accessing the User Annotation Text
-
-/** The title to display for the user location annotation. */
-@property (nonatomic, copy) NSString *title;
-
-/** The subtitle to display for the user location annotation. */
-@property (nonatomic, copy, nullable) NSString *subtitle;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLUserLocation.m b/platform/ios/src/MGLUserLocation.m
deleted file mode 100644
index 245cbf4371..0000000000
--- a/platform/ios/src/MGLUserLocation.m
+++ /dev/null
@@ -1,124 +0,0 @@
-#import "MGLUserLocation_Private.h"
-
-#import "MGLMapView.h"
-#import "NSBundle+MGLAdditions.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLUserLocation ()
-
-@property (nonatomic, weak) MGLMapView *mapView;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-@implementation MGLUserLocation
-
-- (instancetype)initWithMapView:(MGLMapView *)mapView
-{
- if (self = [super init])
- {
- _mapView = mapView;
- }
-
- return self;
-}
-
-+ (BOOL)supportsSecureCoding {
- return YES;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- if (self = [super init]) {
- _location = [decoder decodeObjectOfClass:[CLLocation class] forKey:@"location"];
- _title = [decoder decodeObjectOfClass:[NSString class] forKey:@"title"];
- _subtitle = [decoder decodeObjectOfClass:[NSString class] forKey:@"subtitle"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [coder encodeObject:_location forKey:@"location"];
- [coder encodeObject:_title forKey:@"title"];
- [coder encodeObject:_subtitle forKey:@"subtitle"];
-}
-
-- (BOOL)isEqual:(id)other {
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLUserLocation class]]) return NO;
-
- MGLUserLocation *otherUserLocation = other;
- return ((!self.location && !otherUserLocation.location) || [self.location distanceFromLocation:otherUserLocation.location] == 0)
- && ((!self.title && !otherUserLocation.title) || [self.title isEqualToString:otherUserLocation.title])
- && ((!self.subtitle && !otherUserLocation.subtitle) || [self.subtitle isEqualToString:otherUserLocation.subtitle]);
-}
-
-- (NSUInteger)hash {
- NSUInteger hash = [super hash];
- hash += [_location hash];
- hash += [_heading hash];
- hash += [_title hash];
- hash += [_subtitle hash];
- return hash;
-}
-
-+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key
-{
- return ! [key isEqualToString:@"location"] && ! [key isEqualToString:@"heading"];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCoordinate
-{
- return [NSSet setWithObject:@"location"];
-}
-
-- (void)setLocation:(CLLocation *)newLocation
-{
- if ( ! newLocation || ! CLLocationCoordinate2DIsValid(newLocation.coordinate)) return;
- if ( _location && CLLocationCoordinate2DIsValid(_location.coordinate) && [newLocation distanceFromLocation:_location] == 0) return;
- if (newLocation.coordinate.latitude == 0 && newLocation.coordinate.longitude == 0) return;
-
- [self willChangeValueForKey:@"location"];
- _location = newLocation;
- [self didChangeValueForKey:@"location"];
-}
-
-- (BOOL)isUpdating
-{
- return self.mapView.userTrackingMode != MGLUserTrackingModeNone;
-}
-
-- (void)setHeading:(CLHeading *)newHeading
-{
- if (newHeading.trueHeading != _heading.trueHeading)
- {
- [self willChangeValueForKey:@"heading"];
- _heading = newHeading;
- [self didChangeValueForKey:@"heading"];
- }
-}
-
-- (CLLocationCoordinate2D)coordinate
-{
- return _location ? _location.coordinate : kCLLocationCoordinate2DInvalid;
-}
-
-- (NSString *)title
-{
- return _title ?: NSLocalizedStringWithDefaultValue(@"USER_DOT_TITLE", nil, nil, @"You Are Here", @"Default user location annotation title");
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"<%@: %p; location = %f, %f; updating = %@; altitude = %.0fm; heading = %.0f°; title = %@; subtitle = %@>",
- NSStringFromClass([self class]), (void *)self,
- self.location.coordinate.latitude, self.location.coordinate.longitude,
- self.updating ? @"yes" : @"no",
- self.location.altitude,
- self.heading.trueHeading,
- self.title ? [NSString stringWithFormat:@"\"%@\"", self.title] : self.title,
- self.subtitle ? [NSString stringWithFormat:@"\"%@\"", self.subtitle] : self.subtitle];
-}
-
-@end
diff --git a/platform/ios/src/MGLUserLocationAnnotationView.h b/platform/ios/src/MGLUserLocationAnnotationView.h
deleted file mode 100644
index f5197b9f76..0000000000
--- a/platform/ios/src/MGLUserLocationAnnotationView.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#import <UIKit/UIKit.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLAnnotationView.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLMapView;
-@class MGLUserLocation;
-
-/** View representing an `MGLUserLocation` on screen. */
-MGL_EXPORT
-@interface MGLUserLocationAnnotationView : MGLAnnotationView
-
-/**
- Returns the associated map view.
-
- The value of this property is nil during initialization.
- */
-@property (nonatomic, readonly, weak, nullable) MGLMapView *mapView;
-
-/**
- Returns the annotation object indicating the user’s current location.
-
- The value of this property is nil during initialization and while user tracking
- is inactive.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/user-location-annotation/">
- Customize the user location annotation</a> example to learn how to customize
- the default user location annotation object.
- */
-@property (nonatomic, readonly, weak, nullable) MGLUserLocation *userLocation;
-
-/**
- Returns the layer that should be used for annotation selection hit testing.
-
- The default value of this property is the presentation layer of the view’s Core
- Animation layer. When subclassing, you may override this property to specify a
- different layer to be used for hit testing. This can be useful when you wish to
- limit the interactive area of the annotation to a specific sublayer.
- */
-@property (nonatomic, readonly, weak) CALayer *hitTestLayer;
-
-/**
- Updates the user location annotation.
-
- Use this method to update the appearance of the user location annotation. This
- method is called by the associated map view when it has determined that the
- user location annotation needs to be updated. This can happen in response to
- user interaction, a change in the user’s location, when the user tracking mode
- changes, or when the viewport changes.
-
- @note During user interaction with the map, this method may be called many
- times to update the user location annotation. Therefore, your implementation of
- this method should be as lightweight as possible to avoid negatively affecting
- performance.
- */
-- (void)update;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLUserLocationAnnotationView.m b/platform/ios/src/MGLUserLocationAnnotationView.m
deleted file mode 100644
index 9795565050..0000000000
--- a/platform/ios/src/MGLUserLocationAnnotationView.m
+++ /dev/null
@@ -1,100 +0,0 @@
-#import "MGLUserLocationAnnotationView.h"
-
-#import "MGLUserLocation.h"
-#import "MGLUserLocation_Private.h"
-#import "MGLAnnotationView_Private.h"
-#import "MGLAnnotation.h"
-#import "MGLMapView.h"
-#import "MGLCoordinateFormatter.h"
-#import "NSBundle+MGLAdditions.h"
-
-@interface MGLUserLocationAnnotationView()
-@property (nonatomic, weak, nullable) MGLMapView *mapView;
-@property (nonatomic, weak, nullable) MGLUserLocation *userLocation;
-@property (nonatomic, weak) CALayer *hitTestLayer;
-@end
-
-@implementation MGLUserLocationAnnotationView {
- MGLCoordinateFormatter *_accessibilityCoordinateFormatter;
-}
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
- if (self == nil) return nil;
-
- self.accessibilityTraits = UIAccessibilityTraitButton | UIAccessibilityTraitAdjustable | UIAccessibilityTraitUpdatesFrequently;
-
- _accessibilityCoordinateFormatter = [[MGLCoordinateFormatter alloc] init];
- _accessibilityCoordinateFormatter.unitStyle = NSFormattingUnitStyleLong;
-
- return self;
-}
-
-- (CALayer *)hitTestLayer
-{
- return self.layer.presentationLayer;
-}
-
-- (void)update
-{
- // Left blank intentionally. Subclasses should usually override this in order to update the annotation’s appearance.
-}
-
-- (BOOL)isAccessibilityElement
-{
- return !self.hidden;
-}
-
-- (NSString *)accessibilityLabel
-{
- return self.userLocation.title;
-}
-
-- (NSString *)accessibilityValue
-{
- if (self.userLocation.subtitle)
- {
- return self.userLocation.subtitle;
- }
-
- // Each arcminute of longitude is at most about 1 nmi, too small for low zoom levels.
- // Each arcsecond of longitude is at most about 30 m, too small for all but the very highest of zoom levels.
- double zoomLevel = self.mapView.zoomLevel;
- _accessibilityCoordinateFormatter.allowsMinutes = zoomLevel > 8;
- _accessibilityCoordinateFormatter.allowsSeconds = zoomLevel > 20;
-
- return [_accessibilityCoordinateFormatter stringFromCoordinate:self.mapView.centerCoordinate];
-}
-
-- (CGRect)accessibilityFrame
-{
- return CGRectInset(self.frame, -15, -15);
-}
-
-- (UIBezierPath *)accessibilityPath
-{
- return [UIBezierPath bezierPathWithOvalInRect:self.frame];
-}
-
-- (void)accessibilityIncrement
-{
- [self.mapView accessibilityIncrement];
-}
-
-- (void)accessibilityDecrement
-{
- [self.mapView accessibilityDecrement];
-}
-
-- (void)setHidden:(BOOL)hidden
-{
- BOOL oldValue = super.hidden;
- [super setHidden:hidden];
- if (oldValue != hidden)
- {
- UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
- }
-}
-
-@end
diff --git a/platform/ios/src/MGLUserLocationAnnotationView_Private.h b/platform/ios/src/MGLUserLocationAnnotationView_Private.h
deleted file mode 100644
index 3e12beab34..0000000000
--- a/platform/ios/src/MGLUserLocationAnnotationView_Private.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import "MGLUserLocationAnnotationView.h"
-#import "MGLUserLocation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLMapView;
-
-@interface MGLUserLocationAnnotationView (Private)
-
-@property (nonatomic, weak, nullable) MGLUserLocation *userLocation;
-@property (nonatomic, weak, nullable) MGLMapView *mapView;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLUserLocationHeadingArrowLayer.h b/platform/ios/src/MGLUserLocationHeadingArrowLayer.h
deleted file mode 100644
index 6c01356944..0000000000
--- a/platform/ios/src/MGLUserLocationHeadingArrowLayer.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import <QuartzCore/QuartzCore.h>
-#import "MGLUserLocationAnnotationView.h"
-#import "MGLUserLocationHeadingIndicator.h"
-
-@interface MGLUserLocationHeadingArrowLayer : CAShapeLayer <MGLUserLocationHeadingIndicator>
-
-- (instancetype)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView;
-- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy;
-- (void)updateTintColor:(CGColorRef)color;
-
-@end
diff --git a/platform/ios/src/MGLUserLocationHeadingArrowLayer.m b/platform/ios/src/MGLUserLocationHeadingArrowLayer.m
deleted file mode 100644
index d81cb5a09a..0000000000
--- a/platform/ios/src/MGLUserLocationHeadingArrowLayer.m
+++ /dev/null
@@ -1,59 +0,0 @@
-#import "MGLUserLocationHeadingArrowLayer.h"
-
-#import "MGLFaux3DUserLocationAnnotationView.h"
-#import "MGLGeometry.h"
-
-const CGFloat MGLUserLocationHeadingArrowSize = 8;
-
-@implementation MGLUserLocationHeadingArrowLayer
-
-- (instancetype)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView
-{
- CGFloat size = userLocationView.bounds.size.width + MGLUserLocationHeadingArrowSize;
-
- self = [super init];
- self.bounds = CGRectMake(0, 0, size, size);
- self.position = CGPointMake(CGRectGetMidX(userLocationView.bounds), CGRectGetMidY(userLocationView.bounds));
- self.path = [self arrowPath];
- self.fillColor = userLocationView.tintColor.CGColor;
- self.shouldRasterize = YES;
- self.rasterizationScale = UIScreen.mainScreen.scale;
- self.drawsAsynchronously = YES;
-
- self.strokeColor = UIColor.whiteColor.CGColor;
- self.lineWidth = 1.0;
- self.lineJoin = kCALineJoinRound;
-
- return self;
-}
-
-- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy
-{
- // unimplemented
-}
-
-- (void)updateTintColor:(CGColorRef)color
-{
- self.fillColor = color;
-}
-
-- (CGPathRef)arrowPath {
- CGFloat center = roundf(CGRectGetMidX(self.bounds));
- CGFloat size = MGLUserLocationHeadingArrowSize;
-
- CGPoint top = CGPointMake(center, 0);
- CGPoint left = CGPointMake(center - size, size);
- CGPoint right = CGPointMake(center + size, size);
- CGPoint middle = CGPointMake(center, size / M_PI);
-
- UIBezierPath *bezierPath = [UIBezierPath bezierPath];
- [bezierPath moveToPoint:top];
- [bezierPath addLineToPoint:left];
- [bezierPath addQuadCurveToPoint:right controlPoint:middle];
- [bezierPath addLineToPoint:top];
- [bezierPath closePath];
-
- return bezierPath.CGPath;
-}
-
-@end
diff --git a/platform/ios/src/MGLUserLocationHeadingBeamLayer.h b/platform/ios/src/MGLUserLocationHeadingBeamLayer.h
deleted file mode 100644
index 93f8ea17ab..0000000000
--- a/platform/ios/src/MGLUserLocationHeadingBeamLayer.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import <QuartzCore/QuartzCore.h>
-#import "MGLUserLocationAnnotationView.h"
-#import "MGLUserLocationHeadingIndicator.h"
-
-@interface MGLUserLocationHeadingBeamLayer : CALayer <MGLUserLocationHeadingIndicator>
-
-- (MGLUserLocationHeadingBeamLayer *)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView;
-- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy;
-- (void)updateTintColor:(CGColorRef)color;
-
-@end
diff --git a/platform/ios/src/MGLUserLocationHeadingBeamLayer.m b/platform/ios/src/MGLUserLocationHeadingBeamLayer.m
deleted file mode 100644
index efe7e4db93..0000000000
--- a/platform/ios/src/MGLUserLocationHeadingBeamLayer.m
+++ /dev/null
@@ -1,104 +0,0 @@
-#import "MGLUserLocationHeadingBeamLayer.h"
-
-#import "MGLFaux3DUserLocationAnnotationView.h"
-#import "MGLGeometry.h"
-
-@implementation MGLUserLocationHeadingBeamLayer
-{
- CAShapeLayer *_maskLayer;
-}
-
-- (instancetype)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView
-{
- CGFloat size = MGLUserLocationAnnotationHaloSize;
-
- self = [super init];
- self.bounds = CGRectMake(0, 0, size, size);
- self.position = CGPointMake(CGRectGetMidX(userLocationView.bounds), CGRectGetMidY(userLocationView.bounds));
- self.contents = (__bridge id)[self gradientImageWithTintColor:userLocationView.tintColor.CGColor];
- self.contentsGravity = kCAGravityBottom;
- self.contentsScale = UIScreen.mainScreen.scale;
- self.opacity = 0.4;
- self.shouldRasterize = YES;
- self.rasterizationScale = UIScreen.mainScreen.scale;
- self.drawsAsynchronously = YES;
-
- _maskLayer = [CAShapeLayer layer];
- _maskLayer.frame = self.bounds;
- _maskLayer.path = [self clippingMaskForAccuracy:0];
- self.mask = _maskLayer;
-
- return self;
-}
-
-- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy
-{
- // recalculate the clipping mask based on updated accuracy
- _maskLayer.path = [self clippingMaskForAccuracy:accuracy];
-}
-
-- (void)updateTintColor:(CGColorRef)color
-{
- // redraw the raw tinted gradient
- self.contents = (__bridge id)[self gradientImageWithTintColor:color];
-}
-
-- (CGImageRef)gradientImageWithTintColor:(CGColorRef)tintColor
-{
- UIImage *image;
-
- CGFloat haloRadius = MGLUserLocationAnnotationHaloSize / 2.0;
-
- UIGraphicsBeginImageContextWithOptions(CGSizeMake(MGLUserLocationAnnotationHaloSize, haloRadius), NO, 0);
-
- CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
- CGContextRef context = UIGraphicsGetCurrentContext();
-
- // gradient from the tint color to no-alpha tint color
- CGFloat gradientLocations[] = {0.0, 1.0};
- CGGradientRef gradient = CGGradientCreateWithColors(
- colorSpace,
- (__bridge CFArrayRef)@[(__bridge id)tintColor,
- (id)CFBridgingRelease(CGColorCreateCopyWithAlpha(tintColor, 0))],
- gradientLocations);
-
- // draw the gradient from the center point to the edge (full halo radius)
- CGPoint centerPoint = CGPointMake(haloRadius, haloRadius);
- CGContextDrawRadialGradient(context, gradient,
- centerPoint, 0.0,
- centerPoint, haloRadius,
- kNilOptions);
-
- image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
-
- CGGradientRelease(gradient);
- CGColorSpaceRelease(colorSpace);
-
- return image.CGImage;
-}
-
-- (CGPathRef)clippingMaskForAccuracy:(CGFloat)accuracy
-{
- // size the mask using accuracy, but keep within a good display range
- CGFloat clippingDegrees = 90 - accuracy;
- clippingDegrees = fmin(clippingDegrees, 70); // most accurate
- clippingDegrees = fmax(clippingDegrees, 10); // least accurate
-
- CGRect ovalRect = CGRectMake(0, 0, MGLUserLocationAnnotationHaloSize, MGLUserLocationAnnotationHaloSize);
- UIBezierPath *ovalPath = UIBezierPath.bezierPath;
-
- // clip the oval to ± incoming accuracy degrees (converted to radians), from the top
- [ovalPath addArcWithCenter:CGPointMake(CGRectGetMidX(ovalRect), CGRectGetMidY(ovalRect))
- radius:CGRectGetWidth(ovalRect) / 2.0
- startAngle:MGLRadiansFromDegrees(-180 + clippingDegrees)
- endAngle:MGLRadiansFromDegrees(-clippingDegrees)
- clockwise:YES];
-
- [ovalPath addLineToPoint:CGPointMake(CGRectGetMidX(ovalRect), CGRectGetMidY(ovalRect))];
- [ovalPath closePath];
-
- return ovalPath.CGPath;
-}
-
-@end
diff --git a/platform/ios/src/MGLUserLocationHeadingIndicator.h b/platform/ios/src/MGLUserLocationHeadingIndicator.h
deleted file mode 100644
index 61476b96a2..0000000000
--- a/platform/ios/src/MGLUserLocationHeadingIndicator.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#import <QuartzCore/QuartzCore.h>
-#import "MGLUserLocationAnnotationView.h"
-
-@protocol MGLUserLocationHeadingIndicator <NSObject>
-
-- (instancetype)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView;
-- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy;
-- (void)updateTintColor:(CGColorRef)color;
-
-@end
diff --git a/platform/ios/src/MGLUserLocation_Private.h b/platform/ios/src/MGLUserLocation_Private.h
deleted file mode 100644
index 48f6d40e8c..0000000000
--- a/platform/ios/src/MGLUserLocation_Private.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#import "MGLUserLocation.h"
-
-#import <CoreLocation/CoreLocation.h>
-
-@class MGLMapView;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLUserLocation (Private)
-
-@property (nonatomic, weak) MGLMapView *mapView;
-@property (nonatomic, readwrite, nullable) CLLocation *location;
-@property (nonatomic, readwrite, nullable) CLHeading *heading;
-
-- (instancetype)initWithMapView:(MGLMapView *)mapView;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/Mapbox-Prefix.pch b/platform/ios/src/Mapbox-Prefix.pch
deleted file mode 100644
index 6754020861..0000000000
--- a/platform/ios/src/Mapbox-Prefix.pch
+++ /dev/null
@@ -1 +0,0 @@
-#import "MMENamespacedDependencies.h"
diff --git a/platform/ios/src/Mapbox.h b/platform/ios/src/Mapbox.h
deleted file mode 100644
index 98e673577c..0000000000
--- a/platform/ios/src/Mapbox.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLFoundation.h"
-
-/// Project version number for Mapbox.
-FOUNDATION_EXPORT MGL_EXPORT double MapboxVersionNumber;
-
-/// Project version string for Mapbox.
-FOUNDATION_EXPORT MGL_EXPORT const unsigned char MapboxVersionString[];
-
-#import "MGLAnnotationView.h"
-#import "MGLAccountManager.h"
-#import "MGLAnnotation.h"
-#import "MGLAnnotationImage.h"
-#import "MGLCalloutView.h"
-#import "MGLClockDirectionFormatter.h"
-#import "MGLCluster.h"
-#import "MGLCompassButton.h"
-#import "MGLCompassDirectionFormatter.h"
-#import "MGLCoordinateFormatter.h"
-#import "MGLDistanceFormatter.h"
-#import "MGLFeature.h"
-#import "MGLGeometry.h"
-#import "MGLLight.h"
-#import "MGLMapCamera.h"
-#import "MGLMapView.h"
-#import "MGLMapView+IBAdditions.h"
-#import "MGLMapViewDelegate.h"
-#import "MGLMultiPoint.h"
-#import "MGLOfflinePack.h"
-#import "MGLOfflineRegion.h"
-#import "MGLOfflineStorage.h"
-#import "MGLOverlay.h"
-#import "MGLPointAnnotation.h"
-#import "MGLPointCollection.h"
-#import "MGLPolygon.h"
-#import "MGLPolyline.h"
-#import "MGLShape.h"
-#import "MGLShapeCollection.h"
-#import "MGLStyle.h"
-#import "MGLStyleLayer.h"
-#import "MGLForegroundStyleLayer.h"
-#import "MGLVectorStyleLayer.h"
-#import "MGLFillExtrusionStyleLayer.h"
-#import "MGLFillStyleLayer.h"
-#import "MGLLineStyleLayer.h"
-#import "MGLSymbolStyleLayer.h"
-#import "MGLRasterStyleLayer.h"
-#import "MGLCircleStyleLayer.h"
-#import "MGLHeatmapStyleLayer.h"
-#import "MGLHillshadeStyleLayer.h"
-#import "MGLBackgroundStyleLayer.h"
-#import "MGLOpenGLStyleLayer.h"
-#import "MGLSource.h"
-#import "MGLTileSource.h"
-#import "MGLVectorTileSource.h"
-#import "MGLShapeSource.h"
-#import "MGLComputedShapeSource.h"
-#import "MGLRasterTileSource.h"
-#import "MGLRasterDEMSource.h"
-#import "MGLImageSource.h"
-#import "MGLShapeOfflineRegion.h"
-#import "MGLTilePyramidOfflineRegion.h"
-#import "MGLTypes.h"
-#import "MGLUserLocation.h"
-#import "MGLUserLocationAnnotationView.h"
-#import "NSValue+MGLAdditions.h"
-#import "MGLStyleValue.h"
-#import "MGLAttributionInfo.h"
-#import "MGLMapSnapshotter.h"
-#import "NSExpression+MGLAdditions.h"
-#import "NSPredicate+MGLAdditions.h"
-#import "MGLLocationManager.h"
-#import "MGLLoggingConfiguration.h"
-#import "MGLNetworkConfiguration.h"
-#import "MGLAttributedExpression.h"
-#import "MGLSDKMetricsManager.h"
diff --git a/platform/ios/src/NSOrthography+MGLAdditions.h b/platform/ios/src/NSOrthography+MGLAdditions.h
deleted file mode 100644
index a552fc7774..0000000000
--- a/platform/ios/src/NSOrthography+MGLAdditions.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface NSOrthography (NSOrthography_MGLAdditions)
-
-/**
- Returns a four-letter ISO 15924 code representing the name of the dominant
- script for a given language.
-
- On iOS 11 or newer, this method wraps
- `+[NSOrthography defaultOrthographyForLanguage:]` and supports any language.
- On iOS 10 and older, this method only returns values for Mapbox
- Streets-supported languages.
-
- @param language The ISO-639 code representing a language.
- */
-+ (NSString *)mgl_dominantScriptForMapboxStreetsLanguage:(NSString *)language;
-
-@end
diff --git a/platform/ios/src/NSOrthography+MGLAdditions.m b/platform/ios/src/NSOrthography+MGLAdditions.m
deleted file mode 100644
index f48a2ffcbe..0000000000
--- a/platform/ios/src/NSOrthography+MGLAdditions.m
+++ /dev/null
@@ -1,37 +0,0 @@
-#import "NSOrthography+MGLAdditions.h"
-
-@implementation NSOrthography (MGLAdditions)
-
-+ (NSString *)mgl_dominantScriptForMapboxStreetsLanguage:(NSString *)language {
- if (@available(iOS 11.0, *)) {
- NSLocale *locale = [NSLocale localeWithLocaleIdentifier:language];
- NSOrthography *orthography = [NSOrthography defaultOrthographyForLanguage:locale.localeIdentifier];
-
- return orthography.dominantScript;
- }
-
- // Manually map Mapbox Streets languages to ISO 15924 script codes.
- NSSet *latinLanguages = [NSSet setWithObjects:@"de", @"en", @"es", @"fr", @"pt", nil];
- NSSet *hansLanguages = [NSSet setWithObjects:@"zh", @"zh-Hans", nil];
-
- if ([latinLanguages containsObject:language]) {
- return @"Latn";
- } else if ([hansLanguages containsObject:language]) {
- return @"Hans";
- } else if ([language isEqualToString:@"zh-Hant"]) {
- return @"Hant";
- } else if ([language isEqualToString:@"ru"]) {
- return @"Cyrl";
- } else if ([language isEqualToString:@"ar"]) {
- return @"Arab";
- } else if ([language isEqualToString:@"ja"]) {
- return @"Jpan";
- } else if ([language isEqualToString:@"ko"]) {
- return @"Kore";
- } else {
- // Code for undetermined script
- return @"Zyyy";
- }
-}
-
-@end
diff --git a/platform/ios/src/UIColor+MGLAdditions.h b/platform/ios/src/UIColor+MGLAdditions.h
deleted file mode 100644
index 19702fa105..0000000000
--- a/platform/ios/src/UIColor+MGLAdditions.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#include <mbgl/util/color.hpp>
-#include <mbgl/style/property_value.hpp>
-
-@interface UIColor (MGLAdditions)
-
-- (mbgl::Color)mgl_color;
-
-- (mbgl::style::PropertyValue<mbgl::Color>)mgl_colorPropertyValue;
-
-+ (UIColor *)mgl_colorWithColor:(mbgl::Color)color;
-
-@end
-
-@interface NSExpression (MGLColorAdditions)
-
-+ (NSExpression *)mgl_expressionForRGBComponents:(NSArray<NSExpression *> *)components;
-+ (NSExpression *)mgl_expressionForRGBAComponents:(NSArray<NSExpression *> *)components;
-+ (UIColor *)mgl_colorWithRGBComponents:(NSArray<NSExpression *> *)components;
-
-@end
diff --git a/platform/ios/src/UIColor+MGLAdditions.mm b/platform/ios/src/UIColor+MGLAdditions.mm
deleted file mode 100644
index 68e77f5b10..0000000000
--- a/platform/ios/src/UIColor+MGLAdditions.mm
+++ /dev/null
@@ -1,86 +0,0 @@
-#import "UIColor+MGLAdditions.h"
-
-@implementation UIColor (MGLAdditions)
-
-- (mbgl::Color)mgl_color
-{
- CGFloat r, g, b, a;
- [self getRed:&r green:&g blue:&b alpha:&a];
- // UIColor provides non-premultiplied color components, so we have to premultiply each
- // color component with the alpha value to transform it into a valid
- // mbgl::Color which expects premultiplied color components.
- return { static_cast<float>(r*a), static_cast<float>(g*a), static_cast<float>(b*a), static_cast<float>(a) };
-}
-
-- (mbgl::style::PropertyValue<mbgl::Color>)mgl_colorPropertyValue
-{
- mbgl::Color color = self.mgl_color;
- return {{ color.r, color.g, color.b, color.a }};
-}
-
-+ (UIColor *)mgl_colorWithColor:(mbgl::Color)color
-{
- // If there is no alpha value, return original color values.
- if (color.a == 0.0f) {
- return [UIColor colorWithRed:color.r green:color.g blue:color.b alpha:color.a];
- }
-
- // mbgl::Color provides premultiplied color components, so we have to convert color
- // components to non-premultiplied values to return a valid UIColor object.
- float red = static_cast<float>((color.r / color.a));
- float green = static_cast<float>((color.g / color.a));
- float blue = static_cast<float>((color.b / color.a));
-
- return [UIColor colorWithRed:red green:green blue:blue alpha:color.a];
-}
-
-@end
-
-@implementation NSExpression (MGLColorAdditions)
-
-+ (NSExpression *)mgl_expressionForRGBComponents:(NSArray<NSExpression *> *)components {
- if (UIColor *color = [self mgl_colorWithRGBComponents:components]) {
- return [NSExpression expressionForConstantValue:color];
- }
-
- NSExpression *color = [NSExpression expressionForConstantValue:[UIColor class]];
- NSExpression *alpha = [NSExpression expressionForConstantValue:@1.0];
- return [NSExpression expressionForFunction:color
- selectorName:@"colorWithRed:green:blue:alpha:"
- arguments:[components arrayByAddingObject:alpha]];
-}
-
-+ (NSExpression *)mgl_expressionForRGBAComponents:(NSArray<NSExpression *> *)components {
- if (UIColor *color = [self mgl_colorWithRGBComponents:components]) {
- return [NSExpression expressionForConstantValue:color];
- }
-
- NSExpression *color = [NSExpression expressionForConstantValue:[UIColor class]];
- return [NSExpression expressionForFunction:color
- selectorName:@"colorWithRed:green:blue:alpha:"
- arguments:components];
-}
-
-+ (UIColor *)mgl_colorWithRGBComponents:(NSArray<NSExpression *> *)components {
- if (components.count < 3 || components.count > 4) {
- return nil;
- }
-
- for (NSExpression *component in components) {
- if (component.expressionType != NSConstantValueExpressionType) {
- return nil;
- }
-
- NSNumber *number = (NSNumber *)component.constantValue;
- if (![number isKindOfClass:[NSNumber class]]) {
- return nil;
- }
- }
-
- return [UIColor colorWithRed:[components[0].constantValue doubleValue] / 255.0
- green:[components[1].constantValue doubleValue] / 255.0
- blue:[components[2].constantValue doubleValue] / 255.0
- alpha:components.count == 3 ? 1.0 : [components[3].constantValue doubleValue]];
-}
-
-@end
diff --git a/platform/ios/src/UIDevice+MGLAdditions.h b/platform/ios/src/UIDevice+MGLAdditions.h
deleted file mode 100644
index a61aedf2db..0000000000
--- a/platform/ios/src/UIDevice+MGLAdditions.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import <UIKit/UIKit.h>
-
-@interface UIDevice (MGLAdditions)
-
-@property (nonatomic, readonly) BOOL mgl_isLegacyDevice;
-
-@end
diff --git a/platform/ios/src/UIDevice+MGLAdditions.m b/platform/ios/src/UIDevice+MGLAdditions.m
deleted file mode 100644
index 3522c07401..0000000000
--- a/platform/ios/src/UIDevice+MGLAdditions.m
+++ /dev/null
@@ -1,53 +0,0 @@
-#import "UIDevice+MGLAdditions.h"
-#include <sys/sysctl.h>
-
-@implementation UIDevice (MGLAdditions)
-
-- (NSString *)modelString {
-#if TARGET_OS_SIMULATOR
- return [[[NSProcessInfo processInfo] environment] objectForKey:@"SIMULATOR_MODEL_IDENTIFIER"];
-#else
- char *typeSpecifier = "hw.machine";
-
- size_t size;
- sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);
-
- char *answer = malloc(size);
- sysctlbyname(typeSpecifier, answer, &size, NULL, 0);
-
- NSString *results = [NSString stringWithCString:answer encoding:NSUTF8StringEncoding];
-
- free(answer);
- return results;
-#endif
-}
-
-- (BOOL)mgl_isLegacyDevice {
- // This is a list of supported devices that cannot maintain a reasonable frame
- // rate under typical load. For brevity, unsupported devices are not included.
- NSSet *blacklist = [NSSet setWithObjects:
- @"iPhone4", // iPhone 4s
- @"iPhone5", // iPhone 5, 5c
- @"iPhone6", // iPhone 5s
-
- @"iPad2", // iPad 2, Mini
- @"iPad3", // iPad 3
- @"iPad4", // iPad Air, Mini 2, Mini 3
-
- @"iPod5", // iPod Touch 5
-
- nil
- ];
-
- NSString *model = [self modelString];
-
- for (NSString *blacklistedModel in blacklist) {
- if ([model hasPrefix:[blacklistedModel stringByAppendingString:@","]]) {
- return YES;
- }
- }
-
- return NO;
-}
-
-@end
diff --git a/platform/ios/src/UIImage+MGLAdditions.h b/platform/ios/src/UIImage+MGLAdditions.h
deleted file mode 100644
index 23fac9dbeb..0000000000
--- a/platform/ios/src/UIImage+MGLAdditions.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "MGLTypes.h"
-
-#include <mbgl/style/image.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-FOUNDATION_EXTERN MGL_EXPORT MGLExceptionName const MGLResourceNotFoundException;
-
-@interface UIImage (MGLAdditions)
-
-- (nullable instancetype)initWithMGLStyleImage:(const mbgl::style::Image *)styleImage;
-
-- (nullable instancetype)initWithMGLPremultipliedImage:(const mbgl::PremultipliedImage&&)mbglImage scale:(CGFloat)scale;
-
-- (std::unique_ptr<mbgl::style::Image>)mgl_styleImageWithIdentifier:(NSString *)identifier;
-
-- (mbgl::PremultipliedImage)mgl_premultipliedImage;
-
-+ (UIImage *)mgl_resourceImageNamed:(NSString *)imageName;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/UIImage+MGLAdditions.mm b/platform/ios/src/UIImage+MGLAdditions.mm
deleted file mode 100644
index 9d05abd6ca..0000000000
--- a/platform/ios/src/UIImage+MGLAdditions.mm
+++ /dev/null
@@ -1,64 +0,0 @@
-#import "UIImage+MGLAdditions.h"
-#import "NSBundle+MGLAdditions.h"
-
-#include <mbgl/util/image+MGLAdditions.hpp>
-
-const MGLExceptionName MGLResourceNotFoundException = @"MGLResourceNotFoundException";
-
-@implementation UIImage (MGLAdditions)
-
-- (nullable instancetype)initWithMGLStyleImage:(const mbgl::style::Image *)styleImage
-{
- CGImageRef image = CGImageCreateWithMGLPremultipliedImage(styleImage->getImage().clone());
- if (!image) {
- return nil;
- }
-
- if (self = [self initWithCGImage:image scale:styleImage->getPixelRatio() orientation:UIImageOrientationUp])
- {
- if (styleImage->isSdf())
- {
- self = [self imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- }
- }
- CGImageRelease(image);
- return self;
-}
-
-- (nullable instancetype)initWithMGLPremultipliedImage:(const mbgl::PremultipliedImage&&)mbglImage scale:(CGFloat)scale
-{
- CGImageRef image = CGImageCreateWithMGLPremultipliedImage(mbglImage.clone());
- if (!image) {
- return nil;
- }
-
- self = [self initWithCGImage:image scale:scale orientation:UIImageOrientationUp];
-
- CGImageRelease(image);
- return self;
-}
-
-- (std::unique_ptr<mbgl::style::Image>)mgl_styleImageWithIdentifier:(NSString *)identifier {
- BOOL isTemplate = self.renderingMode == UIImageRenderingModeAlwaysTemplate;
- return std::make_unique<mbgl::style::Image>([identifier UTF8String],
- self.mgl_premultipliedImage,
- float(self.scale), isTemplate);
-}
-
-- (mbgl::PremultipliedImage)mgl_premultipliedImage {
- return MGLPremultipliedImageFromCGImage(self.CGImage);
-}
-
-+ (UIImage *)mgl_resourceImageNamed:(NSString *)imageName {
- UIImage *image = [UIImage imageNamed:imageName
- inBundle:[NSBundle mgl_frameworkBundle]
- compatibleWithTraitCollection:nil];
-
- if (!image) {
- [NSException raise:MGLResourceNotFoundException format:@"The resource named “%@” could not be found in the Mapbox framework bundle.", imageName];
- }
-
- return image;
-}
-
-@end
diff --git a/platform/ios/src/UIView+MGLAdditions.h b/platform/ios/src/UIView+MGLAdditions.h
deleted file mode 100644
index ef074215b3..0000000000
--- a/platform/ios/src/UIView+MGLAdditions.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface UIView (MGLAdditions)
-
-- (nullable UIViewController *)mgl_viewControllerForLayoutGuides;
-
-- (NSLayoutYAxisAnchor *)mgl_safeTopAnchor;
-
-- (NSLayoutXAxisAnchor *)mgl_safeLeadingAnchor;
-
-- (NSLayoutYAxisAnchor *)mgl_safeBottomAnchor;
-
-- (NSLayoutXAxisAnchor *)mgl_safeTrailingAnchor;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/UIView+MGLAdditions.m b/platform/ios/src/UIView+MGLAdditions.m
deleted file mode 100644
index 43c54409bd..0000000000
--- a/platform/ios/src/UIView+MGLAdditions.m
+++ /dev/null
@@ -1,69 +0,0 @@
-#import "UIView+MGLAdditions.h"
-
-@implementation UIView (MGLAdditions)
-
-- (UIViewController *)mgl_viewControllerForLayoutGuides
-{
- // Per -[UIResponder nextResponder] documentation, a UIView’s next responder
- // is its managing UIViewController if applicable, or otherwise its
- // superview. UIWindow’s next responder is UIApplication, which has no next
- // responder.
- UIResponder *laterResponder = self;
- while ([laterResponder isKindOfClass:[UIView class]])
- {
- laterResponder = laterResponder.nextResponder;
- }
- if ([laterResponder isKindOfClass:[UIViewController class]])
- {
- return (UIViewController *)laterResponder;
- }
- return nil;
-}
-
-- (NSLayoutYAxisAnchor *)mgl_safeTopAnchor {
- if (@available(iOS 11.0, *)) {
- return self.safeAreaLayoutGuide.topAnchor;
- } else {
- UIViewController *viewController = self.mgl_viewControllerForLayoutGuides;
- BOOL useLayoutGuides = viewController.view && viewController.automaticallyAdjustsScrollViewInsets;
- if (useLayoutGuides) {
- return viewController.topLayoutGuide.bottomAnchor;
- }
- else {
- return self.topAnchor;
- }
- }
-}
-
-- (NSLayoutXAxisAnchor *)mgl_safeLeadingAnchor {
- if (@available(iOS 11.0, *)) {
- return self.safeAreaLayoutGuide.leadingAnchor;
- } else {
- return self.leadingAnchor;
- }
-}
-
-- (NSLayoutYAxisAnchor *)mgl_safeBottomAnchor {
- if (@available(iOS 11.0, *)) {
- return self.safeAreaLayoutGuide.bottomAnchor;
- } else {
- UIViewController *viewController = self.mgl_viewControllerForLayoutGuides;
- BOOL useLayoutGuides = viewController.view && viewController.automaticallyAdjustsScrollViewInsets;
- if (useLayoutGuides) {
- return viewController.bottomLayoutGuide.topAnchor;
- }
- else {
- return self.bottomAnchor;
- }
- }
-}
-
-- (NSLayoutXAxisAnchor *)mgl_safeTrailingAnchor {
- if (@available(iOS 11.0, *)) {
- return self.safeAreaLayoutGuide.trailingAnchor;
- } else {
- return self.trailingAnchor;
- }
-}
-
-@end
diff --git a/platform/ios/src/UIViewController+MGLAdditions.h b/platform/ios/src/UIViewController+MGLAdditions.h
deleted file mode 100644
index b60375a6f6..0000000000
--- a/platform/ios/src/UIViewController+MGLAdditions.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface UIViewController (MGLAdditions)
-
-@property (readonly) UIViewController *mgl_topMostViewController;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/UIViewController+MGLAdditions.m b/platform/ios/src/UIViewController+MGLAdditions.m
deleted file mode 100644
index 746fdd8db8..0000000000
--- a/platform/ios/src/UIViewController+MGLAdditions.m
+++ /dev/null
@@ -1,22 +0,0 @@
-#import "UIViewController+MGLAdditions.h"
-
-@implementation UIViewController (MGLAdditions)
-
-- (UIViewController *)mgl_topMostViewController
-{
- if ([self isKindOfClass:[UINavigationController class]])
- {
- return [[(UINavigationController *)self visibleViewController] mgl_topMostViewController];
- }
- else if ([self isKindOfClass:[UITabBarController class]])
- {
- return [[(UITabBarController *)self selectedViewController] mgl_topMostViewController];
- }
- else if (self.presentedViewController)
- {
- return [self.presentedViewController mgl_topMostViewController];
- }
- return self;
-}
-
-@end
diff --git a/platform/ios/test/Info.plist b/platform/ios/test/Info.plist
deleted file mode 100644
index ba72822e87..0000000000
--- a/platform/ios/test/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/platform/ios/test/MGLAccountManagerTests.m b/platform/ios/test/MGLAccountManagerTests.m
deleted file mode 100644
index fd59de2fd5..0000000000
--- a/platform/ios/test/MGLAccountManagerTests.m
+++ /dev/null
@@ -1,25 +0,0 @@
-#import <XCTest/XCTest.h>
-#import <Mapbox/Mapbox.h>
-
-@interface MBXAccounts: NSObject
-@property (class, nonatomic, readonly) NSString *skuToken;
-@end
-
-@implementation MBXAccounts
-
-+ (NSString *)skuToken {
- return @"foo";
-}
-
-@end
-
-@interface MGLAccountManagerTests : XCTestCase
-@end
-
-@implementation MGLAccountManagerTests
-
-- (void)testSKU {
- XCTAssertTrue([[MGLAccountManager valueForKeyPath:@"skuToken"] isEqualToString:@"foo"]);
-}
-
-@end
diff --git a/platform/ios/test/MGLAnnotationViewIntegrationTests.swift b/platform/ios/test/MGLAnnotationViewIntegrationTests.swift
deleted file mode 100644
index 82a57a4009..0000000000
--- a/platform/ios/test/MGLAnnotationViewIntegrationTests.swift
+++ /dev/null
@@ -1,23 +0,0 @@
-import XCTest
-import Mapbox
-
-class CustomAnnotationView: MGLAnnotationView {
-
- override init(reuseIdentifier: String?) {
- super.init(reuseIdentifier: reuseIdentifier)
- }
-
- required init?(coder aDecoder: NSCoder) {
- super.init(coder: aDecoder)
- }
-
-}
-
-class MGLAnnotationViewIntegrationTests: XCTestCase {
-
- func testCreatingCustomAnnotationView() {
- let customAnnotationView = CustomAnnotationView(reuseIdentifier: "resuse-id")
- XCTAssertNotNil(customAnnotationView)
- }
-
-}
diff --git a/platform/ios/test/MGLAnnotationViewTests.m b/platform/ios/test/MGLAnnotationViewTests.m
deleted file mode 100644
index bb85ea8c8a..0000000000
--- a/platform/ios/test/MGLAnnotationViewTests.m
+++ /dev/null
@@ -1,273 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import "MGLTestUtility.h"
-
-static NSString * const MGLTestAnnotationReuseIdentifer = @"MGLTestAnnotationReuseIdentifer";
-
-
-@interface MGLMapView (Tests)
-@property (nonatomic) MGLCameraChangeReason cameraChangeReasonBitmask;
-@end
-
-
-
-@interface MGLCustomAnnotationView : MGLAnnotationView
-
-@end
-
-@implementation MGLCustomAnnotationView
-
-- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {
- return [super initWithReuseIdentifier:@"reuse-id"];
-}
-
-@end
-
-@interface MGLAnnotationView (Test)
-
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic, readwrite) MGLAnnotationViewDragState dragState;
-- (void)setDragState:(MGLAnnotationViewDragState)dragState;
-
-@end
-
-@interface MGLMapView (Test)
-@property (nonatomic) UIView<MGLCalloutView> *calloutViewForSelectedAnnotation;
-@end
-
-@interface MGLTestAnnotation : NSObject <MGLAnnotation>
-@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
-@end
-
-@implementation MGLTestAnnotation
-@end
-
-@interface MGLTestCalloutView: UIView<MGLCalloutView>
-@property (nonatomic) BOOL didCallDismissCalloutAnimated;
-@property (nonatomic, strong) id <MGLAnnotation> representedObject;
-@property (nonatomic, strong) UIView *leftAccessoryView;
-@property (nonatomic, strong) UIView *rightAccessoryView;
-@property (nonatomic, weak) id<MGLCalloutViewDelegate> delegate;
-@end
-
-@implementation MGLTestCalloutView
-
-- (void)dismissCalloutAnimated:(BOOL)animated
-{
- _didCallDismissCalloutAnimated = YES;
-}
-
-- (void)presentCalloutFromRect:(CGRect)rect inView:(nonnull UIView *)view constrainedToRect:(CGRect)constrainedRect animated:(BOOL)animated {}
-
-@end
-
-@interface MGLAnnotationViewTests : XCTestCase <MGLMapViewDelegate>
-@property (nonatomic) XCTestExpectation *expectation;
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic, weak) MGLAnnotationView *annotationView;
-@property (nonatomic) NSInteger annotationSelectedCount;
-@property (nonatomic) void (^prepareAnnotationView)(MGLAnnotationView*);
-@end
-
-@implementation MGLAnnotationViewTests
-
-- (void)setUp
-{
- [super setUp];
- _mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 64, 64)];
- _mapView.delegate = self;
-}
-
-- (void)testAnnotationView
-{
- _expectation = [self expectationWithDescription:@"annotation property"];
-
- MGLTestAnnotation *annotation = [[MGLTestAnnotation alloc] init];
- [_mapView addAnnotation:annotation];
-
- [self waitForExpectationsWithTimeout:5 handler:nil];
-
- XCTAssert(_mapView.annotations.count == 1, @"number of annotations should be 1");
- XCTAssertNotNil(_annotationView.annotation, @"annotation property should not be nil");
- XCTAssertNotNil(_annotationView.mapView, @"mapView property should not be nil");
-
- MGLTestCalloutView *testCalloutView = [[MGLTestCalloutView alloc] init];
- _mapView.calloutViewForSelectedAnnotation = testCalloutView;
- _annotationView.dragState = MGLAnnotationViewDragStateStarting;
- XCTAssertTrue(testCalloutView.didCallDismissCalloutAnimated, @"callout view was not dismissed");
-
- [_mapView removeAnnotation:_annotationView.annotation];
-
- XCTAssert(_mapView.annotations.count == 0, @"number of annotations should be 0");
- XCTAssertNil(_annotationView.annotation, @"annotation property should be nil");
-}
-
-- (void)testCustomAnnotationView
-{
- MGLCustomAnnotationView *customAnnotationView = [[MGLCustomAnnotationView alloc] initWithReuseIdentifier:@"reuse-id"];
- XCTAssertNotNil(customAnnotationView);
-}
-
-- (void)testSelectingOffscreenAnnotation
-{
- // Partial test for https://github.com/mapbox/mapbox-gl-native/issues/9790
-
- // This isn't quite the same as in updateAnnotationViews, but should be sufficient for this test.
- MGLCoordinateBounds coordinateBounds = [_mapView convertRect:_mapView.bounds toCoordinateBoundsFromView:_mapView];
-
- // -90 latitude is invalid. TBD.
- BOOL anyOffscreen = NO;
- NSInteger selectionCount = 0;
-
- for (NSInteger latitude = -89; latitude <= 90; latitude += 10)
- {
- for (NSInteger longitude = -180; longitude <= 180; longitude += 10)
- {
- MGLTestAnnotation *annotation = [[MGLTestAnnotation alloc] init];
-
- annotation.coordinate = CLLocationCoordinate2DMake(latitude, longitude);
- [_mapView addAnnotation:annotation];
-
- if (!(MGLCoordinateInCoordinateBounds(annotation.coordinate, coordinateBounds)))
- anyOffscreen = YES;
-
- XCTAssertNil(_mapView.selectedAnnotations.firstObject, @"There should be no selected annotation");
-
- // First selection
- [_mapView selectAnnotation:annotation animated:NO completionHandler:nil];
- selectionCount++;
-
- XCTAssert(_mapView.selectedAnnotations.count == 1, @"There should only be 1 selected annotation");
- XCTAssertEqualObjects(_mapView.selectedAnnotations.firstObject, annotation, @"The annotation should be selected");
-
- // Deselect
- [_mapView deselectAnnotation:annotation animated:NO];
- XCTAssert(_mapView.selectedAnnotations.count == 0, @"There should be no selected annotations");
-
- // Second selection
- _mapView.selectedAnnotations = @[annotation];
- selectionCount++;
-
- XCTAssert(_mapView.selectedAnnotations.count == 1, @"There should be 1 selected annotation");
- XCTAssertEqualObjects(_mapView.selectedAnnotations.firstObject, annotation, @"The annotation should be selected");
-
- // Deselect
- [_mapView deselectAnnotation:annotation animated:NO];
- XCTAssert(_mapView.selectedAnnotations.count == 0, @"There should be no selected annotations");
- }
- }
-
- XCTAssert(anyOffscreen, @"At least one of these annotations should be offscreen");
- XCTAssertEqual(selectionCount, self.annotationSelectedCount, @"-mapView:didSelectAnnotation: should be called for each selection");
-}
-
-- (void)testSelectingOnscreenAnnotationThatHasNotBeenAdded {
- // See https://github.com/mapbox/mapbox-gl-native/issues/11476
-
- // This bug occurs under the following conditions:
- //
- // - There are content insets (e.g. navigation bar) for the compare against
- // CGRectZero (now CGRectNull)
- // - annotationView.enabled == NO - Currently this can happen if you use
- // `-initWithFrame:` rather than one of the provided initializers
- //
-
- self.prepareAnnotationView = ^(MGLAnnotationView *view) {
- view.enabled = NO;
- };
-
- self.mapView.contentInset = UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0);
-
- MGLCameraChangeReason reasonBefore = self.mapView.cameraChangeReasonBitmask;
- XCTAssert(reasonBefore == MGLCameraChangeReasonNone, @"Camera should not have moved at start of test");
-
- // Create annotation
- MGLPointFeature *point = [[MGLPointFeature alloc] init];
- point.title = NSStringFromSelector(_cmd);
- point.coordinate = CLLocationCoordinate2DMake(0.0, 0.0);
-
- MGLCoordinateBounds coordinateBounds = [self.mapView convertRect:self.mapView.bounds toCoordinateBoundsFromView:self.mapView];
- XCTAssert(MGLCoordinateInCoordinateBounds(point.coordinate, coordinateBounds), @"The test point should be within the visible map view");
-
- // Select on screen annotation (DO NOT ADD FIRST).
- [self.mapView selectAnnotation:point animated:YES completionHandler:nil];
-
- // Expect - the camera NOT to move.
- MGLCameraChangeReason reasonAfter = self.mapView.cameraChangeReasonBitmask;
- XCTAssert(reasonAfter == MGLCameraChangeReasonNone, @"Camera should not have moved");
-}
-
-- (void)checkDefaultPropertiesForAnnotationView:(MGLAnnotationView*)view {
- XCTAssertNil(view.annotation);
- XCTAssertNil(view.reuseIdentifier);
- XCTAssertEqual(view.centerOffset.dx, 0.0);
- XCTAssertEqual(view.centerOffset.dy, 0.0);
- XCTAssertFalse(view.scalesWithViewingDistance);
- XCTAssertFalse(view.rotatesToMatchCamera);
- XCTAssertFalse(view.isSelected);
- XCTAssert(view.isEnabled);
- XCTAssertFalse(view.isDraggable);
- XCTAssertEqual(view.dragState, MGLAnnotationViewDragStateNone);
-}
-
-- (void)testAnnotationViewInitWithFramePENDING {
- MGL_CHECK_IF_PENDING_TEST_SHOULD_RUN();
- CGRect frame = CGRectMake(10.0, 10.0, 100.0, 100.0);
- MGLAnnotationView *view = [[MGLAnnotationView alloc] initWithFrame:frame];
- [self checkDefaultPropertiesForAnnotationView:view];
-}
-
-- (void)testAnnotationViewInitWithReuseIdentifier {
- MGLAnnotationView *view = [[MGLAnnotationView alloc] initWithReuseIdentifier:nil];
- [self checkDefaultPropertiesForAnnotationView:view];
-}
-
-- (void)testSelectingADisabledAnnotationViewPENDING {
- MGL_CHECK_IF_PENDING_TEST_SHOULD_RUN();
- self.prepareAnnotationView = ^(MGLAnnotationView *view) {
- view.enabled = NO;
- };
-
- // Create annotation
- MGLPointFeature *point = [[MGLPointFeature alloc] init];
- point.title = NSStringFromSelector(_cmd);
- point.coordinate = CLLocationCoordinate2DMake(0.0, 0.0);
-
- XCTAssert(self.mapView.selectedAnnotations.count == 0, @"There should be 0 selected annotations");
-
- [self.mapView selectAnnotation:point animated:NO completionHandler:nil];
-
- XCTAssert(self.mapView.selectedAnnotations.count == 0, @"There should be 0 selected annotations");
-}
-
-#pragma mark - MGLMapViewDelegate -
-
-- (MGLAnnotationView *)mapView:(MGLMapView *)mapView viewForAnnotation:(id<MGLAnnotation>)annotation
-{
- MGLAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:MGLTestAnnotationReuseIdentifer];
-
- if (!annotationView)
- {
- annotationView = [[MGLAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:MGLTestAnnotationReuseIdentifer];
- }
-
- if (self.prepareAnnotationView) {
- self.prepareAnnotationView(annotationView);
- }
-
- _annotationView = annotationView;
-
- return annotationView;
-}
-
-- (void)mapView:(MGLMapView *)mapView didAddAnnotationViews:(NSArray<MGLAnnotationView *> *)annotationViews
-{
- [_expectation fulfill];
-}
-
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id<MGLAnnotation>)annotation
-{
- self.annotationSelectedCount++;
-}
-
-@end
diff --git a/platform/ios/test/MGLMapAccessibilityElementTests.m b/platform/ios/test/MGLMapAccessibilityElementTests.m
deleted file mode 100644
index 916461e708..0000000000
--- a/platform/ios/test/MGLMapAccessibilityElementTests.m
+++ /dev/null
@@ -1,87 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "../../ios/src/MGLMapAccessibilityElement.h"
-
-@interface MGLMapAccessibilityElementTests : XCTestCase
-@end
-
-@implementation MGLMapAccessibilityElementTests
-
-- (void)testFeatureLabels {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- feature.attributes = @{
- @"name": @"Local",
- @"name_en": @"English",
- @"name_es": @"Spanish",
- @"name_fr": @"French",
- @"name_tlh": @"Klingon",
- };
- MGLFeatureAccessibilityElement *element = [[MGLFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:feature];
- XCTAssertEqualObjects(element.accessibilityLabel, @"English", @"Accessibility label should be localized.");
-
- feature.attributes = @{
- @"name": @"Цинциннати",
- @"name_en": @"Цинциннати",
- };
- element = [[MGLFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:feature];
- XCTAssertEqualObjects(element.accessibilityLabel, @"Cincinnati", @"Accessibility label should be romanized.");
-}
-
-- (void)testPlaceFeatureValues {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- feature.attributes = @{
- @"type": @"village_green",
- };
- MGLPlaceFeatureAccessibilityElement *element = [[MGLPlaceFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:feature];
- XCTAssertEqualObjects(element.accessibilityValue, @"village green");
-
- feature = [[MGLPointFeature alloc] init];
- feature.attributes = @{
- @"maki": @"cat",
- };
- element = [[MGLPlaceFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:feature];
- XCTAssertEqualObjects(element.accessibilityValue, @"cat");
-
- feature = [[MGLPointFeature alloc] init];
- feature.attributes = @{
- @"elevation_ft": @31337,
- @"elevation_m": @1337,
- };
- element = [[MGLPlaceFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:feature];
- XCTAssertEqualObjects(element.accessibilityValue, @"31,337 feet");
-}
-
-- (void)testRoadFeatureValues {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0, 0),
- CLLocationCoordinate2DMake(0, 1),
- CLLocationCoordinate2DMake(1, 2),
- CLLocationCoordinate2DMake(2, 2),
- };
- MGLPolylineFeature *roadFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates count:sizeof(coordinates) / sizeof(coordinates[0])];
- roadFeature.attributes = @{
- @"ref": @"42",
- @"oneway": @"true",
- };
- MGLRoadFeatureAccessibilityElement *element = [[MGLRoadFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:roadFeature];
- XCTAssertEqualObjects(element.accessibilityValue, @"Route 42, One way, southwest to northeast");
-
- CLLocationCoordinate2D opposingCoordinates[] = {
- CLLocationCoordinate2DMake(2, 1),
- CLLocationCoordinate2DMake(1, 0),
- };
- MGLPolylineFeature *opposingRoadFeature = [MGLPolylineFeature polylineWithCoordinates:opposingCoordinates count:sizeof(opposingCoordinates) / sizeof(opposingCoordinates[0])];
- opposingRoadFeature.attributes = @{
- @"ref": @"42",
- @"oneway": @"true",
- };
- MGLMultiPolylineFeature *dividedRoadFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:@[roadFeature, opposingRoadFeature]];
- dividedRoadFeature.attributes = @{
- @"ref": @"42",
- };
- element = [[MGLRoadFeatureAccessibilityElement alloc] initWithAccessibilityContainer:self feature:dividedRoadFeature];
- XCTAssertEqualObjects(element.accessibilityValue, @"Route 42, Divided road, southwest to northeast");
-}
-
-@end
diff --git a/platform/ios/test/MGLMapViewCompassViewTests.mm b/platform/ios/test/MGLMapViewCompassViewTests.mm
deleted file mode 100644
index aaec4b0bf7..0000000000
--- a/platform/ios/test/MGLMapViewCompassViewTests.mm
+++ /dev/null
@@ -1,98 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import <mbgl/math/wrap.hpp>
-
-@interface MGLMapView (MGLCompassButtonTests)
-- (void)resetNorthAnimated:(BOOL)animated;
-@end
-
-@interface MGLCompassButtonTests : XCTestCase
-@property (nonatomic) MGLMapView *mapView;
-@end
-
-@implementation MGLCompassButtonTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.mapView = [[MGLMapView alloc] initWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
-}
-
-- (void)tearDown {
- self.mapView = nil;
- [MGLAccountManager setAccessToken:nil];
-
- [super tearDown];
-}
-
-- (void)testCompassButton {
- XCTAssertNotNil(self.mapView.compassView);
- XCTAssertTrue([self.mapView.compassView isKindOfClass:[MGLCompassButton class]]);
- XCTAssertTrue(self.mapView.compassView.userInteractionEnabled);
- XCTAssertEqual(self.mapView.compassView.gestureRecognizers.count, (unsigned long)1);
- XCTAssertEqual(self.mapView.compassView.accessibilityTraits, UIAccessibilityTraitButton);
- XCTAssertNotNil(self.mapView.compassView.accessibilityLabel);
- XCTAssertNotNil(self.mapView.compassView.accessibilityHint);
-}
-
-- (void)testVisibilityAdaptive {
- XCTAssertEqual(self.mapView.compassView.compassVisibility, MGLOrnamentVisibilityAdaptive, @"Adaptive should be the default visibility setting.");
- XCTAssertEqual(self.mapView.compassView.alpha, 0, @"Compass should not initially be visible.");
-
- self.mapView.zoomLevel = 15.f;
- [self.mapView setDirection:45.f animated:false];
- XCTAssertEqualWithAccuracy(self.mapView.direction, 45, 0.001);
- XCTAssertEqual(self.mapView.compassView.alpha, 1, @"Compass should become visible when direction changes.");
-
- [self.mapView resetNorthAnimated:NO];
- XCTAssertEqual(self.mapView.direction, 0);
- XCTAssertEqual(self.mapView.compassView.alpha, 0, @"Compass should hide itself when direction is north.");
-}
-
-- (void)testVisibilityHidden {
- self.mapView.compassView.compassVisibility = MGLOrnamentVisibilityHidden;
- XCTAssertEqual(self.mapView.compassView.compassVisibility, MGLOrnamentVisibilityHidden);
- XCTAssertEqual(self.mapView.compassView.alpha, 0, @"Compass should not initially be visible.");
-
- self.mapView.zoomLevel = 15.f;
- [self.mapView setDirection:45.f animated:false];
- XCTAssertEqualWithAccuracy(self.mapView.direction, 45, 0.001);
- XCTAssertEqual(self.mapView.compassView.alpha, 0, @"Compass should stay hidden when direction changes.");
-}
-
-- (void)testVisibilityVisible {
- self.mapView.compassView.compassVisibility = MGLOrnamentVisibilityVisible;
- XCTAssertEqual(self.mapView.compassView.compassVisibility, MGLOrnamentVisibilityVisible);
- XCTAssertEqual(self.mapView.compassView.alpha, 1, @"Compass should initially be visible.");
-
- self.mapView.zoomLevel = 15.f;
- [self.mapView setDirection:45.f animated:false];
- XCTAssertEqualWithAccuracy(self.mapView.direction, 45, 0.001);
- XCTAssertEqual(self.mapView.compassView.alpha, 1, @"Compass should continue to be visible when direction changes.");
-
- [self.mapView resetNorthAnimated:NO];
- XCTAssertEqual(self.mapView.direction, 0);
- XCTAssertEqual(self.mapView.compassView.alpha, 1, @"Compass should continue to be visible when direction is north.");
-}
-
-- (void)testCompassRotation {
- self.mapView.zoomLevel = 15;
-
- for (NSNumber *degrees in @[@-999, @-359, @-240, @-180, @-90, @-45, @0, @45, @90, @180, @240, @360, @999]) {
- self.mapView.direction = [degrees doubleValue];
- CGFloat wrappedDirection = mbgl::util::wrap(-self.mapView.direction, 0., 360.);
- CGAffineTransform rotation = CGAffineTransformMakeRotation(MGLRadiansFromDegrees(wrappedDirection));
- XCTAssertTrue(CGAffineTransformEqualToTransform(self.mapView.compassView.transform, rotation),
- @"Compass transform direction %f° should equal wrapped transform direction %f° (~%.f°).", [self degreesFromAffineTransform:self.mapView.compassView.transform], [self degreesFromAffineTransform:rotation], wrappedDirection);
- }
-}
-
-- (CGFloat)degreesFromAffineTransform:(CGAffineTransform)transform {
- CGFloat angle = atan2f(transform.b, transform.a);
- return MGLDegreesFromRadians(angle);
-}
-
-@end
diff --git a/platform/ios/test/MGLMapViewContentInsetTests.m b/platform/ios/test/MGLMapViewContentInsetTests.m
deleted file mode 100644
index 185baf4a05..0000000000
--- a/platform/ios/test/MGLMapViewContentInsetTests.m
+++ /dev/null
@@ -1,177 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLMapViewContentInsetTests : XCTestCase <MGLMapViewDelegate>
-
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic) UIWindow *window;
-@property (nonatomic) UIViewController *viewController;
-@property (nonatomic) XCTestExpectation *styleLoadingExpectation;
-@property (assign) CGRect screenBounds;
-
-@end
-
-@implementation MGLMapViewContentInsetTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.screenBounds = UIScreen.mainScreen.bounds;
- self.mapView = [[MGLMapView alloc] initWithFrame:self.screenBounds styleURL:styleURL];
- self.mapView.zoomLevel = 16;
- self.mapView.delegate = self;
-
- self.viewController = [[UIViewController alloc] init];
- self.viewController.view = [[UIView alloc] initWithFrame:self.screenBounds];
- [self.viewController.view addSubview:self.mapView];
- self.window = [[UIWindow alloc] initWithFrame:self.screenBounds];
- [self.window addSubview:self.viewController.view];
- [self.window makeKeyAndVisible];
-
- if (!self.mapView.style) {
- _styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self waitForExpectationsWithTimeout:10 handler:nil];
- }
-}
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style {
- XCTAssertNotNil(mapView.style);
- XCTAssertEqual(mapView.style, style);
-
- [_styleLoadingExpectation fulfill];
-}
-
-- (void)tearDown {
- self.mapView = nil;
- [MGLAccountManager setAccessToken:nil];
- [super tearDown];
-}
-
-- (void)testContentInsetCenter {
- CLLocationCoordinate2D center = CLLocationCoordinate2DMake(1.0, 5.0);
- self.mapView.centerCoordinate = center;
- XCTAssertEqualWithAccuracy(self.mapView.centerCoordinate.latitude, center.latitude, 0.01);
- XCTAssertEqualWithAccuracy(self.mapView.centerCoordinate.longitude, center.longitude, 0.01);
-
- CGPoint centerPoint = [self.mapView convertCoordinate:center toPointToView:self.mapView];
-
- XCTAssertEqualWithAccuracy(centerPoint.x, self.screenBounds.size.width/2, 0.01);
- XCTAssertEqualWithAccuracy(centerPoint.y, self.screenBounds.size.height/2, 0.01);
-
- // shifting contentInset should keep the same centerCoordinate but shift the screen
- // center point accordingly
- UIEdgeInsets contentInset = UIEdgeInsetsMake(50.0, 10.0, 10.0, 30.0);
- self.mapView.contentInset = contentInset;
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
- XCTAssertEqualWithAccuracy(self.mapView.centerCoordinate.latitude, center.latitude, 0.01);
- XCTAssertEqualWithAccuracy(self.mapView.centerCoordinate.longitude, center.longitude, 0.01);
- CGPoint shiftedPoint = [self.mapView convertCoordinate:center toPointToView:self.mapView];
- CGPoint expectedShiftedPoint = CGPointMake((self.screenBounds.size.width/2) + ((contentInset.left - contentInset.right) / 2 ),
- (self.screenBounds.size.height/2) + ((contentInset.top - contentInset.bottom) / 2));
- XCTAssertEqualWithAccuracy(shiftedPoint.x, expectedShiftedPoint.x, 0.01);
- XCTAssertEqualWithAccuracy(shiftedPoint.y, expectedShiftedPoint.y, 0.01);
-
-
-}
-
-- (void)testContentInsetOrnaments {
- CGFloat margin = 8;
- self.mapView.contentInset = UIEdgeInsetsZero;
- UIView *scaleBar = self.mapView.scaleBar;
- CGPoint expectedScaleBarOrigin = CGPointMake(margin, margin);
- XCTAssertTrue(CGPointEqualToPoint(scaleBar.frame.origin, expectedScaleBarOrigin));
-
- UIView *compassView = self.mapView.compassView;
- CGFloat x = self.screenBounds.size.width - compassView.bounds.size.width - margin;
- CGPoint expectedCompassOrigin = CGPointMake(x, margin);
- XCTAssertTrue(CGPointEqualToPoint(compassView.frame.origin, expectedCompassOrigin));
-
- UIView *logoView = self.mapView.logoView;
- CGFloat y = self.screenBounds.size.height - logoView.bounds.size.height - margin;
- CGPoint expectedLogoOrigin = CGPointMake(margin, y);
- XCTAssertTrue(CGPointEqualToPoint(logoView.frame.origin, expectedLogoOrigin));
-
- UIView *attributionView = self.mapView.attributionButton;
- x = self.screenBounds.size.width - attributionView.bounds.size.width - margin;
- y = self.screenBounds.size.height - attributionView.bounds.size.height - margin;
- CGPoint expectedAttributionOrigin = CGPointMake(x, y);
- XCTAssertTrue(CGPointEqualToPoint(attributionView.frame.origin, expectedAttributionOrigin));
-
- UIEdgeInsets insets = UIEdgeInsetsMake(15, 10, 20, 5);
- self.viewController.automaticallyAdjustsScrollViewInsets = NO;
- self.mapView.contentInset = insets;
-
- [self.mapView setNeedsLayout];
- [self.mapView layoutIfNeeded];
-
- expectedScaleBarOrigin = CGPointMake(insets.left + self.mapView.scaleBarMargins.x, insets.top + self.mapView.scaleBarMargins.y);
- XCTAssertTrue(CGPointEqualToPoint(scaleBar.frame.origin, expectedScaleBarOrigin));
-
- x = self.screenBounds.size.width - compassView.bounds.size.width - insets.right - self.mapView.compassViewMargins.x;
- expectedCompassOrigin = CGPointMake(x, insets.top + self.mapView.compassViewMargins.y);
- XCTAssertTrue(CGPointEqualToPoint(compassView.frame.origin, expectedCompassOrigin));
-
- y = self.screenBounds.size.height - logoView.bounds.size.height - insets.bottom - self.mapView.logoViewMargins.y;
- expectedLogoOrigin = CGPointMake(insets.left + self.mapView.logoViewMargins.x, y);
- XCTAssertTrue(CGPointEqualToPoint(logoView.frame.origin, expectedLogoOrigin));
-
- x = self.screenBounds.size.width - attributionView.bounds.size.width - insets.right - self.mapView.attributionButtonMargins.x;
- y = self.screenBounds.size.height - attributionView.bounds.size.height - insets.bottom - self.mapView.attributionButtonMargins.y;
- expectedAttributionOrigin = CGPointMake(x, y);
- XCTAssertTrue(CGPointEqualToPoint(attributionView.frame.origin, expectedAttributionOrigin));
-
- // tests that passing negative values result in a 0 inset value
- insets = UIEdgeInsetsMake(-100, -100, -100, -100);
- self.mapView.contentInset = insets;
-
- [self.mapView setNeedsLayout];
- [self.mapView layoutIfNeeded];
-
- expectedScaleBarOrigin = CGPointMake(margin, margin);
- XCTAssertTrue(CGPointEqualToPoint(scaleBar.frame.origin, expectedScaleBarOrigin));
-
- x = self.screenBounds.size.width - compassView.bounds.size.width - margin;
- expectedCompassOrigin = CGPointMake(x, margin);
- XCTAssertTrue(CGPointEqualToPoint(compassView.frame.origin, expectedCompassOrigin));
-
- y = self.screenBounds.size.height - logoView.bounds.size.height - margin;
- expectedLogoOrigin = CGPointMake(margin, y);
- XCTAssertTrue(CGPointEqualToPoint(logoView.frame.origin, expectedLogoOrigin));
-
- x = self.screenBounds.size.width - attributionView.bounds.size.width - margin;
- y = self.screenBounds.size.height - attributionView.bounds.size.height - margin;
- expectedAttributionOrigin = CGPointMake(x, y);
- XCTAssertTrue(CGPointEqualToPoint(attributionView.frame.origin, expectedAttributionOrigin));
-
- self.mapView.automaticallyAdjustsContentInset = YES;
- insets = UIEdgeInsetsMake(100, 100, 100, 100);
- self.mapView.contentInset = insets;
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, insets));
-
- [self.mapView setNeedsLayout];
- [self.mapView layoutIfNeeded];
-
- // when automaticallyAdjustsContentInset = YES the content insets should be overwriten
- XCTAssertFalse(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, insets));
-
- expectedScaleBarOrigin = CGPointMake(margin, margin);
- XCTAssertTrue(CGPointEqualToPoint(scaleBar.frame.origin, expectedScaleBarOrigin));
-
- x = self.screenBounds.size.width - compassView.bounds.size.width - margin;
- expectedCompassOrigin = CGPointMake(x, margin);
- XCTAssertTrue(CGPointEqualToPoint(compassView.frame.origin, expectedCompassOrigin));
-
- y = self.screenBounds.size.height - logoView.bounds.size.height - margin;
- expectedLogoOrigin = CGPointMake(margin, y);
- XCTAssertTrue(CGPointEqualToPoint(logoView.frame.origin, expectedLogoOrigin));
-
- x = self.screenBounds.size.width - attributionView.bounds.size.width - margin;
- y = self.screenBounds.size.height - attributionView.bounds.size.height - margin;
- expectedAttributionOrigin = CGPointMake(x, y);
- XCTAssertTrue(CGPointEqualToPoint(attributionView.frame.origin, expectedAttributionOrigin));
-
-}
-
-@end
diff --git a/platform/ios/test/MGLMapViewDelegateIntegrationTests.swift b/platform/ios/test/MGLMapViewDelegateIntegrationTests.swift
deleted file mode 100644
index 172538c65b..0000000000
--- a/platform/ios/test/MGLMapViewDelegateIntegrationTests.swift
+++ /dev/null
@@ -1,103 +0,0 @@
-import XCTest
-import Mapbox
-
-class MGLMapViewDelegateIntegrationTests: XCTestCase {
-
- func testCoverage() {
- MGLSDKTestHelpers.checkTestsContainAllMethods(testClass: MGLMapViewDelegateIntegrationTests.self, in: MGLMapViewDelegate.self)
- }
-
-}
-
-extension MGLMapViewDelegateIntegrationTests: MGLMapViewDelegate {
-
- func mapViewRegionIsChanging(_ mapView: MGLMapView) {}
-
- func mapViewRegionIsChanging(_ mapView: MGLMapView, reason: MGLCameraChangeReason) {}
-
- func mapView(_ mapView: MGLMapView, regionIsChangingWith reason: MGLCameraChangeReason) {}
-
- func mapView(_ mapView: MGLMapView, didChange mode: MGLUserTrackingMode, animated: Bool) {}
-
- func mapViewDidFinishLoadingMap(_ mapView: MGLMapView) {}
-
- func mapViewDidStopLocatingUser(_ mapView: MGLMapView) {}
-
- func mapViewWillStartLoadingMap(_ mapView: MGLMapView) {}
-
- func mapViewWillStartLocatingUser(_ mapView: MGLMapView) {}
-
- func mapViewWillStartRenderingMap(_ mapView: MGLMapView) {}
-
- func mapViewWillStartRenderingFrame(_ mapView: MGLMapView) {}
-
- func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {}
-
- func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {}
-
- func mapView(_ mapView: MGLMapView, didDeselect annotation: MGLAnnotation) {}
-
- func mapView(_ mapView: MGLMapView, didSingleTapAt coordinate: CLLocationCoordinate2D) {}
-
- func mapView(_ mapView: MGLMapView, regionDidChangeAnimated animated: Bool) {}
-
- func mapView(_ mapView: MGLMapView, regionDidChangeWith reason: MGLCameraChangeReason, animated: Bool) {}
-
- func mapView(_ mapView: MGLMapView, regionWillChangeAnimated animated: Bool) {}
-
- func mapView(_ mapView: MGLMapView, regionWillChangeWith reason: MGLCameraChangeReason, animated: Bool) {}
-
- func mapViewDidFailLoadingMap(_ mapView: MGLMapView, withError error: Error) {}
-
- func mapView(_ mapView: MGLMapView, didUpdate userLocation: MGLUserLocation?) {}
-
- func mapViewDidFinishRenderingMap(_ mapView: MGLMapView, fullyRendered: Bool) {}
-
- func mapViewDidBecomeIdle(_ mapView: MGLMapView) {}
-
- func mapView(_ mapView: MGLMapView, didFailToLocateUserWithError error: Error) {}
-
- func mapView(_ mapView: MGLMapView, tapOnCalloutFor annotation: MGLAnnotation) {}
-
- func mapViewDidFinishRenderingFrame(_ mapView: MGLMapView, fullyRendered: Bool) {}
-
- func mapView(_ mapView: MGLMapView, shapeAnnotationIsEnabled annotation: MGLShape) -> Bool { return false }
-
- func mapView(_ mapView: MGLMapView, didAdd annotationViews: [MGLAnnotationView]) {}
-
- func mapView(_ mapView: MGLMapView, didSelect annotationView: MGLAnnotationView) {}
-
- func mapView(_ mapView: MGLMapView, didDeselect annotationView: MGLAnnotationView) {}
-
- func mapView(_ mapView: MGLMapView, alphaForShapeAnnotation annotation: MGLShape) -> CGFloat { return 0 }
-
- func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? { return nil }
-
- func mapView(_ mapView: MGLMapView, imageFor annotation: MGLAnnotation) -> MGLAnnotationImage? { return nil }
-
- func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool { return false }
-
- func mapView(_ mapView: MGLMapView, calloutViewFor annotation: MGLAnnotation) -> MGLCalloutView? { return nil }
-
- func mapView(_ mapView: MGLMapView, strokeColorForShapeAnnotation annotation: MGLShape) -> UIColor { return .black }
-
- func mapView(_ mapView: MGLMapView, fillColorForPolygonAnnotation annotation: MGLPolygon) -> UIColor { return .black }
-
- func mapView(_ mapView: MGLMapView, leftCalloutAccessoryViewFor annotation: MGLAnnotation) -> UIView? { return nil }
-
- func mapView(_ mapView: MGLMapView, lineWidthForPolylineAnnotation annotation: MGLPolyline) -> CGFloat { return 0 }
-
- func mapView(_ mapView: MGLMapView, rightCalloutAccessoryViewFor annotation: MGLAnnotation) -> UIView? { return nil }
-
- func mapView(_ mapView: MGLMapView, annotation: MGLAnnotation, calloutAccessoryControlTapped control: UIControl) {}
-
- func mapView(_ mapView: MGLMapView, shouldChangeFrom oldCamera: MGLMapCamera, to newCamera: MGLMapCamera) -> Bool { return false }
-
- func mapView(_ mapView: MGLMapView, shouldChangeFrom oldCamera: MGLMapCamera, to newCamera: MGLMapCamera, reason: MGLCameraChangeReason) -> Bool { return false }
-
- func mapViewUserLocationAnchorPoint(_ mapView: MGLMapView) -> CGPoint { return CGPoint(x: 100, y: 100) }
-
- func mapView(_ mapView: MGLMapView, didFailToLoadImage imageName: String) -> UIImage? { return nil }
-
- func mapView(_ mapView: MGLMapView, shouldRemoveStyleImage imageName: String) -> Bool { return false }
-}
diff --git a/platform/ios/test/MGLMapViewDirectionTests.mm b/platform/ios/test/MGLMapViewDirectionTests.mm
deleted file mode 100644
index 81e169432b..0000000000
--- a/platform/ios/test/MGLMapViewDirectionTests.mm
+++ /dev/null
@@ -1,126 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import "MGLMockGestureRecognizers.h"
-
-#import <mbgl/math/wrap.hpp>
-
-@interface MGLMapView (MGLMapViewDirectionTests)
-- (void)handleRotateGesture:(UIRotationGestureRecognizer *)rotate;
-- (void)resetNorthAnimated:(BOOL)animated;
-@end
-
-
-@interface MGLMapViewDirectionTests : XCTestCase
-@property (nonatomic) MGLMapView *mapView;
-@end
-
-@implementation MGLMapViewDirectionTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 64, 64) styleURL:styleURL];
-}
-
-- (void)tearDown {
- self.mapView = nil;
- [MGLAccountManager setAccessToken:nil];
- [super tearDown];
-}
-
-- (void)testDirection {
- self.mapView.zoomLevel = 0;
- self.mapView.direction = 30;
- XCTAssertEqual(self.mapView.direction, 0, @"Rotation is not allowed at world-scale zoom levels.");
-
- self.mapView.zoomLevel = 15;
- CLLocationCoordinate2D originalCenterCoordinate = self.mapView.centerCoordinate;
-
- for (NSNumber *degrees in @[@-999, @-359, @-240, @-180, @-90, @-45, @0, @45, @90, @180, @240, @360, @999]) {
- double inputDegrees = [degrees doubleValue];
- double wrappedDegrees = mbgl::util::wrap(inputDegrees, 0., 360.);
- self.mapView.direction = inputDegrees;
- XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedDegrees, 0.001);
-
- XCTAssertEqual(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, "@Map center coordinate latitude should remain constant when direction is set to %@°.", degrees);
- XCTAssertEqual(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, @"Map center coordinate longitude should remain constant when direction is set to %@°.", degrees);
- }
-
- [self.mapView resetNorthAnimated:NO];
- XCTAssertEqual(self.mapView.direction, 0, @"Reset-to-north should set direction to 0°.");
- XCTAssertEqual(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, "@Map center coordinate latitude should remain constant when direction is reset.");
- XCTAssertEqual(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, @"Map center coordinate latitude should remain constant when direction is reset.");
-}
-
-- (void)testRotateEnabled {
- self.mapView.zoomLevel = 10;
-
- UIRotationGestureRecognizerMock *gesture = [[UIRotationGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- gesture.rotation = MGLRadiansFromDegrees(30);
- CGFloat wrappedRotation = mbgl::util::wrap(-MGLDegreesFromRadians(gesture.rotation), 0., 360.);
-
- // Disabled
- {
- self.mapView.rotateEnabled = NO;
- XCTAssertEqual(self.mapView.allowsRotating, NO);
-
- [self.mapView handleRotateGesture:gesture];
- XCTAssertNotEqual(self.mapView.direction, wrappedRotation, @"Gestural rotation should not work when rotation is disabled.");
-
- self.mapView.direction = 45.f;
- XCTAssertEqualWithAccuracy(self.mapView.direction, 45, 0.001, @"Programmatic rotation is allowed when rotateEnabled = NO.");
- }
-
- // Enabled
- {
- [self.mapView resetNorthAnimated:NO];
- self.mapView.rotateEnabled = YES;
- XCTAssertEqual(self.mapView.allowsRotating, YES);
-
- gesture.state = UIGestureRecognizerStateChanged;
- gesture.rotation = MGLRadiansFromDegrees(30);
- [self.mapView handleRotateGesture:gesture];
- XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedRotation, 0.001, @"Gestural rotation should work when rotation is enabled.");
- }
-}
-
-- (void)testRotationGesture {
- self.mapView.zoomLevel = 15;
- CLLocationCoordinate2D originalCenterCoordinate = self.mapView.centerCoordinate;
-
- UIRotationGestureRecognizerMock *gesture = [[UIRotationGestureRecognizerMock alloc] initWithTarget:self.mapView action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- gesture.rotation = 0;
- [self.mapView addGestureRecognizer:gesture];
- [self.mapView handleRotateGesture:gesture];
- XCTAssertEqual(self.mapView.direction, gesture.rotation);
-
- for (NSNumber *degrees in @[@-999, @-360, @-240, @-180, @-90, @-45, @0, @45, @90, @180, @240, @359, @999]) {
- gesture.state = UIGestureRecognizerStateChanged;
- gesture.rotation = MGLRadiansFromDegrees([degrees doubleValue]);
- [self.mapView handleRotateGesture:gesture];
- CGFloat wrappedRotation = mbgl::util::wrap(-MGLDegreesFromRadians(gesture.rotation), 0., 360.);
- XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedRotation, 0.001, @"Map direction should match gesture rotation for input of %@°.", degrees);
-
- // Given a hypothetical rotation around the exact center of the map, the center coordinate should remain the same.
- // See above where we override -[UIRotationGestureRecognizer locationInView:] to always return the center of the target view.
- XCTAssertEqualWithAccuracy(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, 0.0000001, "@Map center coordinate latitude should remain constant during rotation of %@°.", degrees);
- XCTAssertEqualWithAccuracy(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, 0.0000001, @"Map center coordinate longitude should remain constant during rotation of %@°.", degrees);
- }
-}
-
-- (void)testResetPosition {
- [self.mapView resetPosition];
- MGLMapCamera *defaultCamera = [MGLMapCamera cameraLookingAtCenterCoordinate:CLLocationCoordinate2DMake(0, 0) altitude:self.mapView.camera.altitude pitch:0 heading:0];
- XCTAssertTrue([self.mapView.camera isEqualToMapCamera:defaultCamera], @"Map camera %@ should be equal to default camera %@.", self.mapView.camera, defaultCamera);
-}
-
-- (CGFloat)degreesFromAffineTransform:(CGAffineTransform)transform {
- CGFloat angle = atan2f(transform.b, transform.a);
- return MGLDegreesFromRadians(angle);
-}
-
-@end
diff --git a/platform/ios/test/MGLMapViewGestureRecognizerTests.mm b/platform/ios/test/MGLMapViewGestureRecognizerTests.mm
deleted file mode 100644
index 58fbf2d03b..0000000000
--- a/platform/ios/test/MGLMapViewGestureRecognizerTests.mm
+++ /dev/null
@@ -1,280 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "../../darwin/src/MGLGeometry_Private.h"
-#import "MGLMockGestureRecognizers.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/map/camera.hpp>
-
-@interface MGLMapView (MGLMapViewGestureRecognizerTests)
-
-- (mbgl::Map &)mbglMap;
-
-- (void)handlePinchGesture:(UIPinchGestureRecognizer *)pinch;
-- (void)handleRotateGesture:(UIRotationGestureRecognizer *)rotate;
-- (void)handleDoubleTapGesture:(UITapGestureRecognizer *)doubleTap;
-- (void)handleTwoFingerTapGesture:(UITapGestureRecognizer *)twoFingerTap;
-- (void)handleQuickZoomGesture:(UILongPressGestureRecognizer *)quickZoom;
-- (void)handleTwoFingerDragGesture:(UIPanGestureRecognizer *)twoFingerDrag;
-
-@end
-
-@interface MGLMapViewGestureRecognizerTests : XCTestCase <MGLMapViewDelegate>
-
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic) UIWindow *window;
-@property (nonatomic) UIViewController *viewController;
-@property (nonatomic) XCTestExpectation *styleLoadingExpectation;
-@property (nonatomic) XCTestExpectation *twoFingerExpectation;
-@property (nonatomic) XCTestExpectation *quickZoomExpectation;
-@property (nonatomic) XCTestExpectation *doubleTapExpectation;
-@property (nonatomic) XCTestExpectation *twoFingerDragExpectation;
-@property (assign) CGRect screenBounds;
-
-@end
-
-@implementation MGLMapViewGestureRecognizerTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.screenBounds = UIScreen.mainScreen.bounds;
- self.mapView = [[MGLMapView alloc] initWithFrame:self.screenBounds styleURL:styleURL];
- self.mapView.zoomLevel = 16;
- self.mapView.delegate = self;
-
- self.viewController = [[UIViewController alloc] init];
- self.viewController.view = [[UIView alloc] initWithFrame:self.screenBounds];
- [self.viewController.view addSubview:self.mapView];
- self.window = [[UIWindow alloc] initWithFrame:self.screenBounds];
- [self.window addSubview:self.viewController.view];
- [self.window makeKeyAndVisible];
-
- if (!self.mapView.style) {
- _styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self waitForExpectationsWithTimeout:10 handler:nil];
- }
-}
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style {
- XCTAssertNotNil(mapView.style);
- XCTAssertEqual(mapView.style, style);
-
- [_styleLoadingExpectation fulfill];
-}
-
-- (void)testHandlePinchGestureContentInset {
- UIEdgeInsets contentInset = UIEdgeInsetsZero;
- self.mapView.contentInset = contentInset;
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.mapView.contentInset);
- auto cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"MGLMapView's contentInset property should match camera's padding.");
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
- [self.mapView setCamera:self.mapView.camera withDuration:0.1 animationTimingFunction:nil edgePadding:contentInset completionHandler:nil];
- XCTAssertFalse(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertNotEqual(padding, cameraPadding);
-
- UIPinchGestureRecognizerMock *pinchGesture = [[UIPinchGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- pinchGesture.state = UIGestureRecognizerStateBegan;
- pinchGesture.scale = 1.0;
- [self.mapView handlePinchGesture:pinchGesture];
- XCTAssertNotEqual(padding, cameraPadding);
-
- pinchGesture.state = UIGestureRecognizerStateChanged;
- [self.mapView handlePinchGesture:pinchGesture];
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-
- pinchGesture.state = UIGestureRecognizerStateEnded;
- [self.mapView handlePinchGesture:pinchGesture];
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-
-}
-
-- (void)testHandleRotateGestureContentInset {
- UIEdgeInsets contentInset = UIEdgeInsetsZero;
- self.mapView.contentInset = contentInset;
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.mapView.contentInset);
- auto cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"MGLMapView's contentInset property should match camera's padding.");
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
- [self.mapView setCamera:self.mapView.camera withDuration:0.1 animationTimingFunction:nil edgePadding:contentInset completionHandler:nil];
- XCTAssertFalse(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertNotEqual(padding, cameraPadding);
-
- UIRotationGestureRecognizerMock *rotateGesture = [[UIRotationGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- rotateGesture.state = UIGestureRecognizerStateBegan;
- rotateGesture.rotation = 1;
- [self.mapView handleRotateGesture:rotateGesture];
- XCTAssertNotEqual(padding, cameraPadding);
-
- rotateGesture.state = UIGestureRecognizerStateChanged;
- [self.mapView handleRotateGesture:rotateGesture];
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-
- rotateGesture.state = UIGestureRecognizerStateEnded;
- [self.mapView handleRotateGesture:rotateGesture];
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-
-}
-
-- (void)testHandleDoubleTapGestureContentInset {
- UIEdgeInsets contentInset = UIEdgeInsetsMake(1, 1, 1, 1);
- self.mapView.contentInset = contentInset;
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.mapView.contentInset);
- auto cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"MGLMapView's contentInset property should match camera's padding.");
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
- [self.mapView setCamera:self.mapView.camera withDuration:0.1 animationTimingFunction:nil edgePadding:contentInset completionHandler:nil];
- XCTAssertFalse(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertNotEqual(padding, cameraPadding);
-
- UITapGestureRecognizerMock *doubleTapGesture = [[UITapGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- doubleTapGesture.mockTappedView = self.mapView;
- doubleTapGesture.mockTappedPoint = CGPointMake(1.0, 1.0);
-
- [self.mapView handleDoubleTapGesture:doubleTapGesture];
- _doubleTapExpectation = [self expectationWithDescription:@"Double tap gesture animation."];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self->_doubleTapExpectation fulfill];
- });
- [self waitForExpectationsWithTimeout:10 handler:nil];
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-
-}
-
-- (void)testHandleTwoFingerTapGesture {
- UIEdgeInsets contentInset = UIEdgeInsetsZero;
- self.mapView.contentInset = contentInset;
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.mapView.contentInset);
- auto cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"MGLMapView's contentInset property should match camera's padding.");
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
- [self.mapView setCamera:self.mapView.camera withDuration:0.1 animationTimingFunction:nil edgePadding:contentInset completionHandler:nil];
- XCTAssertFalse(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertNotEqual(padding, cameraPadding);
-
- UITapGestureRecognizerMock *twoFingerTap = [[UITapGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- twoFingerTap.mockTappedView = self.mapView;
- twoFingerTap.mockTappedPoint = CGPointMake(1.0, 1.0);
-
- [self.mapView handleTwoFingerTapGesture:twoFingerTap];
- _twoFingerExpectation = [self expectationWithDescription:@"Two Finger tap gesture animation."];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self->_twoFingerExpectation fulfill];
- });
- [self waitForExpectationsWithTimeout:10 handler:nil];
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-}
-
-- (void)testHandleQuickZoomGesture {
- UIEdgeInsets contentInset = UIEdgeInsetsZero;
- self.mapView.contentInset = contentInset;
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.mapView.contentInset);
- auto cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"MGLMapView's contentInset property should match camera's padding.");
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
- [self.mapView setCamera:self.mapView.camera withDuration:0.1 animationTimingFunction:nil edgePadding:contentInset completionHandler:nil];
- XCTAssertFalse(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertNotEqual(padding, cameraPadding);
-
- UILongPressGestureRecognizerMock *quickZoom = [[UILongPressGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- quickZoom.state = UIGestureRecognizerStateBegan;
- [self.mapView handleQuickZoomGesture:quickZoom];
- XCTAssertNotEqual(padding, cameraPadding);
-
- quickZoom.state = UIGestureRecognizerStateChanged;
- quickZoom.mockTappedPoint = CGPointMake(self.mapView.frame.size.width / 2, self.mapView.frame.size.height / 2);
- [self.mapView handleQuickZoomGesture:quickZoom];
- _quickZoomExpectation = [self expectationWithDescription:@"Quick zoom gesture animation."];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self->_quickZoomExpectation fulfill];
- });
- [self waitForExpectationsWithTimeout:10 handler:nil];
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-
- quickZoom.state = UIGestureRecognizerStateEnded;
- [self.mapView handleQuickZoomGesture:quickZoom];
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-}
-
-- (void)testHandleTwoFingerDragGesture {
- UIEdgeInsets contentInset = UIEdgeInsetsZero;
- self.mapView.contentInset = contentInset;
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.mapView.contentInset);
- auto cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"MGLMapView's contentInset property should match camera's padding.");
- XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
- [self.mapView setCamera:self.mapView.camera withDuration:0.1 animationTimingFunction:nil edgePadding:contentInset completionHandler:nil];
- XCTAssertFalse(UIEdgeInsetsEqualToEdgeInsets(self.mapView.contentInset, contentInset));
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertNotEqual(padding, cameraPadding);
-
- UIPanGestureRecognizerMock *twoFingerDrag = [[UIPanGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- twoFingerDrag.state = UIGestureRecognizerStateBegan;
- twoFingerDrag.firstFingerPoint = CGPointMake(self.mapView.frame.size.width / 3, self.mapView.frame.size.height/2);
- twoFingerDrag.secondFingerPoint = CGPointMake((self.mapView.frame.size.width / 2), self.mapView.frame.size.height/2);
- twoFingerDrag.numberOfTouches = 2;
- [self.mapView handleTwoFingerDragGesture:twoFingerDrag];
- XCTAssertNotEqual(padding, cameraPadding);
-
- twoFingerDrag.state = UIGestureRecognizerStateChanged;
- twoFingerDrag.firstFingerPoint = CGPointMake(self.mapView.frame.size.width / 3, (self.mapView.frame.size.height/2)-10);
- twoFingerDrag.secondFingerPoint = CGPointMake((self.mapView.frame.size.width / 2), (self.mapView.frame.size.height/2)-10);
- [self.mapView handleTwoFingerDragGesture:twoFingerDrag];
- _twoFingerDragExpectation = [self expectationWithDescription:@"Quick zoom gesture animation."];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self->_twoFingerDragExpectation fulfill];
- });
- [self waitForExpectationsWithTimeout:10 handler:nil];
-
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-
- twoFingerDrag.state = UIGestureRecognizerStateEnded;
- [self.mapView handleTwoFingerDragGesture:twoFingerDrag];
- cameraPadding = self.mapView.mbglMap.getCameraOptions().padding;
- XCTAssertEqual(padding, cameraPadding, @"When a gesture recognizer is performed contentInsets and camera padding should match.");
-}
-
-@end
diff --git a/platform/ios/test/MGLMapViewLayoutTests.m b/platform/ios/test/MGLMapViewLayoutTests.m
deleted file mode 100644
index 2a9579818a..0000000000
--- a/platform/ios/test/MGLMapViewLayoutTests.m
+++ /dev/null
@@ -1,317 +0,0 @@
-#import <XCTest/XCTest.h>
-#import "MGLMapView.h"
-#import "MGLMapViewDelegate.h"
-#import "MGLAccountManager.h"
-
-#import "MGLScaleBar.h"
-
-@interface MGLOrnamentTestData : NSObject
-
-@property (nonatomic) MGLOrnamentPosition position;
-@property (nonatomic) CGPoint offset;
-@property (nonatomic) CGPoint expectedOrigin;
-
-@end
-
-@implementation MGLOrnamentTestData
-
-+ (instancetype)createWithPosition:(MGLOrnamentPosition)position offset:(CGPoint)offset expectedOrigin:(CGPoint)expectedOrigin {
- MGLOrnamentTestData *data = [[MGLOrnamentTestData alloc] init];
- data.position = position;
- data.offset = offset;
- data.expectedOrigin = expectedOrigin;
- return data;
-}
-
-@end
-
-@interface MGLScaleBar (Tests)
-@property (nonatomic, readonly) NSArray<UIView *> *labelViews;
-@property (nonatomic, readonly) NSArray<UIView *> *bars;
-@property (nonatomic, readonly) UIView *containerView;
-@property (nonatomic, readonly) CGSize size;
-@property (nonatomic) NSNumber *testingRightToLeftOverride;
-@end
-
-
-@interface MGLMapViewLayoutTests : XCTestCase<MGLMapViewDelegate>
-
-@property (nonatomic) UIView *superView;
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic) XCTestExpectation *styleLoadingExpectation;
-
-@end
-
-@implementation MGLMapViewLayoutTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
-
- self.superView = [[UIView alloc] initWithFrame:UIScreen.mainScreen.bounds];
-
- self.mapView = [[MGLMapView alloc] initWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
- self.mapView.delegate = self;
-
- [self.superView addSubview:self.mapView];
-
- UIView *mapView = self.mapView;
- NSDictionary *bindings = NSDictionaryOfVariableBindings(mapView);
- NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[mapView]-0-|" options:0 metrics:nil views:bindings];
- NSArray *horizonatalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[mapView]-0-|" options:0 metrics:nil views:bindings];
-
- [self.superView addConstraints:[verticalConstraints arrayByAddingObjectsFromArray:horizonatalConstraints]];
-
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self waitForExpectationsWithTimeout:10 handler:nil];
-
- self.mapView.showsScale = YES;
-
- //set zoom and heading so that scale bar and compass will be shown
- [self.mapView setZoomLevel:10.0 animated:NO];
- [self.mapView.camera setHeading:12.0];
-
- //invoke layout
- [self.superView setNeedsLayout];
- [self.superView layoutIfNeeded];
-}
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style {
- XCTAssertNotNil(mapView.style);
- XCTAssertEqual(mapView.style, style);
-
- [self.styleLoadingExpectation fulfill];
-}
-
-- (void)tearDown {
- self.styleLoadingExpectation = nil;
- self.mapView = nil;
- [MGLAccountManager setAccessToken:nil];
-
- [super tearDown];
-}
-
-- (void)testOrnamentPlacement {
-
- CGFloat margin = 8.0;
- CGFloat bottomSafeAreaInset = 0.0;
- double accuracy = 0.01;
-
- if (@available(iOS 11.0, *)) {
- bottomSafeAreaInset = self.mapView.safeAreaInsets.bottom;
- }
-
- //compass
- UIImageView *compassView = self.mapView.compassView;
-
- CGFloat expectedCompassOriginX = CGRectGetMaxX(self.mapView.bounds) - margin - CGRectGetWidth(compassView.frame);
- CGFloat expectedCompassOriginY = margin;
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(compassView.frame), expectedCompassOriginX, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(compassView.frame), expectedCompassOriginY, accuracy);
-
- //scale bar
- UIView *scaleBar = self.mapView.scaleBar;
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(scaleBar.frame), margin, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(scaleBar.frame), margin, accuracy);
-
- //attribution button
- UIButton *attributionButton = self.mapView.attributionButton;
-
- CGFloat expectedButtonOriginX = CGRectGetMaxX(self.mapView.bounds) - margin - CGRectGetWidth(attributionButton.frame);
- CGFloat expectedButtonOriginY = CGRectGetMaxY(self.mapView.bounds) - margin - bottomSafeAreaInset - CGRectGetHeight(attributionButton.frame);
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(attributionButton.frame), expectedButtonOriginX, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(attributionButton.frame), expectedButtonOriginY, accuracy);
-
- //mapbox logo
- UIImageView *logoView = self.mapView.logoView;
-
- CGFloat expectedLogoOriginX = margin;
- CGFloat expectedLogoOriginY = CGRectGetMaxY(self.mapView.bounds) - margin - bottomSafeAreaInset - CGRectGetHeight(logoView.frame);
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(logoView.frame), expectedLogoOriginX, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(logoView.frame), expectedLogoOriginY, accuracy);
-}
-
-- (NSArray *)makeTestDataListWithView:(UIView *)view margin:(CGFloat)margin {
- CGFloat bottomSafeAreaInset = 0.0;
- if (@available(iOS 11.0, *)) {
- bottomSafeAreaInset = self.mapView.safeAreaInsets.bottom;
- }
-
- return @[
- [MGLOrnamentTestData createWithPosition:MGLOrnamentPositionTopLeft
- offset:CGPointMake(margin, margin)
- expectedOrigin:CGPointMake(margin, margin)],
- [MGLOrnamentTestData createWithPosition:MGLOrnamentPositionTopRight
- offset:CGPointMake(margin, margin)
- expectedOrigin:CGPointMake(CGRectGetMaxX(self.mapView.bounds) - margin - CGRectGetWidth(view.frame), margin)],
- [MGLOrnamentTestData createWithPosition:MGLOrnamentPositionBottomLeft
- offset:CGPointMake(margin, margin)
- expectedOrigin:CGPointMake(margin, CGRectGetMaxY(self.mapView.bounds) - margin - bottomSafeAreaInset - CGRectGetHeight(view.frame))],
- [MGLOrnamentTestData createWithPosition:MGLOrnamentPositionBottomRight
- offset:CGPointMake(margin, margin)
- expectedOrigin:CGPointMake(CGRectGetMaxX(self.mapView.bounds) - margin - CGRectGetWidth(view.frame),
- CGRectGetMaxY(self.mapView.bounds) - margin - bottomSafeAreaInset - CGRectGetHeight(view.frame))]
- ];
-}
-
-- (void)testCompassPlacement {
- double accuracy = 0.01;
- CGFloat margin = 4.0;
-
- UIView *compassView = self.mapView.compassView;
- NSArray *testDataList = [self makeTestDataListWithView:compassView margin:margin];
-
- for (MGLOrnamentTestData *testData in testDataList) {
- self.mapView.compassViewPosition = testData.position;
- self.mapView.compassViewMargins = testData.offset;
-
- //invoke layout
- [self.superView setNeedsLayout];
- [self.superView layoutIfNeeded];
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(compassView.frame), testData.expectedOrigin.x, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(compassView.frame), testData.expectedOrigin.y, accuracy);
- }
-}
-
-- (void)testScalebarPlacement {
- double accuracy = 0.01;
- CGFloat margin = 4.0;
-
- UIView *scaleBar = self.mapView.scaleBar;
- XCTAssertFalse(CGSizeEqualToSize(scaleBar.bounds.size, CGSizeZero));
-
- NSArray *testDataList = [self makeTestDataListWithView:scaleBar margin:margin];
-
- for (MGLOrnamentTestData *testData in testDataList) {
- self.mapView.scaleBarPosition = testData.position;
- self.mapView.scaleBarMargins = testData.offset;
-
- //invoke layout
- [self.superView setNeedsLayout];
- [self.superView layoutIfNeeded];
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(scaleBar.frame), testData.expectedOrigin.x, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(scaleBar.frame), testData.expectedOrigin.y, accuracy);
- }
-}
-
-// This test checks the frames of the scalebar's subviews, based on the positions
-// as above, but also with forced Right-to-Left reading, and modifying zoom levels.
-- (void)testScalebarSubviewPlacement {
- double accuracy = 0.01;
- CGFloat margin = 20.0;
-
- MGLScaleBar *scaleBar = (MGLScaleBar*)self.mapView.scaleBar;
- XCTAssertFalse(CGSizeEqualToSize(scaleBar.bounds.size, CGSizeZero));
-
- for (NSInteger rtl = 0; rtl <= 1; rtl++) {
- scaleBar.testingRightToLeftOverride = @((BOOL)rtl);
-
- NSString *positions[] = {
- @"MGLOrnamentPositionTopLeft",
- @"MGLOrnamentPositionTopRight",
- @"MGLOrnamentPositionBottomLeft",
- @"MGLOrnamentPositionBottomRight"
- };
-
- for (CGFloat zoomLevel = 0; zoomLevel < 20; zoomLevel++)
- {
- self.mapView.zoomLevel = zoomLevel;
- [self.superView setNeedsLayout];
- [self.superView layoutIfNeeded];
-
- // Following method assumes scaleBar has an up-to-date frame, based
- // on the current zoom level. Modifying the position and margins
- // should not affect the overall size of the scalebar.
-
- NSArray *testDataList = [self makeTestDataListWithView:scaleBar margin:margin];
-
- CGSize initialSize = scaleBar.intrinsicContentSize;
- XCTAssert(CGSizeEqualToSize(initialSize, scaleBar.bounds.size));
-
- for (MGLOrnamentTestData *testData in testDataList) {
- self.mapView.scaleBarPosition = testData.position;
- self.mapView.scaleBarMargins = testData.offset;
-
- [self.superView setNeedsLayout];
- [self.superView layoutIfNeeded];
-
- XCTAssert(CGSizeEqualToSize(initialSize, scaleBar.bounds.size));
-
- NSString *activityName = [NSString stringWithFormat:
- @"Scalebar subview tests: RTL=%@, Zoom=%ld, POS=%@, Visible=%@",
- (rtl == 0 ? @"NO" : @"YES"),
- (long)zoomLevel,
- positions[testData.position],
- scaleBar.alpha > 0.0 ? @"YES" : @"NO"];
-
- [XCTContext runActivityNamed:activityName
- block:^(id<XCTActivity> activity) {
-
- // Check the subviews
- XCTAssertEqualWithAccuracy(CGRectGetMinX(scaleBar.frame), testData.expectedOrigin.x, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(scaleBar.frame), testData.expectedOrigin.y, accuracy);
-
- XCTAssertTrue(CGRectContainsRect(scaleBar.bounds, scaleBar.containerView.frame));
- for (UIView *bar in scaleBar.bars) {
- XCTAssertTrue(CGRectContainsRect(scaleBar.containerView.bounds, bar.frame));
- }
- for (UIView *label in scaleBar.labelViews) {
- if (!label.isHidden) {
- XCTAssertTrue(CGRectContainsRect(scaleBar.bounds, label.frame));
- }
- }
- }];
- }
- }
- }
-}
-
-- (void)testAttributionButtonPlacement {
- double accuracy = 0.01;
- CGFloat margin = 4.0;
-
- UIView *attributionButton = self.mapView.attributionButton;
- NSArray *testDataList = [self makeTestDataListWithView:attributionButton margin:margin];
-
- for (MGLOrnamentTestData *testData in testDataList) {
- self.mapView.attributionButtonPosition = testData.position;
- self.mapView.attributionButtonMargins = testData.offset;
-
- //invoke layout
- [self.superView setNeedsLayout];
- [self.superView layoutIfNeeded];
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(attributionButton.frame), testData.expectedOrigin.x, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(attributionButton.frame), testData.expectedOrigin.y, accuracy);
- }
-}
-
-- (void)testLogoPlacement {
- double accuracy = 0.01;
- CGFloat margin = 4.0;
-
- UIView *logoView = self.mapView.logoView;
- NSArray *testDataList = [self makeTestDataListWithView:logoView margin:margin];
-
- for (MGLOrnamentTestData *testData in testDataList) {
- self.mapView.logoViewPosition = testData.position;
- self.mapView.logoViewMargins = testData.offset;
-
- //invoke layout
- [self.superView setNeedsLayout];
- [self.superView layoutIfNeeded];
-
- XCTAssertEqualWithAccuracy(CGRectGetMinX(logoView.frame), testData.expectedOrigin.x, accuracy);
- XCTAssertEqualWithAccuracy(CGRectGetMinY(logoView.frame), testData.expectedOrigin.y, accuracy);
- }
-}
-
-@end
diff --git a/platform/ios/test/MGLMapViewPitchTests.m b/platform/ios/test/MGLMapViewPitchTests.m
deleted file mode 100644
index fa657eb994..0000000000
--- a/platform/ios/test/MGLMapViewPitchTests.m
+++ /dev/null
@@ -1,190 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MockUIPanGestureRecognizer : UIPanGestureRecognizer
-@property(nonatomic, readwrite) UIGestureRecognizerState state;
-@property NSUInteger mbx_numberOfFingersForGesture;
-@property CGPoint mbx_middlePoint;
-@property CGPoint mbx_westPoint;
-@property CGPoint mbx_eastPoint;
-@end
-
-@implementation MockUIPanGestureRecognizer
-
-@synthesize state;
-
-- (instancetype)initWithTarget:(id)target action:(SEL)action {
- if (self = [super initWithTarget:target action:action]) {
- self.mbx_numberOfFingersForGesture = 2;
- self.mbx_westPoint = CGPointMake(100, 0);
- self.mbx_eastPoint = CGPointMake(200, 0);
- }
- return self;
-}
-- (NSUInteger)numberOfTouches { return self.mbx_numberOfFingersForGesture; }
-- (CGPoint)translationInView:(UIView *)view { return self.mbx_middlePoint; }
-- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view {
- if (touchIndex == 0) {
- return self.mbx_westPoint;
- }
- return self.mbx_eastPoint;
-}
-- (void)setTiltGestureYTranslationForPitchDegrees:(CGFloat)degrees {
- // The tilt gesture takes the number of screen points the fingers have moved and then divides them by a "slowdown" factor, which happens to be set to 2.0 in -[MGLMapView handleTwoFingerDragGesture:].
- CGFloat mbx_tiltGestureYTranslation = -(degrees * 2.0);
- self.mbx_westPoint = CGPointMake(self.mbx_westPoint.x, mbx_tiltGestureYTranslation);
- self.mbx_eastPoint = CGPointMake(self.mbx_eastPoint.x, mbx_tiltGestureYTranslation);
- self.mbx_middlePoint = CGPointMake(self.mbx_middlePoint.x, mbx_tiltGestureYTranslation);
-}
-@end
-
-// Forward declare relevant private methods
-@interface MGLMapView (MGLMapViewPitchTests)
-- (void)handleTwoFingerDragGesture:(UIPanGestureRecognizer *)rotate;
-- (MGLMapCamera *)cameraByTiltingToPitch:(CGFloat)pitch;
-@end
-
-@interface MGLMapViewPitchTests : XCTestCase
-@property (nonatomic) MGLMapView *mapView;
-@end
-
-@implementation MGLMapViewPitchTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 400, 400) styleURL:styleURL];
-}
-
-- (void)tearDown {
- self.mapView = nil;
- [MGLAccountManager setAccessToken:nil];
- [super tearDown];
-}
-
-- (void)testPitchEnabled {
- self.mapView.pitchEnabled = NO;
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:30];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, 30, 0.001, @"Tilt should not be set when pitchEnabled = NO.");
-
- self.mapView.pitchEnabled = YES;
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:30];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, 30, 0.001, @"Tilt should be set when pitchEnabled = YES.");
-}
-
-- (void)testPitchInValidRange {
- for (NSNumber *degrees in @[@0, @5, @20, @40, @60]) {
- CGFloat inputDegrees = [degrees floatValue];
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:inputDegrees];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, inputDegrees, 0.001, @"Tilt should be able to be set within range 0-60°.");
- }
-}
-
-- (void)testNegativePitchClamping {
- for (NSNumber *degrees in @[@CGFLOAT_MIN, @-999, @-60, @-30, @-0]) {
- CGFloat inputDegrees = [degrees floatValue];
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:inputDegrees];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, 0, 0.001, @"Minimum tilt should be clamped to 0°.");
- }
-}
-
-- (void)testPositivePitchClamping {
- for (NSNumber *degrees in @[@61, @90, @999, @CGFLOAT_MAX]) {
- CGFloat inputDegrees = [degrees floatValue];
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:inputDegrees];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, 60, 0.001, @"Maximum tilt should be clamped to 60°.");
- }
-}
-
-- (void)testPitchAtVariousZoomLevels {
- for (NSNumber *zoomLevel in @[@0, @5, @10, @15, @18, @21, @CGFLOAT_MAX]) {
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:0];
- self.mapView.zoomLevel = 0;
-
- CGFloat inputZoomLevel = [zoomLevel floatValue];
- self.mapView.zoomLevel = inputZoomLevel;
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:30];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, 30, 0.001, @"Tilting should be allowed at z%.f.", inputZoomLevel);
- }
-}
-
-- (void)testTiltGesture {
- MockUIPanGestureRecognizer *gesture = [[MockUIPanGestureRecognizer alloc] initWithTarget:self.mapView action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- [self.mapView handleTwoFingerDragGesture:gesture];
- XCTAssertEqual(self.mapView.camera.pitch, 0, @"Pitch should initially be set to 0°.");
-
- // Use a tilt gesture to tilt the map within its acceptable range (0-60°).
- for (NSNumber *degrees in @[@0, @5, @20, @40, @60]) {
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:0];
- gesture.state = UIGestureRecognizerStateChanged;
-
- CGFloat inputDegrees = [degrees floatValue];
- [gesture setTiltGestureYTranslationForPitchDegrees:inputDegrees];
- [self.mapView handleTwoFingerDragGesture:gesture];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, inputDegrees, 0.001, @"Pitch should be set to %.f°.", inputDegrees);
- }
-}
-
-- (void)testHorizontalTiltGesture {
- MockUIPanGestureRecognizer *gesture = [[MockUIPanGestureRecognizer alloc] initWithTarget:self.mapView action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- [self.mapView handleTwoFingerDragGesture:gesture];
- XCTAssertEqual(self.mapView.camera.pitch, 0, @"Pitch should initially be set to 0°.");
-
- // Tilt gestures should not be triggered on horizontal dragging.
- for (NSInteger deltaX = 0; deltaX < 5; deltaX++) {
- gesture.mbx_westPoint = CGPointMake(100 - deltaX, 100);
- gesture.mbx_eastPoint = CGPointMake(100 - deltaX, 50);
- gesture.mbx_middlePoint = CGPointMake((gesture.mbx_westPoint.x + gesture.mbx_westPoint.x)/2, (gesture.mbx_westPoint.y + gesture.mbx_westPoint.y)/2);
-
- gesture.state = UIGestureRecognizerStateChanged;
-
- [self.mapView handleTwoFingerDragGesture:gesture];
- XCTAssertEqual(self.mapView.camera.pitch, 0, @"Horizontal dragging should not tilt the map.");
- }
-}
-
-- (void)testTiltGestureFromInitialTilt {
- CGFloat initialTilt = 20;
- CGFloat additionalTilt = 30;
-
- // Set the map camera to a pitched state, perhaps from a previous gesture or camera movement.
- self.mapView.camera = [self.mapView cameraByTiltingToPitch:initialTilt];
- XCTAssertEqual(self.mapView.camera.pitch, initialTilt, @"Tilt should initially be set to %.f°.", initialTilt);
-
- // Initialize a tilt gesture.
- MockUIPanGestureRecognizer *gesture = [[MockUIPanGestureRecognizer alloc] initWithTarget:self.mapView action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- [self.mapView handleTwoFingerDragGesture:gesture];
-
- // Use the gesture to tilt the map even more.
- gesture.state = UIGestureRecognizerStateChanged;
- [gesture setTiltGestureYTranslationForPitchDegrees:additionalTilt];
- [self.mapView handleTwoFingerDragGesture:gesture];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, initialTilt + additionalTilt, 0.001, @"Tilt should be set to %.f°.", initialTilt + additionalTilt);
-}
-
-- (void)testTiltGestureNumberOfFingersRequired {
- // Initialize a tilt gesture with two fingers.
- MockUIPanGestureRecognizer *gesture = [[MockUIPanGestureRecognizer alloc] initWithTarget:self.mapView action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- gesture.mbx_numberOfFingersForGesture = 2;
-
- // Use the gesture to tilt to 30°.
- [gesture setTiltGestureYTranslationForPitchDegrees:30];
- [self.mapView handleTwoFingerDragGesture:gesture];
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, 30, 0.001, @"Tilt gesture should work with two fingers down.");
-
- // Change the gesture's number of fingers to one and try to update the pitch.
- gesture.mbx_numberOfFingersForGesture = 1;
- gesture.state = UIGestureRecognizerStateChanged;
- [gesture setTiltGestureYTranslationForPitchDegrees:0];
- [self.mapView handleTwoFingerDragGesture:gesture];
- XCTAssertEqual(gesture.state, UIGestureRecognizerStateEnded, @"Gesture should end when the number of fingers is less than two.");
- XCTAssertEqualWithAccuracy(self.mapView.camera.pitch, 30, 0.001, @"Pitch should remain unchanged if gesture has ended.");
-}
-
-@end
diff --git a/platform/ios/test/MGLMapViewScaleBarTests.m b/platform/ios/test/MGLMapViewScaleBarTests.m
deleted file mode 100644
index b4f81ef62b..0000000000
--- a/platform/ios/test/MGLMapViewScaleBarTests.m
+++ /dev/null
@@ -1,70 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLMapViewScaleBarTests : XCTestCase
-
-@property (nonatomic) MGLMapView *mapView;
-
-@end
-
-@implementation MGLMapViewScaleBarTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.mapView = [[MGLMapView alloc] initWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
-}
-
-- (void)tearDown {
- self.mapView = nil;
- [MGLAccountManager setAccessToken:nil];
-
- [super tearDown];
-}
-
-- (void)testShowsScale {
- UIView *scaleBar = self.mapView.scaleBar;
-
- // Scale bar should not be enabled by default.
- XCTAssertFalse(self.mapView.showsScale);
- XCTAssertTrue(scaleBar.hidden);
-
- self.mapView.showsScale = YES;
-
- XCTAssertFalse(scaleBar.hidden);
-
- // Scale bar should not be visible at default zoom (~z0), but it should be ready.
- // Size is not a measure of readiness here though.
- XCTAssertTrue(CGSizeEqualToSize(scaleBar.intrinsicContentSize, CGSizeZero));
- XCTAssertEqual(scaleBar.alpha, 0);
-
- self.mapView.zoomLevel = 15;
- [self.mapView layoutIfNeeded];
- XCTAssertGreaterThan(scaleBar.alpha, 0);
- XCTAssertFalse(CGSizeEqualToSize(scaleBar.intrinsicContentSize, CGSizeZero));
-}
-
-- (void)testDirectlySettingScaleBarViewHiddenProperty {
- UIView *scaleBar = self.mapView.scaleBar;
-
- scaleBar.hidden = NO;
- XCTAssertFalse(scaleBar.hidden);
-
- // Directly setting `.hidden` after the map has finished initializing will not update the scale bar.
- XCTAssertTrue(CGSizeEqualToSize(scaleBar.intrinsicContentSize, CGSizeZero));
-
- // ... but triggering any camera event will update it.
- self.mapView.zoomLevel = 1;
- [self.mapView layoutIfNeeded];
-
- XCTAssertTrue(CGSizeEqualToSize(scaleBar.intrinsicContentSize, CGSizeZero));
- XCTAssertEqual(scaleBar.alpha, 0);
-
- self.mapView.zoomLevel = 15;
- [self.mapView layoutIfNeeded];
-
- XCTAssertGreaterThan(scaleBar.alpha, 0);
- XCTAssertFalse(CGSizeEqualToSize(scaleBar.intrinsicContentSize, CGSizeZero));
-}@end
diff --git a/platform/ios/test/MGLMapViewZoomTests.mm b/platform/ios/test/MGLMapViewZoomTests.mm
deleted file mode 100644
index 360af72d02..0000000000
--- a/platform/ios/test/MGLMapViewZoomTests.mm
+++ /dev/null
@@ -1,192 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import "MGLMockGestureRecognizers.h"
-
-#import <mbgl/math/wrap.hpp>
-
-@interface MGLMapView (MGLMapViewZoomTests)
-@property (nonatomic) BOOL isZooming;
-@property (nonatomic) CGFloat rotationThresholdWhileZooming;
-- (void)handlePinchGesture:(UIPinchGestureRecognizer *)pinch;
-- (void)handleRotateGesture:(UIRotationGestureRecognizer *)rotate;
-@end
-
-@interface MGLMapViewZoomTests : XCTestCase
-@property (nonatomic) MGLMapView *mapView;
-@end
-
-@implementation MGLMapViewZoomTests
-
-- (void)setUp {
- [super setUp];
-
- [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"];
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.mapView = [[MGLMapView alloc] initWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
-}
-
-- (void)tearDown {
- self.mapView = nil;
- [MGLAccountManager setAccessToken:nil];
- [super tearDown];
-}
-
-- (void)testZoom {
- CLLocationCoordinate2D originalCenterCoordinate = self.mapView.centerCoordinate;
-
- for (NSNumber *zoom in @[@1, @5, @10, @15, @22]) {
- self.mapView.zoomLevel = [zoom doubleValue];
- XCTAssertEqual(self.mapView.zoomLevel, [zoom doubleValue], @"Map zoom should match z%@.", zoom);
-
- XCTAssertEqualWithAccuracy(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, 0.0000001, "@Map center coordinate latitude should remain constant during zoom to z%@.", zoom);
- XCTAssertEqualWithAccuracy(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, 0.0000001, @"Map center coordinate longitude should remain constant during zoom to z%@.", zoom);
- }
-}
-
-- (void)testZoomEnabled {
- UIPinchGestureRecognizerMock *gesture = [[UIPinchGestureRecognizerMock alloc] initWithTarget:nil action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- gesture.scale = 10.f;
- [self.mapView handlePinchGesture:gesture];
- gesture.state = UIGestureRecognizerStateChanged;
-
- // Disabled
- {
- self.mapView.zoomEnabled = NO;
- XCTAssertEqual(self.mapView.allowsZooming, NO);
-
- [self.mapView handlePinchGesture:gesture];
- XCTAssertNotEqual(self.mapView.zoomLevel, log2(gesture.scale), @"Gestural zoom should not work when zoom is disabled.");
-
- self.mapView.zoomLevel = 15.f;
- XCTAssertEqualWithAccuracy(self.mapView.zoomLevel, 15, 0.001, @"Programmatic zoom is allowed when zoomEnabled = NO.");
- }
-
- // Enabled
- {
- // No need to reset the map zoom or gesture scale, since gesture scale hasn't been applied yet and the map zoom will be overriden when the gesture is handled.
- self.mapView.zoomEnabled = YES;
- XCTAssertEqual(self.mapView.allowsZooming, YES);
-
- [self.mapView handlePinchGesture:gesture];
- XCTAssertEqualWithAccuracy(self.mapView.zoomLevel, log2(gesture.scale), 0.001, @"Gestural zoom should work when zoom is enabled.");
- }
-}
-
-- (void)testPinchGesture {
- CLLocationCoordinate2D originalCenterCoordinate = self.mapView.centerCoordinate;
-
- UIPinchGestureRecognizerMock *gesture = [[UIPinchGestureRecognizerMock alloc] initWithTarget:self.mapView action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- gesture.scale = 0;
- gesture.locationInViewOverride = self.mapView.center;
- [self.mapView handlePinchGesture:gesture];
- XCTAssertEqual(self.mapView.zoomLevel, 0);
-
- for (NSNumber *zoom in @[@1, @5, @10, @15, @22]) {
- gesture.state = UIGestureRecognizerStateChanged;
- gesture.scale = MGLScaleFromZoomLevel([zoom doubleValue]);
- [self.mapView handlePinchGesture:gesture];
- XCTAssertEqual(self.mapView.zoomLevel, [zoom doubleValue], @"Map zoom should match gesture to z%@.", zoom);
-
- // Given a hypothetical zoom into the exact center of the map, the center coordinate should remain the same.
- XCTAssertEqualWithAccuracy(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, 0.0000001, "@Map center coordinate latitude should remain constant during zoom to z%@.", zoom);
- XCTAssertEqualWithAccuracy(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, 0.0000001, @"Map center coordinate longitude should remain constant during zoom to z%@.", zoom);
- }
-}
-
-// Regression test for: https://github.com/mapbox/mapbox-gl-native/issues/14977
-- (void)testPinchGestureOffCenter {
- self.mapView.zoomLevel = 15;
-
- // Set up pinch gesture at z15 with an origin of 0,0.
- UIPinchGestureRecognizerMock *gesture = [[UIPinchGestureRecognizerMock alloc] initWithTarget:self.mapView action:nil];
- gesture.state = UIGestureRecognizerStateBegan;
- gesture.scale = 0;
- gesture.locationInViewOverride = CGPointMake(0, 0);
- [self.mapView handlePinchGesture:gesture];
- XCTAssertEqual(self.mapView.zoomLevel, 15);
-
- // Set a map rotation so that we can later check if un-rotating happens around the correct center point.
- self.mapView.direction = 45;
-
- // Zoom to z18 at the off-center origin.
- gesture.state = UIGestureRecognizerStateChanged;
- gesture.scale = MGLScaleFromZoomLevel(3);
- [self.mapView handlePinchGesture:gesture];
- XCTAssertEqual(self.mapView.zoomLevel, 18, @"Map zoom should match original zoom plus gesture zoom.");
-
- // Check that the center coordinate remains the same when direction is reset to north.
- CLLocationCoordinate2D centerCoordinateBeforeReset = self.mapView.centerCoordinate;
- CLLocationCoordinate2D manuallyDerivedCenterCoordinate = [self.mapView convertPoint:self.mapView.center toCoordinateFromView:nil];
- XCTAssertEqualWithAccuracy(centerCoordinateBeforeReset.latitude, manuallyDerivedCenterCoordinate.latitude, 0.0000001, "@Map center latitude should be equal to manually derived latitude.");
- XCTAssertEqualWithAccuracy(centerCoordinateBeforeReset.longitude, manuallyDerivedCenterCoordinate.longitude, 0.0000001, @"Map center longitude should be equal to manually derived longitude.");
-
- self.mapView.direction = 0;
- XCTAssertEqualWithAccuracy(centerCoordinateBeforeReset.latitude, self.mapView.centerCoordinate.latitude, 0.0000001, "@Map center coordinate latitude should remain constant after resetting to north.");
- XCTAssertEqualWithAccuracy(centerCoordinateBeforeReset.longitude, self.mapView.centerCoordinate.longitude, 0.0000001, @"Map center coordinate longitude should remain constant after resetting to north.");
-}
-
-- (void)testPinchAndZoom {
-
- [[NSUserDefaults standardUserDefaults] setObject:@3 forKey:@"MGLRotationThresholdWhileZooming"];
- self.mapView.rotationThresholdWhileZooming = 3;
- self.mapView.zoomLevel = 15;
- UIPinchGestureRecognizerMock *pinch = [[UIPinchGestureRecognizerMock alloc] initWithTarget:self.mapView action:nil];
- [self.mapView addGestureRecognizer:pinch];
- pinch.state = UIGestureRecognizerStateBegan;
- pinch.velocity = 5.0;
- pinch.locationInViewOverride = CGPointMake(0, 0);
- [self.mapView handlePinchGesture:pinch];
-
- XCTAssertTrue(self.mapView.isZooming);
-
- UIRotationGestureRecognizerMock *rotate = [[UIRotationGestureRecognizerMock alloc] initWithTarget:self.mapView action:nil];
- rotate.state = UIGestureRecognizerStateBegan;
- rotate.rotation = MGLRadiansFromDegrees(1);
- [self.mapView addGestureRecognizer:rotate];
- [self.mapView handleRotateGesture:rotate];
-
- // Both the rotation and direction should be zero since the rotation threshold hasn't been met.
- XCTAssertEqual(rotate.rotation, 0);
- XCTAssertEqual(self.mapView.direction, 0);
-
- // The direction should be `0`. The default rotation threshold is `3`.
- XCTAssertEqual(self.mapView.direction, 0);
- rotate.state = UIGestureRecognizerStateChanged;
- rotate.rotation = MGLRadiansFromDegrees(2);
- [self.mapView handleRotateGesture:rotate];
-
- // The direction should be `0`. The default rotation threshold is `3`.
- XCTAssertEqual(self.mapView.direction, 0);
-
- for (NSNumber *degrees in @[@-90, @-10, @10, @10, @30, @90, @180, @240, @460, @500, @590, @800]) {
- rotate.state = UIGestureRecognizerStateChanged;
- rotate.rotation = MGLRadiansFromDegrees([degrees doubleValue]);
- [self.mapView handleRotateGesture:rotate];
-
- CGFloat wrappedRotation = mbgl::util::wrap(-MGLDegreesFromRadians(rotate.rotation), 0., 360.);
-
-
- // Check that the direction property now matches the gesture's rotation.
- XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedRotation, 0.001, @"Map direction should match gesture rotation for input of %@°.", degrees);
- }
-
- rotate.state = UIGestureRecognizerStateEnded;
- pinch.state = UIGestureRecognizerStateEnded;
-
- [self.mapView handleRotateGesture:rotate];
- [self.mapView handlePinchGesture:pinch];
-
- XCTAssertFalse(self.mapView.isZooming);
-}
-
-NS_INLINE CGFloat MGLScaleFromZoomLevel(double zoom) {
- return pow(2, zoom);
-}
-
-__unused NS_INLINE double MGLZoomLevelFromScale(CGFloat scale) {
- return log2(scale);
-}
-
-@end
diff --git a/platform/ios/test/MGLMockGestureRecognizers.h b/platform/ios/test/MGLMockGestureRecognizers.h
deleted file mode 100644
index 29889e39f4..0000000000
--- a/platform/ios/test/MGLMockGestureRecognizers.h
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#import <UIKit/UIKit.h>
-
-@interface UIPinchGestureRecognizerMock : UIPinchGestureRecognizer
-@property (nonatomic, readwrite) CGFloat velocity;
-@property (nonatomic) CGPoint locationInViewOverride;
-@property(nonatomic, readwrite) UIGestureRecognizerState state;
-@end
-
-@interface UIRotationGestureRecognizerMock : UIRotationGestureRecognizer
-@property(nonatomic, readwrite) UIGestureRecognizerState state;
-@end
-
-@interface UITapGestureRecognizerMock : UITapGestureRecognizer
-@property (strong, nonatomic) UIView *mockTappedView;
-@property (assign) CGPoint mockTappedPoint;
-@end
-
-@interface UILongPressGestureRecognizerMock : UILongPressGestureRecognizer
-@property(nonatomic, readwrite) UIGestureRecognizerState state;
-@property (assign) CGPoint mockTappedPoint;
-@end
-
-@interface UIPanGestureRecognizerMock : UIPanGestureRecognizer
-@property(nonatomic, readwrite) UIGestureRecognizerState state;
-@property (assign) CGPoint firstFingerPoint;
-@property (assign) CGPoint secondFingerPoint;
-@property(nonatomic, readwrite) NSUInteger numberOfTouches;
-@end
diff --git a/platform/ios/test/MGLMockGestureRecognizers.m b/platform/ios/test/MGLMockGestureRecognizers.m
deleted file mode 100644
index c818805174..0000000000
--- a/platform/ios/test/MGLMockGestureRecognizers.m
+++ /dev/null
@@ -1,55 +0,0 @@
-
-#import "MGLMockGestureRecognizers.h"
-#import "objc/runtime.h"
-
-@implementation UIPinchGestureRecognizerMock
-@synthesize velocity;
-@synthesize state;
-- (CGPoint)locationInView:(nullable UIView *)view { return self.locationInViewOverride; }
-@end
-
-@implementation UIRotationGestureRecognizerMock
-- (CGPoint)locationInView:(nullable UIView*)view { return view.center; }
-@synthesize state;
-@end
-
-@implementation UITapGestureRecognizerMock
-
-+ (void)load {
- method_exchangeImplementations(class_getInstanceMethod(self, @selector(state)),
- class_getInstanceMethod(self, @selector(mockState)));
-}
-
-- (UIGestureRecognizerState)mockState {
- return UIGestureRecognizerStateRecognized;
-}
-
-- (UIView *)view {
- return self.mockTappedView;
-}
-
-- (CGPoint)locationInView:(UIView *)view {
- return self.mockTappedPoint;
-}
-
-@end
-
-@implementation UILongPressGestureRecognizerMock
-@synthesize state;
-
-- (CGPoint)locationInView:(UIView *)view {
- return self.mockTappedPoint;
-}
-@end
-
-@implementation UIPanGestureRecognizerMock
-@synthesize state;
-@synthesize numberOfTouches;
-
-- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view {
- if (touchIndex) {
- return self.secondFingerPoint;
- }
- return self.firstFingerPoint;
-}
-@end
diff --git a/platform/ios/test/MGLNSOrthographyAdditionsTests.m b/platform/ios/test/MGLNSOrthographyAdditionsTests.m
deleted file mode 100644
index f30553e8f6..0000000000
--- a/platform/ios/test/MGLNSOrthographyAdditionsTests.m
+++ /dev/null
@@ -1,19 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import "NSOrthography+MGLAdditions.h"
-#import "MGLVectorTileSource_Private.h"
-
-@interface MGLNSOrthographyAdditionsTests : XCTestCase
-
-@end
-
-@implementation MGLNSOrthographyAdditionsTests
-
-- (void)testStreetsLanguages {
- for (NSString *language in [MGLVectorTileSource mapboxStreetsLanguages]) {
- NSString *dominantScript = [NSOrthography mgl_dominantScriptForMapboxStreetsLanguage:language];
- XCTAssertNotEqualObjects(dominantScript, @"Zyyy", @"Mapbox Streets languages should have dominant script");
- }
-}
-
-@end
diff --git a/platform/ios/test/MGLNetworkConfigurationTests.m b/platform/ios/test/MGLNetworkConfigurationTests.m
deleted file mode 100644
index bfb63f57af..0000000000
--- a/platform/ios/test/MGLNetworkConfigurationTests.m
+++ /dev/null
@@ -1,43 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-#import "MGLNetworkConfiguration_Private.h"
-
-@interface MGLNetworkConfigurationTests : XCTestCase
-@end
-
-@implementation MGLNetworkConfigurationTests
-
-// Regression test for https://github.com/mapbox/mapbox-gl-native/issues/14982
-- (void)testAccessingEventsFromMultipleThreads {
- MGLNetworkConfiguration *configuration = [[MGLNetworkConfiguration alloc] init];
-
- // Concurrent
- dispatch_queue_t queue = dispatch_queue_create("com.mapbox.testAccessingEventsFromMultipleThreads", DISPATCH_QUEUE_CONCURRENT);
-
- NSUInteger numberOfConcurrentBlocks = 20;
-
- XCTestExpectation *expectation = [self expectationWithDescription:@"wait-for-threads"];
- expectation.expectedFulfillmentCount = numberOfConcurrentBlocks;
-
- for (NSUInteger i = 0; i < numberOfConcurrentBlocks; i++) {
-
- NSString *event = [NSString stringWithFormat:@"test://event-%ld", i];
- NSString *resourceType = @"test";
-
- dispatch_async(queue, ^{
- [configuration startDownloadEvent:event type:resourceType];
-
- NSURL *url = [NSURL URLWithString:event];
- NSURLResponse *response = [[NSURLResponse alloc] initWithURL:url MIMEType:nil expectedContentLength:0 textEncodingName:nil];
-
- [configuration stopDownloadEventForResponse:response];
-
- dispatch_async(dispatch_get_main_queue(), ^{
- [expectation fulfill];
- });
- });
- }
-
- [self waitForExpectations:@[expectation] timeout:10.0];
-}
-@end
diff --git a/platform/ios/vendor/SMCalloutView/SMCalloutView.h b/platform/ios/vendor/SMCalloutView/SMCalloutView.h
deleted file mode 100755
index 5bb73d4c84..0000000000
--- a/platform/ios/vendor/SMCalloutView/SMCalloutView.h
+++ /dev/null
@@ -1,217 +0,0 @@
-#import <UIKit/UIKit.h>
-#import <QuartzCore/QuartzCore.h>
-
-/*
-
-SMCalloutView
--------------
-Created by Nick Farina (nfarina@gmail.com)
-Version 2.1.5
-
-*/
-
-/// options for which directions the callout is allowed to "point" in.
-typedef NS_OPTIONS(NSUInteger, MGLSMCalloutArrowDirection) {
- MGLSMCalloutArrowDirectionUp = 1 << 0,
- MGLSMCalloutArrowDirectionDown = 1 << 1,
- MGLSMCalloutArrowDirectionAny = MGLSMCalloutArrowDirectionUp | MGLSMCalloutArrowDirectionDown
-};
-
-/// options for the callout present/dismiss animation
-typedef NS_ENUM(NSInteger, MGLSMCalloutAnimation) {
- /// the "bounce" animation we all know and love from @c UIAlertView
- MGLSMCalloutAnimationBounce,
- /// a simple fade in or out
- MGLSMCalloutAnimationFade,
- /// grow or shrink linearly, like in the iPad Calendar app
- MGLSMCalloutAnimationStretch
-};
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// when delaying our popup in order to scroll content into view, you can use this amount to match the
-/// animation duration of UIScrollView when using @c -setContentOffset:animated.
-extern NSTimeInterval const kMGLSMCalloutViewRepositionDelayForUIScrollView;
-
-@protocol MGLSMCalloutViewDelegate;
-@class MGLSMCalloutBackgroundView;
-
-//
-// Callout view.
-//
-
-// iOS 10+ expects CAAnimationDelegate to be set explicitly.
-#if __IPHONE_OS_VERSION_MAX_ALLOWED < 100000
-@interface MGLSMCalloutView : UIView
-#else
-@interface MGLSMCalloutView : UIView <CAAnimationDelegate>
-#endif
-
-@property (nonatomic, weak, nullable) id<MGLSMCalloutViewDelegate> delegate;
-/// title/titleView relationship mimics UINavigationBar.
-@property (nonatomic, copy, nullable) NSString *title;
-@property (nonatomic, copy, nullable) NSString *subtitle;
-
-/// Left accessory view for the call out
-@property (nonatomic, strong, nullable) UIView *leftAccessoryView;
-/// Right accessoty view for the call out
-@property (nonatomic, strong, nullable) UIView *rightAccessoryView;
-/// Default @c SMCalloutArrowDirectionDown
-@property (nonatomic, assign) MGLSMCalloutArrowDirection permittedArrowDirection;
-/// The current arrow direction
-@property (nonatomic, readonly) MGLSMCalloutArrowDirection currentArrowDirection;
-/// if the @c UIView you're constraining to has portions that are overlapped by nav bar, tab bar, etc. you'll need to tell us those insets.
-@property (nonatomic, assign) UIEdgeInsets constrainedInsets;
-/// default is @c SMCalloutMaskedBackgroundView, or @c SMCalloutDrawnBackgroundView when using @c SMClassicCalloutView
-@property (nonatomic, strong) MGLSMCalloutBackgroundView *backgroundView;
-
-/**
- @brief Custom title view.
-
- @disucssion Keep in mind that @c SMCalloutView calls @c -sizeThatFits on titleView/subtitleView if defined, so your view
- may be resized as a result of that (especially if you're using @c UILabel/UITextField). You may want to subclass and override @c -sizeThatFits, or just wrap your view in a "generic" @c UIView if you do not want it to be auto-sized.
-
- @warning If this is set, the respective @c title property will be ignored.
- */
-@property (nonatomic, strong, nullable) UIView *titleView;
-
-/**
- @brief Custom subtitle view.
-
- @discussion Keep in mind that @c SMCalloutView calls @c -sizeThatFits on subtitleView if defined, so your view
- may be resized as a result of that (especially if you're using @c UILabel/UITextField). You may want to subclass and override @c -sizeThatFits, or just wrap your view in a "generic" @c UIView if you do not want it to be auto-sized.
-
- @warning If this is set, the respective @c subtitle property will be ignored.
- */
-@property (nonatomic, strong, nullable) UIView *subtitleView;
-
-/// Custom "content" view that can be any width/height. If this is set, title/subtitle/titleView/subtitleView are all ignored.
-@property (nonatomic, retain, nullable) UIView *contentView;
-
-/// Custom content view margin
-@property (nonatomic, assign) UIEdgeInsets contentViewInset;
-
-/// calloutOffset is the offset in screen points from the top-middle of the target view, where the anchor of the callout should be shown.
-@property (nonatomic, assign) CGPoint calloutOffset;
-
-/// default SMCalloutAnimationBounce, SMCalloutAnimationFade respectively
-@property (nonatomic, assign) MGLSMCalloutAnimation presentAnimation, dismissAnimation;
-
-/// Returns a new instance of SMCalloutView if running on iOS 7 or better, otherwise a new instance of SMClassicCalloutView if available.
-+ (MGLSMCalloutView *)platformCalloutView;
-
-/**
- @brief Presents a callout view by adding it to "inView" and pointing at the given rect of inView's bounds.
-
- @discussion Constrains the callout to the bounds of the given view. Optionally scrolls the given rect into view (plus margins)
- if @c -delegate is set and responds to @c -delayForRepositionWithSize.
-
- @param rect @c CGRect to present the view from
- @param view view to 'constrain' the @c constrainedView to
- @param constrainedView @c UIView to be constrainted in @c view
- @param animated @c BOOL if presentation should be animated
- */
-- (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToView:(UIView *)constrainedView animated:(BOOL)animated;
-
-/**
- @brief Presents a callout view by adding it to "inView" and pointing at the given rect of inView's bounds.
-
- @discussion Constrains the callout to the rect (in the space of the given view).
-
- @param rect @c CGRect to present the view from
- @param view view to 'constrain' the @c constrainedView to
- @param constrainedRect Rect to constrain the callout to
- @param animated @c BOOL if presentation should be animated
- */
-- (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToRect:(CGRect)constrainedRect animated:(BOOL)animated;
-
-/**
- @brief Present a callout layer in the `layer` and pointing at the given rect of the `layer` bounds
-
- @discussion Same as the view-based presentation, but inserts the callout into a CALayer hierarchy instead.
- @note Be aware that you'll have to direct your own touches to any accessory views, since CALayer doesn't relay touch events.
-
- @param rect @c CGRect to present the view from
- @param layer layer to 'constrain' the @c constrainedLayer to
- @param constrainedLayer @c CALayer to be constrained in @c layer
- @param animated @c BOOL if presentation should be animated
- */
-- (void)presentCalloutFromRect:(CGRect)rect inLayer:(CALayer *)layer constrainedToLayer:(CALayer *)constrainedLayer animated:(BOOL)animated;
-
-/**
- Dismiss the callout view
-
- @param animated @c BOOL if dismissal should be animated
- */
-- (void)dismissCalloutAnimated:(BOOL)animated;
-
-/// For subclassers. You can override this method to provide your own custom animation for presenting/dismissing the callout.
-- (CAAnimation *)animationWithType:(MGLSMCalloutAnimation)type presenting:(BOOL)presenting;
-
-@end
-
-//
-// Background view - default draws the iOS 7 system background style (translucent white with rounded arrow).
-//
-
-/// Abstract base class
-@interface MGLSMCalloutBackgroundView : UIView
-/// indicates where the tip of the arrow should be drawn, as a pixel offset
-@property (nonatomic, assign) CGPoint arrowPoint;
-/// will be set by the callout when the callout is in a highlighted state
-@property (nonatomic, assign) BOOL highlighted;
-/// returns an optional layer whose contents should mask the callout view's contents (not honored by @c SMClassicCalloutView )
-@property (nonatomic, assign) CALayer *contentMask;
-/// height of the callout "arrow"
-@property (nonatomic, assign) CGFloat anchorHeight;
-/// the smallest possible distance from the edge of our control to the "tip" of the anchor, from either left or right
-@property (nonatomic, assign) CGFloat anchorMargin;
-@end
-
-/// Default for iOS 7, this reproduces the "masked" behavior of the iOS 7-style callout view.
-/// Accessories are masked by the shape of the callout (including the arrow itself).
-@interface MGLSMCalloutMaskedBackgroundView : MGLSMCalloutBackgroundView
-@end
-
-//
-// Delegate methods
-//
-
-@protocol MGLSMCalloutViewDelegate <NSObject>
-@optional
-
-/// Controls whether the callout "highlights" when pressed. default YES. You must also respond to @c -calloutViewClicked below.
-/// Not honored by @c SMClassicCalloutView.
-- (BOOL)calloutViewShouldHighlight:(MGLSMCalloutView *)calloutView;
-
-/// Called when the callout view is clicked. Not honored by @c SMClassicCalloutView.
-- (void)calloutViewClicked:(MGLSMCalloutView *)calloutView;
-
-/**
- Called when the callout view detects that it will be outside the constrained view when it appears,
- or if the target rect was already outside the constrained view. You can implement this selector
- to respond to this situation by repositioning your content first in order to make everything visible.
- The @c CGSize passed is the calculated offset necessary to make everything visible (plus a nice margin).
- It expects you to return the amount of time you need to reposition things so the popup can be delayed.
- Typically you would return @c kSMCalloutViewRepositionDelayForUIScrollView if you're repositioning by calling @c [UIScrollView @c setContentOffset:animated:].
-
- @param calloutView the @c SMCalloutView to reposition
- @param offset caluclated offset necessary to make everything visible
- @returns @c NSTimeInterval to delay the repositioning
- */
-- (NSTimeInterval)calloutView:(MGLSMCalloutView *)calloutView delayForRepositionWithSize:(CGSize)offset;
-
-/// Called before the callout view appears on screen, or before the appearance animation will start.
-- (void)calloutViewWillAppear:(MGLSMCalloutView *)calloutView;
-
-/// Called after the callout view appears on screen, or after the appearance animation is complete.
-- (void)calloutViewDidAppear:(MGLSMCalloutView *)calloutView;
-
-/// Called before the callout view is removed from the screen, or before the disappearance animation is complete.
-- (void)calloutViewWillDisappear:(MGLSMCalloutView *)calloutView;
-
-/// Called after the callout view is removed from the screen, or after the disappearance animation is complete.
-- (void)calloutViewDidDisappear:(MGLSMCalloutView *)calloutView;
-
-NS_ASSUME_NONNULL_END
-@end
diff --git a/platform/ios/vendor/SMCalloutView/SMCalloutView.m b/platform/ios/vendor/SMCalloutView/SMCalloutView.m
deleted file mode 100755
index 06626f9497..0000000000
--- a/platform/ios/vendor/SMCalloutView/SMCalloutView.m
+++ /dev/null
@@ -1,939 +0,0 @@
-#import "SMCalloutView.h"
-
-//
-// UIView frame helpers - we do a lot of UIView frame fiddling in this class; these functions help keep things readable.
-//
-
-@interface UIView (SMFrameAdditions)
-@property (nonatomic, assign) CGPoint frameOrigin;
-@property (nonatomic, assign) CGSize frameSize;
-@property (nonatomic, assign) CGFloat frameX, frameY, frameWidth, frameHeight; // normal rect properties
-@property (nonatomic, assign) CGFloat frameLeft, frameTop, frameRight, frameBottom; // these will stretch/shrink the rect
-@end
-
-//
-// Callout View.
-//
-
-#define CALLOUT_DEFAULT_CONTAINER_HEIGHT 44 // height of just the main portion without arrow
-#define CALLOUT_SUB_DEFAULT_CONTAINER_HEIGHT 52 // height of just the main portion without arrow (when subtitle is present)
-#define CALLOUT_MIN_WIDTH 61 // minimum width of system callout
-#define TITLE_HMARGIN 12 // the title/subtitle view's normal horizontal margin from the edges of our callout view or from the accessories
-#define TITLE_TOP 11 // the top of the title view when no subtitle is present
-#define TITLE_SUB_TOP 4 // the top of the title view when a subtitle IS present
-#define TITLE_HEIGHT 21 // title height, fixed
-#define SUBTITLE_TOP 28 // the top of the subtitle, when present
-#define SUBTITLE_HEIGHT 15 // subtitle height, fixed
-#define BETWEEN_ACCESSORIES_MARGIN 7 // margin between accessories when no title/subtitle is present
-#define TOP_ANCHOR_MARGIN 13 // all the above measurements assume a bottom anchor! if we're pointing "up" we'll need to add this top margin to everything.
-#define COMFORTABLE_MARGIN 10 // when we try to reposition content to be visible, we'll consider this margin around your target rect
-
-NSTimeInterval const kMGLSMCalloutViewRepositionDelayForUIScrollView = 1.0/3.0;
-
-@interface MGLSMCalloutView ()
-@property (nonatomic, strong) UIButton *containerView; // for masking and interaction
-@property (nonatomic, strong) UILabel *titleLabel, *subtitleLabel;
-@property (nonatomic, assign) MGLSMCalloutArrowDirection currentArrowDirection;
-@property (nonatomic, assign) BOOL popupCancelled;
-@end
-
-@implementation MGLSMCalloutView
-
-+ (MGLSMCalloutView *)platformCalloutView {
- // MGL: Mapbox does not need or include the custom flavor, so this is modified to just use SMCalloutView.
- return [MGLSMCalloutView new];
-}
-
-- (id)initWithFrame:(CGRect)frame {
- if (self = [super initWithFrame:frame]) {
- self.permittedArrowDirection = MGLSMCalloutArrowDirectionDown;
- self.presentAnimation = MGLSMCalloutAnimationBounce;
- self.dismissAnimation = MGLSMCalloutAnimationFade;
- self.backgroundColor = [UIColor clearColor];
- self.containerView = [UIButton new];
- self.containerView.isAccessibilityElement = NO;
- self.isAccessibilityElement = NO;
- self.contentViewInset = UIEdgeInsetsMake(12, 12, 12, 12);
-
- [self.containerView addTarget:self action:@selector(highlightIfNecessary) forControlEvents:UIControlEventTouchDown | UIControlEventTouchDragInside];
- [self.containerView addTarget:self action:@selector(unhighlightIfNecessary) forControlEvents:UIControlEventTouchDragOutside | UIControlEventTouchCancel | UIControlEventTouchUpOutside | UIControlEventTouchUpInside];
- [self.containerView addTarget:self action:@selector(calloutClicked) forControlEvents:UIControlEventTouchUpInside];
- }
- return self;
-}
-
-- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
- UIView *hitView = [super hitTest:point withEvent:event];
-
- // If we tapped on our container (i.e. the UIButton), then ask the background
- // view if the point is "inside". MGLSMCalloutMaskedBackgroundView provides a
- // custom implementation that checks against the main callout and the down arrow.
- // This avoids taps in "blank" space being detected
-
- if (hitView == self.containerView) {
- // Ideally we'd use the background mask to determine whether a tap point
- // is valid, but that's overkill in this situation
- CGPoint backgroundPoint = [self convertPoint:point toView:self.backgroundView];
- if (![self.backgroundView pointInside:backgroundPoint withEvent:event]) {
- return nil;
- }
- }
-
- return hitView;
-}
-
-- (BOOL)supportsHighlighting {
- if (![self.delegate respondsToSelector:@selector(calloutViewClicked:)])
- return NO;
- if ([self.delegate respondsToSelector:@selector(calloutViewShouldHighlight:)])
- return [self.delegate calloutViewShouldHighlight:self];
- return YES;
-}
-
-- (void)highlightIfNecessary { if (self.supportsHighlighting) self.backgroundView.highlighted = YES; }
-- (void)unhighlightIfNecessary { if (self.supportsHighlighting) self.backgroundView.highlighted = NO; }
-
-- (void)calloutClicked {
- if ([self.delegate respondsToSelector:@selector(calloutViewClicked:)])
- [self.delegate calloutViewClicked:self];
-}
-
-- (UIView *)titleViewOrDefault {
- if (self.titleView)
- // if you have a custom title view defined, return that.
- return self.titleView;
- else {
- if (!self.titleLabel) {
- // create a default titleView
- self.titleLabel = [UILabel new];
- self.titleLabel.frameHeight = TITLE_HEIGHT;
- self.titleLabel.opaque = NO;
- self.titleLabel.backgroundColor = [UIColor clearColor];
- self.titleLabel.font = [UIFont systemFontOfSize:17];
- self.titleLabel.textColor = [UIColor blackColor];
- }
- return self.titleLabel;
- }
-}
-
-- (UIView *)subtitleViewOrDefault {
- if (self.subtitleView)
- // if you have a custom subtitle view defined, return that.
- return self.subtitleView;
- else {
- if (!self.subtitleLabel) {
- // create a default subtitleView
- self.subtitleLabel = [UILabel new];
- self.subtitleLabel.frameHeight = SUBTITLE_HEIGHT;
- self.subtitleLabel.opaque = NO;
- self.subtitleLabel.backgroundColor = [UIColor clearColor];
- self.subtitleLabel.font = [UIFont systemFontOfSize:12];
- self.subtitleLabel.textColor = [UIColor blackColor];
- }
- return self.subtitleLabel;
- }
-}
-
-- (MGLSMCalloutBackgroundView *)backgroundView {
- // create our default background on first access only if it's nil, since you might have set your own background anyway.
- return _backgroundView ? _backgroundView : (_backgroundView = [self defaultBackgroundView]);
-}
-
-- (MGLSMCalloutBackgroundView *)defaultBackgroundView {
- return [MGLSMCalloutMaskedBackgroundView new];
-}
-
-- (void)rebuildSubviews {
- // remove and re-add our appropriate subviews in the appropriate order
- [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
- [self.containerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
- [self setNeedsDisplay];
-
- [self addSubview:self.backgroundView];
- [self addSubview:self.containerView];
-
- if (self.contentView) {
- [self.containerView addSubview:self.contentView];
- }
- else {
- if (self.titleViewOrDefault) [self.containerView addSubview:self.titleViewOrDefault];
- if (self.subtitleViewOrDefault) [self.containerView addSubview:self.subtitleViewOrDefault];
- }
- if (self.leftAccessoryView) [self.containerView addSubview:self.leftAccessoryView];
- if (self.rightAccessoryView) [self.containerView addSubview:self.rightAccessoryView];
-}
-
-// Accessory margins. Accessories are centered vertically when shorter
-// than the callout, otherwise they grow from the upper corner.
-
-- (CGFloat)leftAccessoryVerticalMargin {
- if (self.leftAccessoryView.frameHeight < self.calloutContainerHeight)
- return roundf((self.calloutContainerHeight - self.leftAccessoryView.frameHeight) / 2);
- else
- return 0;
-}
-
-- (CGFloat)leftAccessoryHorizontalMargin {
- return fminf(self.leftAccessoryVerticalMargin, TITLE_HMARGIN);
-}
-
-- (CGFloat)rightAccessoryVerticalMargin {
- if (self.rightAccessoryView.frameHeight < self.calloutContainerHeight)
- return roundf((self.calloutContainerHeight - self.rightAccessoryView.frameHeight) / 2);
- else
- return 0;
-}
-
-- (CGFloat)rightAccessoryHorizontalMargin {
- return fminf(self.rightAccessoryVerticalMargin, TITLE_HMARGIN);
-}
-
-- (CGFloat)innerContentMarginLeft {
- if (self.leftAccessoryView)
- return self.leftAccessoryHorizontalMargin + self.leftAccessoryView.frameWidth + TITLE_HMARGIN;
- else
- return self.contentViewInset.left;
-}
-
-- (CGFloat)innerContentMarginRight {
- if (self.rightAccessoryView)
- return self.rightAccessoryHorizontalMargin + self.rightAccessoryView.frameWidth + TITLE_HMARGIN;
- else
- return self.contentViewInset.right;
-}
-
-- (CGFloat)calloutHeight {
- return self.calloutContainerHeight + self.backgroundView.anchorHeight;
-}
-
-- (CGFloat)calloutContainerHeight {
- if (self.contentView)
- return self.contentView.frameHeight + self.contentViewInset.bottom + self.contentViewInset.top;
- else if (self.subtitleView || self.subtitle.length > 0)
- return CALLOUT_SUB_DEFAULT_CONTAINER_HEIGHT;
- else
- return CALLOUT_DEFAULT_CONTAINER_HEIGHT;
-}
-
-- (CGSize)sizeThatFits:(CGSize)size {
-
- // calculate how much non-negotiable space we need to reserve for margin and accessories
- CGFloat margin = self.innerContentMarginLeft + self.innerContentMarginRight;
-
- // how much room is left for text?
- CGFloat availableWidthForText = size.width - margin - 1;
-
- // no room for text? then we'll have to squeeze into the given size somehow.
- if (availableWidthForText < 0)
- availableWidthForText = 0;
-
- CGSize preferredTitleSize = [self.titleViewOrDefault sizeThatFits:CGSizeMake(availableWidthForText, TITLE_HEIGHT)];
- CGSize preferredSubtitleSize = [self.subtitleViewOrDefault sizeThatFits:CGSizeMake(availableWidthForText, SUBTITLE_HEIGHT)];
-
- // total width we'd like
- CGFloat preferredWidth;
-
- if (self.contentView) {
-
- // if we have a content view, then take our preferred size directly from that
- preferredWidth = self.contentView.frameWidth + margin;
- }
- else if (preferredTitleSize.width >= 0.000001 || preferredSubtitleSize.width >= 0.000001) {
-
- // if we have a title or subtitle, then our assumed margins are valid, and we can apply them
- preferredWidth = fmaxf(preferredTitleSize.width, preferredSubtitleSize.width) + margin;
- }
- else {
- // ok we have no title or subtitle to speak of. In this case, the system callout would actually not display
- // at all! But we can handle it.
- preferredWidth = self.leftAccessoryView.frameWidth + self.rightAccessoryView.frameWidth + self.leftAccessoryHorizontalMargin + self.rightAccessoryHorizontalMargin;
-
- if (self.leftAccessoryView && self.rightAccessoryView)
- preferredWidth += BETWEEN_ACCESSORIES_MARGIN;
- }
-
- // ensure we're big enough to fit our graphics!
- preferredWidth = fmaxf(preferredWidth, CALLOUT_MIN_WIDTH);
-
- // ask to be smaller if we have space, otherwise we'll fit into what we have by truncating the title/subtitle.
- return CGSizeMake(fminf(preferredWidth, size.width), self.calloutHeight);
-}
-
-- (CGSize)offsetToContainRect:(CGRect)innerRect inRect:(CGRect)outerRect {
- CGFloat nudgeRight = fmaxf(0, CGRectGetMinX(outerRect) - CGRectGetMinX(innerRect));
- CGFloat nudgeLeft = fminf(0, CGRectGetMaxX(outerRect) - CGRectGetMaxX(innerRect));
- CGFloat nudgeTop = fmaxf(0, CGRectGetMinY(outerRect) - CGRectGetMinY(innerRect));
- CGFloat nudgeBottom = fminf(0, CGRectGetMaxY(outerRect) - CGRectGetMaxY(innerRect));
- return CGSizeMake(nudgeLeft ? nudgeLeft : nudgeRight, nudgeTop ? nudgeTop : nudgeBottom);
-}
-
-- (UIEdgeInsets)marginInsetsHintForPresentationFromRect:(CGRect)rect {
-
- const CGFloat defaultMargin = 20.0f;
-
- // form our subviews based on our content set so far
- [self rebuildSubviews];
-
- // size the callout to fit the width constraint as best as possible
- CGFloat height = self.calloutHeight;
- CGSize size = [self sizeThatFits:CGSizeMake(0.0f, height)];
-
- // Without re-jigging presentCalloutFromRect, let's just make a best-guess with what we have
- // right now.
- CGFloat horizontalMargin = fmaxf(0, ceilf((CALLOUT_MIN_WIDTH-rect.size.width)/2));
-
- UIEdgeInsets insets = {
- .top = 0.0f,
- .right = -defaultMargin - horizontalMargin,
- .bottom = 0.0f,
- .left = -defaultMargin - horizontalMargin
- };
-
- if (self.permittedArrowDirection == MGLSMCalloutArrowDirectionUp)
- insets.bottom -= (defaultMargin + size.height);
- else
- insets.top -= (defaultMargin + size.height);
-
- return insets;
-}
-
-
-- (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToView:(UIView *)constrainedView animated:(BOOL)animated {
- [self presentCalloutFromRect:rect inLayer:view.layer ofView:view constrainedToLayer:constrainedView.layer animated:animated];
-}
-
-- (void)presentCalloutFromRect:(CGRect)rect inLayer:(CALayer *)layer constrainedToLayer:(CALayer *)constrainedLayer animated:(BOOL)animated {
- [self presentCalloutFromRect:rect inLayer:layer ofView:nil constrainedToLayer:constrainedLayer animated:animated];
-}
-
-- (void)presentCalloutFromRect:(CGRect)rect inLayer:(CALayer *)layer ofView:(UIView *)view constrainedToLayer:(CALayer *)constrainedLayer animated:(BOOL)animated {
- // figure out the constrained view's rect in our popup view's coordinate system
- CGRect constrainedRect = [constrainedLayer convertRect:constrainedLayer.bounds toLayer:layer];
- [self presentCalloutFromRect:rect inLayer:layer ofView:view constrainedToRect:constrainedRect animated:animated];
-}
-
-- (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToRect:(CGRect)constrainedRect animated:(BOOL)animated {
- [self presentCalloutFromRect:rect inLayer:view.layer ofView:view constrainedToRect:constrainedRect animated:animated];
-}
-
-// this private method handles both CALayer and UIView parents depending on what's passed.
-- (void)presentCalloutFromRect:(CGRect)rect inLayer:(CALayer *)layer ofView:(UIView *)view constrainedToRect:(CGRect)constrainedRect animated:(BOOL)animated {
-
- // Sanity check: dismiss this callout immediately if it's displayed somewhere
- if (self.layer.superlayer) [self dismissCalloutAnimated:NO];
-
- // cancel all animations that may be in progress
- [self.layer removeAnimationForKey:@"present"];
- [self.layer removeAnimationForKey:@"dismiss"];
-
-
- // apply our edge constraints
- constrainedRect = UIEdgeInsetsInsetRect(constrainedRect, self.constrainedInsets);
-
- constrainedRect = CGRectInset(constrainedRect, COMFORTABLE_MARGIN, COMFORTABLE_MARGIN);
-
- // form our subviews based on our content set so far
- [self rebuildSubviews];
-
- // apply title/subtitle (if present
- self.titleLabel.text = self.title;
- self.subtitleLabel.text = self.subtitle;
-
- // size the callout to fit the width constraint as best as possible
- self.frameSize = [self sizeThatFits:CGSizeMake(constrainedRect.size.width, self.calloutHeight)];
-
- // how much room do we have in the constraint box, both above and below our target rect?
- CGFloat topSpace = CGRectGetMinY(rect) - CGRectGetMinY(constrainedRect);
- CGFloat bottomSpace = CGRectGetMaxY(constrainedRect) - CGRectGetMaxY(rect);
-
- // we prefer to point our arrow down.
- MGLSMCalloutArrowDirection bestDirection = MGLSMCalloutArrowDirectionDown;
-
- // we'll point it up though if that's the only option you gave us.
- if (self.permittedArrowDirection == MGLSMCalloutArrowDirectionUp)
- bestDirection = MGLSMCalloutArrowDirectionUp;
-
- // or, if we don't have enough space on the top and have more space on the bottom, and you
- // gave us a choice, then pointing up is the better option.
- if (self.permittedArrowDirection == MGLSMCalloutArrowDirectionAny && topSpace < self.calloutHeight && bottomSpace > topSpace)
- bestDirection = MGLSMCalloutArrowDirectionUp;
-
- self.currentArrowDirection = bestDirection;
-
- // we want to point directly at the horizontal center of the given rect. calculate our "anchor point" in terms of our
- // target view's coordinate system. make sure to offset the anchor point as requested if necessary.
- CGFloat anchorX = self.calloutOffset.x + CGRectGetMidX(rect);
- CGFloat anchorY = self.calloutOffset.y + (bestDirection == MGLSMCalloutArrowDirectionDown ? CGRectGetMinY(rect) : CGRectGetMaxY(rect));
-
- // we prefer to sit centered directly above our anchor
- CGFloat calloutX = roundf(anchorX - self.frameWidth / 2);
-
- // but not if it's going to get too close to the edge of our constraints
- if (calloutX < constrainedRect.origin.x)
- calloutX = constrainedRect.origin.x;
-
- if (calloutX > constrainedRect.origin.x+constrainedRect.size.width-self.frameWidth)
- calloutX = constrainedRect.origin.x+constrainedRect.size.width-self.frameWidth;
-
- // what's the farthest to the left and right that we could point to, given our background image constraints?
- CGFloat minPointX = calloutX + self.backgroundView.anchorMargin;
- CGFloat maxPointX = calloutX + self.frameWidth - self.backgroundView.anchorMargin;
-
- // we may need to scoot over to the left or right to point at the correct spot
- CGFloat adjustX = 0;
- if (anchorX < minPointX) adjustX = anchorX - minPointX;
- if (anchorX > maxPointX) adjustX = anchorX - maxPointX;
-
- // add the callout to the given layer (or view if possible, to receive touch events)
- if (view)
- [view addSubview:self];
- else
- [layer addSublayer:self.layer];
-
- CGPoint calloutOrigin = {
- .x = calloutX + adjustX,
- .y = bestDirection == MGLSMCalloutArrowDirectionDown ? (anchorY - self.calloutHeight) : anchorY
- };
-
- self.frameOrigin = calloutOrigin;
-
- // now set the *actual* anchor point for our layer so that our "popup" animation starts from this point.
- CGPoint anchorPoint = [layer convertPoint:CGPointMake(anchorX, anchorY) toLayer:self.layer];
-
- // pass on the anchor point to our background view so it knows where to draw the arrow
- self.backgroundView.arrowPoint = anchorPoint;
-
- // adjust it to unit coordinates for the actual layer.anchorPoint property
- anchorPoint.x /= self.frameWidth;
- anchorPoint.y /= self.frameHeight;
- self.layer.anchorPoint = anchorPoint;
-
- // setting the anchor point moves the view a bit, so we need to reset
- self.frameOrigin = calloutOrigin;
-
- // make sure our frame is not on half-pixels or else we may be blurry!
- CGFloat scale = [UIScreen mainScreen].scale;
- self.frameX = floorf(self.frameX*scale)/scale;
- self.frameY = floorf(self.frameY*scale)/scale;
-
- // layout now so we can immediately start animating to the final position if needed
- [self setNeedsLayout];
- [self layoutIfNeeded];
-
- // if we're outside the bounds of our constraint rect, we'll give our delegate an opportunity to shift us into position.
- // consider both our size and the size of our target rect (which we'll assume to be the size of the content you want to scroll into view.
- CGRect contentRect = CGRectUnion(self.frame, rect);
- CGSize offset = [self offsetToContainRect:contentRect inRect:constrainedRect];
-
- NSTimeInterval delay = 0;
- self.popupCancelled = NO; // reset this before calling our delegate below
-
- if ([self.delegate respondsToSelector:@selector(calloutView:delayForRepositionWithSize:)] && !CGSizeEqualToSize(offset, CGSizeZero))
- delay = [self.delegate calloutView:(id)self delayForRepositionWithSize:offset];
-
- // there's a chance that user code in the delegate method may have called -dismissCalloutAnimated to cancel things; if that
- // happened then we need to bail!
- if (self.popupCancelled) return;
-
- // now we want to mask our contents to our background view (if requested) to match the iOS 7 style
- self.containerView.layer.mask = self.backgroundView.contentMask;
-
- // if we need to delay, we don't want to be visible while we're delaying, so hide us in preparation for our popup
- self.hidden = YES;
-
- // create the appropriate animation, even if we're not animated
- CAAnimation *animation = [self animationWithType:self.presentAnimation presenting:YES];
-
- // nuke the duration if no animation requested - we'll still need to "run" the animation to get delays and callbacks
- if (!animated)
- animation.duration = 0.0000001; // can't be zero or the animation won't "run"
-
- animation.beginTime = CACurrentMediaTime() + delay;
- animation.delegate = self;
-
- [self.layer addAnimation:animation forKey:@"present"];
-}
-
-- (void)animationDidStart:(CAAnimation *)anim {
- BOOL presenting = [[anim valueForKey:@"presenting"] boolValue];
-
- if (presenting) {
- if ([_delegate respondsToSelector:@selector(calloutViewWillAppear:)])
- [_delegate calloutViewWillAppear:(id)self];
-
- // ok, animation is on, let's make ourselves visible!
- self.hidden = NO;
- }
- else if (!presenting) {
- if ([_delegate respondsToSelector:@selector(calloutViewWillDisappear:)])
- [_delegate calloutViewWillDisappear:(id)self];
- }
-}
-
-- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)finished {
- BOOL presenting = [[anim valueForKey:@"presenting"] boolValue];
-
- if (presenting && finished) {
- if ([_delegate respondsToSelector:@selector(calloutViewDidAppear:)])
- [_delegate calloutViewDidAppear:(id)self];
- }
- else if (!presenting && finished) {
-
- [self removeFromParent];
- [self.layer removeAnimationForKey:@"dismiss"];
-
- if ([_delegate respondsToSelector:@selector(calloutViewDidDisappear:)])
- [_delegate calloutViewDidDisappear:(id)self];
- }
-}
-
-- (void)dismissCalloutAnimated:(BOOL)animated {
-
- // cancel all animations that may be in progress
- [self.layer removeAnimationForKey:@"present"];
- [self.layer removeAnimationForKey:@"dismiss"];
-
- self.popupCancelled = YES;
-
- if (animated) {
- CAAnimation *animation = [self animationWithType:self.dismissAnimation presenting:NO];
- animation.delegate = self;
- [self.layer addAnimation:animation forKey:@"dismiss"];
- }
- else {
- [self removeFromParent];
- }
-}
-
-- (void)removeFromParent {
- if (self.superview)
- [self removeFromSuperview];
- else {
- // removing a layer from a superlayer causes an implicit fade-out animation that we wish to disable.
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
- [self.layer removeFromSuperlayer];
- [CATransaction commit];
- }
-}
-
-- (CAAnimation *)animationWithType:(MGLSMCalloutAnimation)type presenting:(BOOL)presenting {
- CAAnimation *animation = nil;
-
- switch (type)
- {
- case MGLSMCalloutAnimationBounce:
- {
- CABasicAnimation *fade = [CABasicAnimation animationWithKeyPath:@"opacity"];
- fade.duration = 0.23;
- fade.fromValue = presenting ? @0.0 : @1.0;
- fade.toValue = presenting ? @1.0 : @0.0;
- fade.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
-
- CABasicAnimation *bounce = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
- bounce.duration = 0.23;
- bounce.fromValue = presenting ? @0.7 : @1.0;
- bounce.toValue = presenting ? @1.0 : @0.7;
- bounce.timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.59367:0.12066:0.18878:1.5814];
-
- CAAnimationGroup *group = [CAAnimationGroup animation];
- group.animations = @[fade, bounce];
- group.duration = 0.23;
-
- animation = group;
- break;
- }
-
- case MGLSMCalloutAnimationFade:
- {
- CABasicAnimation *fade = [CABasicAnimation animationWithKeyPath:@"opacity"];
- fade.duration = 1.0/3.0;
- fade.fromValue = presenting ? @0.0 : @1.0;
- fade.toValue = presenting ? @1.0 : @0.0;
- animation = fade;
- break;
- }
-
- case MGLSMCalloutAnimationStretch:
- {
- CABasicAnimation *stretch = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
- stretch.duration = 0.1;
- stretch.fromValue = presenting ? @0.0 : @1.0;
- stretch.toValue = presenting ? @1.0 : @0.0;
- animation = stretch;
- break;
- }
- }
-
- // CAAnimation is KVC compliant, so we can store whether we're presenting for lookup in our delegate methods
- [animation setValue:@(presenting) forKey:@"presenting"];
-
- animation.fillMode = kCAFillModeForwards;
- animation.removedOnCompletion = NO;
-
- return animation;
-}
-
-- (void)layoutSubviews {
-
- self.containerView.frame = self.bounds;
- self.backgroundView.frame = self.bounds;
-
- // if we're pointing up, we'll need to push almost everything down a bit
- CGFloat dy = self.currentArrowDirection == MGLSMCalloutArrowDirectionUp ? TOP_ANCHOR_MARGIN : 0;
-
- self.titleViewOrDefault.frameX = self.innerContentMarginLeft;
- self.titleViewOrDefault.frameY = (self.subtitleView || self.subtitle.length ? TITLE_SUB_TOP : TITLE_TOP) + dy;
- self.titleViewOrDefault.frameWidth = self.frameWidth - self.innerContentMarginLeft - self.innerContentMarginRight;
-
- self.subtitleViewOrDefault.frameX = self.titleViewOrDefault.frameX;
- self.subtitleViewOrDefault.frameY = SUBTITLE_TOP + dy;
- self.subtitleViewOrDefault.frameWidth = self.titleViewOrDefault.frameWidth;
-
- self.leftAccessoryView.frameX = self.leftAccessoryHorizontalMargin;
- self.leftAccessoryView.frameY = self.leftAccessoryVerticalMargin + dy;
-
- self.rightAccessoryView.frameX = self.frameWidth - self.rightAccessoryHorizontalMargin - self.rightAccessoryView.frameWidth;
- self.rightAccessoryView.frameY = self.rightAccessoryVerticalMargin + dy;
-
- if (self.contentView) {
- self.contentView.frameX = self.innerContentMarginLeft;
- self.contentView.frameY = self.contentViewInset.top + dy;
- }
-}
-
-#pragma mark - Accessibility
-
-- (NSInteger)accessibilityElementCount {
- return (!!self.leftAccessoryView + !!self.titleViewOrDefault +
- !!self.subtitleViewOrDefault + !!self.rightAccessoryView);
-}
-
-- (id)accessibilityElementAtIndex:(NSInteger)index {
- if (index == 0) {
- return self.leftAccessoryView ? self.leftAccessoryView : self.titleViewOrDefault;
- }
- if (index == 1) {
- return self.leftAccessoryView ? self.titleViewOrDefault : self.subtitleViewOrDefault;
- }
- if (index == 2) {
- return self.leftAccessoryView ? self.subtitleViewOrDefault : self.rightAccessoryView;
- }
- if (index == 3) {
- return self.leftAccessoryView ? self.rightAccessoryView : nil;
- }
- return nil;
-}
-
-- (NSInteger)indexOfAccessibilityElement:(id)element {
- if (element == nil) return NSNotFound;
- if (element == self.leftAccessoryView) return 0;
- if (element == self.titleViewOrDefault) {
- return self.leftAccessoryView ? 1 : 0;
- }
- if (element == self.subtitleViewOrDefault) {
- return self.leftAccessoryView ? 2 : 1;
- }
- if (element == self.rightAccessoryView) {
- return self.leftAccessoryView ? 3 : 2;
- }
- return NSNotFound;
-}
-
-@end
-
-// import this known "private API" from SMCalloutBackgroundView
-@interface MGLSMCalloutBackgroundView (EmbeddedImages)
-+ (UIImage *)embeddedImageNamed:(NSString *)name;
-@end
-
-//
-// Callout Background View.
-//
-
-@interface MGLSMCalloutMaskedBackgroundView ()
-@property (nonatomic, strong) UIView *containerView, *containerBorderView, *arrowView;
-@property (nonatomic, strong) UIImageView *arrowImageView, *arrowHighlightedImageView, *arrowBorderView;
-@end
-
-static UIImage *blackArrowImage = nil, *whiteArrowImage = nil, *grayArrowImage = nil;
-
-@implementation MGLSMCalloutMaskedBackgroundView
-
-- (id)initWithFrame:(CGRect)frame {
- if (self = [super initWithFrame:frame]) {
-
- // Here we're mimicking the very particular (and odd) structure of the system callout view.
- // The hierarchy and view/layer values were discovered by inspecting map kit using Reveal.app
-
- self.containerView = [UIView new];
- self.containerView.backgroundColor = [UIColor whiteColor];
- self.containerView.alpha = 0.96;
- self.containerView.layer.cornerRadius = 8;
- self.containerView.layer.shadowRadius = 30;
- self.containerView.layer.shadowOpacity = 0.1;
-
- self.containerBorderView = [UIView new];
- self.containerBorderView.layer.borderColor = [UIColor colorWithWhite:0 alpha:0.1].CGColor;
- self.containerBorderView.layer.borderWidth = 0.5;
- self.containerBorderView.layer.cornerRadius = 8.5;
-
- if (!blackArrowImage) {
- blackArrowImage = [MGLSMCalloutBackgroundView embeddedImageNamed:@"CalloutArrow"];
- whiteArrowImage = [self image:blackArrowImage withColor:[UIColor whiteColor]];
- grayArrowImage = [self image:blackArrowImage withColor:[UIColor colorWithWhite:0.85 alpha:1]];
- }
-
- self.anchorHeight = 13;
- self.anchorMargin = 27;
-
- self.arrowView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, blackArrowImage.size.width, blackArrowImage.size.height)];
- self.arrowView.alpha = 0.96;
- self.arrowImageView = [[UIImageView alloc] initWithImage:whiteArrowImage];
- self.arrowHighlightedImageView = [[UIImageView alloc] initWithImage:grayArrowImage];
- self.arrowHighlightedImageView.hidden = YES;
- self.arrowBorderView = [[UIImageView alloc] initWithImage:blackArrowImage];
- self.arrowBorderView.alpha = 0.1;
- self.arrowBorderView.frameY = 0.5;
-
- [self addSubview:self.containerView];
- [self.containerView addSubview:self.containerBorderView];
- [self addSubview:self.arrowView];
- [self.arrowView addSubview:self.arrowBorderView];
- [self.arrowView addSubview:self.arrowImageView];
- [self.arrowView addSubview:self.arrowHighlightedImageView];
- }
- return self;
-}
-
-// Make sure we relayout our images when our arrow point changes!
-- (void)setArrowPoint:(CGPoint)arrowPoint {
- [super setArrowPoint:arrowPoint];
- [self setNeedsLayout];
-}
-
-- (void)setHighlighted:(BOOL)highlighted {
- [super setHighlighted:highlighted];
- self.containerView.backgroundColor = highlighted ? [UIColor colorWithWhite:0.85 alpha:1] : [UIColor whiteColor];
- self.arrowImageView.hidden = highlighted;
- self.arrowHighlightedImageView.hidden = !highlighted;
-}
-
-- (UIImage *)image:(UIImage *)image withColor:(UIColor *)color {
-
- UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
- CGRect imageRect = (CGRect){.size=image.size};
- CGContextRef c = UIGraphicsGetCurrentContext();
- CGContextTranslateCTM(c, 0, image.size.height);
- CGContextScaleCTM(c, 1, -1);
- CGContextClipToMask(c, imageRect, image.CGImage);
- [color setFill];
- CGContextFillRect(c, imageRect);
- UIImage *whiteImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return whiteImage;
-}
-
-- (void)layoutSubviews {
-
- BOOL pointingUp = self.arrowPoint.y < self.frameHeight/2;
-
- // if we're pointing up, we'll need to push almost everything down a bit
- CGFloat dy = pointingUp ? TOP_ANCHOR_MARGIN : 0;
-
- self.containerView.frame = CGRectMake(0, dy, self.frameWidth, self.frameHeight - self.arrowView.frameHeight + 0.5);
- self.containerBorderView.frame = CGRectInset(self.containerView.bounds, -0.5, -0.5);
-
- self.arrowView.frameX = roundf(self.arrowPoint.x - self.arrowView.frameWidth / 2);
-
- if (pointingUp) {
- self.arrowView.frameY = 1;
- self.arrowView.transform = CGAffineTransformMakeRotation(M_PI);
- }
- else {
- self.arrowView.frameY = self.containerView.frameHeight - 0.5;
- self.arrowView.transform = CGAffineTransformIdentity;
- }
-}
-
-- (CALayer *)contentMask {
-
- UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
-
- [self.layer renderInContext:UIGraphicsGetCurrentContext()];
-
- UIImage *maskImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
-
- CALayer *layer = [CALayer layer];
- layer.frame = self.bounds;
- layer.contents = (id)maskImage.CGImage;
- return layer;
-}
-
-- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
-
- // Only interested in providing a custom pointInside for touches.
- if (event.type != UIEventTypeTouches) {
- return [super pointInside:point withEvent:event];
- }
-
- NSArray *views = @[self.containerView, self.arrowView];
- for (UIView *view in views) {
- CGPoint viewPoint = [self convertPoint:point toView:view];
- if (CGRectContainsPoint(view.bounds, viewPoint)) {
- return YES;
- }
- }
-
- return NO;
-}
-
-@end
-
-@implementation MGLSMCalloutBackgroundView
-
-+ (NSData *)dataWithBase64EncodedString:(NSString *)string {
- //
- // NSData+Base64.m
- //
- // Version 1.0.2
- //
- // Created by Nick Lockwood on 12/01/2012.
- // Copyright (C) 2012 Charcoal Design
- //
- // Distributed under the permissive zlib License
- // Get the latest version from here:
- //
- // https://github.com/nicklockwood/Base64
- //
- // This software is provided 'as-is', without any express or implied
- // warranty. In no event will the authors be held liable for any damages
- // arising from the use of this software.
- //
- // Permission is granted to anyone to use this software for any purpose,
- // including commercial applications, and to alter it and redistribute it
- // freely, subject to the following restrictions:
- //
- // 1. The origin of this software must not be misrepresented; you must not
- // claim that you wrote the original software. If you use this software
- // in a product, an acknowledgment in the product documentation would be
- // appreciated but is not required.
- //
- // 2. Altered source versions must be plainly marked as such, and must not be
- // misrepresented as being the original software.
- //
- // 3. This notice may not be removed or altered from any source distribution.
- //
- const char lookup[] = {
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 62, 99, 99, 99, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 99, 99, 99, 99, 99, 99,
- 99, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 99, 99, 99, 99, 99,
- 99, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 99, 99, 99, 99, 99
- };
-
- NSData *inputData = [string dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
- long long inputLength = [inputData length];
- const unsigned char *inputBytes = [inputData bytes];
-
- long long maxOutputLength = (inputLength / 4 + 1) * 3;
- NSMutableData *outputData = [NSMutableData dataWithLength:(NSUInteger)maxOutputLength];
- unsigned char *outputBytes = (unsigned char *)[outputData mutableBytes];
-
- int accumulator = 0;
- long long outputLength = 0;
- unsigned char accumulated[] = {0, 0, 0, 0};
- for (long long i = 0; i < inputLength; i++) {
- unsigned char decoded = lookup[inputBytes[i] & 0x7F];
- if (decoded != 99) {
- accumulated[accumulator] = decoded;
- if (accumulator == 3) {
- outputBytes[outputLength++] = (accumulated[0] << 2) | (accumulated[1] >> 4);
- outputBytes[outputLength++] = (accumulated[1] << 4) | (accumulated[2] >> 2);
- outputBytes[outputLength++] = (accumulated[2] << 6) | accumulated[3];
- }
- accumulator = (accumulator + 1) % 4;
- }
- }
-
- //handle left-over data
- if (accumulator > 0) outputBytes[outputLength] = (accumulated[0] << 2) | (accumulated[1] >> 4);
- if (accumulator > 1) outputBytes[++outputLength] = (accumulated[1] << 4) | (accumulated[2] >> 2);
- if (accumulator > 2) outputLength++;
-
- //truncate data to match actual output length
- outputData.length = (NSUInteger)outputLength;
- return outputLength? outputData: nil;
-}
-
-+ (UIImage *)embeddedImageNamed:(NSString *)name {
- CGFloat screenScale = [UIScreen mainScreen].scale;
- if (screenScale > 1.0) {
- name = [name stringByAppendingString:@"_2x"];
- screenScale = 2.0;
- }
-
- SEL selector = NSSelectorFromString(name);
-
- if (![(id)self respondsToSelector:selector]) {
- NSLog(@"Could not find an embedded image. Ensure that you've added a class-level method named +%@", name);
- return nil;
- }
-
- // We need to hush the compiler here - but we know what we're doing!
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
- NSString *base64String = [(id)self performSelector:selector];
- #pragma clang diagnostic pop
-
- UIImage *rawImage = [UIImage imageWithData:[self dataWithBase64EncodedString:base64String]];
- return [UIImage imageWithCGImage:rawImage.CGImage scale:screenScale orientation:UIImageOrientationUp];
-}
-
-+ (NSString *)CalloutArrow { return @"iVBORw0KGgoAAAANSUhEUgAAACcAAAANCAYAAAAqlHdlAAAAHGlET1QAAAACAAAAAAAAAAcAAAAoAAAABwAAAAYAAADJEgYpIwAAAJVJREFUOBFiYIAAdn5+fkFOTkE5Dg5eW05O3lJOTr6zQPyfDhhoD28pxF5BOZA7gE5ih7oLN8XJyR8MdNwrGjkQaC5/MG7biZDh4OBXBDruLpUdeBdkLhHWE1bCzs6nAnTcUyo58DnIPMK2kqAC6DALIP5JoQNB+i1IsJZ4pcBEm0iJ40D6ibeNDJVAx00k04ETSbUOAAAA//+SwicfAAAAe0lEQVRjYCAdMHNy8u7l5OT7Tzzm3Qu0hpl0q8jQwcPDIwp02B0iHXeHl5dXhAxryNfCzc2tC3TcJwIO/ARSR74tFOjk4uL1BzruHw4H/gPJU2A85Vq5uPjTgY77g+bAPyBxyk2nggkcHPxOnJz8B4AOfAGiQXwqGMsAACGK1kPPMHNBAAAAAElFTkSuQmCC"; }
-
-+ (NSString *)CalloutArrow_2x { return @"iVBORw0KGgoAAAANSUhEUgAAAE4AAAAaCAYAAAAZtWr8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAHGlET1QAAAACAAAAAAAAAA0AAAAoAAAADQAAAA0AAAFMRh0LGwAAARhJREFUWAnclbENwjAQRZ0mih2fDYgsQEVDxQZMgKjpWYAJkBANI8AGDIEoM0WkzBDRAf8klB44g0OkU1zE3/+9RIpS7VVY730/y/woTWlsjJ9iPcN9pbXfY85auyvm/qcDNmb0e2Z+sk/ZBTthN0oVttX12mJIWeaWEFf+kbySmZQa0msu3nzaGJprTXV3BVLNDG/if7bNOTeAvFP35NGJu39GL7Abb27bFXncVQBZLgJf3jp+ebSWIxZMgrxdvPJoJ4gqHpXgV36ITR46HUGaiNMKB6YQd4lI3gV8qTBjmDhrbQFxVQTyKu4ShjJQap7nE4hrfiiv4Q6B8MLGat1bQNztB/JwZm8Rli5wujFu821xfGZgLPUAAAD//4wvm4gAAAD7SURBVOWXMQ6CMBiFgaFpi6VyBEedXJy4hMQTeBSvRDgJEySegI3EQWOivkZnqUB/k0LyL7R9L++D9G+DwP0TCZGUqCdRlYgUuY9F4JCmqQa0hgBcY7wIItFZMLZYS5l0ruAZbXhs6BIROgmhcoB7OIAHTZUTRqG3wp9xmhqc0aRPQu8YAlwxIbwCEUL6GH9wfDcLXY2HpyvvmkHf9+BcrwCuHQGvNRp9Pl6OY0PPAO42AB7WqMxLKLahpFR7gLv/AA9zPe+gtvAMCIC7WMC7CqEPtrqzmBfHyy3A1V/g1Th27GYBY0BIxrk6Ap65254/VZp30GID9JwteQEZrVMWXqGn8gAAAABJRU5ErkJggg=="; }
-
-@end
-
-//
-// Our UIView frame helpers implementation
-//
-
-@implementation UIView (SMFrameAdditions)
-
-- (CGPoint)frameOrigin { return self.frame.origin; }
-- (void)setFrameOrigin:(CGPoint)origin { self.frame = (CGRect){ .origin=origin, .size=self.frame.size }; }
-
-- (CGFloat)frameX { return self.frame.origin.x; }
-- (void)setFrameX:(CGFloat)x { self.frame = (CGRect){ .origin.x=x, .origin.y=self.frame.origin.y, .size=self.frame.size }; }
-
-- (CGFloat)frameY { return self.frame.origin.y; }
-- (void)setFrameY:(CGFloat)y { self.frame = (CGRect){ .origin.x=self.frame.origin.x, .origin.y=y, .size=self.frame.size }; }
-
-- (CGSize)frameSize { return self.frame.size; }
-- (void)setFrameSize:(CGSize)size { self.frame = (CGRect){ .origin=self.frame.origin, .size=size }; }
-
-- (CGFloat)frameWidth { return self.frame.size.width; }
-- (void)setFrameWidth:(CGFloat)width { self.frame = (CGRect){ .origin=self.frame.origin, .size.width=width, .size.height=self.frame.size.height }; }
-
-- (CGFloat)frameHeight { return self.frame.size.height; }
-- (void)setFrameHeight:(CGFloat)height { self.frame = (CGRect){ .origin=self.frame.origin, .size.width=self.frame.size.width, .size.height=height }; }
-
-- (CGFloat)frameLeft { return self.frame.origin.x; }
-- (void)setFrameLeft:(CGFloat)left { self.frame = (CGRect){ .origin.x=left, .origin.y=self.frame.origin.y, .size.width=fmaxf(self.frame.origin.x+self.frame.size.width-left,0), .size.height=self.frame.size.height }; }
-
-- (CGFloat)frameTop { return self.frame.origin.y; }
-- (void)setFrameTop:(CGFloat)top { self.frame = (CGRect){ .origin.x=self.frame.origin.x, .origin.y=top, .size.width=self.frame.size.width, .size.height=fmaxf(self.frame.origin.y+self.frame.size.height-top,0) }; }
-
-- (CGFloat)frameRight { return self.frame.origin.x + self.frame.size.width; }
-- (void)setFrameRight:(CGFloat)right { self.frame = (CGRect){ .origin=self.frame.origin, .size.width=fmaxf(right-self.frame.origin.x,0), .size.height=self.frame.size.height }; }
-
-- (CGFloat)frameBottom { return self.frame.origin.y + self.frame.size.height; }
-- (void)setFrameBottom:(CGFloat)bottom { self.frame = (CGRect){ .origin=self.frame.origin, .size.width=self.frame.size.width, .size.height=fmaxf(bottom-self.frame.origin.y,0) }; }
-
-@end
diff --git a/platform/ios/vendor/mapbox-accounts-ios/MBXSKUToken.h b/platform/ios/vendor/mapbox-accounts-ios/MBXSKUToken.h
deleted file mode 100644
index c93b323b06..0000000000
--- a/platform/ios/vendor/mapbox-accounts-ios/MBXSKUToken.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString *MBXAccountsSKUID NS_TYPED_ENUM;
-FOUNDATION_EXTERN const MBXAccountsSKUID MBXAccountsSKUIDMapsUser;
-FOUNDATION_EXTERN const MBXAccountsSKUID MBXAccountsSKUIDNavigationUser;
-FOUNDATION_EXTERN const MBXAccountsSKUID MBXAccountsSKUIDNavigationSession;
-
-
-@interface MBXSKUToken : NSObject
-
-/**
- Activates a specific SKU identifier.
-
- Defaults to `MBXAccountsSKUIDMapsUser`.
-
- See https://www.mapbox.com/pricing/ for more information
- */
-+ (void)activateSKUID:(MBXAccountsSKUID)skuId;
-
-/**
- Resets the current session. Calling this method has no effect unless the type
- of the SKU id is of kind session.
- */
-+ (void)resetSession;
-
-/**
- Returns the current SKU token. `+[MBXSKUToken activateSKUID:]` must be called
- before accessing this property unless an `MBXAccountsSKUIDMapsUser` token is preferred.
- */
-@property (class, nonatomic, readonly) NSString *skuToken;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/ios/vendor/mapbox-accounts-ios/libmbxaccounts.a b/platform/ios/vendor/mapbox-accounts-ios/libmbxaccounts.a
deleted file mode 100644
index 30d46a4f31..0000000000
--- a/platform/ios/vendor/mapbox-accounts-ios/libmbxaccounts.a
+++ /dev/null
Binary files differ
diff --git a/platform/ios/vendor/mapbox-events-ios b/platform/ios/vendor/mapbox-events-ios
deleted file mode 160000
-Subproject 2e6bbd9f3c898f33a49e20fb97eca86eeb6351e
diff --git a/platform/macos/ExportOptions.plist b/platform/macos/ExportOptions.plist
deleted file mode 100644
index 21af10c08a..0000000000
--- a/platform/macos/ExportOptions.plist
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>method</key>
- <string>developer-id</string>
- <key>teamID</key>
- <string>GJZR2MEM28</string>
-</dict>
-</plist>
diff --git a/platform/macos/Mapbox-macOS-SDK-symbols.podspec b/platform/macos/Mapbox-macOS-SDK-symbols.podspec
deleted file mode 100644
index 4d21db99fb..0000000000
--- a/platform/macos/Mapbox-macOS-SDK-symbols.podspec
+++ /dev/null
@@ -1,30 +0,0 @@
-Pod::Spec.new do |m|
-
- version = '0.14.0'
-
- m.name = 'Mapbox-macOS-SDK-symbols'
- m.version = "#{version}-symbols"
-
- m.summary = 'Open-source, interactive, fully customizable vector maps.'
- m.description = 'Interactive, fully customizable vector maps with tight platform integration and high-performance OpenGL rendering.'
- m.homepage = 'https://mapbox.github.io/mapbox-gl-native/macos/'
- m.license = { :type => 'BSD', :file => 'LICENSE.md' }
- m.author = { 'Mapbox' => 'mobile@mapbox.com' }
- m.screenshot = "https://mapbox.github.io/mapbox-gl-native/macos/#{version}/img/screenshot.jpg"
- m.social_media_url = 'https://twitter.com/mapbox'
- m.documentation_url = 'https://mapbox.github.io/mapbox-gl-native/macos/'
-
- m.source = {
- :http => "https://github.com/mapbox/mapbox-gl-native/releases/download/macos-v#{version}/mapbox-macos-sdk-#{m.version.to_s}.zip",
- :flatten => true
- }
-
- m.platform = :osx
- m.osx.deployment_target = '10.11'
-
- m.requires_arc = true
-
- m.vendored_frameworks = 'Mapbox.framework'
- m.module_name = 'Mapbox'
-
-end
diff --git a/platform/macos/Mapbox-macOS-SDK.podspec b/platform/macos/Mapbox-macOS-SDK.podspec
deleted file mode 100644
index 876b354b4f..0000000000
--- a/platform/macos/Mapbox-macOS-SDK.podspec
+++ /dev/null
@@ -1,30 +0,0 @@
-Pod::Spec.new do |m|
-
- version = '0.14.0'
-
- m.name = 'Mapbox-macOS-SDK'
- m.version = version
-
- m.summary = 'Open-source, interactive, fully customizable vector maps.'
- m.description = 'Interactive, fully customizable vector maps with tight platform integration and high-performance OpenGL rendering.'
- m.homepage = 'https://mapbox.github.io/mapbox-gl-native/macos/'
- m.license = { :type => 'BSD', :file => 'LICENSE.md' }
- m.author = { 'Mapbox' => 'mobile@mapbox.com' }
- m.screenshot = "https://mapbox.github.io/mapbox-gl-native/macos/#{version}/img/screenshot.jpg"
- m.social_media_url = 'https://twitter.com/mapbox'
- m.documentation_url = 'https://mapbox.github.io/mapbox-gl-native/macos/'
-
- m.source = {
- :http => "https://github.com/mapbox/mapbox-gl-native/releases/download/macos-v#{version}/mapbox-macos-sdk-#{m.version.to_s}.zip",
- :flatten => true
- }
-
- m.platform = :osx
- m.osx.deployment_target = '10.11'
-
- m.requires_arc = true
-
- m.vendored_frameworks = 'Mapbox.framework'
- m.module_name = 'Mapbox'
-
-end
diff --git a/platform/macos/WorkspaceSettings.xcsettings b/platform/macos/WorkspaceSettings.xcsettings
deleted file mode 100644
index 88a45c15ce..0000000000
--- a/platform/macos/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>BuildLocationStyle</key>
- <string>CustomLocation</string>
- <key>CustomBuildIntermediatesPath</key>
- <string>../../build/macos</string>
- <key>CustomBuildLocationType</key>
- <string>RelativeToWorkspace</string>
- <key>CustomBuildProductsPath</key>
- <string>../../build/macos</string>
- <key>DerivedDataCustomLocation</key>
- <string>../../build/macos</string>
- <key>DerivedDataLocationStyle</key>
- <string>WorkspaceRelativePath</string>
- <key>IssueFilterStyle</key>
- <string>ShowActiveSchemeOnly</string>
- <key>LiveSourceIssuesEnabled</key>
- <true/>
-</dict>
-</plist>
diff --git a/platform/macos/app/AppDelegate.h b/platform/macos/app/AppDelegate.h
deleted file mode 100644
index 87b7514292..0000000000
--- a/platform/macos/app/AppDelegate.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-extern NSString * const MGLMapboxAccessTokenDefaultsKey;
-
-@interface AppDelegate : NSObject <NSApplicationDelegate>
-
-@property (weak) IBOutlet NSWindow *preferencesWindow;
-
-// Normally, an application should respect the “Close windows when quitting an
-// application” setting in the General pane of System Preferences. But the map
-// would only be restored to its last opened location if the user quits the
-// application using Quit and Keep Windows. An application that displays only a
-// map should restore the last viewed map, like Maps.app does. These properties
-// temporarily hold state for the next map window to be opened.
-
-@property (assign) double pendingZoomLevel;
-@property (copy) MGLMapCamera *pendingCamera;
-@property (assign) MGLCoordinateBounds pendingVisibleCoordinateBounds;
-@property (assign) double pendingMinimumZoomLevel;
-@property (assign) double pendingMaximumZoomLevel;
-@property (copy) NSURL *pendingStyleURL;
-@property (assign) MGLMapDebugMaskOptions pendingDebugMask;
-
-- (void)watchOfflinePack:(MGLOfflinePack *)pack;
-
-@end
diff --git a/platform/macos/app/AppDelegate.m b/platform/macos/app/AppDelegate.m
deleted file mode 100644
index eda989d7f9..0000000000
--- a/platform/macos/app/AppDelegate.m
+++ /dev/null
@@ -1,332 +0,0 @@
-#import "AppDelegate.h"
-
-#import "MapDocument.h"
-
-NSString * const MGLMapboxAccessTokenDefaultsKey = @"MGLMapboxAccessToken";
-NSString * const MGLLastMapCameraDefaultsKey = @"MGLLastMapCamera";
-NSString * const MGLLastMapStyleURLDefaultsKey = @"MGLLastMapStyleURL";
-NSString * const MGLLastMapDebugMaskDefaultsKey = @"MGLLastMapDebugMask";
-
-/**
- Some convenience methods to make offline pack properties easier to bind to.
- */
-@implementation MGLOfflinePack (Additions)
-
-+ (NSSet *)keyPathsForValuesAffectingStateImage {
- return [NSSet setWithObjects:@"state", nil];
-}
-
-- (NSImage *)stateImage {
- switch (self.state) {
- case MGLOfflinePackStateComplete:
- return [NSImage imageNamed:@"NSMenuOnStateTemplate"];
-
- case MGLOfflinePackStateActive:
- return [NSImage imageNamed:@"NSFollowLinkFreestandingTemplate"];
-
- default:
- return nil;
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfResourcesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfResourcesCompleted {
- return self.progress.countOfResourcesCompleted;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfResourcesExpected {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfResourcesExpected {
- return self.progress.countOfResourcesExpected;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfBytesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfBytesCompleted {
- return self.progress.countOfBytesCompleted;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfTilesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfTilesCompleted {
- return self.progress.countOfTilesCompleted;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfTileBytesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfTileBytesCompleted {
- return self.progress.countOfTileBytesCompleted;
-}
-
-@end
-
-@interface AppDelegate () <NSWindowDelegate>
-
-@property (weak) IBOutlet NSArrayController *offlinePacksArrayController;
-@property (weak) IBOutlet NSPanel *offlinePacksPanel;
-
-@end
-
-@implementation AppDelegate
-
-#pragma mark Lifecycle
-
-+ (void)load {
- // Set access token, unless MGLAccountManager already read it in from Info.plist.
- if (![MGLAccountManager accessToken]) {
- NSString *accessToken = [NSProcessInfo processInfo].environment[@"MAPBOX_ACCESS_TOKEN"];
- if (accessToken) {
- // Store to preferences so that we can launch the app later on without having to specify
- // token.
- [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:MGLMapboxAccessTokenDefaultsKey];
- } else {
- // Try to retrieve from preferences, maybe we've stored them there previously and can reuse
- // the token.
- accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:MGLMapboxAccessTokenDefaultsKey];
- }
- [MGLAccountManager setAccessToken:accessToken];
- }
-}
-
-- (void)applicationWillFinishLaunching:(NSNotification *)notification {
- [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self
- andSelector:@selector(handleGetURLEvent:withReplyEvent:)
- forEventClass:kInternetEventClass
- andEventID:kAEGetURL];
-
- if (![[NSUserDefaults standardUserDefaults] boolForKey:@"NSQuitAlwaysKeepsWindows"]) {
- NSData *cameraData = [[NSUserDefaults standardUserDefaults] objectForKey:MGLLastMapCameraDefaultsKey];
- if (cameraData) {
- NSKeyedUnarchiver *coder = [[NSKeyedUnarchiver alloc] initForReadingWithData:cameraData];
- self.pendingZoomLevel = -1;
- self.pendingCamera = [[MGLMapCamera alloc] initWithCoder:coder];
- }
- NSString *styleURLString = [[NSUserDefaults standardUserDefaults] objectForKey:MGLLastMapStyleURLDefaultsKey];
- if (styleURLString) {
- self.pendingStyleURL = [NSURL URLWithString:styleURLString];
- }
- self.pendingDebugMask = [[NSUserDefaults standardUserDefaults] integerForKey:MGLLastMapDebugMaskDefaultsKey];
- }
-}
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
- // Set access token, unless MGLAccountManager already read it in from Info.plist.
- if (![MGLAccountManager accessToken]) {
- NSAlert *alert = [[NSAlert alloc] init];
- alert.messageText = @"Access token required";
- alert.informativeText = @"To load Mapbox-hosted tiles and styles, enter your Mapbox access token in Preferences.";
- [alert addButtonWithTitle:@"Open Preferences"];
- [alert runModal];
- [self showPreferences:nil];
- }
-
- [self.offlinePacksArrayController bind:@"content" toObject:[MGLOfflineStorage sharedOfflineStorage] withKeyPath:@"packs" options:nil];
-}
-
-- (void)applicationWillTerminate:(NSNotification *)notification {
- [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:nil];
-
- if (![[NSUserDefaults standardUserDefaults] boolForKey:@"NSQuitAlwaysKeepsWindows"]) {
- NSDocument *currentDocument = [NSDocumentController sharedDocumentController].currentDocument;
- if ([currentDocument isKindOfClass:[MapDocument class]]) {
- MGLMapView *mapView = [(MapDocument *)currentDocument mapView];
- NSMutableData *cameraData = [NSMutableData data];
- NSKeyedArchiver *coder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:cameraData];
- [mapView.camera encodeWithCoder:coder];
- [coder finishEncoding];
- [[NSUserDefaults standardUserDefaults] setObject:cameraData forKey:MGLLastMapCameraDefaultsKey];
- [[NSUserDefaults standardUserDefaults] setObject:mapView.styleURL.absoluteString forKey:MGLLastMapStyleURLDefaultsKey];
- [[NSUserDefaults standardUserDefaults] setInteger:mapView.debugMask forKey:MGLLastMapDebugMaskDefaultsKey];
- }
- }
-
- [self.offlinePacksArrayController unbind:@"content"];
-}
-
-#pragma mark Services
-
-- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
- // mapboxgl://?center=29.95,-90.066667&zoom=14&bearing=45&pitch=30
- NSURL *url = [NSURL URLWithString:[event paramDescriptorForKeyword:keyDirectObject].stringValue];
- NSMutableDictionary<NSString *, NSString *> *params = [[NSMutableDictionary alloc] init];
- for (NSString *param in [url.query componentsSeparatedByString:@"&"]) {
- NSArray *parts = [param componentsSeparatedByString:@"="];
- if (parts.count >= 2) {
- params[parts[0]] = [parts[1] stringByRemovingPercentEncoding];
- }
- }
-
- MGLMapCamera *camera = [MGLMapCamera camera];
- NSString *zoomLevelString = params[@"zoom"];
- self.pendingZoomLevel = zoomLevelString.length ? zoomLevelString.doubleValue : -1;
-
- NSString *directionString = params[@"bearing"];
- if (directionString.length) {
- camera.heading = directionString.doubleValue;
- }
-
- NSString *centerString = params[@"center"];
- if (centerString) {
- NSArray *coordinateValues = [centerString componentsSeparatedByString:@","];
- if (coordinateValues.count == 2) {
- camera.centerCoordinate = CLLocationCoordinate2DMake([coordinateValues[0] doubleValue],
- [coordinateValues[1] doubleValue]);
- }
- }
-
- NSString *pitchString = params[@"pitch"];
- if (pitchString.length) {
- camera.pitch = pitchString.doubleValue;
- }
-
- self.pendingCamera = camera;
- [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:NULL];
-}
-
-#pragma mark Offline pack management
-
-- (IBAction)showOfflinePacksPanel:(id)sender {
- [self.offlinePacksPanel makeKeyAndOrderFront:sender];
-
- for (MGLOfflinePack *pack in self.offlinePacksArrayController.arrangedObjects) {
- [pack requestProgress];
- }
-}
-
-- (IBAction)delete:(id)sender {
- for (MGLOfflinePack *pack in self.offlinePacksArrayController.selectedObjects) {
- [self unwatchOfflinePack:pack];
- [[MGLOfflineStorage sharedOfflineStorage] removePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- if (error) {
- [[NSAlert alertWithError:error] runModal];
- }
- }];
- }
-}
-
-- (IBAction)chooseOfflinePack:(id)sender {
- for (MGLOfflinePack *pack in self.offlinePacksArrayController.selectedObjects) {
- switch (pack.state) {
- case MGLOfflinePackStateComplete:
- {
- if ([pack.region isKindOfClass:[MGLTilePyramidOfflineRegion class]]) {
- MGLTilePyramidOfflineRegion *region = (MGLTilePyramidOfflineRegion *)pack.region;
- self.pendingVisibleCoordinateBounds = region.bounds;
- self.pendingMinimumZoomLevel = region.minimumZoomLevel;
- self.pendingMaximumZoomLevel = region.maximumZoomLevel;
- [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:NULL];
- }
- break;
- }
-
- case MGLOfflinePackStateInactive:
- [self watchOfflinePack:pack];
- [pack resume];
- break;
-
- case MGLOfflinePackStateActive:
- [pack suspend];
- [self unwatchOfflinePack:pack];
- break;
-
- default:
- break;
- }
- }
-}
-
-- (void)watchOfflinePack:(MGLOfflinePack *)pack {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidChangeProgress:) name:MGLOfflinePackProgressChangedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidReceiveError:) name:MGLOfflinePackErrorNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidReceiveError:) name:MGLOfflinePackMaximumMapboxTilesReachedNotification object:nil];
-}
-
-- (void)unwatchOfflinePack:(MGLOfflinePack *)pack {
- [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:pack];
-}
-
-- (void)offlinePackDidChangeProgress:(NSNotification *)notification {
- MGLOfflinePack *pack = notification.object;
- if (pack.state == MGLOfflinePackStateComplete) {
- [[NSSound soundNamed:@"Glass"] play];
- }
-}
-
-- (void)offlinePackDidReceiveError:(NSNotification *)notification {
- [[NSSound soundNamed:@"Basso"] play];
-}
-
-#pragma mark Help methods
-
-- (IBAction)showShortcuts:(id)sender {
- NSAlert *alert = [[NSAlert alloc] init];
- alert.messageText = @"Mapbox GL Help";
- alert.informativeText = @"\
-• To scroll, swipe with two fingers on a trackpad, or drag the cursor, or press the arrow keys.\n\
-• To zoom in, pinch two fingers apart on a trackpad, or double-click, or hold down Shift while dragging the cursor down, or hold down Option while pressing the up key.\n\
-• To zoom out, pinch two fingers together on a trackpad, or double-tap with two fingers on a trackpad, or double-tap on a mouse, or hold down Shift while dragging the cursor up, or hold down Option while pressing the down key.\n\
-• To rotate, move two fingers opposite each other in a circle on a trackpad, or hold down Option while dragging the cursor left and right, or hold down Option while pressing the left and right arrow keys.\n\
-• To tilt, hold down Option while dragging the cursor up and down.\n\
-• To drop a pin, click and hold.\
-";
- [alert runModal];
-}
-
-- (IBAction)showPreferences:(id)sender {
- [self.preferencesWindow makeKeyAndOrderFront:sender];
-}
-
-- (IBAction)print:(id)sender {
- NSDocument *currentDocument = [NSDocumentController sharedDocumentController].currentDocument;
- if ([currentDocument isKindOfClass:[MapDocument class]]) {
- MGLMapView *mapView = [(MapDocument *)currentDocument mapView];
- [mapView print:sender];
- }
-}
-
-- (IBAction)openAccessTokenManager:(id)sender {
- [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://www.mapbox.com/studio/account/tokens/"]];
-}
-
-#pragma mark User interface validation
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
- if (menuItem.action == @selector(showShortcuts:)) {
- return YES;
- }
- if (menuItem.action == @selector(showPreferences:)) {
- return YES;
- }
- if (menuItem.action == @selector(showOfflinePacksPanel:)) {
- return YES;
- }
- if (menuItem.action == @selector(print:)) {
- return YES;
- }
- if (menuItem.action == @selector(delete:)) {
- return self.offlinePacksArrayController.selectedObjects.count;
- }
- return NO;
-}
-
-#pragma mark NSWindowDelegate methods
-
-- (void)windowWillClose:(NSNotification *)notification {
- NSWindow *window = notification.object;
- if (window == self.preferencesWindow) {
- [window makeFirstResponder:nil];
- }
-}
-
-@end
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png
deleted file mode 100644
index fbf35e5d61..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png
deleted file mode 100644
index e60680874a..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png
deleted file mode 100644
index 361198da92..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png
deleted file mode 100644
index f6bf78a4b4..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png
deleted file mode 100644
index e60680874a..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png
deleted file mode 100644
index e7c0271490..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png
deleted file mode 100644
index e919899269..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png
deleted file mode 100644
index 5035f60941..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png
deleted file mode 100644
index e7c0271490..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png
deleted file mode 100644
index a2e1dfd02b..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 068d0fbd00..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "images" : [
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "AppIcon16x16.png",
- "scale" : "1x"
- },
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "AppIcon16x16@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "AppIcon32x32.png",
- "scale" : "1x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "AppIcon32x32@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "AppIcon128x128.png",
- "scale" : "1x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "AppIcon128x128@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "AppIcon256x256.png",
- "scale" : "1x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "AppIcon256x256@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "AppIcon512x512.png",
- "scale" : "1x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "AppIcon512x512@2x.png",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Contents.json b/platform/macos/app/Assets.xcassets/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/macos/app/Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/Contents.json b/platform/macos/app/Assets.xcassets/Layers/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
deleted file mode 100644
index dc14d24448..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "background.pdf",
- "language-direction" : "left-to-right"
- },
- {
- "idiom" : "universal",
- "language-direction" : "right-to-left"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf b/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
deleted file mode 100644
index 95a50c1446..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
+++ /dev/null
@@ -1,69 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-x}Mj@ u
-] *I Hf1x ܋E?Oն ChgՓT>R2}̃7e7=y!^Epp$aC QeQavJ$6r\+6"uTwtȂ܄Cpoz>(@ \Q@Xx^o6f58KP::ۨv:DmEQu/z\';*U 2.޻2Up!ν5D>!PVQNvkhK:WEt1^9du.!Y c:Ox>1`,iDi(1^mc3ʸ`#(vKWt/Ѝ"5I7ag+vܧX1sփ!?8
-endstream
-endobj
-4 0 obj
- 424
-endobj
-2 0 obj
-<<
- /ExtGState <<
- /a0 << /CA 1 /ca 1 >>
- >>
->>
-endobj
-5 0 obj
-<< /Type /Page
- /Parent 1 0 R
- /MediaBox [ 0 0 12.8 12.8 ]
- /Contents 3 0 R
- /Group <<
- /Type /Group
- /S /Transparency
- /I true
- /CS /DeviceRGB
- >>
- /Resources 2 0 R
->>
-endobj
-1 0 obj
-<< /Type /Pages
- /Kids [ 5 0 R ]
- /Count 1
->>
-endobj
-6 0 obj
-<< /Creator (cairo 1.14.0 (http://cairographics.org))
- /Producer (cairo 1.14.0 (http://cairographics.org))
->>
-endobj
-7 0 obj
-<< /Type /Catalog
- /Pages 1 0 R
->>
-endobj
-xref
-0 8
-0000000000 65535 f
-0000000826 00000 n
-0000000538 00000 n
-0000000015 00000 n
-0000000516 00000 n
-0000000610 00000 n
-0000000891 00000 n
-0000001018 00000 n
-trailer
-<< /Size 8
- /Root 7 0 R
- /Info 6 0 R
->>
-startxref
-1070
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
deleted file mode 100644
index c924214fd9..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "circle.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
deleted file mode 100644
index fde79a19bd..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
+++ /dev/null
@@ -1,70 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-x]M
-1 9Ż1?''aRAf1 X)GK ANv_4Nܩ š% 3Z
-cr'QJ2Wp{t\dImW 44J
-endstream
-endobj
-4 0 obj
- 139
-endobj
-2 0 obj
-<<
- /ExtGState <<
- /a0 << /CA 1 /ca 1 >>
- >>
->>
-endobj
-5 0 obj
-<< /Type /Page
- /Parent 1 0 R
- /MediaBox [ 0 0 12.8 12.8 ]
- /Contents 3 0 R
- /Group <<
- /Type /Group
- /S /Transparency
- /I true
- /CS /DeviceRGB
- >>
- /Resources 2 0 R
->>
-endobj
-1 0 obj
-<< /Type /Pages
- /Kids [ 5 0 R ]
- /Count 1
->>
-endobj
-6 0 obj
-<< /Creator (cairo 1.14.0 (http://cairographics.org))
- /Producer (cairo 1.14.0 (http://cairographics.org))
->>
-endobj
-7 0 obj
-<< /Type /Catalog
- /Pages 1 0 R
->>
-endobj
-xref
-0 8
-0000000000 65535 f
-0000000541 00000 n
-0000000253 00000 n
-0000000015 00000 n
-0000000231 00000 n
-0000000325 00000 n
-0000000606 00000 n
-0000000733 00000 n
-trailer
-<< /Size 8
- /Root 7 0 R
- /Info 6 0 R
->>
-startxref
-785
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json
deleted file mode 100644
index c4802ebd1a..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "fill-extrusion.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf b/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf
deleted file mode 100644
index 44cc365862..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf
+++ /dev/null
@@ -1,72 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-xN0 }
-0q9y$$#@lB088MɒL:Cm?w?(Ԋ5P&jr _[yQ`9蔅O` L)|8߯yJ
-9>gD`@Suzױ܊%6҄d
-MGs#lpxrzzy@&Ks&yƬaPX? H1 C HfGV.W9gՖiƞ&+xcZO_i&3O&kt\`5–kՖ5;ʅpo!;d_e3uBzI[޴ev]9V& $
-endstream
-endobj
-4 0 obj
- 358
-endobj
-2 0 obj
-<<
- /ExtGState <<
- /a0 << /CA 0.156863 /ca 0.156863 >>
- /a1 << /CA 1 /ca 1 >>
- >>
->>
-endobj
-5 0 obj
-<< /Type /Page
- /Parent 1 0 R
- /MediaBox [ 0 0 12 12 ]
- /Contents 3 0 R
- /Group <<
- /Type /Group
- /S /Transparency
- /I true
- /CS /DeviceRGB
- >>
- /Resources 2 0 R
->>
-endobj
-1 0 obj
-<< /Type /Pages
- /Kids [ 5 0 R ]
- /Count 1
->>
-endobj
-6 0 obj
-<< /Creator (cairo 1.14.8 (http://cairographics.org))
- /Producer (cairo 1.14.8 (http://cairographics.org))
->>
-endobj
-7 0 obj
-<< /Type /Catalog
- /Pages 1 0 R
->>
-endobj
-xref
-0 8
-0000000000 65535 f
-0000000798 00000 n
-0000000472 00000 n
-0000000015 00000 n
-0000000450 00000 n
-0000000586 00000 n
-0000000863 00000 n
-0000000990 00000 n
-trailer
-<< /Size 8
- /Root 7 0 R
- /Info 6 0 R
->>
-startxref
-1042
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
deleted file mode 100644
index ea68330e70..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "fill.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf
deleted file mode 100644
index ca7e4cc505..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json
deleted file mode 100644
index 0dcb85f12c..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "heatmap.pdf",
- "language-direction" : "left-to-right"
- },
- {
- "idiom" : "universal",
- "language-direction" : "right-to-left"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf b/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf
deleted file mode 100644
index 88195c3735..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json
deleted file mode 100644
index d4de2d3228..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "hillshade.pdf",
- "language-direction" : "left-to-right"
- },
- {
- "idiom" : "universal",
- "language-direction" : "right-to-left"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf b/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf
deleted file mode 100644
index bf409e708c..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf
+++ /dev/null
@@ -1,70 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-xeNA
-@ sv} xŃ(Vo"L0# jXˆ6w:!,P㒒hK灴a U18|= _?ݜ{YXS2یݮ*5/ﺠ>ݪ,
-endstream
-endobj
-4 0 obj
- 145
-endobj
-2 0 obj
-<<
- /ExtGState <<
- /a0 << /CA 1 /ca 1 >>
- /a1 << /CA 0.156863 /ca 0.156863 >>
- >>
->>
-endobj
-5 0 obj
-<< /Type /Page
- /Parent 1 0 R
- /MediaBox [ 0 0 12 12 ]
- /Contents 3 0 R
- /Group <<
- /Type /Group
- /S /Transparency
- /I true
- /CS /DeviceRGB
- >>
- /Resources 2 0 R
->>
-endobj
-1 0 obj
-<< /Type /Pages
- /Kids [ 5 0 R ]
- /Count 1
->>
-endobj
-6 0 obj
-<< /Creator (cairo 1.14.8 (http://cairographics.org))
- /Producer (cairo 1.14.8 (http://cairographics.org))
->>
-endobj
-7 0 obj
-<< /Type /Catalog
- /Pages 1 0 R
->>
-endobj
-xref
-0 8
-0000000000 65535 f
-0000000585 00000 n
-0000000259 00000 n
-0000000015 00000 n
-0000000237 00000 n
-0000000373 00000 n
-0000000650 00000 n
-0000000777 00000 n
-trailer
-<< /Size 8
- /Root 7 0 R
- /Info 6 0 R
->>
-startxref
-829
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
deleted file mode 100644
index ad4293958f..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "symbol.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
deleted file mode 100644
index ce4aaa198e..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
+++ /dev/null
@@ -1,71 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-x]A
-@ E9ſqIgR\EqqQ !'
-ua{ HXRLQ&~'/p#!ʎ26a0scR_CYr씪KFʖ9O׋.pN- yV
-yOh4
-endstream
-endobj
-4 0 obj
- 152
-endobj
-2 0 obj
-<<
- /ExtGState <<
- /a0 << /CA 1 /ca 1 >>
- >>
->>
-endobj
-5 0 obj
-<< /Type /Page
- /Parent 1 0 R
- /MediaBox [ 0 0 12.8 12.8 ]
- /Contents 3 0 R
- /Group <<
- /Type /Group
- /S /Transparency
- /I true
- /CS /DeviceRGB
- >>
- /Resources 2 0 R
->>
-endobj
-1 0 obj
-<< /Type /Pages
- /Kids [ 5 0 R ]
- /Count 1
->>
-endobj
-6 0 obj
-<< /Creator (cairo 1.14.0 (http://cairographics.org))
- /Producer (cairo 1.14.0 (http://cairographics.org))
->>
-endobj
-7 0 obj
-<< /Type /Catalog
- /Pages 1 0 R
->>
-endobj
-xref
-0 8
-0000000000 65535 f
-0000000554 00000 n
-0000000266 00000 n
-0000000015 00000 n
-0000000244 00000 n
-0000000338 00000 n
-0000000619 00000 n
-0000000746 00000 n
-trailer
-<< /Size 8
- /Root 7 0 R
- /Info 6 0 R
->>
-startxref
-798
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Radar/Contents.json b/platform/macos/app/Assets.xcassets/Radar/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json
deleted file mode 100644
index ea096b04b8..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_0.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png b/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png
deleted file mode 100644
index c304b619c4..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json
deleted file mode 100644
index a6a031ae2b..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_1.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png b/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png
deleted file mode 100644
index ed09fffbe1..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json
deleted file mode 100644
index d607dda298..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_2.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png b/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png
deleted file mode 100644
index fee630f863..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json
deleted file mode 100644
index 9a110068a1..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_3.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png b/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png
deleted file mode 100644
index c4c7146afa..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Base.lproj/Localizable.strings b/platform/macos/app/Base.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/Base.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/Base.lproj/MainMenu.xib b/platform/macos/app/Base.lproj/MainMenu.xib
deleted file mode 100644
index 6f8f24ce99..0000000000
--- a/platform/macos/app/Base.lproj/MainMenu.xib
+++ /dev/null
@@ -1,982 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14269.14" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
- <dependencies>
- <deployment identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14269.14"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <objects>
- <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
- <connections>
- <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
- </connections>
- </customObject>
- <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
- <customObject id="-3" userLabel="Application" customClass="NSObject">
- <connections>
- <outlet property="delegate" destination="Voe-Tx-rLC" id="z9N-Fm-MUP"/>
- </connections>
- </customObject>
- <customObject id="Voe-Tx-rLC" customClass="AppDelegate">
- <connections>
- <outlet property="offlinePacksArrayController" destination="dWe-R6-sRz" id="Ar5-xu-ABm"/>
- <outlet property="offlinePacksPanel" destination="Jjv-gs-Tx6" id="0vK-rR-3ZX"/>
- <outlet property="preferencesWindow" destination="UWc-yQ-qda" id="Ota-aT-Mz2"/>
- </connections>
- </customObject>
- <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
- <items>
- <menuItem title="Mapbox GL" id="1Xt-HY-uBw">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Mapbox GL" systemMenu="apple" id="uQy-DD-JDr">
- <items>
- <menuItem title="About Mapbox GL" id="5kV-Vb-QxS">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
- <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW">
- <connections>
- <action selector="showPreferences:" target="-1" id="Llx-Uy-HTS"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
- <menuItem title="Services" id="NMo-om-nkz">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
- <menuItem title="Hide Mapbox GL" keyEquivalent="h" id="Olw-nP-bQN">
- <connections>
- <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
- </connections>
- </menuItem>
- <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
- </connections>
- </menuItem>
- <menuItem title="Show All" id="Kd2-mp-pUS">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
- <menuItem title="Quit Mapbox GL" keyEquivalent="q" id="4sb-4s-VLi">
- <connections>
- <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="File" id="dMs-cI-mzQ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="File" id="bib-Uj-vzu">
- <items>
- <menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
- <connections>
- <action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
- </connections>
- </menuItem>
- <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
- <connections>
- <action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
- </connections>
- </menuItem>
- <menuItem title="Open Recent" id="tXI-mr-wws">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
- <items>
- <menuItem title="Clear Menu" id="vNY-rz-j42">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
- <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
- <connections>
- <action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
- </connections>
- </menuItem>
- <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
- <connections>
- <action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
- </connections>
- </menuItem>
- <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
- <connections>
- <action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
- </connections>
- </menuItem>
- <menuItem title="Save Offline Pack…" id="UXB-sj-C7i">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="addOfflinePack:" target="-1" id="Usu-xO-QEx"/>
- </connections>
- </menuItem>
- <menuItem title="Revert to Saved" id="KaW-ft-85H">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="VwR-Dd-ah9"/>
- <menuItem title="Import…" id="DJk-k8-14Y">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="import:" target="-1" id="1Qm-l8-9Rn"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="w4w-CJ-fv2"/>
- <menuItem title="Export Image…" id="vjX-0E-kLO">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="takeSnapshot:" target="-1" id="H06-sU-n4U"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
- <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
- <connections>
- <action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
- </connections>
- </menuItem>
- <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
- <connections>
- <action selector="print:" target="Voe-Tx-rLC" id="rXg-Pd-AG8"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Edit" id="5QF-Oa-p0T">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Edit" id="W48-6f-4Dl">
- <items>
- <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
- <connections>
- <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
- </connections>
- </menuItem>
- <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
- <connections>
- <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
- <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
- <connections>
- <action selector="cut:" target="-1" id="YJe-68-I9s"/>
- </connections>
- </menuItem>
- <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
- <connections>
- <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
- </connections>
- </menuItem>
- <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
- <connections>
- <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
- </connections>
- </menuItem>
- <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
- </connections>
- </menuItem>
- <menuItem title="Delete" id="pa3-QI-u2k">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
- </connections>
- </menuItem>
- <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
- <connections>
- <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
- <menuItem title="Find" id="4EN-yA-p0u">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Find" id="1b7-l0-nxx">
- <items>
- <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
- </connections>
- </menuItem>
- <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
- </connections>
- </menuItem>
- <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
- </connections>
- </menuItem>
- <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
- </connections>
- </menuItem>
- <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
- </connections>
- </menuItem>
- <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
- <connections>
- <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
- <items>
- <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
- <connections>
- <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
- </connections>
- </menuItem>
- <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
- <connections>
- <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
- <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
- </connections>
- </menuItem>
- <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
- </connections>
- </menuItem>
- <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Substitutions" id="9ic-FL-obx">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
- <items>
- <menuItem title="Show Substitutions" id="z6F-FW-3nz">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
- <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
- </connections>
- </menuItem>
- <menuItem title="Smart Quotes" id="hQb-2v-fYv">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
- </connections>
- </menuItem>
- <menuItem title="Smart Dashes" id="rgM-f4-ycn">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
- </connections>
- </menuItem>
- <menuItem title="Smart Links" id="cwL-P1-jid">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
- </connections>
- </menuItem>
- <menuItem title="Data Detectors" id="tRr-pd-1PS">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
- </connections>
- </menuItem>
- <menuItem title="Text Replacement" id="HFQ-gK-NFA">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Transformations" id="2oI-Rn-ZJC">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
- <items>
- <menuItem title="Make Upper Case" id="vmV-6d-7jI">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
- </connections>
- </menuItem>
- <menuItem title="Make Lower Case" id="d9M-CD-aMd">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
- </connections>
- </menuItem>
- <menuItem title="Capitalize" id="UEZ-Bs-lqG">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Speech" id="xrE-MZ-jX0">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
- <items>
- <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
- </connections>
- </menuItem>
- <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="View" id="H8h-7b-M4v">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="View" id="HyV-fh-RgO">
- <items>
- <menuItem title="Streets" state="on" tag="1" keyEquivalent="1" id="17N-yz-NNo">
- <connections>
- <action selector="showStyle:" target="-1" id="BGu-va-ftr"/>
- </connections>
- </menuItem>
- <menuItem title="Outdoors" tag="2" keyEquivalent="2" id="BBa-Qa-SQr">
- <connections>
- <action selector="showStyle:" target="-1" id="sQ3-b6-G1A"/>
- </connections>
- </menuItem>
- <menuItem title="Light" tag="3" keyEquivalent="3" id="HWe-7u-UVJ">
- <connections>
- <action selector="showStyle:" target="-1" id="jMN-oR-sbZ"/>
- </connections>
- </menuItem>
- <menuItem title="Dark" tag="4" keyEquivalent="4" id="6HI-q6-AeV">
- <connections>
- <action selector="showStyle:" target="-1" id="xgf-Sq-eJw"/>
- </connections>
- </menuItem>
- <menuItem title="Satellite" tag="5" keyEquivalent="5" id="h0J-5X-kgF">
- <connections>
- <action selector="showStyle:" target="-1" id="YyE-2C-Vhj"/>
- </connections>
- </menuItem>
- <menuItem title="Satellite Streets" tag="6" keyEquivalent="6" id="9BL-00-HFt">
- <connections>
- <action selector="showStyle:" target="-1" id="NTT-Y1-EqU"/>
- </connections>
- </menuItem>
- <menuItem title="Custom Style…" id="L0h-86-2cU">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="chooseCustomStyle:" target="-1" id="QJF-fM-Ty3"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="BMF-ml-0Bd"/>
- <menuItem title="Zoom In" keyEquivalent="+" id="W82-WO-xvB">
- <connections>
- <action selector="zoomIn:" target="-1" id="g33-vK-zUu"/>
- </connections>
- </menuItem>
- <menuItem title="Zoom Out" keyEquivalent="-" id="j7h-PY-edM">
- <connections>
- <action selector="zoomOut:" target="-1" id="0pP-tO-9ex"/>
- </connections>
- </menuItem>
- <menuItem title="Snap to North" keyEquivalent="" id="Zss-3w-wkz">
- <connections>
- <action selector="snapToNorth:" target="-1" id="Ayq-GE-Lb5"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="mkP-YN-G0w"/>
- <menuItem title="Reload" keyEquivalent="r" id="JvI-nv-KaE">
- <connections>
- <action selector="reload:" target="-1" id="xkh-9F-mOe"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="CyM-Wv-Bnc"/>
- <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
- </connections>
- </menuItem>
- <menuItem title="Show Layers" keyEquivalent="L" id="qtg-l9-BH3">
- <connections>
- <action selector="toggleLayers:" target="-1" id="YdA-Mr-MHi"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="8aO-Nm-fxF"/>
- <menuItem title="Labels In" id="M7v-B1-vo3">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Labels In" id="gOc-5u-4v5">
- <items>
- <menuItem title="Local Language" id="hTL-wF-DEs">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="setLabelLanguage:" target="-1" id="Zc4-TL-Cxe"/>
- </connections>
- </menuItem>
- <menuItem title="Preferred Language" tag="1" id="PkP-Ne-ISX">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="setLabelLanguage:" target="-1" id="7Io-iF-xf8"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="qTh-Hu-dGV"/>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Debug" id="ZNC-5r-eBw">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Debug" id="McE-ka-r79">
- <items>
- <menuItem title="Show Tile Boundaries" keyEquivalent="b" id="rDE-dG-rTR">
- <connections>
- <action selector="toggleTileBoundaries:" target="-1" id="LAO-88-F7h"/>
- </connections>
- </menuItem>
- <menuItem title="Show Tile Info" keyEquivalent="i" id="LoH-qD-kb0">
- <connections>
- <action selector="toggleTileInfo:" target="-1" id="KCn-0G-V87"/>
- </connections>
- </menuItem>
- <menuItem title="Show Tile Timestamps" keyEquivalent="t" id="bY0-2E-LZ7">
- <connections>
- <action selector="toggleTileTimestamps:" target="-1" id="tBs-2N-KEG"/>
- </connections>
- </menuItem>
- <menuItem title="Show Collision Boxes" keyEquivalent="C" id="Y0b-3K-mJE">
- <connections>
- <action selector="toggleCollisionBoxes:" target="-1" id="EYa-7n-iWZ"/>
- </connections>
- </menuItem>
- <menuItem title="Show Overdraw Visualization" keyEquivalent="O" id="hSX-Be-8xC">
- <connections>
- <action selector="toggleOverdrawVisualization:" target="-1" id="usj-ug-upt"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="2EG-Hp-4FA"/>
- <menuItem title="Color Buffer" keyEquivalent="c" id="Eao-WE-BWz">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="showColorBuffer:" target="-1" id="Nuq-Qs-98g"/>
- </connections>
- </menuItem>
- <menuItem title="Stencil Buffer" keyEquivalent="s" id="LlS-Yh-RkN">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="showStencilBuffer:" target="-1" id="WkN-t9-Mpv"/>
- </connections>
- </menuItem>
- <menuItem title="Depth Buffer" keyEquivalent="d" id="CDq-70-oPa">
- <modifierMask key="keyEquivalentModifierMask" control="YES" option="YES" command="YES"/>
- <connections>
- <action selector="showDepthBuffer:" target="-1" id="h7r-eM-ZEu"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="dYw-bb-tr1"/>
- <menuItem title="Show Tooltips on Dropped Pins" id="uir-Rx-zmw">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleShowsToolTipsOnDroppedPins:" target="-1" id="1YC-Co-QQ6"/>
- </connections>
- </menuItem>
- <menuItem title="Use Random Cursors for Dropped Pins" id="ZTk-lc-Jgu">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleRandomizesCursorsOnDroppedPins:" target="-1" id="Mpw-b8-oub"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="Sl5-nE-kHd"/>
- <menuItem title="Blanket Map With Pins" keyEquivalent="." id="LMZ-oe-Ngh">
- <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
- <connections>
- <action selector="dropManyPins:" target="-1" id="Rtv-8N-3Z8"/>
- </connections>
- </menuItem>
- <menuItem title="Add Polygon and Polyline" keyEquivalent="l" id="DVr-vT-lpe">
- <connections>
- <action selector="drawPolygonAndPolyLineAnnotations:" target="-1" id="EhT-CB-gee"/>
- </connections>
- </menuItem>
- <menuItem title="Add Animated Annotation" id="Etf-JN-Aoc">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="drawAnimatedAnnotation:" target="-1" id="CYM-WB-s97"/>
- </connections>
- </menuItem>
- <menuItem title="Select an Offscreen Point Annotation" id="Xy2-Cc-RUB">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="selectOffscreenPointAnnotation:" target="-1" id="Fhm-l3-G6h"/>
- </connections>
- </menuItem>
- <menuItem title="Show All Annotations" keyEquivalent="A" id="yMj-uM-8SN">
- <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
- <connections>
- <action selector="showAllAnnotations:" target="-1" id="ahr-OR-Em2"/>
- </connections>
- </menuItem>
- <menuItem title="Remove All Annotations" id="6rC-68-vk0">
- <string key="keyEquivalent" base64-UTF8="YES">
-CA
-</string>
- <connections>
- <action selector="removeAllAnnotations:" target="-1" id="6v3-0E-LsR"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="cbI-Nd-MAp"/>
- <menuItem title="Add Lime Green Layer" id="UWY-vl-t2m">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="insertCustomStyleLayer:" target="-1" id="LE5-lz-kx3"/>
- </connections>
- </menuItem>
- <menuItem title="Add Animated Image Source" id="tjA-fT-GbA">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="addAnimatedImageSource:" target="-1" id="TuN-Pa-hTG"/>
- </connections>
- </menuItem>
- <menuItem title="Add Graticule" id="Msk-p2-Lwt">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="insertGraticuleLayer:" target="-1" id="LE5-lz-kx4"/>
- </connections>
- </menuItem>
- <menuItem title="Enhance Terrain" id="2ZT-uE-kUR">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="enhanceTerrain:" target="-1" id="TXX-Yv-ZY1"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="wQq-Mx-QY0"/>
- <menuItem title="Manipulate Style" id="Zli-T5-cTQ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="manipulateStyle:" target="-1" id="9Np-3n-FXK"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="vMh-WE-Frt"/>
- <menuItem title="Start World Tour" id="VFo-Jh-2sw">
- <modifierMask key="keyEquivalentModifierMask" option="YES"/>
- <connections>
- <action selector="startWorldTour:" target="-1" id="66Y-Gm-Yn1"/>
- </connections>
- </menuItem>
- <menuItem title="Stop World Tour" id="Pa8-qU-xfr">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="stopWorldTour:" target="-1" id="aq0-7t-AGi"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Window" id="aUF-d1-5bR">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
- <items>
- <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
- <connections>
- <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
- </connections>
- </menuItem>
- <menuItem title="Zoom" keyEquivalent="z" id="R4o-n2-Eq4">
- <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
- <connections>
- <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="Uix-g7-fAt"/>
- <menuItem title="Offline Packs" id="YW3-jR-knj">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="showOfflinePacksPanel:" target="Voe-Tx-rLC" id="kj9-ht-KmF"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
- <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Help" id="wpr-3q-Mcd">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
- <items>
- <menuItem title="Mapbox GL Help" keyEquivalent="?" id="FKE-Sm-Kum">
- <connections>
- <action selector="showShortcuts:" target="-1" id="hNZ-sm-X2q"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="EpY-wQ-SjH"/>
- <menuItem title="Improve This Map" id="xu5-WN-qYK">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="giveFeedback:" target="-1" id="cil-i9-r39"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- </items>
- </menu>
- <window title="Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="Preferences" animationBehavior="default" id="UWc-yQ-qda">
- <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
- <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
- <rect key="contentRect" x="109" y="131" width="350" height="84"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
- <view key="contentView" id="eA4-n3-qPe">
- <rect key="frame" x="0.0" y="0.0" width="350" height="84"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0IK-AW-Gg3">
- <rect key="frame" x="18" y="45" width="89" height="17"/>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Access token:" id="Ptd-FI-M5A">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <accessibilityConnection property="link" destination="7sb-sf-oJU" id="U0t-jC-oQ7"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7sb-sf-oJU">
- <rect key="frame" x="113" y="42" width="197" height="22"/>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="jlV-TC-NUv">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="45S-yT-WUN" name="value" keyPath="values.MGLMapboxAccessToken" id="iJE-S2-ALY"/>
- </connections>
- </textField>
- <button translatesAutoresizingMaskIntoConstraints="NO" id="c3S-LC-PoX">
- <rect key="frame" x="318" y="47" width="12" height="12"/>
- <constraints>
- <constraint firstAttribute="width" constant="12" id="M3J-pU-gKn"/>
- </constraints>
- <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSFollowLinkFreestandingTemplate" imagePosition="only" alignment="center" controlSize="small" imageScaling="proportionallyUpOrDown" inset="2" id="38x-37-Ay0">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <connections>
- <action selector="openAccessTokenManager:" target="-1" id="1LX-4G-roC"/>
- </connections>
- </button>
- <button translatesAutoresizingMaskIntoConstraints="NO" id="7IZ-zl-iT1">
- <rect key="frame" x="18" y="18" width="109" height="18"/>
- <buttonCell key="cell" type="check" title="Scroll to zoom" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="hVR-66-JSh">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- <connections>
- <binding destination="45S-yT-WUN" name="value" keyPath="values.MGLScrollWheelZoomsMapView" id="2AZ-bk-DM5"/>
- </connections>
- </button>
- </subviews>
- <constraints>
- <constraint firstAttribute="trailing" secondItem="c3S-LC-PoX" secondAttribute="trailing" constant="20" symbolic="YES" id="7QU-Jd-Rg6"/>
- <constraint firstItem="c3S-LC-PoX" firstAttribute="top" secondItem="eA4-n3-qPe" secondAttribute="top" constant="25" id="JOS-HU-27c"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="leading" secondItem="0IK-AW-Gg3" secondAttribute="trailing" constant="8" symbolic="YES" id="SS6-VQ-sLK"/>
- <constraint firstItem="0IK-AW-Gg3" firstAttribute="leading" secondItem="eA4-n3-qPe" secondAttribute="leading" constant="20" symbolic="YES" id="TYG-io-qfV"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="top" secondItem="eA4-n3-qPe" secondAttribute="top" constant="20" symbolic="YES" id="Vzb-q8-ecP"/>
- <constraint firstItem="7IZ-zl-iT1" firstAttribute="leading" secondItem="0IK-AW-Gg3" secondAttribute="leading" id="aIY-WX-AW9"/>
- <constraint firstItem="7IZ-zl-iT1" firstAttribute="top" secondItem="7sb-sf-oJU" secondAttribute="bottom" constant="8" symbolic="YES" id="ide-24-GqL"/>
- <constraint firstItem="c3S-LC-PoX" firstAttribute="leading" secondItem="7sb-sf-oJU" secondAttribute="trailing" constant="8" symbolic="YES" id="pjl-9u-IgM"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="baseline" secondItem="0IK-AW-Gg3" secondAttribute="baseline" id="qIY-Jr-9Ws"/>
- <constraint firstAttribute="bottom" secondItem="7IZ-zl-iT1" secondAttribute="bottom" constant="20" symbolic="YES" id="wng-pn-VIz"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="centerY" secondItem="c3S-LC-PoX" secondAttribute="centerY" id="zej-gw-fC0"/>
- </constraints>
- </view>
- <connections>
- <outlet property="delegate" destination="Voe-Tx-rLC" id="PNO-Pp-jOX"/>
- <outlet property="initialFirstResponder" destination="7sb-sf-oJU" id="UZe-di-dnA"/>
- </connections>
- <point key="canvasLocation" x="754" y="221"/>
- </window>
- <userDefaultsController representsSharedInstance="YES" id="45S-yT-WUN"/>
- <window title="Offline Packs" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="MBXOfflinePacksPanel" animationBehavior="default" id="Jjv-gs-Tx6" customClass="NSPanel">
- <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/>
- <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
- <rect key="contentRect" x="830" y="430" width="400" height="300"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
- <view key="contentView" id="8ha-hw-zOD">
- <rect key="frame" x="0.0" y="0.0" width="400" height="300"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q8b-0e-dLv">
- <rect key="frame" x="-1" y="20" width="402" height="281"/>
- <clipView key="contentView" id="J9U-Yx-o2S">
- <rect key="frame" x="1" y="0.0" width="400" height="265"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" autosaveColumns="NO" headerView="MAZ-Iq-hBi" id="Ato-Vu-HYT">
- <rect key="frame" x="0.0" y="0.0" width="423" height="242"/>
- <autoresizingMask key="autoresizingMask"/>
- <size key="intercellSpacing" width="3" height="2"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
- <tableColumns>
- <tableColumn editable="NO" width="16" minWidth="10" maxWidth="3.4028234663852886e+38" id="xtw-hQ-8C5" userLabel="State">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <imageCell key="dataCell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="edU-Yw-20f"/>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.stateImage" id="2wd-1J-TZt"/>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="2hD-LN-h0L">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Name">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="oys-QZ-34I">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.context" id="NtD-s5-ZUq">
- <dictionary key="options">
- <string key="NSValueTransformerName">OfflinePackNameValueTransformer</string>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="50" minWidth="40" maxWidth="1000" id="pkI-c7-xoD">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Downloaded Resources">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="WfC-qb-HsW">
- <numberFormatter key="formatter" formatterBehavior="default10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="sNm-Qn-ne6"/>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfResourcesCompleted" id="mu6-Jg-GiU"/>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="50" minWidth="10" maxWidth="3.4028234663852886e+38" id="Rrd-A9-jqc">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Total Resources">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="mHy-qJ-rOA">
- <numberFormatter key="formatter" formatterBehavior="default10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="kyx-ZP-OBH"/>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfResourcesExpected" id="mh2-k0-vvB"/>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="50" minWidth="40" maxWidth="1000" id="kCO-Cd-bQt">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Downloaded Tiles">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="hUl-2C-sHr">
- <numberFormatter key="formatter" formatterBehavior="default10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="KjY-J1-gSm"/>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfTilesCompleted" id="XHn-D7-zqf">
- <dictionary key="options">
- <bool key="NSConditionallySetsEditable" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="60" minWidth="10" maxWidth="3.4028234663852886e+38" id="WO5-Ci-HgG">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Downloaded Tiles Size">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="cKy-kF-5Pv">
- <byteCountFormatter key="formatter" allowsNonnumericFormatting="NO" includesActualByteCount="YES" id="bHS-Ch-aXU"/>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfTileBytesCompleted" id="Xpk-BZ-Xcr">
- <dictionary key="options">
- <bool key="NSConditionallySetsEditable" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="60" minWidth="10" maxWidth="3.4028234663852886e+38" id="h7m-6l-KaS">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Downloaded Resources Size">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="701-bg-k6L">
- <byteCountFormatter key="formatter" allowsNonnumericFormatting="NO" includesActualByteCount="YES" id="IXV-J9-sP3"/>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfBytesCompleted" id="Zsa-Na-yFN"/>
- </connections>
- </tableColumn>
- </tableColumns>
- <connections>
- <action trigger="doubleAction" selector="chooseOfflinePack:" target="-1" id="pUN-eT-zRT"/>
- </connections>
- </tableView>
- </subviews>
- </clipView>
- <scroller key="horizontalScroller" verticalHuggingPriority="750" horizontal="YES" id="QLr-6P-Ogs">
- <rect key="frame" x="1" y="265" width="400" height="15"/>
- <autoresizingMask key="autoresizingMask"/>
- </scroller>
- <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="q0K-eE-mzL">
- <rect key="frame" x="224" y="17" width="15" height="102"/>
- <autoresizingMask key="autoresizingMask"/>
- </scroller>
- <tableHeaderView key="headerView" id="MAZ-Iq-hBi">
- <rect key="frame" x="0.0" y="0.0" width="423" height="23"/>
- <autoresizingMask key="autoresizingMask"/>
- </tableHeaderView>
- </scrollView>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wzf-ce-Spm">
- <rect key="frame" x="0.0" y="-1" width="21" height="21"/>
- <constraints>
- <constraint firstAttribute="width" constant="21" id="5ST-tY-8Ph"/>
- </constraints>
- <buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSAddTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" imageScaling="proportionallyDown" inset="2" id="sew-F7-i5T">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- <connections>
- <action selector="addOfflinePack:" target="-1" id="SN0-PM-HoU"/>
- </connections>
- </button>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7L7-hr-zId">
- <rect key="frame" x="20" y="0.0" width="21" height="19"/>
- <constraints>
- <constraint firstAttribute="width" constant="21" id="JYb-AF-8gZ"/>
- </constraints>
- <buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" imageScaling="proportionallyDown" inset="2" id="oTF-3m-6qT">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- <string key="keyEquivalent" base64-UTF8="YES">
-CA
-</string>
- </buttonCell>
- <connections>
- <action selector="delete:" target="-1" id="EGL-bf-yUD"/>
- </connections>
- </button>
- </subviews>
- <constraints>
- <constraint firstItem="7L7-hr-zId" firstAttribute="centerY" secondItem="wzf-ce-Spm" secondAttribute="centerY" id="7TI-6w-bf1"/>
- <constraint firstAttribute="bottom" secondItem="Q8b-0e-dLv" secondAttribute="bottom" constant="20" symbolic="YES" id="DZa-ly-bhV"/>
- <constraint firstItem="wzf-ce-Spm" firstAttribute="top" secondItem="Q8b-0e-dLv" secondAttribute="bottom" id="LhK-5z-CQA"/>
- <constraint firstItem="Q8b-0e-dLv" firstAttribute="leading" secondItem="8ha-hw-zOD" secondAttribute="leading" constant="-1" id="Oyo-ch-rZo"/>
- <constraint firstAttribute="bottom" secondItem="7L7-hr-zId" secondAttribute="bottom" id="TtY-j1-T5h"/>
- <constraint firstItem="Q8b-0e-dLv" firstAttribute="top" secondItem="8ha-hw-zOD" secondAttribute="top" constant="-1" id="WDk-Ig-Grr"/>
- <constraint firstAttribute="trailing" secondItem="Q8b-0e-dLv" secondAttribute="trailing" constant="-1" id="hHf-rd-Wcv"/>
- <constraint firstItem="7L7-hr-zId" firstAttribute="leading" secondItem="8ha-hw-zOD" secondAttribute="leading" constant="20" symbolic="YES" id="iKJ-ph-ACS"/>
- <constraint firstAttribute="bottom" secondItem="wzf-ce-Spm" secondAttribute="bottom" constant="-1" id="jFV-Xi-fWr"/>
- <constraint firstItem="wzf-ce-Spm" firstAttribute="leading" secondItem="8ha-hw-zOD" secondAttribute="leading" id="kJt-oJ-72R"/>
- </constraints>
- </view>
- <point key="canvasLocation" x="720" y="317"/>
- </window>
- <arrayController objectClassName="MGLOfflinePack" editable="NO" avoidsEmptySelection="NO" id="dWe-R6-sRz" userLabel="Offline Packs Array Controller">
- <declaredKeys>
- <string>context</string>
- <string>countOfResourcesCompleted</string>
- <string>countOfResourcesExpected</string>
- <string>countOfTilesCompleted</string>
- <string>countOfTileBytesCompleted</string>
- <string>countOfBytesCompleted</string>
- <string>stateImage</string>
- </declaredKeys>
- </arrayController>
- </objects>
- <resources>
- <image name="NSAddTemplate" width="11" height="11"/>
- <image name="NSFollowLinkFreestandingTemplate" width="14" height="14"/>
- <image name="NSRemoveTemplate" width="11" height="11"/>
- </resources>
-</document>
diff --git a/platform/macos/app/Base.lproj/MapDocument.xib b/platform/macos/app/Base.lproj/MapDocument.xib
deleted file mode 100644
index 084bb76adf..0000000000
--- a/platform/macos/app/Base.lproj/MapDocument.xib
+++ /dev/null
@@ -1,497 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
- <dependencies>
- <deployment identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <objects>
- <customObject id="-2" userLabel="File's Owner" customClass="MapDocument">
- <connections>
- <outlet property="addOfflinePackWindow" destination="NmZ-Tf-v2O" id="ZPE-9L-vPJ"/>
- <outlet property="includesIdeographicGlyphsBox" destination="Jbt-z6-eg9" id="4M4-jN-qxP"/>
- <outlet property="mapView" destination="q4d-kF-8Hi" id="7hI-dS-A5R"/>
- <outlet property="mapViewContextMenu" destination="XbX-6a-Mgy" id="YD0-1r-5N2"/>
- <outlet property="maximumOfflinePackZoomLevelField" destination="5sj-XD-neD" id="Edu-lU-3j9"/>
- <outlet property="maximumOfflinePackZoomLevelFormatter" destination="4cD-xh-teT" id="IOh-5e-4FO"/>
- <outlet property="minimumOfflinePackZoomLevelField" destination="Xo1-tZ-WQ6" id="ETh-er-ReB"/>
- <outlet property="minimumOfflinePackZoomLevelFormatter" destination="LGN-Et-RKY" id="Klk-iF-fM0"/>
- <outlet property="offlinePackNameField" destination="tUU-DX-RxU" id="r7P-uL-4qo"/>
- <outlet property="splitView" destination="IPR-fm-vk8" id="9xt-ar-uad"/>
- <outlet property="styleLayersArrayController" destination="GXW-3J-Gff" id="Ygs-7o-juz"/>
- <outlet property="styleLayersTableView" destination="Mm4-6F-qEb" id="TB5-ha-JJE"/>
- <outlet property="window" destination="cSv-fg-MAQ" id="TBu-Mu-79N"/>
- </connections>
- </customObject>
- <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
- <objectController objectClassName="MGLMapView" id="jxx-uM-ZTC" userLabel="Map View Object Controller">
- <declaredKeys>
- <string>style</string>
- </declaredKeys>
- <connections>
- <outlet property="content" destination="q4d-kF-8Hi" id="Zpe-0y-eG3"/>
- </connections>
- </objectController>
- <objectController objectClassName="MGLStyle" id="Xji-k6-iQ4" userLabel="Style Object Controller">
- <declaredKeys>
- <string>layers</string>
- <string>name</string>
- <string>reversedLayers</string>
- </declaredKeys>
- <connections>
- <binding destination="jxx-uM-ZTC" name="contentObject" keyPath="selection.style" id="60N-aU-tgJ"/>
- </connections>
- </objectController>
- <arrayController objectClassName="MGLStyleLayer" avoidsEmptySelection="NO" id="GXW-3J-Gff" userLabel="Style Layers Array Controller">
- <declaredKeys>
- <string>identifier</string>
- <string>visible</string>
- </declaredKeys>
- <connections>
- <binding destination="Xji-k6-iQ4" name="contentArray" keyPath="selection.reversedLayers" id="wtL-d8-GNd"/>
- </connections>
- </arrayController>
- <customObject id="-3" userLabel="Application" customClass="NSObject"/>
- <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="MBXMapWindow" animationBehavior="default" id="cSv-fg-MAQ">
- <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
- <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
- <rect key="contentRect" x="388" y="211" width="642" height="480"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
- <view key="contentView" id="TuG-C5-zLS">
- <rect key="frame" x="0.0" y="0.0" width="642" height="480"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <splitView autosaveName="MBXLayersSplitView" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IPR-fm-vk8">
- <rect key="frame" x="0.0" y="0.0" width="642" height="480"/>
- <subviews>
- <scrollView misplaced="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" id="sMc-vT-RwH">
- <rect key="frame" x="0.0" y="0.0" width="163" height="480"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <clipView key="contentView" id="bSc-hK-bzQ">
- <rect key="frame" x="0.0" y="0.0" width="163" height="480"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" autosaveColumns="NO" id="Mm4-6F-qEb">
- <rect key="frame" x="0.0" y="0.0" width="163" height="480"/>
- <autoresizingMask key="autoresizingMask"/>
- <size key="intercellSpacing" width="3" height="2"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
- <tableColumns>
- <tableColumn editable="NO" width="16" minWidth="16" maxWidth="1000" id="P3U-a3-c8q">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
- </tableHeaderCell>
- <imageCell key="dataCell" lineBreakMode="truncatingTail" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="symbol" id="JWq-c8-aB1"/>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="GXW-3J-Gff" name="value" keyPath="arrangedObjects" id="ST5-mo-Mkt">
- <dictionary key="options">
- <bool key="NSConditionallySetsEnabled" value="NO"/>
- <string key="NSValueTransformerName">StyleLayerIconTransformer</string>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="141" minWidth="40" maxWidth="1000" id="BwD-ww-7uw">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="6wl-F2-yK2">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="GXW-3J-Gff" name="value" keyPath="arrangedObjects.identifier" id="vQC-tc-CMF">
- <dictionary key="options">
- <bool key="NSConditionallySetsEditable" value="YES"/>
- </dictionary>
- </binding>
- <binding destination="GXW-3J-Gff" name="fontItalic" keyPath="arrangedObjects.visible" id="6Wu-cz-WSI">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- </tableColumns>
- <connections>
- <action trigger="doubleAction" selector="toggleStyleLayers:" target="-1" id="Q1v-2T-sIC"/>
- <outlet property="menu" destination="OHX-Pa-tDw" id="wnL-Ux-WaH"/>
- </connections>
- </tableView>
- </subviews>
- </clipView>
- <constraints>
- <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="185" id="VQs-2Z-hmP"/>
- </constraints>
- <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="NDx-rn-TLj">
- <rect key="frame" x="0.0" y="464" width="163" height="16"/>
- <autoresizingMask key="autoresizingMask"/>
- </scroller>
- <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="0vt-rI-sHB">
- <rect key="frame" x="147" y="480" width="16" height="0.0"/>
- <autoresizingMask key="autoresizingMask"/>
- </scroller>
- </scrollView>
- <customView misplaced="YES" id="q4d-kF-8Hi" customClass="MGLMapView">
- <rect key="frame" x="164" y="0.0" width="478" height="480"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <constraints>
- <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="kg3-4h-7Hl"/>
- </constraints>
- <connections>
- <outlet property="delegate" destination="-2" id="dh2-0H-jFZ"/>
- <outlet property="menu" destination="XbX-6a-Mgy" id="dSu-HR-Kq2"/>
- </connections>
- </customView>
- </subviews>
- <holdingPriorities>
- <real value="250"/>
- <real value="250"/>
- </holdingPriorities>
- <connections>
- <outlet property="delegate" destination="-2" id="dbC-MC-CAy"/>
- </connections>
- </splitView>
- </subviews>
- <constraints>
- <constraint firstAttribute="trailing" secondItem="IPR-fm-vk8" secondAttribute="trailing" id="ABk-5R-Uzg"/>
- <constraint firstAttribute="bottom" secondItem="IPR-fm-vk8" secondAttribute="bottom" id="CHa-BK-6ld"/>
- <constraint firstItem="IPR-fm-vk8" firstAttribute="leading" secondItem="TuG-C5-zLS" secondAttribute="leading" id="hcR-y2-x3l"/>
- <constraint firstItem="IPR-fm-vk8" firstAttribute="top" secondItem="TuG-C5-zLS" secondAttribute="top" id="u78-BU-s5g"/>
- </constraints>
- </view>
- <toolbar key="toolbar" implicitIdentifier="A3AC6577-4712-4628-813D-113498171A84" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="regular" id="DTc-AP-Bah">
- <allowedToolbarItems>
- <toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="bld-8W-Wgg"/>
- <toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="z4l-5x-MzK"/>
- <toolbarItem implicitItemIdentifier="2CB58C0A-7B95-4233-8DD3-F94BFE7D3061" label="Share" paletteLabel="Share" image="NSShareTemplate" id="XJT-Ho-tuZ" customClass="ValidatedToolbarItem">
- <nil key="toolTip"/>
- <size key="minSize" width="40" height="32"/>
- <size key="maxSize" width="48" height="32"/>
- <button key="view" verticalHuggingPriority="750" id="y6e-ev-rVL">
- <rect key="frame" x="0.0" y="14" width="48" height="32"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
- <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSShareTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="TBK-Ra-XzZ">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- </button>
- <connections>
- <action selector="showShareMenu:" target="-1" id="fCB-HP-iou"/>
- </connections>
- </toolbarItem>
- <toolbarItem implicitItemIdentifier="BA3542AF-D63A-4893-9CC7-8F67EF2E82B0" label="Style" paletteLabel="Style" id="u23-0z-Otl" customClass="ValidatedToolbarItem">
- <nil key="toolTip"/>
- <size key="minSize" width="100" height="26"/>
- <size key="maxSize" width="150" height="26"/>
- <popUpButton key="view" verticalHuggingPriority="750" id="Tzm-Cy-dQg">
- <rect key="frame" x="0.0" y="14" width="150" height="26"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
- <popUpButtonCell key="cell" type="roundTextured" title="Streets" bezelStyle="texturedRounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="border" tag="1" imageScaling="proportionallyDown" inset="2" selectedItem="wvt-tP-O3a" id="3PJ-qK-Oh3">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="menu"/>
- <menu key="menu" id="xf3-qk-IhF">
- <items>
- <menuItem title="Streets" state="on" tag="1" id="wvt-tP-O3a"/>
- <menuItem title="Outdoors" tag="2" id="RkE-lp-fL9"/>
- <menuItem title="Light" tag="3" id="R4X-kt-HHb"/>
- <menuItem title="Dark" tag="4" id="jUC-5X-0Zx">
- <modifierMask key="keyEquivalentModifierMask"/>
- </menuItem>
- <menuItem title="Satellite" tag="5" id="CTe-e2-o42">
- <modifierMask key="keyEquivalentModifierMask"/>
- </menuItem>
- <menuItem title="Satellite Streets" tag="6" id="7ly-oA-0ND">
- <modifierMask key="keyEquivalentModifierMask"/>
- </menuItem>
- </items>
- </menu>
- </popUpButtonCell>
- </popUpButton>
- <connections>
- <action selector="showStyle:" target="-1" id="pBn-SO-HIX"/>
- </connections>
- </toolbarItem>
- <toolbarItem implicitItemIdentifier="ACA1D8BE-A108-4BF9-92DC-AE7AA7342CF9" label="Layers" paletteLabel="Show Layers" image="NSListViewTemplate" id="THR-Dm-mn8" customClass="ValidatedToolbarItem">
- <nil key="toolTip"/>
- <size key="minSize" width="47" height="32"/>
- <size key="maxSize" width="48" height="32"/>
- <button key="view" verticalHuggingPriority="750" id="C3e-Oy-STT">
- <rect key="frame" x="14" y="14" width="47" height="32"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
- <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSListViewTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2Gf-wm-QuI">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- </button>
- <connections>
- <action selector="toggleLayers:" target="-1" id="NHT-rn-BuG"/>
- </connections>
- </toolbarItem>
- </allowedToolbarItems>
- <defaultToolbarItems>
- <toolbarItem reference="THR-Dm-mn8"/>
- <toolbarItem reference="XJT-Ho-tuZ"/>
- <toolbarItem reference="z4l-5x-MzK"/>
- <toolbarItem reference="u23-0z-Otl"/>
- </defaultToolbarItems>
- <connections>
- <outlet property="delegate" destination="-2" id="V9D-gS-Tvu"/>
- </connections>
- </toolbar>
- <connections>
- <binding destination="-2" name="displayPatternTitle1" keyPath="mapView.centerCoordinate" id="p1k-yo-4Nb">
- <dictionary key="options">
- <string key="NSDisplayPattern">%{title1}@ @ %{title2}@</string>
- <string key="NSValueTransformerName">LocationCoordinate2DTransformer</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="displayPatternTitle2" keyPath="mapView.zoomLevel" previousBinding="p1k-yo-4Nb" id="HBB-y3-89c">
- <dictionary key="options">
- <string key="NSDisplayPattern">%{title1}@ @ %{title2}@</string>
- </dictionary>
- </binding>
- <outlet property="delegate" destination="-2" id="HEo-Qf-o6o"/>
- </connections>
- </window>
- <menu title="Map View" id="XbX-6a-Mgy">
- <items>
- <menuItem title="Drop Pin" id="KiK-wh-YwN">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="dropPin:" target="-1" id="ZH6-Tj-IJT"/>
- </connections>
- </menuItem>
- <menuItem title="Remove Pin" id="Zhx-30-VmE">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="removePin:" target="-1" id="w0R-0B-7mG"/>
- </connections>
- </menuItem>
- <menuItem title="Select Features" id="za5-bY-mdf">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="selectFeatures:" target="-1" id="ikt-CZ-yZT"/>
- </connections>
- </menuItem>
- </items>
- <connections>
- <outlet property="delegate" destination="-2" id="oHe-ZP-lyc"/>
- </connections>
- <point key="canvasLocation" x="820" y="254.5"/>
- </menu>
- <menu title="Layer" id="OHX-Pa-tDw" userLabel="Layers Context Menu">
- <items>
- <menuItem title="Show" id="KWq-LM-Qqo">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleStyleLayers:" target="-1" id="kXn-ug-tWC"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="uWQ-uj-mZn"/>
- <menuItem title="Delete" id="Myg-EZ-Pnq">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="deleteStyleLayers:" target="-1" id="cE5-ZP-BDC"/>
- </connections>
- </menuItem>
- </items>
- <connections>
- <outlet property="delegate" destination="-2" id="yvb-NB-VGl"/>
- </connections>
- </menu>
- <window title="Add Offline Pack" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="NmZ-Tf-v2O">
- <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
- <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
- <rect key="contentRect" x="109" y="131" width="392" height="221"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
- <view key="contentView" id="Aqq-bl-feU">
- <rect key="frame" x="0.0" y="0.0" width="392" height="221"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Xjw-df-oAz">
- <rect key="frame" x="98" y="184" width="276" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" title="Add offline pack" id="Iec-RB-iqn">
- <font key="font" metaFont="systemBold"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sui-dp-hbb">
- <rect key="frame" x="98" y="107" width="44" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="Name:" id="2El-Zw-T6E">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="D3l-hX-2Dh">
- <rect key="frame" x="98" y="134" width="276" height="42"/>
- <textFieldCell key="cell" selectable="YES" title="Mapbox GL will download all the resources needed for viewing the currently visible coordinate bounds in the current style." id="3Gw-Zy-sBT">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tUU-DX-RxU">
- <rect key="frame" x="148" y="104" width="224" height="22"/>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="lwQ-N1-PTI">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <outlet property="nextKeyView" destination="Xo1-tZ-WQ6" id="VIu-TG-LQu"/>
- </connections>
- </textField>
- <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p5T-3H-wqL">
- <rect key="frame" x="20" y="137" width="64" height="64"/>
- <constraints>
- <constraint firstAttribute="height" constant="64" id="2Xy-pC-rE3"/>
- <constraint firstAttribute="width" constant="64" id="SWY-Rg-9R8"/>
- </constraints>
- <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSApplicationIcon" id="cww-fO-sNX"/>
- </imageView>
- <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Xo1-tZ-WQ6">
- <rect key="frame" x="148" y="78" width="96" height="22"/>
- <constraints>
- <constraint firstAttribute="width" constant="96" id="8Rw-FU-HGV"/>
- </constraints>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="g7z-bq-I00">
- <numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="z#,##0" numberStyle="decimal" allowsFloats="NO" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="LGN-Et-RKY">
- <real key="minimum" value="0.0"/>
- </numberFormatter>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <outlet property="nextKeyView" destination="5sj-XD-neD" id="90r-pR-v8j"/>
- </connections>
- </textField>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8r0-F0-e5i">
- <rect key="frame" x="250" y="81" width="20" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="to:" id="RBS-Uj-AVT">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5sj-XD-neD">
- <rect key="frame" x="276" y="78" width="96" height="22"/>
- <constraints>
- <constraint firstAttribute="width" constant="96" id="faj-tE-bfc"/>
- </constraints>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="dUq-Vg-vgQ">
- <numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="z#,##0" numberStyle="decimal" allowsFloats="NO" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="4cD-xh-teT">
- <real key="minimum" value="0.0"/>
- </numberFormatter>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <outlet property="nextKeyView" destination="Jbt-z6-eg9" id="273-nM-wgO"/>
- </connections>
- </textField>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jbt-z6-eg9">
- <rect key="frame" x="98" y="54" width="276" height="18"/>
- <buttonCell key="cell" type="check" title="Include CJK characters" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="whL-VW-8fY">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- <connections>
- <outlet property="nextKeyView" destination="tUU-DX-RxU" id="bQK-xN-9lx"/>
- </connections>
- </button>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hhq-J9-mzB">
- <rect key="frame" x="98" y="81" width="44" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="From:" id="fkO-YX-Yzt">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="EyW-0r-iV7">
- <rect key="frame" x="313" y="13" width="65" height="32"/>
- <buttonCell key="cell" type="push" title="Add" bezelStyle="rounded" alignment="center" borderStyle="border" tag="1" imageScaling="proportionallyDown" inset="2" id="5xR-IX-Qnp">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- <string key="keyEquivalent" base64-UTF8="YES">
-DQ
-</string>
- </buttonCell>
- <connections>
- <action selector="confirmAddingOfflinePack:" target="-2" id="7ic-hp-A2O"/>
- </connections>
- </button>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ggP-hg-92n">
- <rect key="frame" x="231" y="13" width="82" height="32"/>
- <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="L4F-7l-Wwq">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- <string key="keyEquivalent" base64-UTF8="YES">
-Gw
-</string>
- </buttonCell>
- <connections>
- <action selector="confirmAddingOfflinePack:" target="-2" id="Ljo-bK-4BU"/>
- </connections>
- </button>
- </subviews>
- <constraints>
- <constraint firstItem="hhq-J9-mzB" firstAttribute="firstBaseline" secondItem="Xo1-tZ-WQ6" secondAttribute="firstBaseline" id="0Rv-Ze-u9B"/>
- <constraint firstAttribute="trailing" secondItem="Xjw-df-oAz" secondAttribute="trailing" constant="20" id="0gu-PF-adU"/>
- <constraint firstItem="p5T-3H-wqL" firstAttribute="top" secondItem="Aqq-bl-feU" secondAttribute="top" constant="20" id="2bA-hD-M6H"/>
- <constraint firstItem="ggP-hg-92n" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Aqq-bl-feU" secondAttribute="leading" constant="20" symbolic="YES" id="493-sg-uf0"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="top" secondItem="tUU-DX-RxU" secondAttribute="bottom" constant="4" id="4Ql-yp-7Kv"/>
- <constraint firstAttribute="bottom" secondItem="EyW-0r-iV7" secondAttribute="bottom" constant="20" id="7cm-ds-QeW"/>
- <constraint firstItem="D3l-hX-2Dh" firstAttribute="leading" secondItem="p5T-3H-wqL" secondAttribute="trailing" constant="16" id="7xT-tt-0Wx"/>
- <constraint firstItem="EyW-0r-iV7" firstAttribute="leading" secondItem="ggP-hg-92n" secondAttribute="trailing" constant="12" id="9AJ-g9-XXg"/>
- <constraint firstItem="Jbt-z6-eg9" firstAttribute="top" secondItem="Xo1-tZ-WQ6" secondAttribute="bottom" constant="8" id="BGA-2c-w6i"/>
- <constraint firstItem="ggP-hg-92n" firstAttribute="top" secondItem="Jbt-z6-eg9" secondAttribute="bottom" constant="15" id="BXD-Xj-NJb"/>
- <constraint firstItem="D3l-hX-2Dh" firstAttribute="top" secondItem="Xjw-df-oAz" secondAttribute="bottom" constant="8" id="BwZ-hX-4t5"/>
- <constraint firstItem="sui-dp-hbb" firstAttribute="firstBaseline" secondItem="tUU-DX-RxU" secondAttribute="firstBaseline" id="MUq-FE-BiZ"/>
- <constraint firstItem="sui-dp-hbb" firstAttribute="leading" secondItem="D3l-hX-2Dh" secondAttribute="leading" id="NU2-ve-0Mo"/>
- <constraint firstItem="tUU-DX-RxU" firstAttribute="top" secondItem="D3l-hX-2Dh" secondAttribute="bottom" constant="8" id="Rn0-66-xYg"/>
- <constraint firstItem="8r0-F0-e5i" firstAttribute="firstBaseline" secondItem="5sj-XD-neD" secondAttribute="firstBaseline" id="Shc-KJ-NR4"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="leading" secondItem="tUU-DX-RxU" secondAttribute="leading" id="Usc-k5-8R9"/>
- <constraint firstItem="8r0-F0-e5i" firstAttribute="leading" secondItem="Xo1-tZ-WQ6" secondAttribute="trailing" constant="8" id="W7y-oQ-Tsb"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="leading" secondItem="hhq-J9-mzB" secondAttribute="trailing" constant="8" id="g3w-AE-VVQ"/>
- <constraint firstItem="5sj-XD-neD" firstAttribute="trailing" secondItem="tUU-DX-RxU" secondAttribute="trailing" id="gWo-ar-g0U"/>
- <constraint firstItem="Xjw-df-oAz" firstAttribute="leading" secondItem="p5T-3H-wqL" secondAttribute="trailing" constant="16" id="jRa-3D-tbZ"/>
- <constraint firstItem="Jbt-z6-eg9" firstAttribute="leading" secondItem="Xjw-df-oAz" secondAttribute="leading" id="mDq-XI-GdW"/>
- <constraint firstItem="Xjw-df-oAz" firstAttribute="top" secondItem="Aqq-bl-feU" secondAttribute="top" constant="20" id="nrG-fO-QE5"/>
- <constraint firstItem="D3l-hX-2Dh" firstAttribute="trailing" secondItem="Xjw-df-oAz" secondAttribute="trailing" id="o5U-kq-Wbz"/>
- <constraint firstItem="Jbt-z6-eg9" firstAttribute="trailing" secondItem="D3l-hX-2Dh" secondAttribute="trailing" id="o9H-cU-YAR"/>
- <constraint firstItem="tUU-DX-RxU" firstAttribute="leading" secondItem="sui-dp-hbb" secondAttribute="trailing" constant="8" id="oVs-7V-Dxq"/>
- <constraint firstItem="tUU-DX-RxU" firstAttribute="trailing" secondItem="D3l-hX-2Dh" secondAttribute="trailing" id="p3o-y4-fNP"/>
- <constraint firstItem="hhq-J9-mzB" firstAttribute="leading" secondItem="sui-dp-hbb" secondAttribute="leading" id="sff-ty-Y6C"/>
- <constraint firstItem="5sj-XD-neD" firstAttribute="leading" secondItem="8r0-F0-e5i" secondAttribute="trailing" constant="8" id="tf8-pK-DZR"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="firstBaseline" secondItem="8r0-F0-e5i" secondAttribute="firstBaseline" id="vdt-kP-ISY"/>
- <constraint firstItem="EyW-0r-iV7" firstAttribute="trailing" secondItem="5sj-XD-neD" secondAttribute="trailing" id="wWy-ra-Uqt"/>
- <constraint firstItem="p5T-3H-wqL" firstAttribute="leading" secondItem="Aqq-bl-feU" secondAttribute="leading" constant="20" id="whj-f7-Iu6"/>
- <constraint firstItem="ggP-hg-92n" firstAttribute="firstBaseline" secondItem="EyW-0r-iV7" secondAttribute="firstBaseline" id="yl0-vC-sO8"/>
- </constraints>
- </view>
- <connections>
- <outlet property="initialFirstResponder" destination="tUU-DX-RxU" id="W2D-pZ-p0s"/>
- </connections>
- <point key="canvasLocation" x="79" y="881.5"/>
- </window>
- </objects>
- <resources>
- <image name="NSApplicationIcon" width="32" height="32"/>
- <image name="NSListViewTemplate" width="14" height="10"/>
- <image name="NSShareTemplate" width="11" height="16"/>
- <image name="symbol" width="13" height="13"/>
- </resources>
-</document>
diff --git a/platform/macos/app/Credits.rtf b/platform/macos/app/Credits.rtf
deleted file mode 100644
index 6b17eb34b2..0000000000
--- a/platform/macos/app/Credits.rtf
+++ /dev/null
@@ -1,9 +0,0 @@
-{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf130
-{\fonttbl\f0\fnil\fcharset0 SFUIText-Regular;}
-{\colortbl;\red255\green255\blue255;}
-\margl1440\margr1440\vieww10800\viewh8400\viewkind0
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\qc\partightenfactor0
-
-\f0\fs20 \cf0 Copyright \'a9 {\field{\*\fldinst{HYPERLINK "https://www.mapbox.com/about/maps/"}}{\fldrslt Mapbox}}.\
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\qc\partightenfactor0
-\cf0 Copyright \'a9 {\field{\*\fldinst{HYPERLINK "http://www.openstreetmap.org/about/"}}{\fldrslt OpenStreetMap contributors}}.} \ No newline at end of file
diff --git a/platform/macos/app/DroppedPinAnnotation.h b/platform/macos/app/DroppedPinAnnotation.h
deleted file mode 100644
index 0897219b13..0000000000
--- a/platform/macos/app/DroppedPinAnnotation.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface DroppedPinAnnotation : MGLPointAnnotation
-
-@property (nonatomic, copy, nullable) NSString *note;
-@property (nonatomic, readonly) NSTimeInterval elapsedShownTime;
-
-- (void)resume;
-- (void)pause;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/app/DroppedPinAnnotation.m b/platform/macos/app/DroppedPinAnnotation.m
deleted file mode 100644
index b601405095..0000000000
--- a/platform/macos/app/DroppedPinAnnotation.m
+++ /dev/null
@@ -1,73 +0,0 @@
-#import "DroppedPinAnnotation.h"
-
-#import "LocationCoordinate2DTransformer.h"
-#import "TimeIntervalTransformer.h"
-
-#import <Mapbox/Mapbox.h>
-
-static MGLCoordinateFormatter *DroppedPinCoordinateFormatter;
-
-@implementation DroppedPinAnnotation {
- NSTimer *_timer;
- NSTimeInterval _priorShownTimeInterval;
- NSDate *_dateShown;
-
- NSValueTransformer *_timeIntervalTransformer;
-}
-
-+ (void)initialize {
- if (self == [DroppedPinAnnotation class]) {
- DroppedPinCoordinateFormatter = [[MGLCoordinateFormatter alloc] init];
- }
-}
-
-- (instancetype)init {
- if (self = [super init]) {
- _timeIntervalTransformer = [NSValueTransformer valueTransformerForName:
- NSStringFromClass([TimeIntervalTransformer class])];
- [self update:nil];
- }
- return self;
-}
-
-- (void)dealloc {
- [self pause];
-}
-
-- (void)setCoordinate:(CLLocationCoordinate2D)coordinate {
- super.coordinate = coordinate;
- [self update:nil];
-}
-
-- (NSTimeInterval)elapsedShownTime {
- return _priorShownTimeInterval - _dateShown.timeIntervalSinceNow;
-}
-
-- (void)resume {
- _dateShown = [NSDate date];
- _timer = [NSTimer scheduledTimerWithTimeInterval:1
- target:self
- selector:@selector(update:)
- userInfo:nil
- repeats:YES];
-}
-
-- (void)pause {
- [_timer invalidate];
- _timer = nil;
- _priorShownTimeInterval -= _dateShown.timeIntervalSinceNow;
- _dateShown = nil;
-}
-
-- (void)update:(NSTimer *)timer {
- NSString *coordinate = [DroppedPinCoordinateFormatter stringFromCoordinate:self.coordinate];
- if (self.note) {
- self.subtitle = [@[self.note, coordinate] componentsJoinedByString:@"\n"];
- } else {
- NSString *elapsedTime = [_timeIntervalTransformer transformedValue:@(self.elapsedShownTime)];
- NSString *elapsedString = [NSString stringWithFormat:@"Selected for %@", elapsedTime];
- self.subtitle = [@[coordinate, elapsedString] componentsJoinedByString:@"\n"];
- }
-}
-
-@end
diff --git a/platform/macos/app/Info.plist b/platform/macos/app/Info.plist
deleted file mode 100644
index 21b86bfc75..0000000000
--- a/platform/macos/app/Info.plist
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleDocumentTypes</key>
- <array>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>mbx</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>Mapbox GL Map</string>
- <key>CFBundleTypeRole</key>
- <string>Editor</string>
- <key>NSDocumentClass</key>
- <string>MapDocument</string>
- </dict>
- </array>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.1.0</string>
- <key>CFBundleSignature</key>
- <string>MBGL</string>
- <key>CFBundleURLTypes</key>
- <array>
- <dict>
- <key>CFBundleURLName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundleURLSchemes</key>
- <array>
- <string>mapboxgl</string>
- </array>
- </dict>
- </array>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
- <key>NSSupportsAutomaticGraphicsSwitching</key>
- <true/>
-</dict>
-</plist>
diff --git a/platform/macos/app/LocationCoordinate2DTransformer.h b/platform/macos/app/LocationCoordinate2DTransformer.h
deleted file mode 100644
index 162325fbad..0000000000
--- a/platform/macos/app/LocationCoordinate2DTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface LocationCoordinate2DTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/LocationCoordinate2DTransformer.m b/platform/macos/app/LocationCoordinate2DTransformer.m
deleted file mode 100644
index 59654f1676..0000000000
--- a/platform/macos/app/LocationCoordinate2DTransformer.m
+++ /dev/null
@@ -1,31 +0,0 @@
-#import "LocationCoordinate2DTransformer.h"
-
-#import <Mapbox/Mapbox.h>
-
-@implementation LocationCoordinate2DTransformer {
- MGLCoordinateFormatter *_coordinateFormatter;
-}
-
-+ (Class)transformedValueClass {
- return [NSString class];
-}
-
-+ (BOOL)allowsReverseTransformation {
- return NO;
-}
-
-- (instancetype)init {
- if (self = [super init]) {
- _coordinateFormatter = [[MGLCoordinateFormatter alloc] init];
- }
- return self;
-}
-
-- (id)transformedValue:(id)value {
- if (![value isKindOfClass:[NSValue class]]) {
- return nil;
- }
- return [_coordinateFormatter stringForObjectValue:value].capitalizedString;
-}
-
-@end
diff --git a/platform/macos/app/MGLStyle+MBXAdditions.h b/platform/macos/app/MGLStyle+MBXAdditions.h
deleted file mode 100644
index 29c2cda867..0000000000
--- a/platform/macos/app/MGLStyle+MBXAdditions.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-@interface MGLStyle (MBXAdditions)
-
-@property (nonatomic, strong) NSArray<__kindof MGLStyleLayer *> *reversedLayers;
-
-@end
diff --git a/platform/macos/app/MGLStyle+MBXAdditions.m b/platform/macos/app/MGLStyle+MBXAdditions.m
deleted file mode 100644
index a0773cc2c0..0000000000
--- a/platform/macos/app/MGLStyle+MBXAdditions.m
+++ /dev/null
@@ -1,42 +0,0 @@
-#import "MGLStyle+MBXAdditions.h"
-
-@implementation MGLStyle (MBXAdditions)
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingReversedLayers {
- return [NSSet setWithObject:@"layers"];
-}
-
-- (NSArray<__kindof MGLStyleLayer *> *)reversedLayers {
- return self.layers.reverseObjectEnumerator.allObjects;
-}
-
-- (void)setReversedLayers:(NSArray<__kindof MGLStyleLayer *> *)reversedLayers {
- self.layers = reversedLayers.reverseObjectEnumerator.allObjects;
-}
-
-- (NSUInteger)countOfReversedLayers {
- return self.layers.count;
-}
-
-- (id)objectInReversedLayersAtIndex:(NSUInteger)index {
- NSArray *layers = self.layers;
- return layers[layers.count - 1 - index];
-}
-
-- (void)getReversedLayers:(__kindof MGLStyleLayer **)buffer range:(NSRange)inRange {
- NSArray *layers = self.layers;
- for (NSUInteger i = inRange.location; i < NSMaxRange(inRange); i++) {
- MGLStyleLayer *styleLayer = layers[layers.count - 1 - i];
- buffer[i] = styleLayer;
- }
-}
-
-- (void)insertObject:(__kindof MGLStyleLayer *)object inReversedLayersAtIndex:(NSUInteger)index {
- [self insertLayer:object atIndex:self.layers.count - index];
-}
-
-- (void)removeObjectFromReversedLayersAtIndex:(NSUInteger)index {
- [self removeLayer:[self objectInReversedLayersAtIndex:index]];
-}
-
-@end
diff --git a/platform/macos/app/MapDocument.h b/platform/macos/app/MapDocument.h
deleted file mode 100644
index fa70212cf8..0000000000
--- a/platform/macos/app/MapDocument.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-@class MGLMapView;
-
-@interface MapDocument : NSDocument
-
-@property (weak) IBOutlet MGLMapView *mapView;
-
-- (IBAction)showStyle:(id)sender;
-- (IBAction)chooseCustomStyle:(id)sender;
-
-- (IBAction)reload:(id)sender;
-
-@end
diff --git a/platform/macos/app/MapDocument.m b/platform/macos/app/MapDocument.m
deleted file mode 100644
index 1ab8b690b9..0000000000
--- a/platform/macos/app/MapDocument.m
+++ /dev/null
@@ -1,1507 +0,0 @@
-#import "MapDocument.h"
-
-#import "AppDelegate.h"
-#import "LimeGreenStyleLayer.h"
-#import "DroppedPinAnnotation.h"
-#import "MGLMapsnapshotter.h"
-
-#import "MGLStyle+MBXAdditions.h"
-#import "MGLVectorTileSource_Private.h"
-
-#import <Mapbox/Mapbox.h>
-
-static NSString * const MGLDroppedPinAnnotationImageIdentifier = @"dropped";
-
-static const CLLocationCoordinate2D WorldTourDestinations[] = {
- { .latitude = 38.8999418, .longitude = -77.033996 },
- { .latitude = 37.7884307, .longitude = -122.3998631 },
- { .latitude = 52.5003103, .longitude = 13.4197763 },
- { .latitude = 60.1712627, .longitude = 24.9378866 },
- { .latitude = 53.8948782, .longitude = 27.5558476 },
-};
-
-NSArray<id <MGLAnnotation>> *MBXFlattenedShapes(NSArray<id <MGLAnnotation>> *shapes) {
- NSMutableArray *flattenedShapes = [NSMutableArray arrayWithCapacity:shapes.count];
- for (id <MGLAnnotation> shape in shapes) {
- NSArray *subshapes;
- if ([shape isKindOfClass:[MGLMultiPolyline class]]) {
- subshapes = [(MGLMultiPolyline *)shape polylines];
- } else if ([shape isKindOfClass:[MGLMultiPolygon class]]) {
- subshapes = [(MGLMultiPolygon *)shape polygons];
- } else if ([shape isKindOfClass:[MGLPointCollection class]]) {
- NSUInteger pointCount = [(MGLPointCollection *)shape pointCount];
- CLLocationCoordinate2D *coordinates = [(MGLPointCollection *)shape coordinates];
- NSMutableArray *pointAnnotations = [NSMutableArray arrayWithCapacity:pointCount];
- for (NSUInteger i = 0; i < pointCount; i++) {
- MGLPointAnnotation *pointAnnotation = [[MGLPointAnnotation alloc] init];
- pointAnnotation.coordinate = coordinates[i];
- [pointAnnotations addObject:pointAnnotation];
- }
- subshapes = pointAnnotations;
- } else if ([shape isKindOfClass:[MGLShapeCollection class]]) {
- subshapes = MBXFlattenedShapes([(MGLShapeCollection *)shape shapes]);
- }
-
- if (subshapes) {
- [flattenedShapes addObjectsFromArray:subshapes];
- } else {
- [flattenedShapes addObject:shape];
- }
- }
- return flattenedShapes;
-}
-
-@interface MGLVectorTileSource (MBXAdditions)
-
-@property (nonatomic, readonly, getter=isMapboxTerrain) BOOL mapboxTerrain;
-
-@end
-
-@implementation MGLVectorTileSource (MBXAdditions)
-
-- (BOOL)isMapboxTerrain {
- NSURL *url = self.configurationURL;
- if (![url.scheme isEqualToString:@"mapbox"]) {
- return NO;
- }
- NSArray *identifiers = [url.host componentsSeparatedByString:@","];
- return [identifiers containsObject:@"mapbox.mapbox-terrain-v2"] || [identifiers containsObject:@"mapbox.mapbox-terrain-v1"];
-}
-
-@end
-
-@interface MapDocument () <NSWindowDelegate, NSSharingServicePickerDelegate, NSMenuDelegate, NSSplitViewDelegate, MGLMapViewDelegate, MGLComputedShapeSourceDataSource>
-
-@property (weak) IBOutlet NSArrayController *styleLayersArrayController;
-@property (weak) IBOutlet NSTableView *styleLayersTableView;
-@property (weak) IBOutlet NSMenu *mapViewContextMenu;
-@property (weak) IBOutlet NSSplitView *splitView;
-@property (weak) IBOutlet NSWindow *addOfflinePackWindow;
-@property (weak) IBOutlet NSTextField *offlinePackNameField;
-@property (weak) IBOutlet NSTextField *minimumOfflinePackZoomLevelField;
-@property (weak) IBOutlet NSNumberFormatter *minimumOfflinePackZoomLevelFormatter;
-@property (weak) IBOutlet NSTextField *maximumOfflinePackZoomLevelField;
-@property (weak) IBOutlet NSNumberFormatter *maximumOfflinePackZoomLevelFormatter;
-@property (weak) IBOutlet NSButton *includesIdeographicGlyphsBox;
-
-@end
-
-@implementation MapDocument {
- /// Style URL inherited from an existing document at the time this document
- /// was created.
- NSURL *_inheritedStyleURL;
-
- NSPoint _mouseLocationForMapViewContextMenu;
- NSUInteger _droppedPinCounter;
- NSNumberFormatter *_spellOutNumberFormatter;
-
- BOOL _isLocalizingLabels;
- BOOL _showsToolTipsOnDroppedPins;
- BOOL _randomizesCursorsOnDroppedPins;
- BOOL _isTouringWorld;
- BOOL _isShowingPolygonAndPolylineAnnotations;
- BOOL _isShowingAnimatedAnnotation;
-
- MGLMapSnapshotter *_snapshotter;
-}
-
-#pragma mark Lifecycle
-
-- (NSString *)windowNibName {
- return @"MapDocument";
-}
-
-- (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-- (void)windowControllerWillLoadNib:(NSWindowController *)windowController {
- NSDocument *currentDocument = [NSDocumentController sharedDocumentController].currentDocument;
- if ([currentDocument isKindOfClass:[MapDocument class]]) {
- _inheritedStyleURL = [(MapDocument *)currentDocument mapView].styleURL;
- }
-}
-
-- (void)windowControllerDidLoadNib:(NSWindowController *)controller {
- [super windowControllerDidLoadNib:controller];
-
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(userDefaultsDidChange:)
- name:NSUserDefaultsDidChangeNotification
- object:nil];
-
- _spellOutNumberFormatter = [[NSNumberFormatter alloc] init];
-
- NSPressGestureRecognizer *pressGestureRecognizer = [[NSPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePressGesture:)];
- [self.mapView addGestureRecognizer:pressGestureRecognizer];
-
- [self.splitView setPosition:0 ofDividerAtIndex:0];
-
- [self applyPendingState];
-}
-
-- (NSWindow *)window {
- return self.windowControllers.firstObject.window;
-}
-
-- (void)userDefaultsDidChange:(NSNotification *)notification {
- NSUserDefaults *userDefaults = notification.object;
- NSString *accessToken = [userDefaults stringForKey:MGLMapboxAccessTokenDefaultsKey];
- if (![accessToken isEqualToString:[MGLAccountManager accessToken]]) {
- [MGLAccountManager setAccessToken:accessToken];
- [self reload:self];
- }
-}
-
-#pragma mark NSWindowDelegate methods
-
-- (void)window:(NSWindow *)window willEncodeRestorableState:(NSCoder *)state {
- [state encodeObject:self.mapView.styleURL forKey:@"MBXMapViewStyleURL"];
- [state encodeBool:_isLocalizingLabels forKey:@"MBXLocalizeLabels"];
-}
-
-- (void)window:(NSWindow *)window didDecodeRestorableState:(NSCoder *)state {
- self.mapView.styleURL = [state decodeObjectForKey:@"MBXMapViewStyleURL"];
- _isLocalizingLabels = [state decodeBoolForKey:@"MBXLocalizeLabels"];
-}
-
-#pragma mark Services
-
-- (IBAction)showShareMenu:(id)sender {
- NSSharingServicePicker *picker = [[NSSharingServicePicker alloc] initWithItems:@[self.shareURL]];
- picker.delegate = self;
- [picker showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge];
-}
-
-- (NSURL *)shareURL {
- NSArray *components = self.mapView.styleURL.pathComponents;
- MGLMapCamera *camera = self.mapView.camera;
- return [NSURL URLWithString:
- [NSString stringWithFormat:@"https://api.mapbox.com/styles/v1/%@/%@.html?access_token=%@#%.2f/%.5f/%.5f/%.f/%.f",
- components[1], components[2], [MGLAccountManager accessToken],
- self.mapView.zoomLevel, camera.centerCoordinate.latitude, camera.centerCoordinate.longitude,
- camera.heading, camera.pitch]];
-}
-
-#pragma mark File methods
-
-- (IBAction)import:(id)sender {
- NSOpenPanel *panel = [NSOpenPanel openPanel];
- panel.allowedFileTypes = @[@"public.json", @"json", @"geojson"];
- panel.allowsMultipleSelection = YES;
-
- __weak __typeof__(self) weakSelf = self;
- [panel beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse result) {
- if (result != NSFileHandlingPanelOKButton) {
- return;
- }
-
- for (NSURL *url in panel.URLs) {
- [weakSelf importFromURL:url];
- }
- }];
-}
-
-/**
- Adds the contents of the GeoJSON file at the given URL to the map.
-
- GeoJSON features are styled according to
- [simplestyle-spec](https://github.com/mapbox/simplestyle-spec/tree/master/1.1.0/).
- */
-- (void)importFromURL:(NSURL *)url {
- MGLStyle *style = self.mapView.style;
- if (!style) {
- return;
- }
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:[NSUUID UUID].UUIDString URL:url options:nil];
- [self.mapView.style addSource:source];
-
- NSString *pointIdentifier = [NSString stringWithFormat:@"%@ marker", source.identifier];
- MGLSymbolStyleLayer *pointLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:pointIdentifier source:source];
- pointLayer.iconImageName =
- [NSExpression expressionWithFormat:@"mgl_join({%K, '-', CAST(TERNARY(%K = 'small', 11, 15), 'NSString')})",
- @"marker-symbol", @"marker-size"];
- pointLayer.iconScale = [NSExpression expressionForConstantValue:@1];
- pointLayer.iconColor = [NSExpression expressionWithFormat:@"CAST(mgl_coalesce({%K, '#7e7e7e'}), 'NSColor')",
- @"marker-color"];
- pointLayer.iconAllowsOverlap = [NSExpression expressionForConstantValue:@YES];
- [style addLayer:pointLayer];
-
- NSString *fillIdentifier = [NSString stringWithFormat:@"%@ fill", source.identifier];
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:fillIdentifier source:source];
- fillLayer.predicate = [NSPredicate predicateWithFormat:@"fill != nil OR %K != nil", @"fill-opacity"];
- fillLayer.fillColor = [NSExpression expressionWithFormat:@"CAST(mgl_coalesce({fill, '#555555'}), 'NSColor')"];
- fillLayer.fillOpacity = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, 0.5})", @"fill-opacity"];
- [style addLayer:fillLayer];
-
- NSString *lineIdentifier = [NSString stringWithFormat:@"%@ stroke", source.identifier];
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:lineIdentifier source:source];
- lineLayer.lineColor = [NSExpression expressionWithFormat:@"CAST(mgl_coalesce({stroke, '#555555'}), 'NSColor')"];
- lineLayer.lineOpacity = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, 1.0})", @"stroke-opacity"];
- lineLayer.lineWidth = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, 2})", @"stroke-width"];
- lineLayer.lineCap = [NSExpression expressionForConstantValue:@"round"];
- lineLayer.lineJoin = [NSExpression expressionForConstantValue:@"bevel"];
- [style addLayer:lineLayer];
-}
-
-- (IBAction)takeSnapshot:(id)sender {
- MGLMapCamera *camera = self.mapView.camera;
-
- MGLMapSnapshotOptions *options = [[MGLMapSnapshotOptions alloc] initWithStyleURL:self.mapView.styleURL camera:camera size:self.mapView.bounds.size];
- options.zoomLevel = self.mapView.zoomLevel;
-
- // Create and start the snapshotter
- __weak __typeof__(self) weakSelf = self;
- _snapshotter = [[MGLMapSnapshotter alloc] initWithOptions:options];
- [_snapshotter startWithCompletionHandler:^(MGLMapSnapshot *snapshot, NSError *error) {
- __typeof__(self) strongSelf = weakSelf;
- if (!strongSelf) {
- return;
- }
-
- if (error) {
- NSLog(@"Could not load snapshot: %@", error.localizedDescription);
- } else {
- // Set the default name for the file and show the panel.
- NSSavePanel *panel = [NSSavePanel savePanel];
- panel.nameFieldStringValue = [strongSelf.mapView.styleURL.lastPathComponent.stringByDeletingPathExtension stringByAppendingPathExtension:@"png"];
- panel.allowedFileTypes = [@[(NSString *)kUTTypePNG] arrayByAddingObjectsFromArray:[NSBitmapImageRep imageUnfilteredTypes]];
-
- [panel beginSheetModalForWindow:strongSelf.window completionHandler:^(NSInteger result) {
- if (result == NSFileHandlingPanelOKButton) {
- // Write the contents in the new format.
- NSURL *fileURL = panel.URL;
-
- NSBitmapImageRep *bitmapRep;
- for (NSImageRep *imageRep in snapshot.image.representations) {
- if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) {
- bitmapRep = (NSBitmapImageRep *)imageRep;
- break; // stop on first bitmap rep we find
- }
- }
-
- if (!bitmapRep) {
- bitmapRep = [NSBitmapImageRep imageRepWithData:snapshot.image.TIFFRepresentation];
- }
-
- CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)fileURL.pathExtension, NULL /* inConformingToUTI */);
- NSBitmapImageFileType fileType = NSTIFFFileType;
- if (UTTypeConformsTo(uti, kUTTypePNG)) {
- fileType = NSPNGFileType;
- } else if (UTTypeConformsTo(uti, kUTTypeGIF)) {
- fileType = NSGIFFileType;
- } else if (UTTypeConformsTo(uti, kUTTypeJPEG2000)) {
- fileType = NSJPEG2000FileType;
- } else if (UTTypeConformsTo(uti, kUTTypeJPEG)) {
- fileType = NSJPEGFileType;
- } else if (UTTypeConformsTo(uti, kUTTypeBMP)) {
- fileType = NSBitmapImageFileTypeBMP;
- }
-
- NSData *imageData = [bitmapRep representationUsingType:fileType properties:@{}];
- [imageData writeToURL:fileURL atomically:NO];
- }
- }];
-
- }
-
- strongSelf->_snapshotter = nil;
- }];
-}
-
-#pragma mark View methods
-
-- (IBAction)showStyle:(id)sender {
- NSInteger tag = -1;
- if ([sender isKindOfClass:[NSMenuItem class]]) {
- tag = [sender tag];
- } else if ([sender isKindOfClass:[NSPopUpButton class]]) {
- tag = [sender selectedTag];
- }
- NSURL *styleURL;
- switch (tag) {
- case 1:
- styleURL = [MGLStyle streetsStyleURL];
- break;
- case 2:
- styleURL = [MGLStyle outdoorsStyleURL];
- break;
- case 3:
- styleURL = [MGLStyle lightStyleURL];
- break;
- case 4:
- styleURL = [MGLStyle darkStyleURL];
- break;
- case 5:
- styleURL = [MGLStyle satelliteStyleURL];
- break;
- case 6:
- styleURL = [MGLStyle satelliteStreetsStyleURL];
- break;
- default:
- NSAssert(NO, @"Cannot set style from control with tag %li", (long)tag);
- break;
- }
- [self.undoManager removeAllActionsWithTarget:self];
- self.mapView.styleURL = styleURL;
- [self.window.toolbar validateVisibleItems];
-}
-
-- (IBAction)chooseCustomStyle:(id)sender {
- NSAlert *alert = [[NSAlert alloc] init];
- alert.messageText = @"Apply custom style";
- alert.informativeText = @"Enter the URL to a JSON file that conforms to the Mapbox Style Specification, such as a style designed in Mapbox Studio:";
- NSTextField *textField = [[NSTextField alloc] initWithFrame:NSZeroRect];
- [textField sizeToFit];
- NSRect textFieldFrame = textField.frame;
- textFieldFrame.size.width = 300;
- textField.frame = textFieldFrame;
- NSURL *savedURL = [[NSUserDefaults standardUserDefaults] URLForKey:@"MBXCustomStyleURL"];
- if (savedURL) {
- textField.stringValue = savedURL.absoluteString;
- }
- alert.accessoryView = textField;
- [alert addButtonWithTitle:@"Apply"];
- [alert addButtonWithTitle:@"Cancel"];
- if ([alert runModal] == NSAlertFirstButtonReturn) {
- [self.undoManager removeAllActionsWithTarget:self];
- self.mapView.styleURL = [NSURL URLWithString:textField.stringValue];
- [[NSUserDefaults standardUserDefaults] setURL:self.mapView.styleURL forKey:@"MBXCustomStyleURL"];
- [self.window.toolbar validateVisibleItems];
- }
-}
-
-- (IBAction)zoomIn:(id)sender {
- [self.mapView setZoomLevel:round(self.mapView.zoomLevel) + 1 animated:YES];
-}
-
-- (IBAction)zoomOut:(id)sender {
- [self.mapView setZoomLevel:round(self.mapView.zoomLevel) - 1 animated:YES];
-}
-
-- (IBAction)snapToNorth:(id)sender {
- [self.mapView setDirection:0 animated:YES];
-}
-
-- (IBAction)reload:(id)sender {
- [self.undoManager removeAllActionsWithTarget:self];
- [self.mapView reloadStyle:sender];
-}
-
-/**
- Show or hide the Layers sidebar.
- */
-- (IBAction)toggleLayers:(id)sender {
- BOOL isShown = ![self.splitView isSubviewCollapsed:self.splitView.arrangedSubviews.firstObject];
- [NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull context) {
- context.allowsImplicitAnimation = YES;
- [self.splitView setPosition:isShown ? 0 : 100 ofDividerAtIndex:0];
- [self.window.toolbar validateVisibleItems];
- } completionHandler:nil];
-}
-
-/**
- Show or hide the selected layers.
- */
-- (IBAction)toggleStyleLayers:(id)sender {
- NSInteger clickedRow = self.styleLayersTableView.clickedRow;
- NSIndexSet *indices = self.styleLayersTableView.selectedRowIndexes;
- if (clickedRow >= 0 && ![indices containsIndex:clickedRow]) {
- indices = [NSIndexSet indexSetWithIndex:clickedRow];
- }
- [self toggleStyleLayersAtArrangedObjectIndexes:indices];
-}
-
-- (void)toggleStyleLayersAtArrangedObjectIndexes:(NSIndexSet *)indices {
- NSArray<MGLStyleLayer *> *layers = [self.mapView.style.reversedLayers objectsAtIndexes:indices];
- BOOL isVisible = layers.firstObject.visible;
- [self.undoManager registerUndoWithTarget:self handler:^(MapDocument * _Nonnull target) {
- [target toggleStyleLayersAtArrangedObjectIndexes:indices];
- }];
-
- if (!self.undoManager.undoing) {
- NSString *actionName;
- if (indices.count == 1) {
- actionName = [NSString stringWithFormat:@"%@ Layer “%@”", isVisible ? @"Hide" : @"Show", layers.firstObject.identifier];
- } else {
- actionName = [NSString stringWithFormat:@"%@ %@ Layers", isVisible ? @"Hide" : @"Show",
- [NSNumberFormatter localizedStringFromNumber:@(indices.count)
- numberStyle:NSNumberFormatterDecimalStyle]];
- }
- [self.undoManager setActionIsDiscardable:YES];
- [self.undoManager setActionName:actionName];
- }
-
- for (MGLStyleLayer *layer in layers) {
- layer.visible = !isVisible;
- }
-
- NSIndexSet *columnIndices = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];
- [self.styleLayersTableView reloadDataForRowIndexes:indices columnIndexes:columnIndices];
-}
-
-- (IBAction)deleteStyleLayers:(id)sender {
- NSInteger clickedRow = self.styleLayersTableView.clickedRow;
- NSIndexSet *indices = self.styleLayersTableView.selectedRowIndexes;
- if (clickedRow >= 0 && ![indices containsIndex:clickedRow]) {
- indices = [NSIndexSet indexSetWithIndex:clickedRow];
- }
- [self deleteStyleLayersAtArrangedObjectIndexes:indices];
-}
-
-- (void)insertStyleLayers:(NSArray<MGLStyleLayer *> *)layers atArrangedObjectIndexes:(NSIndexSet *)indices {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self deleteStyleLayersAtArrangedObjectIndexes:indices];
- }];
-
- if (!self.undoManager.undoing) {
- NSString *actionName;
- if (indices.count == 1) {
- actionName = [NSString stringWithFormat:@"Add Layer “%@”", layers.firstObject.identifier];
- } else {
- actionName = [NSString stringWithFormat:@"Add %@ Layers",
- [NSNumberFormatter localizedStringFromNumber:@(indices.count) numberStyle:NSNumberFormatterDecimalStyle]];
- }
- [self.undoManager setActionName:actionName];
- }
-
- [self.styleLayersArrayController insertObjects:layers atArrangedObjectIndexes:indices];
-}
-
-- (void)deleteStyleLayersAtArrangedObjectIndexes:(NSIndexSet *)indices {
- NSArray<MGLStyleLayer *> *layers = [self.mapView.style.reversedLayers objectsAtIndexes:indices];
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self insertStyleLayers:layers atArrangedObjectIndexes:indices];
- }];
-
- if (!self.undoManager.undoing) {
- NSString *actionName;
- if (indices.count == 1) {
- actionName = [NSString stringWithFormat:@"Delete Layer “%@”", layers.firstObject.identifier];
- } else {
- actionName = [NSString stringWithFormat:@"Delete %@ Layers",
- [NSNumberFormatter localizedStringFromNumber:@(indices.count) numberStyle:NSNumberFormatterDecimalStyle]];
- }
- [self.undoManager setActionName:actionName];
- }
-
- [self.styleLayersArrayController removeObjectsAtArrangedObjectIndexes:indices];
-}
-
-- (IBAction)setLabelLanguage:(NSMenuItem *)sender {
- _isLocalizingLabels = sender.tag;
- [self reload:sender];
-}
-
-- (void)updateLabels {
- [self.mapView.style localizeLabelsIntoLocale:_isLocalizingLabels ? nil : [NSLocale localeWithLocaleIdentifier:@"mul"]];
-}
-
-- (void)applyPendingState {
- if (_inheritedStyleURL) {
- self.mapView.styleURL = _inheritedStyleURL;
- _inheritedStyleURL = nil;
- }
-
- AppDelegate *appDelegate = (AppDelegate *)NSApp.delegate;
- if (appDelegate.pendingStyleURL) {
- self.mapView.styleURL = appDelegate.pendingStyleURL;
- }
- if (appDelegate.pendingCamera) {
- if (appDelegate.pendingZoomLevel >= 0) {
- self.mapView.zoomLevel = appDelegate.pendingZoomLevel;
- appDelegate.pendingCamera.altitude = self.mapView.camera.altitude;
- }
- self.mapView.camera = appDelegate.pendingCamera;
- appDelegate.pendingZoomLevel = -1;
- appDelegate.pendingCamera = nil;
- }
- if (!MGLCoordinateBoundsIsEmpty(appDelegate.pendingVisibleCoordinateBounds)) {
- self.mapView.visibleCoordinateBounds = appDelegate.pendingVisibleCoordinateBounds;
- appDelegate.pendingVisibleCoordinateBounds = (MGLCoordinateBounds){ { 0, 0 }, { 0, 0 } };
- }
- if (appDelegate.pendingDebugMask) {
- self.mapView.debugMask = appDelegate.pendingDebugMask;
- }
- if (appDelegate.pendingMinimumZoomLevel >= 0) {
- self.mapView.zoomLevel = MAX(appDelegate.pendingMinimumZoomLevel, self.mapView.zoomLevel);
- appDelegate.pendingMaximumZoomLevel = -1;
- }
- if (appDelegate.pendingMaximumZoomLevel >= 0) {
- self.mapView.zoomLevel = MIN(appDelegate.pendingMaximumZoomLevel, self.mapView.zoomLevel);
- appDelegate.pendingMaximumZoomLevel = -1;
- }
-
- // Temporarily set the display name to the default center coordinate instead
- // of “Untitled” until the binding kicks in.
- NSValue *coordinateValue = [NSValue valueWithMGLCoordinate:self.mapView.centerCoordinate];
- NSString *coordinateString = [[NSValueTransformer valueTransformerForName:@"LocationCoordinate2DTransformer"]
- transformedValue:coordinateValue];
-
-
- self.displayName = [NSString stringWithFormat:@"%@ @ %f", coordinateString, _mapView.zoomLevel];
-}
-
-#pragma mark Debug methods
-
-- (IBAction)toggleTileBoundaries:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugTileBoundariesMask;
-}
-
-- (IBAction)toggleTileInfo:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugTileInfoMask;
-}
-
-- (IBAction)toggleTileTimestamps:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugTimestampsMask;
-}
-
-- (IBAction)toggleCollisionBoxes:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugCollisionBoxesMask;
-}
-
-- (IBAction)toggleOverdrawVisualization:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugOverdrawVisualizationMask;
-}
-
-- (IBAction)showColorBuffer:(id)sender {
- self.mapView.debugMask &= ~MGLMapDebugStencilBufferMask;
- self.mapView.debugMask &= ~MGLMapDebugDepthBufferMask;
-}
-
-- (IBAction)showStencilBuffer:(id)sender {
- self.mapView.debugMask &= ~MGLMapDebugDepthBufferMask;
- self.mapView.debugMask |= MGLMapDebugStencilBufferMask;
-}
-
-- (IBAction)showDepthBuffer:(id)sender {
- self.mapView.debugMask &= ~MGLMapDebugStencilBufferMask;
- self.mapView.debugMask |= MGLMapDebugDepthBufferMask;
-}
-
-- (IBAction)toggleShowsToolTipsOnDroppedPins:(id)sender {
- _showsToolTipsOnDroppedPins = !_showsToolTipsOnDroppedPins;
-}
-
-- (IBAction)toggleRandomizesCursorsOnDroppedPins:(id)sender {
- _randomizesCursorsOnDroppedPins = !_randomizesCursorsOnDroppedPins;
-}
-
-- (IBAction)dropManyPins:(id)sender {
- [self removeAllAnnotations:sender];
-
- NSRect bounds = self.mapView.bounds;
- NSMutableArray *annotations = [NSMutableArray array];
- for (CGFloat x = NSMinX(bounds); x < NSMaxX(bounds); x += arc4random_uniform(50)) {
- for (CGFloat y = NSMaxY(bounds); y >= NSMinY(bounds); y -= arc4random_uniform(100)) {
- [annotations addObject:[self pinAtPoint:NSMakePoint(x, y)]];
- }
- }
-
- [NSTimer scheduledTimerWithTimeInterval:1.0/60.0
- target:self
- selector:@selector(dropOneOfManyPins:)
- userInfo:annotations
- repeats:YES];
-}
-
-- (void)dropOneOfManyPins:(NSTimer *)timer {
- NSMutableArray *annotations = timer.userInfo;
- NSUInteger numberOfAnnotationsToAdd = 50;
- if (annotations.count < numberOfAnnotationsToAdd) {
- numberOfAnnotationsToAdd = annotations.count;
- }
- NSArray *annotationsToAdd = [annotations subarrayWithRange:
- NSMakeRange(0, numberOfAnnotationsToAdd)];
- [self.mapView addAnnotations:annotationsToAdd];
- [annotations removeObjectsInRange:NSMakeRange(0, numberOfAnnotationsToAdd)];
- if (!annotations.count) {
- [timer invalidate];
- }
-}
-
-- (IBAction)showAllAnnotations:(id)sender {
- [self.mapView showAnnotations:self.mapView.annotations animated:YES];
-}
-
-- (IBAction)removeAllAnnotations:(id)sender {
- [self.mapView removeAnnotations:self.mapView.annotations];
- _isShowingPolygonAndPolylineAnnotations = NO;
- _isShowingAnimatedAnnotation = NO;
-}
-
-- (IBAction)startWorldTour:(id)sender {
- _isTouringWorld = YES;
-
- [self removeAllAnnotations:sender];
- NSUInteger numberOfAnnotations = sizeof(WorldTourDestinations) / sizeof(WorldTourDestinations[0]);
- NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:numberOfAnnotations];
- for (NSUInteger i = 0; i < numberOfAnnotations; i++) {
- MGLPointAnnotation *annotation = [[MGLPointAnnotation alloc] init];
- annotation.coordinate = WorldTourDestinations[i];
- [annotations addObject:annotation];
- }
- [self.mapView addAnnotations:annotations];
- [self continueWorldTourWithRemainingAnnotations:annotations];
-}
-
-- (void)continueWorldTourWithRemainingAnnotations:(NSMutableArray<MGLPointAnnotation *> *)annotations {
- MGLPointAnnotation *nextAnnotation = annotations.firstObject;
- if (!nextAnnotation || !_isTouringWorld) {
- _isTouringWorld = NO;
- return;
- }
-
- [annotations removeObjectAtIndex:0];
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:nextAnnotation.coordinate
- acrossDistance:0
- pitch:arc4random_uniform(60)
- heading:arc4random_uniform(360)];
- __weak MapDocument *weakSelf = self;
- [self.mapView flyToCamera:camera completionHandler:^{
- MapDocument *strongSelf = weakSelf;
- [strongSelf performSelector:@selector(continueWorldTourWithRemainingAnnotations:)
- withObject:annotations
- afterDelay:2];
- }];
-}
-
-- (IBAction)stopWorldTour:(id)sender {
- _isTouringWorld = NO;
- // Any programmatic viewpoint change cancels outstanding animations.
- self.mapView.camera = self.mapView.camera;
-}
-
-- (IBAction)drawPolygonAndPolyLineAnnotations:(id)sender {
-
- if (_isShowingPolygonAndPolylineAnnotations) {
- [self removeAllAnnotations:sender];
- return;
- }
-
- _isShowingPolygonAndPolylineAnnotations = YES;
-
- // Pacific Northwest triangle
- CLLocationCoordinate2D triangleCoordinates[3] = {
- CLLocationCoordinate2DMake(44, -122),
- CLLocationCoordinate2DMake(46, -122),
- CLLocationCoordinate2DMake(46, -121)
- };
- MGLPolygon *triangle = [MGLPolygon polygonWithCoordinates:triangleCoordinates count:3];
- [self.mapView addAnnotation:triangle];
-
- // West coast line
- CLLocationCoordinate2D lineCoordinates[4] = {
- CLLocationCoordinate2DMake(47.6025, -122.3327),
- CLLocationCoordinate2DMake(45.5189, -122.6726),
- CLLocationCoordinate2DMake(37.7790, -122.4177),
- CLLocationCoordinate2DMake(34.0532, -118.2349)
- };
- MGLPolyline *line = [MGLPolyline polylineWithCoordinates:lineCoordinates count:4];
- [self.mapView addAnnotation:line];
-}
-
-- (IBAction)drawAnimatedAnnotation:(id)sender {
- DroppedPinAnnotation *annotation = [[DroppedPinAnnotation alloc] init];
- [self.mapView addAnnotation:annotation];
-
- _isShowingAnimatedAnnotation = YES;
-
- [NSTimer scheduledTimerWithTimeInterval:1.0/60.0
- target:self
- selector:@selector(updateAnimatedAnnotation:)
- userInfo:annotation
- repeats:YES];
-}
-
-
-- (id<MGLAnnotation>)randomOffscreenPointAnnotation {
-
- NSPredicate *pointAnnotationPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
- return [evaluatedObject isKindOfClass:[MGLPointAnnotation class]];
- }];
-
- NSArray *annotations = [self.mapView.annotations filteredArrayUsingPredicate:pointAnnotationPredicate];
-
- if (annotations.count == 0) {
- return nil;
- }
-
- // NOTE: self.mapView.visibleAnnotations occasionally returns nil - see
- // https://github.com/mapbox/mapbox-gl-native/issues/11296
- NSArray *visibleAnnotations = [self.mapView.visibleAnnotations filteredArrayUsingPredicate:pointAnnotationPredicate];
-
- NSLog(@"Number of visible point annotations = %ld", visibleAnnotations.count);
-
- if (visibleAnnotations.count == annotations.count) {
- return nil;
- }
-
- NSMutableArray *invisibleAnnotations = [annotations mutableCopy];
-
- if (visibleAnnotations.count > 0) {
- [invisibleAnnotations removeObjectsInArray:visibleAnnotations];
- }
-
- // Now pick a random offscreen annotation.
- uint32_t index = arc4random_uniform((uint32_t)invisibleAnnotations.count);
- return invisibleAnnotations[index];
-}
-
-- (IBAction)selectOffscreenPointAnnotation:(id)sender {
- id<MGLAnnotation> annotation = [self randomOffscreenPointAnnotation];
- if (annotation) {
- [self.mapView selectAnnotation:annotation];
-
- // Alternative method to select the annotation. These two should do the same thing.
- // self.mapView.selectedAnnotations = @[annotation];
- NSAssert(self.mapView.selectedAnnotations.firstObject, @"The annotation was not selected");
- }
-}
-
-- (void)updateAnimatedAnnotation:(NSTimer *)timer {
- DroppedPinAnnotation *annotation = timer.userInfo;
- double angle = timer.fireDate.timeIntervalSinceReferenceDate;
- annotation.coordinate = CLLocationCoordinate2DMake(
- sin(angle) * 20,
- cos(angle) * 20);
-}
-
-- (IBAction) addAnimatedImageSource:(id)sender {
-
- MGLImage *image = [[NSBundle bundleForClass:[self class]] imageForResource:@"southeast_0"];
-
- MGLCoordinateBounds bounds = { {22.551103322318994, -90.24006072802854}, {36.928147474567794, -75.1441643681673} };
- MGLImageSource *imageSource = [[MGLImageSource alloc] initWithIdentifier:@"animated-radar-source" coordinateQuad:MGLCoordinateQuadFromCoordinateBounds(bounds) image:image];
- [self.mapView.style addSource:imageSource];
-
- MGLRasterStyleLayer * imageLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"animated-radar-layer" source:imageSource];
- [self.mapView.style addLayer:imageLayer];
-
- [NSTimer scheduledTimerWithTimeInterval:1.0
- target:self
- selector:@selector(updateAnimatedImageSource:)
- userInfo:imageSource
- repeats:YES];
-}
-
-
-- (void)updateAnimatedImageSource:(NSTimer *)timer {
- static int radarSuffix = 0;
- MGLImageSource *imageSource = (MGLImageSource *)timer.userInfo;
-
- MGLImage *image = [[NSBundle bundleForClass:[self class]] imageForResource:[NSString stringWithFormat:@"southeast_%d", radarSuffix++]];
- [imageSource setValue:image forKey:@"image"];
-
- if(radarSuffix > 3) {
- radarSuffix = 0 ;
- }
-}
-
-- (IBAction)insertCustomStyleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self removeCustomStyleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Add Lime Green Layer"];
- }
-
- LimeGreenStyleLayer *layer = [[LimeGreenStyleLayer alloc] initWithIdentifier:@"mbx-custom"];
- MGLStyleLayer *houseNumberLayer = [self.mapView.style layerWithIdentifier:@"housenum-label"];
- if (houseNumberLayer) {
- [self.mapView.style insertLayer:layer belowLayer:houseNumberLayer];
- } else {
- [self.mapView.style addLayer:layer];
- }
-}
-
-- (IBAction)removeCustomStyleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self insertCustomStyleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Delete Lime Green Layer"];
- }
-
- MGLStyleLayer *layer = [self.mapView.style layerWithIdentifier:@"mbx-custom"];
- [self.mapView.style removeLayer:layer];
-}
-
-- (IBAction)insertGraticuleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self removeGraticuleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Add Graticule"];
- }
-
- NSDictionary *sourceOptions = @{
- MGLShapeSourceOptionMaximumZoomLevel:@14,
- MGLShapeSourceOptionWrapsCoordinates: @YES,
- MGLShapeSourceOptionClipsCoordinates: @YES,
- };
- MGLComputedShapeSource *source = [[MGLComputedShapeSource alloc] initWithIdentifier:@"graticule"
- options:sourceOptions];
-
- source.dataSource = self;
- [self.mapView.style addSource:source];
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"graticule.lines"
- source:source];
- [self.mapView.style addLayer:lineLayer];
- MGLSymbolStyleLayer *labelLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"graticule.labels"
- source:source];
- labelLayer.text = [NSExpression expressionWithFormat:@"value"];
- [self.mapView.style addLayer:labelLayer];
-}
-
-- (IBAction)removeGraticuleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self insertGraticuleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Delete Graticule"];
- }
-
- MGLStyleLayer *layer = [self.mapView.style layerWithIdentifier:@"graticule.lines"];
- [self.mapView.style removeLayer:layer];
-
- layer = [self.mapView.style layerWithIdentifier:@"graticule.labels"];
- [self.mapView.style removeLayer:layer];
-
- MGLSource *source = [self.mapView.style sourceWithIdentifier:@"graticule"];
- [self.mapView.style removeSource:source];
-}
-
-- (IBAction)enhanceTerrain:(id)sender {
- // Find all the identifiers of Mapbox Terrain sources used in the style.
- NSMutableSet *terrainSourceIdentifiers = [NSMutableSet set];
- for (MGLVectorTileSource *source in self.mapView.style.sources) {
- if (![source isKindOfClass:[MGLVectorTileSource class]]) {
- continue;
- }
-
- if (source.mapboxTerrain) {
- [terrainSourceIdentifiers addObject:source.identifier];
- }
- }
-
- // Find and remove all the style layers using those sources.
- NSUInteger hillshadeIndex = NSNotFound;
- NSEnumerator *layerEnumerator = self.mapView.style.layers.objectEnumerator;
- MGLVectorStyleLayer *layer;
- for (NSUInteger i = 0; (layer = layerEnumerator.nextObject); i++) {
- if (![layer isKindOfClass:[MGLVectorStyleLayer class]]) {
- continue;
- }
-
- if ([terrainSourceIdentifiers containsObject:layer.sourceIdentifier]
- && [layer.sourceLayerIdentifier isEqualToString:@"hillshade"]) {
- hillshadeIndex = i;
- [self.mapView.style removeLayer:layer];
- }
- }
-
- if (hillshadeIndex == NSNotFound) {
- return;
- }
-
- // Add a Mapbox Terrain-RGB source.
- NSURL *terrainRGBURL = [NSURL URLWithString:@"mapbox://mapbox.terrain-rgb"];
- MGLRasterDEMSource *terrainRGBSource = [[MGLRasterDEMSource alloc] initWithIdentifier:@"terrain" configurationURL:terrainRGBURL];
- [self.mapView.style addSource:terrainRGBSource];
-
- // Insert a hillshade layer where the Mapbox Terrain–based layers were.
- MGLHillshadeStyleLayer *hillshadeLayer = [[MGLHillshadeStyleLayer alloc] initWithIdentifier:@"hillshade" source:terrainRGBSource];
- [self.mapView.style insertLayer:hillshadeLayer atIndex:hillshadeIndex];
-}
-
-#pragma mark Offline packs
-
-- (IBAction)addOfflinePack:(id)sender {
- self.offlinePackNameField.stringValue = @"";
- self.offlinePackNameField.placeholderString = MGLStringFromCoordinateBounds(self.mapView.visibleCoordinateBounds);
- self.minimumOfflinePackZoomLevelField.doubleValue = floor(self.mapView.zoomLevel);
- self.maximumOfflinePackZoomLevelField.doubleValue = ceil(self.mapView.maximumZoomLevel);
- self.minimumOfflinePackZoomLevelFormatter.minimum = @(floor(self.mapView.minimumZoomLevel));
- self.maximumOfflinePackZoomLevelFormatter.minimum = @(floor(self.mapView.minimumZoomLevel));
- self.minimumOfflinePackZoomLevelFormatter.maximum = @(ceil(self.mapView.maximumZoomLevel));
- self.maximumOfflinePackZoomLevelFormatter.maximum = @(ceil(self.mapView.maximumZoomLevel));
-
- id ideographicFontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"];
- self.includesIdeographicGlyphsBox.state = ([ideographicFontFamilyName isKindOfClass:[NSNumber class]] && ![ideographicFontFamilyName boolValue]) ? NSOffState : NSOnState;
- [self.addOfflinePackWindow makeFirstResponder:self.offlinePackNameField];
-
- __weak __typeof__(self) weakSelf = self;
- [self.window beginSheet:self.addOfflinePackWindow completionHandler:^(NSModalResponse returnCode) {
- __typeof__(self) strongSelf = weakSelf;
- if (!strongSelf || returnCode != NSModalResponseOK) {
- return;
- }
-
- id <MGLOfflineRegion> region =
- [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:strongSelf.mapView.styleURL
- bounds:strongSelf.mapView.visibleCoordinateBounds
- fromZoomLevel:strongSelf.minimumOfflinePackZoomLevelField.integerValue
- toZoomLevel:strongSelf.maximumOfflinePackZoomLevelField.integerValue];
- region.includesIdeographicGlyphs = strongSelf.includesIdeographicGlyphsBox.state == NSOnState;
- NSString *name = strongSelf.offlinePackNameField.stringValue;
- if (!name.length) {
- name = strongSelf.offlinePackNameField.placeholderString;
- }
- NSData *context = [[NSValueTransformer valueTransformerForName:@"OfflinePackNameValueTransformer"] reverseTransformedValue:name];
- [[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:region withContext:context completionHandler:^(MGLOfflinePack * _Nullable pack, NSError * _Nullable error) {
- if (error) {
- [[NSAlert alertWithError:error] runModal];
- } else {
- [(AppDelegate *)NSApp.delegate watchOfflinePack:pack];
- [pack resume];
- }
- }];
- }];
-}
-
-- (IBAction)confirmAddingOfflinePack:(id)sender {
- [self.window endSheet:self.addOfflinePackWindow returnCode:[sender tag] ? NSModalResponseOK : NSModalResponseCancel];
-}
-
-#pragma mark Mouse events
-
-- (void)handlePressGesture:(NSPressGestureRecognizer *)gestureRecognizer {
- if (gestureRecognizer.state == NSGestureRecognizerStateBegan) {
- NSPoint location = [gestureRecognizer locationInView:self.mapView];
- if (!NSPointInRect([gestureRecognizer locationInView:self.mapView.compass], self.mapView.compass.bounds)
- && !NSPointInRect([gestureRecognizer locationInView:self.mapView.zoomControls], self.mapView.zoomControls.bounds)
- && !NSPointInRect([gestureRecognizer locationInView:self.mapView.attributionView], self.mapView.attributionView.bounds)) {
- [self dropPinAtPoint:location];
- }
- }
-}
-
-- (IBAction)manipulateStyle:(id)sender {
- MGLTransition transition = { .duration = 5, .delay = 1 };
- self.mapView.style.transition = transition;
-
- MGLStyleLayer *waterLayer = [self.mapView.style layerWithIdentifier:@"water"];
- NSExpression *colorExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{
- @0.0: [NSColor redColor],
- @10.0: [NSColor yellowColor],
- @20.0: [NSColor blackColor],
- }];
-
- if ([waterLayer respondsToSelector:@selector(fillColor)]) {
- [waterLayer setValue:colorExpression forKey:@"fillColor"];
- } else if ([waterLayer respondsToSelector:@selector(lineColor)]) {
- [waterLayer setValue:colorExpression forKey:@"lineColor"];
- }
-
- NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"amsterdam" ofType:@"geojson"];
- NSURL *geoJSONURL = [NSURL fileURLWithPath:filePath];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"ams" URL:geoJSONURL options:nil];
- [self.mapView.style addSource:source];
-
- MGLCircleStyleLayer *circleLayer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"test" source:source];
- circleLayer.circleColor = [NSExpression expressionForConstantValue:[NSColor greenColor]];
- circleLayer.circleRadius = [NSExpression expressionForConstantValue:@40];
-// fillLayer.predicate = [NSPredicate predicateWithFormat:@"%K == %@", @"type", @"park"];
- [self.mapView.style addLayer:circleLayer];
-
- MGLSource *streetsSource = [self.mapView.style sourceWithIdentifier:@"composite"];
- if (streetsSource) {
- NSImage *image = [NSImage imageNamed:NSImageNameIChatTheaterTemplate];
- [self.mapView.style setImage:image forName:NSImageNameIChatTheaterTemplate];
-
- MGLSymbolStyleLayer *theaterLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"theaters" source:streetsSource];
- theaterLayer.sourceLayerIdentifier = @"poi_label";
- theaterLayer.predicate = [NSPredicate predicateWithFormat:@"maki == 'theatre'"];
- theaterLayer.iconImageName = [NSExpression expressionForConstantValue:NSImageNameIChatTheaterTemplate];
- theaterLayer.iconScale = [NSExpression expressionForConstantValue:@2];
- theaterLayer.iconColor = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{
- @16.0: [NSColor redColor],
- @18.0: [NSColor yellowColor],
- @20.0: [NSColor blackColor],
- }];
- [self.mapView.style addLayer:theaterLayer];
- }
-
- NSURL *imageURL = [NSURL URLWithString:@"https://www.mapbox.com/mapbox-gl-js/assets/radar.gif"];
- MGLCoordinateQuad quad = { {46.437, -80.425},
- {37.936, -80.425},
- {37.936, -71.516},
- {46.437, -71.516} };
- MGLImageSource *imageSource = [[MGLImageSource alloc] initWithIdentifier:@"radar-source" coordinateQuad:quad URL:imageURL];
- [self.mapView.style addSource:imageSource];
-
- MGLRasterStyleLayer * imageLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"radar-layer" source:imageSource];
- [self.mapView.style addLayer:imageLayer];
-}
-
-- (IBAction)dropPin:(NSMenuItem *)sender {
- [self dropPinAtPoint:_mouseLocationForMapViewContextMenu];
-}
-
-- (void)dropPinAtPoint:(NSPoint)point {
- DroppedPinAnnotation *annotation = [self pinAtPoint:point];
- [self.mapView addAnnotation:annotation];
- [self.mapView selectAnnotation:annotation];
-}
-
-- (DroppedPinAnnotation *)pinAtPoint:(NSPoint)point {
- NSArray *features = [self.mapView visibleFeaturesAtPoint:point];
- NSString *title;
- NSString *description;
- for (id <MGLFeature> feature in features) {
- if (!title) {
- title = [feature attributeForKey:@"title"] ?: [feature attributeForKey:@"name_en"] ?: [feature attributeForKey:@"name"];
-
- // simplestyle-spec defines a “description” attribute in HTML format.
- NSString *featureDescription = [feature attributeForKey:@"description"];
- if (featureDescription) {
- // Convert HTML to plain text, because the default popover is
- // bound to an NSString-typed property.
- NSData *data = [featureDescription dataUsingEncoding:NSUTF8StringEncoding];
- description = [[NSAttributedString alloc] initWithHTML:data options:@{} documentAttributes:nil].string;
- }
-
- if (title) {
- break;
- }
- }
- }
-
- DroppedPinAnnotation *annotation = [[DroppedPinAnnotation alloc] init];
- annotation.coordinate = [self.mapView convertPoint:point toCoordinateFromView:self.mapView];
- annotation.title = title ?: @"Dropped Pin";
- annotation.note = description;
- _spellOutNumberFormatter.numberStyle = NSNumberFormatterSpellOutStyle;
- if (_showsToolTipsOnDroppedPins) {
- NSString *formattedNumber = [_spellOutNumberFormatter stringFromNumber:@(++_droppedPinCounter)];
- annotation.toolTip = formattedNumber;
- }
- return annotation;
-}
-
-- (IBAction)removePin:(NSMenuItem *)sender {
- [self removePinAtPoint:_mouseLocationForMapViewContextMenu];
-}
-
-- (void)removePinAtPoint:(NSPoint)point {
- [self.mapView removeAnnotation:[self.mapView annotationAtPoint:point]];
-}
-
-- (IBAction)selectFeatures:(id)sender {
- [self selectFeaturesAtPoint:_mouseLocationForMapViewContextMenu];
-}
-
-- (void)selectFeaturesAtPoint:(NSPoint)point {
- NSArray *features = [self.mapView visibleFeaturesAtPoint:point];
- NSArray *flattenedFeatures = MBXFlattenedShapes(features);
- [self.mapView addAnnotations:flattenedFeatures];
-}
-
-#pragma mark User interface validation
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
- if (menuItem.action == @selector(showStyle:)) {
- NSURL *styleURL = self.mapView.styleURL;
- NSCellStateValue state;
- switch (menuItem.tag) {
- case 1:
- state = [styleURL isEqual:[MGLStyle streetsStyleURL]];
- break;
- case 2:
- state = [styleURL isEqual:[MGLStyle outdoorsStyleURL]];
- break;
- case 3:
- state = [styleURL isEqual:[MGLStyle lightStyleURL]];
- break;
- case 4:
- state = [styleURL isEqual:[MGLStyle darkStyleURL]];
- break;
- case 5:
- state = [styleURL isEqual:[MGLStyle satelliteStyleURL]];
- break;
- case 6:
- state = [styleURL isEqual:[MGLStyle satelliteStreetsStyleURL]];
- break;
- default:
- return NO;
- }
- menuItem.state = state;
- return YES;
- }
- if (menuItem.action == @selector(chooseCustomStyle:)) {
- menuItem.state = self.indexOfStyleInToolbarItem == NSNotFound;
- return YES;
- }
- if (menuItem.action == @selector(zoomIn:)) {
- return self.mapView.zoomLevel < self.mapView.maximumZoomLevel;
- }
- if (menuItem.action == @selector(zoomOut:)) {
- return self.mapView.zoomLevel > self.mapView.minimumZoomLevel;
- }
- if (menuItem.action == @selector(snapToNorth:)) {
- return self.mapView.direction != 0;
- }
- if (menuItem.action == @selector(reload:)) {
- return YES;
- }
- if (menuItem.action == @selector(toggleLayers:)) {
- BOOL isShown = ![self.splitView isSubviewCollapsed:self.splitView.arrangedSubviews.firstObject];
- menuItem.title = isShown ? @"Hide Layers" : @"Show Layers";
- return YES;
- }
- if (menuItem.action == @selector(toggleStyleLayers:)) {
- NSInteger row = self.styleLayersTableView.clickedRow;
- if (row == -1) {
- row = self.styleLayersTableView.selectedRow;
- }
- if (row == -1) {
- menuItem.title = @"Show";
- } else {
- BOOL isVisible = self.mapView.style.reversedLayers[row].visible;
- menuItem.title = isVisible ? @"Hide" : @"Show";
- }
- return row != -1;
- }
- if (menuItem.action == @selector(deleteStyleLayers:)) {
- return self.styleLayersTableView.clickedRow >= 0 || self.styleLayersTableView.selectedRow >= 0;
- }
- if (menuItem.action == @selector(setLabelLanguage:)) {
- menuItem.state = menuItem.tag == _isLocalizingLabels ? NSOnState: NSOffState;
- if (menuItem.tag) {
- NSLocale *locale = [NSLocale localeWithLocaleIdentifier:[NSBundle mainBundle].developmentLocalization];
- NSString *preferredLanguage = [MGLVectorTileSource preferredMapboxStreetsLanguage] ?: @"en";
- menuItem.title = [locale displayNameForKey:NSLocaleIdentifier value:preferredLanguage];
- }
- return YES;
- }
- if (menuItem.action == @selector(manipulateStyle:)) {
- return YES;
- }
- if (menuItem.action == @selector(dropPin:)) {
- id <MGLAnnotation> annotationUnderCursor = [self.mapView annotationAtPoint:_mouseLocationForMapViewContextMenu];
- menuItem.hidden = annotationUnderCursor != nil;
- return YES;
- }
- if (menuItem.action == @selector(removePin:)) {
- id <MGLAnnotation> annotationUnderCursor = [self.mapView annotationAtPoint:_mouseLocationForMapViewContextMenu];
- menuItem.hidden = annotationUnderCursor == nil;
- return YES;
- }
- if (menuItem.action == @selector(selectFeatures:)) {
- return YES;
- }
- if (menuItem.action == @selector(toggleTileBoundaries:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugTileBoundariesMask;
- menuItem.title = isShown ? @"Hide Tile Boundaries" : @"Show Tile Boundaries";
- return YES;
- }
- if (menuItem.action == @selector(toggleTileInfo:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugTileInfoMask;
- menuItem.title = isShown ? @"Hide Tile Info" : @"Show Tile Info";
- return YES;
- }
- if (menuItem.action == @selector(toggleTileTimestamps:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugTimestampsMask;
- menuItem.title = isShown ? @"Hide Tile Timestamps" : @"Show Tile Timestamps";
- return YES;
- }
- if (menuItem.action == @selector(toggleCollisionBoxes:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugCollisionBoxesMask;
- menuItem.title = isShown ? @"Hide Collision Boxes" : @"Show Collision Boxes";
- return YES;
- }
- if (menuItem.action == @selector(toggleOverdrawVisualization:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugOverdrawVisualizationMask;
- menuItem.title = isShown ? @"Hide Overdraw Visualization" : @"Show Overdraw Visualization";
- return YES;
- }
- if (menuItem.action == @selector(showColorBuffer:)) {
- BOOL enabled = self.mapView.debugMask & (MGLMapDebugStencilBufferMask | MGLMapDebugDepthBufferMask);
- menuItem.state = enabled ? NSOffState : NSOnState;
- return YES;
- }
- if (menuItem.action == @selector(showStencilBuffer:)) {
- BOOL enabled = self.mapView.debugMask & MGLMapDebugStencilBufferMask;
- menuItem.state = enabled ? NSOnState : NSOffState;
- return YES;
- }
- if (menuItem.action == @selector(showDepthBuffer:)) {
- BOOL enabled = self.mapView.debugMask & MGLMapDebugDepthBufferMask;
- menuItem.state = enabled ? NSOnState : NSOffState;
- return YES;
- }
- if (menuItem.action == @selector(toggleShowsToolTipsOnDroppedPins:)) {
- BOOL isShown = _showsToolTipsOnDroppedPins;
- menuItem.title = isShown ? @"Hide Tooltips on Dropped Pins" : @"Show Tooltips on Dropped Pins";
- return YES;
- }
- if (menuItem.action == @selector(toggleRandomizesCursorsOnDroppedPins:)) {
- BOOL isRandom = _randomizesCursorsOnDroppedPins;
- menuItem.title = isRandom ? @"Use Default Cursor for Dropped Pins" : @"Use Random Cursors for Dropped Pins";
- return _showsToolTipsOnDroppedPins;
- }
- if (menuItem.action == @selector(dropManyPins:)) {
- return YES;
- }
- if (menuItem.action == @selector(drawPolygonAndPolyLineAnnotations:)) {
- return !_isShowingPolygonAndPolylineAnnotations;
- }
- if (menuItem.action == @selector(drawAnimatedAnnotation:)) {
- return !_isShowingAnimatedAnnotation;
- }
- if (menuItem.action == @selector(addAnimatedImageSource:)) {
- return YES;
- }
- if (menuItem.action == @selector(insertCustomStyleLayer:)) {
- return ![self.mapView.style layerWithIdentifier:@"mbx-custom"];
- }
- if (menuItem.action == @selector(insertGraticuleLayer:)) {
- return ![self.mapView.style sourceWithIdentifier:@"graticule"];
- }
- if (menuItem.action == @selector(selectOffscreenPointAnnotation:)) {
- return YES;
- }
- if (menuItem.action == @selector(showAllAnnotations:) || menuItem.action == @selector(removeAllAnnotations:)) {
- return self.mapView.annotations.count > 0;
- }
- if (menuItem.action == @selector(enhanceTerrain:)) {
- return YES;
- }
- if (menuItem.action == @selector(startWorldTour:)) {
- return !_isTouringWorld;
- }
- if (menuItem.action == @selector(stopWorldTour:)) {
- return _isTouringWorld;
- }
- if (menuItem.action == @selector(addOfflinePack:)) {
- NSURL *styleURL = self.mapView.styleURL;
- return !styleURL.isFileURL;
- }
- if (menuItem.action == @selector(giveFeedback:)) {
- return YES;
- }
- if (menuItem.action == @selector(import:)) {
- return YES;
- }
- if (menuItem.action == @selector(takeSnapshot:)) {
- return !(_snapshotter && [_snapshotter isLoading]);
- }
- return NO;
-}
-
-- (NSUInteger)indexOfStyleInToolbarItem {
- if (![MGLAccountManager accessToken]) {
- return NSNotFound;
- }
-
- NSArray *styleURLs = @[
- [MGLStyle streetsStyleURL],
- [MGLStyle outdoorsStyleURL],
- [MGLStyle lightStyleURL],
- [MGLStyle darkStyleURL],
- [MGLStyle satelliteStyleURL],
- [MGLStyle satelliteStreetsStyleURL],
- ];
- return [styleURLs indexOfObject:self.mapView.styleURL];
-}
-
-- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem {
- if (!self.mapView) {
- return NO;
- }
-
- SEL action = toolbarItem.action;
- if (action == @selector(showShareMenu:)) {
- [(NSButton *)toolbarItem.view sendActionOn:NSLeftMouseDownMask];
- if (![MGLAccountManager accessToken]) {
- return NO;
- }
- NSURL *styleURL = self.mapView.styleURL;
- return ([styleURL.scheme isEqualToString:@"mapbox"]
- && [styleURL.pathComponents.firstObject isEqualToString:@"styles"]);
- }
- if (action == @selector(showStyle:)) {
- NSPopUpButton *popUpButton = (NSPopUpButton *)toolbarItem.view;
- NSInteger index = self.indexOfStyleInToolbarItem;
- if (index == NSNotFound) {
- index = -1;
- }
- [popUpButton selectItemAtIndex:index];
- if (index == -1) {
- NSString *name = self.mapView.style.name;
- popUpButton.title = name ?: @"Custom";
- }
- }
- if (action == @selector(toggleLayers:)) {
- BOOL isShown = ![self.splitView isSubviewCollapsed:self.splitView.arrangedSubviews.firstObject];
- [(NSButton *)toolbarItem.view setState:isShown ? NSOnState : NSOffState];
- }
- return NO;
-}
-
-#pragma mark NSSharingServicePickerDelegate methods
-
-- (NSArray<NSSharingService *> *)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker sharingServicesForItems:(NSArray *)items proposedSharingServices:(NSArray<NSSharingService *> *)proposedServices {
- NSURL *shareURL = self.shareURL;
- NSURL *browserURL = [[NSWorkspace sharedWorkspace] URLForApplicationToOpenURL:shareURL];
- NSImage *browserIcon = [[NSWorkspace sharedWorkspace] iconForFile:browserURL.path];
- NSString *browserName = [[NSFileManager defaultManager] displayNameAtPath:browserURL.path];
- NSString *browserServiceName = [NSString stringWithFormat:@"Open in %@", browserName];
-
- NSSharingService *browserService = [[NSSharingService alloc] initWithTitle:browserServiceName
- image:browserIcon
- alternateImage:nil
- handler:^{
- [[NSWorkspace sharedWorkspace] openURL:self.shareURL];
- }];
-
- NSMutableArray *sharingServices = [proposedServices mutableCopy];
- [sharingServices insertObject:browserService atIndex:0];
- return sharingServices;
-}
-
-#pragma mark NSMenuDelegate methods
-
-- (void)menuWillOpen:(NSMenu *)menu {
- if (menu == self.mapViewContextMenu) {
- _mouseLocationForMapViewContextMenu = [self.window.contentView convertPoint:self.window.mouseLocationOutsideOfEventStream
- toView:self.mapView];
- }
-}
-
-#pragma mark NSSplitViewDelegate methods
-
-- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview {
- return subview != self.mapView;
-}
-
-- (BOOL)splitView:(NSSplitView *)splitView shouldCollapseSubview:(NSView *)subview forDoubleClickOnDividerAtIndex:(NSInteger)dividerIndex {
- return YES;
-}
-
-#pragma mark MGLMapViewDelegate methods
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style {
- [self updateLabels];
-}
-
-- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation {
- return YES;
-}
-
-- (MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation {
- MGLAnnotationImage *annotationImage = [self.mapView dequeueReusableAnnotationImageWithIdentifier:MGLDroppedPinAnnotationImageIdentifier];
- if (!annotationImage) {
- NSString *imagePath = [[NSBundle bundleForClass:[MGLMapView class]]
- pathForResource:@"default_marker" ofType:@"pdf"];
- NSImage *image = [[NSImage alloc] initWithContentsOfFile:imagePath];
- NSRect alignmentRect = image.alignmentRect;
- alignmentRect.origin.y = NSMidY(alignmentRect);
- alignmentRect.size.height /= 2;
- image.alignmentRect = alignmentRect;
- annotationImage = [MGLAnnotationImage annotationImageWithImage:image
- reuseIdentifier:MGLDroppedPinAnnotationImageIdentifier];
- }
- if (_randomizesCursorsOnDroppedPins) {
- NSArray *cursors = @[
- [NSCursor IBeamCursor],
- [NSCursor crosshairCursor],
- [NSCursor pointingHandCursor],
- [NSCursor disappearingItemCursor],
- [NSCursor IBeamCursorForVerticalLayout],
- [NSCursor operationNotAllowedCursor],
- [NSCursor dragLinkCursor],
- [NSCursor dragCopyCursor],
- [NSCursor contextualMenuCursor],
- ];
- annotationImage.cursor = cursors[arc4random_uniform((uint32_t)cursors.count) % cursors.count];
- } else {
- annotationImage.cursor = nil;
- }
- return annotationImage;
-}
-
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation {
- if ([annotation isKindOfClass:[DroppedPinAnnotation class]]) {
- DroppedPinAnnotation *droppedPin = (DroppedPinAnnotation *)annotation;
- [droppedPin resume];
- }
-}
-
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation {
- if ([annotation isKindOfClass:[DroppedPinAnnotation class]]) {
- DroppedPinAnnotation *droppedPin = (DroppedPinAnnotation *)annotation;
- [droppedPin pause];
- }
-}
-
-- (CGFloat)mapView:(MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation {
- return 0.8;
-}
-
-#pragma mark - MGLComputedShapeSourceDataSource
-- (NSArray<id <MGLFeature>>*)featuresInCoordinateBounds:(MGLCoordinateBounds)bounds zoomLevel:(NSUInteger)zoom {
- double gridSpacing;
- if(zoom >= 13) {
- gridSpacing = 0.01;
- } else if(zoom >= 11) {
- gridSpacing = 0.05;
- } else if(zoom == 10) {
- gridSpacing = .1;
- } else if(zoom == 9) {
- gridSpacing = 0.25;
- } else if(zoom == 8) {
- gridSpacing = 0.5;
- } else if (zoom >= 6) {
- gridSpacing = 1;
- } else if(zoom == 5) {
- gridSpacing = 2;
- } else if(zoom >= 4) {
- gridSpacing = 5;
- } else if(zoom == 2) {
- gridSpacing = 10;
- } else {
- gridSpacing = 20;
- }
-
- NSMutableArray <id <MGLFeature>> * features = [NSMutableArray array];
- CLLocationCoordinate2D coords[2];
-
- for (double y = ceil(bounds.ne.latitude / gridSpacing) * gridSpacing; y >= floor(bounds.sw.latitude / gridSpacing) * gridSpacing; y -= gridSpacing) {
- coords[0] = CLLocationCoordinate2DMake(y, bounds.sw.longitude);
- coords[1] = CLLocationCoordinate2DMake(y, bounds.ne.longitude);
- MGLPolylineFeature *feature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
- feature.attributes = @{@"value": @(y)};
- [features addObject:feature];
- }
-
- for (double x = floor(bounds.sw.longitude / gridSpacing) * gridSpacing; x <= ceil(bounds.ne.longitude / gridSpacing) * gridSpacing; x += gridSpacing) {
- coords[0] = CLLocationCoordinate2DMake(bounds.sw.latitude, x);
- coords[1] = CLLocationCoordinate2DMake(bounds.ne.latitude, x);
- MGLPolylineFeature *feature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
- feature.attributes = @{@"value": @(x)};
- [features addObject:feature];
- }
-
- return features;
-}
-
-@end
-
-@interface ValidatedToolbarItem : NSToolbarItem
-
-@end
-
-@implementation ValidatedToolbarItem
-
-- (void)validate {
- [(MapDocument *)self.toolbar.delegate validateToolbarItem:self];
-}
-
-@end
diff --git a/platform/macos/app/OfflinePackNameValueTransformer.h b/platform/macos/app/OfflinePackNameValueTransformer.h
deleted file mode 100644
index 11fe3ff441..0000000000
--- a/platform/macos/app/OfflinePackNameValueTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface OfflinePackNameValueTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/OfflinePackNameValueTransformer.m b/platform/macos/app/OfflinePackNameValueTransformer.m
deleted file mode 100644
index d1b3c20ac1..0000000000
--- a/platform/macos/app/OfflinePackNameValueTransformer.m
+++ /dev/null
@@ -1,33 +0,0 @@
-#import "OfflinePackNameValueTransformer.h"
-
-static NSString * const MBXOfflinePackContextNameKey = @"Name";
-
-@implementation OfflinePackNameValueTransformer
-
-+ (Class)transformedValueClass {
- return [NSString class];
-}
-
-+ (BOOL)allowsReverseTransformation {
- return YES;
-}
-
-- (NSString *)transformedValue:(NSData *)context {
- NSAssert([context isKindOfClass:[NSData class]], @"Context should be NSData.");
-
- NSDictionary *userInfo = [NSKeyedUnarchiver unarchiveObjectWithData:context];
- NSAssert([userInfo isKindOfClass:[NSDictionary class]], @"Context of offline pack isn’t a dictionary.");
- NSString *name = userInfo[MBXOfflinePackContextNameKey];
- NSAssert([name isKindOfClass:[NSString class]], @"Name of offline pack isn’t a string.");
- return name;
-}
-
-- (NSData *)reverseTransformedValue:(NSString *)name {
- NSAssert([name isKindOfClass:[NSString class]], @"Name should be a string.");
-
- return [NSKeyedArchiver archivedDataWithRootObject:@{
- MBXOfflinePackContextNameKey: name,
- }];
-}
-
-@end
diff --git a/platform/macos/app/StyleLayerIconTransformer.h b/platform/macos/app/StyleLayerIconTransformer.h
deleted file mode 100644
index 1af1d512d6..0000000000
--- a/platform/macos/app/StyleLayerIconTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface StyleLayerIconTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/StyleLayerIconTransformer.m b/platform/macos/app/StyleLayerIconTransformer.m
deleted file mode 100644
index c089165924..0000000000
--- a/platform/macos/app/StyleLayerIconTransformer.m
+++ /dev/null
@@ -1,47 +0,0 @@
-#import "StyleLayerIconTransformer.h"
-
-#import <Mapbox/Mapbox.h>
-
-@implementation StyleLayerIconTransformer
-
-+ (Class)transformedValueClass {
- return [NSString class];
-}
-
-+ (BOOL)allowsReverseTransformation {
- return NO;
-}
-
-- (id)transformedValue:(MGLStyleLayer *)layer {
- if ([layer isKindOfClass:[MGLBackgroundStyleLayer class]]) {
- return [NSImage imageNamed:@"background"];
- }
- if ([layer isKindOfClass:[MGLCircleStyleLayer class]]) {
- return [NSImage imageNamed:@"circle"];
- }
- if ([layer isKindOfClass:[MGLFillStyleLayer class]]) {
- return [NSImage imageNamed:@"fill"];
- }
- if ([layer isKindOfClass:[MGLFillExtrusionStyleLayer class]]) {
- return [NSImage imageNamed:@"fill-extrusion"];
- }
- if ([layer isKindOfClass:[MGLLineStyleLayer class]]) {
- return [NSImage imageNamed:@"NSListViewTemplate"];
- }
- if ([layer isKindOfClass:[MGLRasterStyleLayer class]]) {
- return [[NSWorkspace sharedWorkspace] iconForFileType:@"jpg"];
- }
- if ([layer isKindOfClass:[MGLSymbolStyleLayer class]]) {
- return [NSImage imageNamed:@"symbol"];
- }
- if ([layer isKindOfClass:[MGLHeatmapStyleLayer class]]) {
- return [NSImage imageNamed:@"heatmap"];
- }
- if ([layer isKindOfClass:[MGLHillshadeStyleLayer class]]) {
- return [NSImage imageNamed:@"hillshade"];
- }
-
- return nil;
-}
-
-@end
diff --git a/platform/macos/app/TimeIntervalTransformer.h b/platform/macos/app/TimeIntervalTransformer.h
deleted file mode 100644
index ca88ad2cd1..0000000000
--- a/platform/macos/app/TimeIntervalTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface TimeIntervalTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/TimeIntervalTransformer.m b/platform/macos/app/TimeIntervalTransformer.m
deleted file mode 100644
index 2c9cb6fc74..0000000000
--- a/platform/macos/app/TimeIntervalTransformer.m
+++ /dev/null
@@ -1,53 +0,0 @@
-#import "TimeIntervalTransformer.h"
-
-@implementation TimeIntervalTransformer
-
-+ (Class)transformedValueClass {
- return [NSString class];
-}
-
-+ (BOOL)allowsReverseTransformation {
- return NO;
-}
-
-NSString *NumberAndUnitString(NSInteger quantity, NSString *singular, NSString *plural) {
- return [NSString stringWithFormat:@"%ld %@", quantity, quantity == 1 ? singular : plural];
-}
-
-- (id)transformedValue:(id)value {
- if (![value isKindOfClass:[NSValue class]]) {
- return nil;
- }
-
- NSTimeInterval timeInterval = [value doubleValue];
- NSInteger seconds = floor(timeInterval);
- NSInteger minutes = floor(seconds / 60);
- seconds -= minutes * 60;
- NSInteger hours = floor(minutes / 60);
- minutes -= hours * 60;
- NSInteger days = floor(hours / 24);
- hours -= days * 24;
- NSInteger weeks = floor(days) / 7;
- days -= weeks * 7;
-
- NSMutableArray *components = [NSMutableArray array];
- if (seconds || timeInterval < 60) {
- [components addObject:NumberAndUnitString(seconds, @"second", @"seconds")];
- }
- if (minutes) {
- [components insertObject:NumberAndUnitString(minutes, @"minute", @"minutes") atIndex:0];
- }
- if (hours) {
- [components insertObject:NumberAndUnitString(hours, @"hour", @"hours") atIndex:0];
- }
- if (days) {
- [components insertObject:NumberAndUnitString(days, @"day", @"days") atIndex:0];
- }
- if (weeks) {
- [components insertObject:NumberAndUnitString(weeks, @"week", @"weeks") atIndex:0];
- }
-
- return [components componentsJoinedByString:@", "];
-}
-
-@end
diff --git a/platform/macos/app/ar.lproj/Localizable.strings b/platform/macos/app/ar.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ar.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/bg.lproj/Localizable.strings b/platform/macos/app/bg.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/bg.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/ca.lproj/Localizable.strings b/platform/macos/app/ca.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ca.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/cs.lproj/Localizable.strings b/platform/macos/app/cs.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/cs.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/da.lproj/Localizable.strings b/platform/macos/app/da.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/da.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/de.lproj/Localizable.strings b/platform/macos/app/de.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/de.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/es.lproj/Localizable.strings b/platform/macos/app/es.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/es.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/fi.lproj/Localizable.strings b/platform/macos/app/fi.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/fi.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/fr.lproj/Localizable.strings b/platform/macos/app/fr.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/fr.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/gl.lproj/Localizable.strings b/platform/macos/app/gl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/gl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/he.lproj/Localizable.strings b/platform/macos/app/he.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/he.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/heatmap.json b/platform/macos/app/heatmap.json
deleted file mode 100644
index 6469e57022..0000000000
--- a/platform/macos/app/heatmap.json
+++ /dev/null
@@ -1,809 +0,0 @@
-{
- "version": 8,
- "name": "Basic Heatmap",
- "center": [
- 30.49860107152665,
- 50.459868549177486
- ],
- "zoom": 14.033276876197775,
- "bearing": 0,
- "pitch": 0,
- "sources": {
- "mapbox": {
- "url": "mapbox://mapbox.mapbox-streets-v7",
- "type": "vector"
- }
- },
- "sprite": "mapbox://sprites/mourner/cjcgg2bl16cf42snvcbbaf09z",
- "glyphs": "mapbox://fonts/mourner/{fontstack}/{range}.pbf",
- "layers": [
- {
- "id": "background",
- "type": "background",
- "paint": {
- "background-color": "#dedede"
- }
- },
- {
- "id": "landuse_overlay_national_park",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "landuse_overlay",
- "filter": [
- "==",
- "class",
- "national_park"
- ],
- "paint": {
- "fill-color": "#d2edae",
- "fill-opacity": 0.75
- }
- },
- {
- "id": "landuse_park",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "landuse",
- "filter": [
- "==",
- "class",
- "park"
- ],
- "paint": {
- "fill-color": "#d2edae"
- }
- },
- {
- "id": "waterway",
- "type": "line",
- "source": "mapbox",
- "source-layer": "waterway",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "class",
- "canal",
- "river"
- ]
- ],
- "paint": {
- "line-color": "#a0cfdf",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 8,
- 0.5
- ],
- [
- 20,
- 15
- ]
- ]
- }
- }
- },
- {
- "id": "water",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "water",
- "paint": {
- "fill-color": "#a0cfdf"
- }
- },
- {
- "id": "building",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "building",
- "paint": {
- "fill-color": "#d6d6d6"
- }
- },
- {
- "id": "tunnel_minor",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#efefef",
- "line-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- },
- "line-dasharray": [
- 0.36,
- 0.18
- ]
- }
- },
- {
- "id": "tunnel_major",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#fff",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 6,
- 0.5
- ],
- [
- 20,
- 30
- ]
- ]
- },
- "line-dasharray": [
- 0.28,
- 0.14
- ]
- }
- },
- {
- "id": "road_minor",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ],
- [
- "in",
- "structure",
- "ford",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#efefef",
- "line-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "road_major",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ],
- [
- "in",
- "structure",
- "ford",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#fff",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 6,
- 0.5
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_minor case",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#dedede",
- "line-width": {
- "base": 1.6,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 20,
- 10
- ]
- ]
- },
- "line-gap-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_major case",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#dedede",
- "line-width": {
- "base": 1.6,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 20,
- 10
- ]
- ]
- },
- "line-gap-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_minor",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#efefef",
- "line-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_major",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#fff",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 6,
- 0.5
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "admin_country",
- "type": "line",
- "source": "mapbox",
- "source-layer": "admin",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "<=",
- "admin_level",
- 2
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#8b8a8a",
- "line-width": {
- "base": 1.3,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 22,
- 15
- ]
- ]
- }
- }
- },
- {
- "id": "road_major_label",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "road_label",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Semibold",
- "Arial Unicode MS Bold"
- ],
- "text-transform": "uppercase",
- "text-letter-spacing": 0.1,
- "text-size": {
- "base": 1.4,
- "stops": [
- [
- 10,
- 8
- ],
- [
- 20,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 2
- }
- },
- {
- "id": "place_label_other",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "place_label",
- "minzoom": 8,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "in",
- "type",
- "hamlet",
- "island",
- "neighbourhood",
- "suburb",
- "town",
- "village"
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Semibold",
- "Arial Unicode MS Bold"
- ],
- "text-max-width": 6,
- "text-size": {
- "stops": [
- [
- 6,
- 12
- ],
- [
- 12,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "place_label_city",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "place_label",
- "maxzoom": 16,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "==",
- "type",
- "city"
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Bold",
- "Arial Unicode MS Bold"
- ],
- "text-max-width": 10,
- "text-size": {
- "stops": [
- [
- 3,
- 12
- ],
- [
- 8,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "country_label",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "country_label",
- "maxzoom": 12,
- "filter": [
- "==",
- "$type",
- "Point"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Regular",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 10,
- "text-size": {
- "stops": [
- [
- 3,
- 14
- ],
- [
- 8,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "road-heatmap",
- "type": "heatmap",
- "source": "mapbox",
- "source-layer": "road",
- "paint": {
- "heatmap-intensity": 1
- }
- }
- ]
-}
diff --git a/platform/macos/app/hu.lproj/Localizable.strings b/platform/macos/app/hu.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/hu.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/ja.lproj/Localizable.strings b/platform/macos/app/ja.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ja.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/ko.lproj/Localizable.strings b/platform/macos/app/ko.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ko.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/lt.lproj/Localizable.strings b/platform/macos/app/lt.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/lt.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/main.m b/platform/macos/app/main.m
deleted file mode 100644
index 8a6799b414..0000000000
--- a/platform/macos/app/main.m
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-int main(int argc, const char * argv[]) {
- return NSApplicationMain(argc, argv);
-}
diff --git a/platform/macos/app/nl.lproj/Localizable.strings b/platform/macos/app/nl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/nl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/pl.lproj/Localizable.strings b/platform/macos/app/pl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/pl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/pt-BR.lproj/Localizable.strings b/platform/macos/app/pt-BR.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/pt-BR.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/pt-PT.lproj/Localizable.strings b/platform/macos/app/pt-PT.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/pt-PT.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/resources/background.svg b/platform/macos/app/resources/background.svg
deleted file mode 100644
index 39451e8b13..0000000000
--- a/platform/macos/app/resources/background.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg4148"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="background.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150">
- <inkscape:path-effect
- effect="spiro"
- id="path-effect4877"
- is_visible="true" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="10.48171"
- inkscape:cx="8.5046012"
- inkscape:cy="7.2814248"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="751"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata4153">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 2.8621284,1037.3477 c 2.5635185,5.7342 4.4524268,0.068 4.4524268,0.068 l 0.067461,-5e-4 c 2.4960576,4.9921 4.1825828,-0.1349 4.1825828,-0.1349 l 0.02385,0 c 2.765902,5.5993 4.091271,0 4.091271,0 l 0.02385,0 c 3.170668,5.9366 4.293654,0 4.293654,0"
- id="path4893"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -4.1486618,1041.2371 c 2.5635185,5.7342 4.45242682,0.068 4.45242682,0.068 l 0.067461,-5e-4 c 2.49605748,4.9921 4.18258278,-0.1349 4.18258278,-0.1349 l 0.023851,0 c 2.7659014,5.5993 4.0912704,0 4.0912704,0 l 0.02385,0 c 3.1706688,5.9366 4.2936548,0 4.2936548,0"
- id="path4893-1"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 3.7221911,1045.5303 c 2.5635186,5.7342 4.4524269,0.068 4.4524269,0.068 l 0.067461,-5e-4 c 2.496057,4.9921 4.182583,-0.1349 4.182583,-0.1349 l 0.02385,0 c 2.765901,5.5993 4.09127,0 4.09127,0 l 0.02385,0 c 3.170668,5.9366 4.293654,0 4.293654,0"
- id="path4893-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -3.5762361,1049.3465 c 2.5635185,5.7342 4.4524268,0.068 4.4524268,0.068 l 0.067461,-5e-4 c 2.4960575,4.9921 4.1825828,-0.1349 4.1825828,-0.1349 l 0.023851,0 c 2.7659014,5.5993 4.0912702,0 4.0912702,0 l 0.02385,0 c 3.1706683,5.9366 4.2936543,0 4.2936543,0"
- id="path4893-9"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- </g>
-</svg>
diff --git a/platform/macos/app/resources/circle.svg b/platform/macos/app/resources/circle.svg
deleted file mode 100644
index 91e0b11990..0000000000
--- a/platform/macos/app/resources/circle.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg4148"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="circle.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="3.8463784"
- inkscape:cy="-0.92094419"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="751"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata4153">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:none;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:1.49974895;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4778"
- cx="8"
- cy="1044.3622"
- r="7.2501254" />
- </g>
-</svg>
diff --git a/platform/macos/app/resources/fill-extrusion.svg b/platform/macos/app/resources/fill-extrusion.svg
deleted file mode 100644
index 4052ba5253..0000000000
--- a/platform/macos/app/resources/fill-extrusion.svg
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg4148"
- version="1.1"
- inkscape:version="0.92.2 5c3e80d, 2017-08-06"
- sodipodi:docname="fill-extrusion.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="27.393974 : 17.772818 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="-8.2635625 : 18.670616 : 1"
- inkscape:persp3d-origin="3.017385 : 22.114843 : 1"
- id="perspective909" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="-4.7399183"
- inkscape:cy="19.282107"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="755"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1"
- inkscape:snap-nodes="false"
- inkscape:snap-others="false"
- inkscape:snap-grids="false"
- inkscape:snap-to-guides="false"
- inkscape:snap-global="true"
- inkscape:snap-page="true" />
- <metadata
- id="metadata4153">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- sodipodi:type="inkscape:box3d"
- id="g1023"
- style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:perspectiveID="#perspective909"
- inkscape:corner0="1.0855329 : -0.011103979 : 0 : 1"
- inkscape:corner7="0.098433878 : -0.023326662 : 0.57925509 : 1">
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1025"
- style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="6"
- d="m 15.705552,1037.8317 v 5.8607 l -5.210258,-2.1739 v -4.5868 z"
- points="15.705552,1043.6924 10.495294,1041.5185 10.495294,1036.9317 15.705552,1037.8317 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1029"
- style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="3"
- d="m 15.705552,1037.8317 -10.5037094,2.9137 v 11.1274 l 10.5037094,-8.1804 z"
- points="5.2018426,1040.7454 5.2018426,1051.8728 15.705552,1043.6924 15.705552,1037.8317 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1031"
- style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="14"
- d="m 5.2018426,1040.7454 v 11.1274 l -4.64919579,-6.2775 v -7.2854 z"
- points="5.2018426,1051.8728 0.55264681,1045.5953 0.55264681,1038.3099 5.2018426,1040.7454 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1027"
- style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="5"
- d="m 15.705552,1037.8317 -10.5037094,2.9137 -4.64919579,-2.4355 9.94264719,-1.3782 z"
- points="5.2018426,1040.7454 0.55264681,1038.3099 10.495294,1036.9317 15.705552,1037.8317 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1033"
- style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="13"
- d="m 15.705552,1043.6924 -10.5037094,8.1804 -4.64919579,-6.2775 9.94264719,-4.0768 z"
- points="5.2018426,1051.8728 0.55264681,1045.5953 10.495294,1041.5185 15.705552,1043.6924 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1035"
- style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="11"
- d="m 10.495294,1036.9317 -9.94264719,1.3782 v 7.2854 l 9.94264719,-4.0768 z"
- points="0.55264681,1038.3099 0.55264681,1045.5953 10.495294,1041.5185 10.495294,1036.9317 " />
- </g>
- </g>
-</svg>
diff --git a/platform/macos/app/resources/fill.svg b/platform/macos/app/resources/fill.svg
deleted file mode 100644
index 7860a5fddb..0000000000
--- a/platform/macos/app/resources/fill.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg4148"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="fill.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="0.31084444"
- inkscape:cy="-0.92094419"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="751"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata4153">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:#000000;stroke-width:1.37142861;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4818"
- width="14.628572"
- height="14.628572"
- x="0.68571424"
- y="1037.048" />
- </g>
-</svg>
diff --git a/platform/macos/app/resources/heatmap.svg b/platform/macos/app/resources/heatmap.svg
deleted file mode 100644
index fa2a46590a..0000000000
--- a/platform/macos/app/resources/heatmap.svg
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg4148"
- version="1.1"
- inkscape:version="0.92.2 5c3e80d, 2017-08-06"
- sodipodi:docname="heatmap.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="23.25"
- inkscape:cx="4.7741936"
- inkscape:cy="7.6812068"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="755"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1"
- inkscape:snap-bbox="true" />
- <metadata
- id="metadata4153">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:0.99369001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11.237265,1036.8591 a 4.2655011,4.1972104 0 0 0 -4.2658922,4.1979 4.2655011,4.1972104 0 0 0 0.025231,0.427 5.3408028,5.2552965 0 0 0 -1.1586611,-0.1299 5.3408028,5.2552965 0 0 0 -5.34109749,5.2556 5.3408028,5.2552965 0 0 0 5.34109749,5.2557 5.3408028,5.2552965 0 0 0 5.3410983,-5.2557 5.3408028,5.2552965 0 0 0 -0.186318,-1.3664 4.2655011,4.1972104 0 0 0 0.244542,0.012 4.2655011,4.1972104 0 0 0 4.26589,-4.198 4.2655011,4.1972104 0 0 0 -4.26589,-4.1979 z"
- id="path818"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;stroke-width:0.99369001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11.005859,1038.875 c -4.8895767,1.3679 0.321278,7.2823 2.416016,2.7578 0.450567,-1.4666 -0.923376,-2.9624 -2.416016,-2.7578 z m -5.5078121,4.5 c -5.49629855,0.4756 -2.1892763,9.0394 2.2363281,5.9121 2.667642,-1.8963 1.5392118,-6.8607 -2.2363281,-5.9121 z"
- id="path836"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/platform/macos/app/resources/hillshade.svg b/platform/macos/app/resources/hillshade.svg
deleted file mode 100644
index d3f0d72999..0000000000
--- a/platform/macos/app/resources/hillshade.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg4148"
- version="1.1"
- inkscape:version="0.92.2 5c3e80d, 2017-08-06"
- sodipodi:docname="hillshade.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="23.25"
- inkscape:cx="6.2795699"
- inkscape:cy="11.122067"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="755"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1"
- inkscape:snap-bbox="true" />
- <metadata
- id="metadata4153">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- sodipodi:type="star"
- style="opacity:1;fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path839"
- sodipodi:sides="3"
- sodipodi:cx="12.189357"
- sodipodi:cy="1045.3247"
- sodipodi:r1="12.575057"
- sodipodi:r2="6.2875285"
- sodipodi:arg1="0.52359878"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 23.079676,1051.6122 -21.7806381,0 10.8903191,-18.8625 z"
- inkscape:transform-center-y="-2.1749516"
- transform="matrix(0.6563034,0,0,0.75784422,8.3706122e-5,254.83559)" />
- <path
- transform="matrix(0.6563034,0,0,0.75784422,8.3706122e-5,254.83559)"
- style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;stroke-width:1.50017999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:transform-center-y="-2.1749516"
- d="m 23.079676,1051.6122 h -7.842948 l -3.047371,-18.8625 z"
- id="path841"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/platform/macos/app/resources/symbol.svg b/platform/macos/app/resources/symbol.svg
deleted file mode 100644
index 68847cb50f..0000000000
--- a/platform/macos/app/resources/symbol.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg4148"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="symbol.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="3.8463784"
- inkscape:cy="-0.92094419"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="751"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata4153">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:1.45454013;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path5359"
- d="m 13.062591,1042.4228 c 0,3.394 -5.0625908,9.2122 -5.0625908,9.2122 0,0 -5.0625898,-5.872 -5.0625898,-9.2122 0,-2.9629 2.2914879,-5.3333 5.0625898,-5.3333 2.7711018,0 5.0625908,2.3704 5.0625908,5.3333 z" />
- </g>
-</svg>
diff --git a/platform/macos/app/ru.lproj/Localizable.strings b/platform/macos/app/ru.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ru.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/sv.lproj/Localizable.strings b/platform/macos/app/sv.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/sv.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/uk.lproj/Localizable.strings b/platform/macos/app/uk.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/uk.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/vi.lproj/Localizable.strings b/platform/macos/app/vi.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/vi.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/wms.json b/platform/macos/app/wms.json
deleted file mode 100644
index e5fb236259..0000000000
--- a/platform/macos/app/wms.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "version": 8,
- "name": "WMS Test",
- "sources": {
- "wms-test": {
- "type": "raster",
- "tiles": [
- "https://geodata.state.nj.us/imagerywms/Natural2015?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&width=256&height=256&layers=Natural2015"
- ],
- "tileSize": 256
- }
- },
- "layers": [{
- "id": "wms-test-layer",
- "type": "raster",
- "source": "wms-test",
- "paint": {
- "raster-fade-duration": 100
- }
- }]
-}
diff --git a/platform/macos/app/zh-Hans.lproj/Localizable.strings b/platform/macos/app/zh-Hans.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/zh-Hans.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/zh-Hant.lproj/Localizable.strings b/platform/macos/app/zh-Hant.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/zh-Hant.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/docs/doc-README.md b/platform/macos/docs/doc-README.md
deleted file mode 100644
index 8ce2df39a4..0000000000
--- a/platform/macos/docs/doc-README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# [Mapbox Maps SDK for macOS](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/macos/)
-
-The Mapbox Maps SDK for macOS is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa applications on macOS 10.11.0 and above using Objective-C, Swift, Interface Builder, or AppleScript. The SDK takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL.
-
-![](img/screenshot.jpg)
-
-For setup information, consult the README.md that comes with this documentation. For further instructions, consult the [Mapbox Maps SDK for macOS documentation](https://mapbox.github.io/mapbox-gl-native/macos/). The [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/) has [API documentation](https://www.mapbox.com/ios-sdk/api/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) that apply to the macOS SDK with few differences, mostly around unimplemented features like user location tracking. A [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/macos/CHANGELOG.md) is also available.
-
-Mapbox does not officially support the macOS SDK to the same extent as the iOS SDK; however, [bug reports and pull requests](https://github.com/mapbox/mapbox-gl-native/issues/) are certainly welcome.
diff --git a/platform/macos/docs/guides/For Style Authors.md b/platform/macos/docs/guides/For Style Authors.md
deleted file mode 100644
index 399ba6804b..0000000000
--- a/platform/macos/docs/guides/For Style Authors.md
+++ /dev/null
@@ -1,427 +0,0 @@
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-# Information for Style Authors
-
-A _style_ defines a map view’s content and appearance. If you’ve authored a
-style using
-[Mapbox Studio’s Styles editor](https://www.mapbox.com/studio/styles/) or as
-JSON in a text editor, you can use that style in this SDK and manipulate it
-afterwards in code. This document provides information you can use to ensure a
-seamless transition from Mapbox Studio to your application.
-
-## Designing for macOS
-
-When designing your style, consider the context in which your application shows
-the style. There are a number of considerations specific to macOS that may
-not be obvious when designing your style in Mapbox Studio on the Web. A map view
-is essentially a graphical user interface element, so many of same issues in
-user interface design also apply when designing a map style.
-
-### Color
-
-Ensure sufficient contrast in your application’s user interface when your map
-style is present. Standard user interface elements such as toolbars, sidebars,
-and sheets often overlap the map view with a translucent, blurred background, so
-make sure the contents of these elements remain legible with the map view
-underneath.
-If you intend your style to be used in the dark, consider the impact that Night
-Shift may have on your style’s colors.
-
-### Typography and graphics
-
-
-Design sprite images and choose font weights that look crisp on both
-standard-resolution displays and Retina displays. This SDK supports the same
-resolutions as macOS.
-Standard-resolution displays are often found on external monitors. Even with
-built-in screens, some of your users may use the Larger Text option in Display
-Preferences, which is essentially standard resolution, to make text easier to
-read.
-
-Icon and text labels should be legible regardless of the map’s orientation.
-By default, this SDK makes it easy for your users to rotate or tilt the map
-using multitouch trackpad gestures or keyboard shortcuts.
-If you do not intend your design to accommodate rotation and tilting, disable
-these gestures using the `MGLMapView.rotateEnabled` and
-`MGLMapView.pitchEnabled` properties, respectively, or the corresponding
-inspectables in Interface Builder.
-
-### Interactivity
-
-Pay attention to whether elements of your style appear to be interactive.
-An icon with a shadow or shading effect may appear to be clickable.
-You can make an icon or text label interactive by installing a gesture
-recognizer and performing feature querying (e.g.,
-`-[MGLMapView visibleFeaturesAtPoint:]`) to get details about the selected
-feature.
-You can install cursor or tooltip tracking rectangles to indicate interactive
-features as an alternative to prominent hover effects.
-
-Make sure your users can easily distinguish any interactive elements from the
-surrounding map, such as pins or a route line. If your application supports
-printing, consider using the
-[runtime styling API](#manipulating-the-style-at-runtime) to optimize your style
-for ink economy before printing the map view.
-
-For more information about user interface design, consult Apple’s
-[_macOS Human Interface Guidelines_](https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/OSXHIGuidelines/).
-
-## Applying your style
-
-You set an `MGLMapView` object’s style either in code, by setting the
-`MGLMapView.styleURL` property, or in Interface Builder, by setting the “Style
-URL” inspectable. The URL must point to a local or remote style JSON file. The
-style JSON file format is defined by the
-[Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/). This
-SDK supports the functionality defined by version 8 of the specification unless
-otherwise noted in the
-[style specification documentation](https://www.mapbox.com/mapbox-gl-style-spec/).
-
-## Manipulating the style at runtime
-
-The _runtime styling API_ enables you to modify every aspect of a style
-dynamically as a user interacts with your application. The style itself is
-represented at runtime by an `MGLStyle` object, which provides access to various
-`MGLSource` and `MGLStyleLayer` objects that represent content sources and style
-layers, respectively.
-
-The names of runtime styling classes and properties on macOS are generally
-consistent with the style specification and Mapbox Studio’s Styles editor. Any
-exceptions are listed in this document.
-
-To avoid conflicts with Objective-C keywords or Cocoa terminology, this SDK uses
-the following terms for concepts defined in the style specification:
-
-In the style specification | In the SDK
----------------------------|---------
-bounds | coordinate bounds
-filter | predicate
-function type | interpolation mode
-id | identifier
-image | style image
-layer | style layer
-property | attribute
-SDF icon | template image
-source | content source
-
-## Specifying the map’s content
-
-Each source defined by a style JSON file is represented at runtime by a content
-source object that you can use to initialize new style layers. The content
-source object is a member of one of the following subclasses of `MGLSource`:
-
-In style JSON | In the SDK
---------------|-----------
-`vector` | `MGLVectorTileSource`
-`raster` | `MGLRasterTileSource`
-`raster-dem` | `MGLRasterDEMSource`
-`geojson` | `MGLShapeSource`
-`image` | `MGLImageSource`
-
-`canvas` and `video` sources are not supported.
-
-### Tile sources
-
-Raster and vector tile sources may be defined in TileJSON configuration files.
-This SDK supports the properties defined in the style specification, which are a
-subset of the keys defined in version 2.1.0 of the
-[TileJSON](https://github.com/mapbox/tilejson-spec/tree/master/2.1.0)
-specification. As an alternative to authoring a custom TileJSON file, you may
-supply various tile source options when creating a raster or vector tile source.
-These options are detailed in the `MGLTileSourceOption` documentation:
-
-In style JSON | In TileJSON | In the SDK
---------------|---------------|-----------
-`url` | — | `configurationURL` parameter in `-[MGLTileSource initWithIdentifier:configurationURL:]`
-`tiles` | `tiles` | `tileURLTemplates` parameter in `-[MGLTileSource initWithIdentifier:tileURLTemplates:options:]`
-`minzoom` | `minzoom` | `MGLTileSourceOptionMinimumZoomLevel`
-`maxzoom` | `maxzoom` | `MGLTileSourceOptionMaximumZoomLevel`
-`bounds` | `bounds` | `MGLTileSourceOptionCoordinateBounds`
-`tileSize` | — | `MGLTileSourceOptionTileSize`
-`attribution` | `attribution` | `MGLTileSourceOptionAttributionHTMLString` (but consider specifying `MGLTileSourceOptionAttributionInfos` instead for improved security)
-`scheme` | `scheme` | `MGLTileSourceOptionTileCoordinateSystem`
-`encoding` | – | `MGLTileSourceOptionDEMEncoding`
-
-### Shape sources
-
-Shape sources also accept various options. These options are detailed in the
-`MGLShapeSourceOption` documentation:
-
-In style JSON | In the SDK
------------------|-----------
-`data` | `url` parameter in `-[MGLShapeSource initWithIdentifier:URL:options:]`
-`maxzoom` | `MGLShapeSourceOptionMaximumZoomLevel`
-`buffer` | `MGLShapeSourceOptionBuffer`
-`tolerance` | `MGLShapeSourceOptionSimplificationTolerance`
-`cluster` | `MGLShapeSourceOptionClustered`
-`clusterRadius` | `MGLShapeSourceOptionClusterRadius`
-`clusterMaxZoom` | `MGLShapeSourceOptionMaximumZoomLevelForClustering`
-`lineMetrics` | `MGLShapeSourceOptionLineDistanceMetrics`
-
-To create a shape source from local GeoJSON data, first
-[convert the GeoJSON data into a shape](working-with-geojson-data.html#converting-geojson-data-into-shape-objects),
-then use the `-[MGLShapeSource initWithIdentifier:shape:options:]` method.
-
-### Image sources
-
-Image sources accept a non-axis aligned quadrilateral as their geographic coordinates.
-These coordinates, in `MGLCoordinateQuad`, are described in counterclockwise order,
-in contrast to the clockwise order defined in the style specification.
-
-## Configuring the map content’s appearance
-
-Each layer defined by the style JSON file is represented at runtime by a style
-layer object, which you can use to refine the map’s appearance. The style layer
-object is a member of one of the following subclasses of `MGLStyleLayer`:
-
-In style JSON | In the SDK
---------------|-----------
-`background` | `MGLBackgroundStyleLayer`
-`circle` | `MGLCircleStyleLayer`
-`fill` | `MGLFillStyleLayer`
-`fill-extrusion` | `MGLFillExtrusionStyleLayer`
-`heatmap` | `MGLHeatmapStyleLayer`
-`hillshade` | `MGLHillshadeStyleLayer`
-`line` | `MGLLineStyleLayer`
-`raster` | `MGLRasterStyleLayer`
-`symbol` | `MGLSymbolStyleLayer`
-
-You configure layout and paint attributes by setting properties on these style
-layer objects. The property names generally correspond to the style JSON
-properties, except for the use of camelCase instead of kebab-case. Properties
-whose names differ from the style specification are listed below:
-
-### Circle style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`circle-pitch-scale` | `MGLCircleStyleLayer.circleScaleAlignment` | `MGLCircleStyleLayer.circleScaleAlignment`
-`circle-translate` | `MGLCircleStyleLayer.circleTranslation` | `MGLCircleStyleLayer.circleTranslation`
-`circle-translate-anchor` | `MGLCircleStyleLayer.circleTranslationAnchor` | `MGLCircleStyleLayer.circleTranslationAnchor`
-
-### Fill style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`fill-antialias` | `MGLFillStyleLayer.fillAntialiased` | `MGLFillStyleLayer.isFillAntialiased`
-`fill-translate` | `MGLFillStyleLayer.fillTranslation` | `MGLFillStyleLayer.fillTranslation`
-`fill-translate-anchor` | `MGLFillStyleLayer.fillTranslationAnchor` | `MGLFillStyleLayer.fillTranslationAnchor`
-
-### Fill extrusion style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`fill-extrusion-vertical-gradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient`
-`fill-extrusion-translate` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation`
-`fill-extrusion-translate-anchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor`
-
-### Line style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`line-dasharray` | `MGLLineStyleLayer.lineDashPattern` | `MGLLineStyleLayer.lineDashPattern`
-`line-translate` | `MGLLineStyleLayer.lineTranslation` | `MGLLineStyleLayer.lineTranslation`
-`line-translate-anchor` | `MGLLineStyleLayer.lineTranslationAnchor` | `MGLLineStyleLayer.lineTranslationAnchor`
-
-### Raster style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`raster-brightness-max` | `MGLRasterStyleLayer.maximumRasterBrightness` | `MGLRasterStyleLayer.maximumRasterBrightness`
-`raster-brightness-min` | `MGLRasterStyleLayer.minimumRasterBrightness` | `MGLRasterStyleLayer.minimumRasterBrightness`
-`raster-hue-rotate` | `MGLRasterStyleLayer.rasterHueRotation` | `MGLRasterStyleLayer.rasterHueRotation`
-`raster-resampling` | `MGLRasterStyleLayer.rasterResamplingMode` | `MGLRasterStyleLayer.rasterResamplingMode`
-
-### Symbol style layers
-
-In style JSON | In Objective-C | In Swift
---------------|----------------|---------
-`icon-allow-overlap` | `MGLSymbolStyleLayer.iconAllowsOverlap` | `MGLSymbolStyleLayer.iconAllowsOverlap`
-`icon-ignore-placement` | `MGLSymbolStyleLayer.iconIgnoresPlacement` | `MGLSymbolStyleLayer.iconIgnoresPlacement`
-`icon-image` | `MGLSymbolStyleLayer.iconImageName` | `MGLSymbolStyleLayer.iconImageName`
-`icon-optional` | `MGLSymbolStyleLayer.iconOptional` | `MGLSymbolStyleLayer.isIconOptional`
-`icon-rotate` | `MGLSymbolStyleLayer.iconRotation` | `MGLSymbolStyleLayer.iconRotation`
-`icon-size` | `MGLSymbolStyleLayer.iconScale` | `MGLSymbolStyleLayer.iconScale`
-`icon-keep-upright` | `MGLSymbolStyleLayer.keepsIconUpright` | `MGLSymbolStyleLayer.keepsIconUpright`
-`text-keep-upright` | `MGLSymbolStyleLayer.keepsTextUpright` | `MGLSymbolStyleLayer.keepsTextUpright`
-`text-max-angle` | `MGLSymbolStyleLayer.maximumTextAngle` | `MGLSymbolStyleLayer.maximumTextAngle`
-`text-max-width` | `MGLSymbolStyleLayer.maximumTextWidth` | `MGLSymbolStyleLayer.maximumTextWidth`
-`symbol-avoid-edges` | `MGLSymbolStyleLayer.symbolAvoidsEdges` | `MGLSymbolStyleLayer.symbolAvoidsEdges`
-`text-field` | `MGLSymbolStyleLayer.text` | `MGLSymbolStyleLayer.text`
-`text-allow-overlap` | `MGLSymbolStyleLayer.textAllowsOverlap` | `MGLSymbolStyleLayer.textAllowsOverlap`
-`text-font` | `MGLSymbolStyleLayer.textFontNames` | `MGLSymbolStyleLayer.textFontNames`
-`text-size` | `MGLSymbolStyleLayer.textFontSize` | `MGLSymbolStyleLayer.textFontSize`
-`text-ignore-placement` | `MGLSymbolStyleLayer.textIgnoresPlacement` | `MGLSymbolStyleLayer.textIgnoresPlacement`
-`text-justify` | `MGLSymbolStyleLayer.textJustification` | `MGLSymbolStyleLayer.textJustification`
-`text-optional` | `MGLSymbolStyleLayer.textOptional` | `MGLSymbolStyleLayer.isTextOptional`
-`text-rotate` | `MGLSymbolStyleLayer.textRotation` | `MGLSymbolStyleLayer.textRotation`
-`text-writing-mode` | `MGLSymbolStyleLayer.textWritingModes` | `MGLSymbolStyleLayer.textWritingModes`
-`icon-translate` | `MGLSymbolStyleLayer.iconTranslation` | `MGLSymbolStyleLayer.iconTranslation`
-`icon-translate-anchor` | `MGLSymbolStyleLayer.iconTranslationAnchor` | `MGLSymbolStyleLayer.iconTranslationAnchor`
-`text-translate` | `MGLSymbolStyleLayer.textTranslation` | `MGLSymbolStyleLayer.textTranslation`
-`text-translate-anchor` | `MGLSymbolStyleLayer.textTranslationAnchor` | `MGLSymbolStyleLayer.textTranslationAnchor`
-
-## Setting attribute values
-
-Each property representing a layout or paint attribute is set to an
-`NSExpression` object. `NSExpression` objects play the same role as
-[expressions in the Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions),
-but you create the former using a very different syntax. `NSExpression`’s format
-string syntax is reminiscent of a spreadsheet formula or an expression in a
-database query. See the
-“[Predicates and Expressions](predicates-and-expressions.html)” guide for an
-overview of the expression support in this SDK. This SDK no longer supports
-style functions; use expressions instead.
-
-### Constant values in expressions
-
-In contrast to the JSON type that the style specification defines for each
-layout or paint property, the style value object often contains a more specific
-Foundation or Cocoa type. General rules for attribute types are listed below.
-Pay close attention to the SDK documentation for the attribute you want to get
-or set.
-
-In style JSON | In Objective-C | In Swift
---------------|-----------------------|---------
-Color | `NSColor` | `NSColor`
-Enum | `NSString` | `String`
-String | `NSString` | `String`
-Boolean | `NSNumber.boolValue` | `NSNumber.boolValue`
-Number | `NSNumber.floatValue` | `NSNumber.floatValue`
-Array (`-dasharray`) | `NSArray<NSNumber>` | `[Float]`
-Array (`-font`) | `NSArray<NSString>` | `[String]`
-Array (`-offset`, `-translate`) | `NSValue` containing `CGVector` | `NSValue` containing `CGVector`
-Array (`-padding`) | `NSValue.edgeInsetsValue` | `NSValue.edgeInsetsValue`
-
-For padding attributes, note that the arguments to
-`NSEdgeInsetsMake()` in Objective-C and `EdgeInsets(top:left:bottom:right:)` in
-Swift
-are specified in counterclockwise order, in contrast to the clockwise order
-defined by the style specification.
-
-Additionally, on macOS, a screen coordinate of (0, 0) is located at the
-lower-left corner of the screen. Therefore, a positive `CGVector.dy` means an
-offset or translation upward, while a negative `CGVector.dy` means an offset or
-translation downward. This is the reverse of how `CGVector` is interpreted on
-iOS.
-
-### Expression operators
-
-Many expression operators defined in the style specification have corresponding
-symbols to be used with the `+[NSExpression expressionWithFormat:]`,
-`+[NSExpression expressionForFunction:arguments:]`, or
-`+[NSExpression expressionForFunction:selectorName:arguments:]` method:
-
-In style specification | Method, function, or predicate type | Format string syntax
------------------------|-------------------------------------|---------------------
-`array` | |
-`boolean` | |
-`collator` | `NSComparisonPredicateOptions` | `'Québec' =[cd] 'QUEBEC'`
-`literal` | `+[NSExpression expressionForConstantValue:]` | `%@` representing `NSArray` or `NSDictionary`
-`number` | |
-`string` | |
-`to-boolean` | `boolValue` |
-`to-color` | | `CAST(var, 'NSColor')`
-`to-number` | `mgl_numberWithFallbackValues:` | `CAST(zipCode, 'NSNumber')`
-`to-string` | `stringValue` | `CAST(ele, 'NSString')`
-`typeof` | |
-`geometry-type` | `NSExpression.geometryTypeVariableExpression` | `$geometryType`
-`id` | `NSExpression.featureIdentifierVariableExpression` | `$featureIdentifier`
-`properties` | `NSExpression.featureAttributesVariableExpression` | `$featureAttributes`
-`at` | `objectFrom:withIndex:` | `array[n]`
-`get` | `+[NSExpression expressionForKeyPath:]` | Key path
-`has` | `mgl_does:have:` | `mgl_does:have:(self, 'key')`
-`length` | `count:` | `count({1, 2, 2, 3, 4, 7, 9})`
-`!` | `NSNotPredicateType` | `NOT (p0 OR … OR pn)`
-`!=` | `NSNotEqualToPredicateOperatorType` | `key != value`
-`<` | `NSLessThanPredicateOperatorType` | `key < value`
-`<=` | `NSLessThanOrEqualToPredicateOperatorType` | `key <= value`
-`==` | `NSEqualToPredicateOperatorType` | `key == value`
-`>` | `NSGreaterThanPredicateOperatorType` | `key > value`
-`>=` | `NSGreaterThanOrEqualToPredicateOperatorType` | `key >= value`
-`all` | `NSAndPredicateType` | `p0 AND … AND pn`
-`any` | `NSOrPredicateType` | `p0 OR … OR pn`
-`case` | `+[NSExpression expressionForConditional:trueExpression:falseExpression:]` or `MGL_IF` or `+[NSExpression mgl_expressionForConditional:trueExpression:falseExpresssion:]` | `TERNARY(1 = 2, YES, NO)` or `MGL_IF(1 = 2, YES, 2 = 2, YES, NO)`
-`coalesce` | `mgl_coalesce:` | `mgl_coalesce({x, y, z})`
-`match` | `MGL_MATCH` or `+[NSExpression mgl_expressionForMatchingExpression:inDictionary:defaultExpression:]` | `MGL_MATCH(x, 0, 'zero match', 1, 'one match', 'two match', 'default')`
-`interpolate` | `mgl_interpolate:withCurveType:parameters:stops:` or `+[NSExpression mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` |
-`step` | `mgl_step:from:stops:` or `+[NSExpression mgl_expressionForSteppingExpression:fromExpression:stops:]` |
-`let` | `mgl_expressionWithContext:` | `MGL_LET('ios', 11, 'macos', 10.13, $ios + $macos)`
-`var` | `+[NSExpression expressionForVariable:]` | `$variable`
-`concat` | `mgl_join:` or `-[NSExpression mgl_expressionByAppendingExpression:]` | `mgl_join({'Old', ' ', 'MacDonald'})`
-`downcase` | `lowercase:` | `lowercase('DOWNTOWN')`
-`upcase` | `uppercase:` | `uppercase('Elysian Fields')`
-`rgb` | `+[NSColor colorWithCalibratedRed:green:blue:alpha:]` |
-`rgba` | `+[NSColor colorWithCalibratedRed:green:blue:alpha:]` |
-`to-rgba` | | `CAST(noindex(var), 'NSArray')`
-`-` | `from:subtract:` | `2 - 1`
-`*` | `multiply:by:` | `1 * 2`
-`/` | `divide:by:` | `1 / 2`
-`%` | `modulus:by:` |
-`^` | `raise:toPower:` | `2 ** 2`
-`+` | `add:to:` | `1 + 2`
-`abs` | `abs:` | `abs(-1)`
-`acos` | `mgl_acos:` | `mgl_acos(1)`
-`asin` | `mgl_asin:` | `mgl_asin(0)`
-`atan` | `mgl_atan:` | `mgl_atan(20)`
-`ceil` | `ceiling:` | `ceiling(0.99999)`
-`cos` | `mgl_cos:` | `mgl_cos(0)`
-`e` | | `%@` representing `NSNumber` containing `M_E`
-`floor` | `floor:` | `floor(-0.99999)`
-`ln` | `ln:` | `ln(2)`
-`ln2` | | `%@` representing `NSNumber` containing `M_LN2`
-`log10` | `log:` | `log(1)`
-`log2` | `mgl_log2:` | `mgl_log2(1024)`
-`max` | `max:` | `max({1, 2, 2, 3, 4, 7, 9})`
-`min` | `min:` | `min({1, 2, 2, 3, 4, 7, 9})`
-`pi` | | `%@` representing `NSNumber` containing `M_PI`
-`round` | `mgl_round:` | `mgl_round(1.5)`
-`sin` | `mgl_sin:` | `mgl_sin(0)`
-`sqrt` | `sqrt:` | `sqrt(2)`
-`tan` | `mgl_tan:` | `mgl_tan(0)`
-`zoom` | `NSExpression.zoomLevelVariableExpression` | `$zoomLevel`
-`heatmap-density` | `NSExpression.heatmapDensityVariableExpression` | `$heatmapDensity`
-`line-progress` | `NSExpression.lineProgressVariableExpression` | `$lineProgress`
-`format` | `+[NSExpression mgl_expressionForAttributedExpressions:]` or `mgl_attributed:` | `mgl_attributed({x, y, z})`
-
-For operators that have no corresponding `NSExpression` symbol, use the
-`MGL_FUNCTION()` format string syntax.
-
-## Filtering sources
-
-You can filter a shape or vector tile source by setting the
-`MGLVectorStyleLayer.predicate` property to an `NSPredicate` object. Below is a
-table of style JSON operators and the corresponding operators used in the
-predicate format string:
-
-In style JSON | In the format string
---------------------------|---------------------
-`["has", key]` | `key != nil`
-`["!has", key]` | `key == nil`
-`["==", key, value]` | `key == value`
-`["!=", key, value]` | `key != value`
-`[">", key, value]` | `key > value`
-`[">=", key, value]` | `key >= value`
-`["<", key, value]` | `key < value`
-`["<=", key, value]` | `key <= value`
-`["in", key, v0, …, vn]` | `key IN {v0, …, vn}`
-`["!in", key, v0, …, vn]` | `NOT key IN {v0, …, vn}`
-`["all", f0, …, fn]` | `p0 AND … AND pn`
-`["any", f0, …, fn]` | `p0 OR … OR pn`
-`["none", f0, …, fn]` | `NOT (p0 OR … OR pn)`
-
-## Specifying the text format
-
-The following format attributes are defined as `NSString` constans that you
-can use to update the formatting of `MGLSymbolStyleLayer.text` property.
-
-In style JSON | In Objective-C | In Swift
---------------|-----------------------|---------
-`text-font` | `MGLFontNamesAttribute` | `.fontNamesAttribute`
-`font-scale` | `MGLFontScaleAttribute` | `.fontScaleAttribute`
-`text-color` | `MGLFontColorAttribute` | `.fontColorAttribute`
-
-See the “[Predicates and Expressions](predicates-and-expressions.html)” guide for
-a full description of the supported operators and operand types.
diff --git a/platform/macos/docs/guides/Info.plist Keys.md b/platform/macos/docs/guides/Info.plist Keys.md
deleted file mode 100644
index 35ecf67e36..0000000000
--- a/platform/macos/docs/guides/Info.plist Keys.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Info.plist Keys
-
-The Mapbox Maps SDK for macOS supports custom `Info.plist` keys in your application in order to configure various settings.
-
-## MGLMapboxAccessToken
-
-Set the [Mapbox access token](https://www.mapbox.com/help/define-access-token/) to be used by all instances of `MGLMapView` in the current application.
-
-Mapbox-hosted vector tiles and styles require an API access token, which you can obtain from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). Access tokens associate requests to Mapbox’s vector tile and style APIs with your Mapbox account. They also deter other developers from using your styles without your permission.
-
-As an alternative, you can use `MGLAccountManager.accessToken` to set a token in code. See [our guide](https://www.mapbox.com/help/ios-private-access-token/) for some tips on keeping access tokens in open source code private.
-
-## MGLMapboxAPIBaseURL
-
-Use this key if you need to customize the API base URL used throughout the SDK. If unset, the default Mapbox API is used.
-
-The default value is `https://api.mapbox.com`.
-
-## MGLIdeographicFontFamilyName
-
-The name of the font family to use for client-side text rendering of CJK ideographs.
-
-Set `MGLIdeographicFontFamilyName` in your containing application's Info.plist to font family name(s) that will be available at run time, such as “PingFang TC” or “Marker Felt”. This plist key accepts:
-
-- A string value of a single font family name.
-
-- An array of font family names. Fonts will be used in the defined order, eventually falling back to default system font if none are available.
-
-- A boolean value `NO` to disable client-side rendering of CJK glyphs — remote fonts specified in your style will be used instead.
-
-## MGLCollisionBehaviorPre4_0
-
-If this key is set to YES (`true`), collision detection is performed only between symbol style layers based on the same source, as in versions 0.1–0.7 of the Mapbox Maps SDK for iOS. In other words, symbols in an `MGLSymbolStyleLayer` based on one source (for example, an `MGLShapeSource`) may overlap with symbols in another layer that is based on a different source (such as the Mapbox Streets source). This is the case regardless of the `MGLSymbolStyleLayer.iconAllowsOverlap`, `MGLSymbolStyleLayer.iconIgnoresPlacement`, `MGLSymbolStyleLayer.textAllowsOverlap`, and `MGLSymbolStyleLayer.textIgnoresPlacement` properties.
-
-Beginning in version 0.7, the SDK also performs collision detection between style layers based on different sources by default. For the default behavior, omit the `MGLCollisionBehaviorPre4_0` key or set it to NO (`false`). This property is so named because version 0.7 of the Mapbox Maps SDK for macOS corresponds to version 4.0 of the Mapbox Maps SDK for iOS.
diff --git a/platform/macos/docs/guides/Migrating to Expressions.md b/platform/macos/docs/guides/Migrating to Expressions.md
deleted file mode 100644
index 44e14a6eec..0000000000
--- a/platform/macos/docs/guides/Migrating to Expressions.md
+++ /dev/null
@@ -1,267 +0,0 @@
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-
-# Migrating from Style Functions to Expressions
-
-[Runtime Styling](https://www.mapbox.com/ios-sdk/maps/overview/runtime-styling/) enables you to modify every aspect of the map’s appearance dynamically as a user interacts with your application. Developers can specify in advance how a layout or paint attribute will vary as the zoom level changes or how the appearance of individual features vary based on metadata provided by a content source.
-
-With Mapbox Maps SDK for macOS v0.7.0, style functions have been replaced with expressions. These provide even more tools for developers who want to style their maps dynamically. This guide outlines some tips for migrating from style functions to expressions, and offers an overview of some things that developers can do with expressions.
-
-An expression is represented at runtime by the `NSExpression` class. Expressions can be used to style paint and layout properties based on zoom level, data attributes, or a combination of the two.
-
-A constant expression can also be assigned to a style property. For example, the opacity of a fill style layer can be set to a constant value between 0 and 1.
-
-The documentation for each individual style layer property notes which non-constant expressions are enabled for that property. Style functions supported four interpolation modes: exponential, interval, categorical, and identity.
-
-This guide uses earthquake data from the [U.S. Geological Survey](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php). Under each interpolation mode, the style function implementation will be shown, followed by the current syntax.
-
-For more information about how to work with GeoJSON data in our macOS SDK, please see our [working with GeoJSON data](working-with-geojson-data.html) guide. To learn more about supported expressions, see our ["Predicates and Expressions"](predicates-and-expressions.html) guide. The "Predicates and Expressions" guide also outlines Mapbox custom functions that can be used to dynamically style a map.
-
-## Stops
-Stops are dictionary keys that are associated with layer attribute values. Constant values no longer need to be wrapped as style values when they are values in a stops dictionary.
-
-
-Style function syntax:
-
-```swift
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-```
-
-Current syntax:
-```swift
-let stops: [NSNumber: NSColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
-]
-```
-
-
-## Interpolation mode
-
-Style functions supported four interpolation modes: exponential/linear, interval, categorical, and identity. For more information about supported custom expressions, please see the "Predicates and Expressions" guide.
-
-### Linear
-
-`+[NSExpression(MGLAdditions) mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` takes the interpolation type as a parameter. If you previously used the default interpolation base, use the curve type `MGLExpressionInterpolationMode.linear`. See the [`mgl_interpolate:withCurveType:parameters:stops:`](predicates-and-expressions.html#code-mgl_interpolate-withcurvetype-parameters-stops-code) documentation for more details.
-
-The stops dictionary below, shows colors that continuously shift from yellow to orange to red to blue to white based on the attribute value.
-
-Style function syntax:
-
-```swift
-let url = URL(string: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson")!
-let symbolSource = MGLSource(identifier: "source")
-let symbolLayer = MGLSymbolStyleLayer(identifier: "place-city-sm", source: symbolSource)
-
-let source = MGLShapeSource(identifier: "earthquakes", url: url, options: nil)
-mapView.style?.addSource(source)
-
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-
-let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-layer.circleColor = MGLStyleValue(interpolationMode: .exponential,
- sourceStops: stops,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .green)])
-layer.circleRadius = MGLStyleValue(rawValue: 10)
-mapView.style?.insertLayer(layer, below: symbolLayer)
-```
-
-Current syntax:
-
-```swift
-let url = URL(string: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson")!
-let symbolSource = MGLSource(identifier: "source")
-let symbolLayer = MGLSymbolStyleLayer(identifier: "place-city-sm", source: symbolSource)
-
-let source = MGLShapeSource(identifier: "earthquakes", url: url, options: nil)
-mapView.style?.addSource(source)
-
-let stops: [NSNumber: NSColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
-]
-
-let layer = MGLCircleStyleLayer(identifier: "circles", source: source)
-layer.circleColor = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:(mag, 'linear', nil, %@)",
- stops)
-layer.circleRadius = NSExpression(forConstantValue: 10)
-mapView.style?.insertLayer(layer, below: symbolLayer)
-```
-
-### Exponential
-
-If you previously used an interpolation base greater than `0` (other than `1`), you can use `MGLExpressionInterpolationMode.exponential` as the curve type for `+[NSExpression(MGLAdditions) mgl_expressionForInterpolatingExpression:withCurveType:parameters:stops:]` or `'exponential'` as the curve type for [`mgl_interpolate:withCurveType:parameters:stops:`](predicates-and-expressions.html#code-mgl_interpolate-withcurvetype-parameters-stops-code). The `parameters` argument takes that interpolation base. This interpolates between values exponentially, creating an accelerated ramp effect.
-
-Here’s a visualization from Mapbox Studio (see [Mapbox Studio and iOS](https://www.mapbox.com/ios-sdk/maps/overview/mapbox-studio/)) comparing interpolation base values of `1.5` and `0.5` based on zoom. In order to convert camera style functions, use `$zoomLevel` or `MGL_FUNCTION('zoomLevel')` as the attribute key.
-
-<img src="img/data-driven-styling/exponential-function.png" height=344/>
-<img src="img/data-driven-styling/exponential-function-1.png" height=344/>
-
-The example below increases a layer’s `circleRadius` exponentially based on a map’s zoom level. The interpolation base is `1.5`.
-
-Style function syntax:
-
-```swift
-let stops = [
- 12: MGLStyleValue<NSNumber>(rawValue: 0.5),
- 14: MGLStyleValue(rawValue: 2),
- 18: MGLStyleValue(rawValue: 18),
-]
-
-layer.circleRadius = MGLStyleValue(interpolationMode: .exponential,
- cameraStops: stops,
- options: [.interpolationBase: 1.5])
-```
-
-Current syntax:
-
-```swift
-let stops = [
- 12: 0.5,
- 14: 2,
- 18: 18,
-]
-
-layer.circleRadius = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.5, %@)",
- stops)
-```
-
-### Interval
-
-Steps, or intervals, create a range using the keys from the stops dictionary. The range is from the given key to just less than the next key. The attribute values that fall into that range are then styled using the layout or paint value assigned to that key. You can use the `+[NSExpression(MGLAdditions) mgl_expressionForSteppingExpression:fromExpression:stops:]` method or the custom function [`mgl_step:from:stops:`](predicates-and-expressions.html#code-mgl_step-from-stops-code) for cases where you previously used interval interpolation mode. The first parameter takes the feature attribute name and the second parameter (`from:`) optionally takes the default or fallback value for that function. The final parameter takes a stops dictionary as an argument.
-
-When we use the stops dictionary given above with an `'mgl_step:from:stops:'`, we create ranges where earthquakes with a magnitude of 0 to just less than 2.5 would be yellow, 2.5 to just less than 5 would be orange, and so on.
-
-Style function syntax:
-
-```swift
-let stops = [
- 0: MGLStyleValue<UIColor>(rawValue: .yellow),
- 2.5: MGLStyleValue(rawValue: .orange),
- 5: MGLStyleValue(rawValue: .red),
- 7.5: MGLStyleValue(rawValue: .blue),
- 10: MGLStyleValue(rawValue: .white),
-]
-
-layer.circleColor = MGLStyleValue(interpolationMode: .interval,
- sourceStops: stops,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .green)])
-````
-
-Current syntax:
-
-```swift
-let stops: [NSNumber: NSColor] = [
- 0: .yellow,
- 2.5: .orange,
- 5: .red,
- 7.5: .blue,
- 10: .white,
-]
-
-layer.circleColor = NSExpression(format: "mgl_step:from:stops:(mag, %@, %@)",
- NSColor.green, stops)
-```
-
-### Categorical
-
-Categorical interpolation mode took a stops dictionary. If the value for a specified feature attribute name matched one in that stops dictionary, the style value for that attribute value would be used. Categorical style functions can now be replaced with `MGL_MATCH`.
-
-`MGL_MATCH` takes an initial condition, which in this case is an attribute key. This is followed by possible matches for that key and the value to assign to the layer property if there is a match. The final argument can be a default style value that is to be used if none of the specified values match.
-
-There are three main types of events in the USGS dataset: earthquakes, explosions, and quarry blasts. In this case, the color of the circle layer will be determined by the type of event, with a default value of blue to catch any events that do not fall into any of those categories.
-
-Style function syntax:
-
-```swift
-let categoricalStops = [
- "earthquake": MGLStyleValue<UIColor>(rawValue: .orange),
- "explosion": MGLStyleValue(rawValue: .red),
- "quarry blast": MGLStyleValue(rawValue: .yellow),
-]
-
-layer.circleColor = MGLStyleValue(interpolationMode: .categorical,
- sourceStops: categoricalStops,
- attributeName: "type",
- options: [.defaultValue: MGLStyleValue<UIColor>(rawValue: .blue)])
-```
-
-Current syntax:
-```swift
-let defaultColor = NSColor.blue
-layer.circleColor = NSExpression(
-format: "MGL_MATCH(type, 'earthquake', %@, 'explosion', %@, 'quarry blast', %@, %@)",
- NSColor.orange, NSColor.red, NSColor.yellow, defaultColor)
-```
-
-If your use case does not require a default value, you can either apply a predicate to your layer prior to styling it, or use the format string `"valueForKeyPath:"`.
-
-### Identity
-
-Identity interpolation mode used the attribute’s value as the style layer property value. In this example, you might set the `circleRadius` to the earthquake’s magnitude. In order to use a feature attribute value to style a layer property, set the property value to `[NSExpression expressionForKeyPath:]`, which take the feature attribute name as an argument.
-
-Style function syntax:
-
-```swift
-layer.circleRadius = MGLStyleValue(interpolationMode: .identity,
- sourceStops: nil,
- attributeName: "mag",
- options: [.defaultValue: MGLStyleValue<NSNumber>(rawValue: 0)])
-```
-
-Current syntax:
-```swift
-layer.circleRadius = NSExpression(forKeyPath: "mag")
-```
-
-![identity mode](img/data-driven-styling/identity.png)
-
-Some built-in functions can be applied to attribute values to style layer property values. To set the circle radius to three times the earthquake’s magnitude, create a `multiply:by:` function that takes the attribute value and the multiplier as arguments, or use a format string.
-
-```swift
-layer.circleRadius = NSExpression(forFunction: "multiply:by:", arguments: [NSExpression(forKeyPath: "mag"), 3])
-```
-
-![multiply magnitude](img/data-driven-styling/multiply.png)
-
-You can also cast attribute values in order to use them. One example is to cast an integer as an `NSString` and use it as a text value.
-
-```swift
-let magnitudeLayer = MGLSymbolStyleLayer(identifier: "mag-layer", source: source)
-magnitudeLayer.text = NSExpression(format: "CAST(mag, 'NSString')")
-mapView.style?.addLayer(magnitudeLayer)
-```
-
-![cast a value](img/data-driven-styling/cast.png)
-
-### Constant Values
-
-For constant values that do not necessarily change based on camera or attribute values, use `[NSExpression expressionForConstantValue:]` (previously `[MGLStyleValue valueWithRawValue:]`).
-
-## Resources
-
-* [USGS Earthquake Feed](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php)
-* [For Style Authors](for-style-authors.html)
-* [Predicates and Expressions](predicates-and-expressions.html)
diff --git a/platform/macos/docs/guides/Tile URL Templates.md b/platform/macos/docs/guides/Tile URL Templates.md
deleted file mode 100644
index e71bcab0a4..0000000000
--- a/platform/macos/docs/guides/Tile URL Templates.md
+++ /dev/null
@@ -1,98 +0,0 @@
-<!--
- This file is generated.
- Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
--->
-# Tile URL Templates
-
-`MGLTileSource` objects, specifically `MGLRasterTileSource` and
-`MGLVectorTileSource` objects, can be created using an initializer that accepts
-an array of tile URL templates. Tile URL templates are strings that specify the
-URLs of the vector tiles or raster tile images to load. A template resembles an
-absolute URL, but with any number of placeholder strings that the source
-evaluates based on the tile it needs to load. For example:
-
-* `http://www.example.com/tiles/{z}/{x}/{y}.pbf` could be
- evaluated as `http://www.example.com/tiles/14/6/9.pbf`.
-* `http://www.example.com/tiles/{z}/{x}/{y}{ratio}.png` could be
- evaluated as `http://www.example.com/tiles/14/6/9@2x.png`.
-
-Tile URL templates are also used to define tilesets in TileJSON manifests or
-[`raster`](https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-raster-tiles)
-and
-[`vector`](https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-vector-tiles)
-sources in style JSON files. See the
-[TileJSON specification](https://github.com/mapbox/tilejson-spec/tree/master/2.2.0)
-for information about tile URL templates in the context of a TileJSON or style
-JSON file.
-
-Tile sources support the following placeholder strings in tile URL templates,
-all of which are optional:
-
-<table>
-<thead>
-<tr><th>Placeholder string</th><th>Description</th></tr>
-</thead>
-<tbody>
-<tr>
- <td><code>{x}</code></td>
- <td>The index of the tile along the map’s x axis according to Spherical
- Mercator projection. If the value is 0, the tile’s left edge corresponds
- to the 180th meridian west. If the value is 2<sup><var>z</var></sup>−1,
- the tile’s right edge corresponds to the 180th meridian east.</td>
-</tr>
-<tr>
- <td><code>{y}</code></td>
- <td>The index of the tile along the map’s y axis according to Spherical
- Mercator projection. If the value is 0, the tile’s tile edge corresponds
- to arctan(sinh(π)), or approximately 85.0511 degrees north. If the value
- is 2<sup><var>z</var></sup>−1, the tile’s bottom edge corresponds to
- −arctan(sinh(π)), or approximately 85.0511 degrees south. The y axis is
- inverted if the <code>options</code> parameter contains
- <code>MGLTileSourceOptionTileCoordinateSystem</code> with a value of
- <code>MGLTileCoordinateSystemTMS</code>.</td>
-</tr>
-<tr>
- <td><code>{z}</code></td>
- <td>The tile’s zoom level. At zoom level 0, each tile covers the entire
- world map; at zoom level 1, it covers ¼ of the world; at zoom level 2,
- <sup>1</sup>⁄<sub>16</sub> of the world, and so on. For tiles loaded by
- a <code>MGLRasterTileSource</code> object, whether the tile zoom level
- matches the map’s current zoom level depends on the value of the
- source’s tile size as specified in the
- <code>MGLTileSourceOptionTileSize</code> key of the <code>options</code>
- parameter.</td>
-</tr>
-<tr>
- <td><code>{bbox-epsg-3857}</code></td>
- <td>The tile’s bounding box, expressed as a comma-separated list of the
- tile’s western, southern, eastern, and northern extents according to
- Spherical Mercator (EPSG:3857) projection. The bounding box is typically
- used with map services conforming to the
- <a href="http://www.opengeospatial.org/standards/wms">Web Map Service</a>
- protocol.</td>
-</tr>
-<tr>
- <td><code>{quadkey}</code></td>
- <td>A quadkey indicating both the tile’s location and its zoom level. The
- quadkey is typically used with
- <a href="https://msdn.microsoft.com/en-us/library/bb259689.aspx">Bing Maps</a>.
- </td>
-</tr>
-<tr>
- <td><code>{ratio}</code></td>
- <td>A suffix indicating the resolution of the tile image. The suffix is the
- empty string for standard resolution displays and <code>@2x</code> for
- Retina displays.
- </td>
-</tr>
-<tr>
- <td><code>{prefix}</code></td>
- <td>Two hexadecimal digits chosen such that each visible tile has a
- different prefix. The prefix is typically used for domain sharding.</td>
-</tr>
-</tbody>
-</table>
-
-For more information about the `{x}`, `{y}`, and `{z}` placeholder strings,
-consult the
-[OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames).
diff --git a/platform/macos/docs/img/screenshot.jpg b/platform/macos/docs/img/screenshot.jpg
deleted file mode 100644
index 4af752b299..0000000000
--- a/platform/macos/docs/img/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/platform/macos/docs/pod-README.md b/platform/macos/docs/pod-README.md
deleted file mode 100644
index 6fd0926443..0000000000
--- a/platform/macos/docs/pod-README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# [Mapbox Maps SDK for macOS](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/macos/)
-
-Put interactive, scalable world maps into your native Cocoa application with the open-source Mapbox Maps SDK for macOS.
-
-* Mapbox-curated [map styles](https://www.mapbox.com/maps/) and [OpenStreetMap-based](https://www.mapbox.com/vector-tiles/mapbox-streets-v7/) [vector tiles](https://www.mapbox.com/vector-tiles/) make it easy to get started.
-* Customize every aspect of the map’s appearance in code or visually using [Mapbox Studio](https://www.mapbox.com/mapbox-studio/).
-* High-performance OpenGL rendering and multitouch gestures keep your users happy.
-* A well-designed, fully documented API helps you stay productive.
-* Develop across [multiple platforms](https://www.mapbox.com/maps/), including [iOS](https://docs.mapbox.com/ios/maps/), using the same styles and similar APIs.
-
-![](https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/macos/docs/img/screenshot.jpg)
-
-The Mapbox Maps SDK for macOS is compatible with macOS 10.11.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [Mapbox GL JS](https://www.mapbox.com/mapbox-gl-js/).
-
-## Installation
-
-There are three ways to install the Mapbox Maps SDK for macOS:
-
-### Manually
-
-1. Download the [latest Mapbox Maps SDK for macOS release](https://github.com/mapbox/mapbox-gl-native/releases/) from GitHub – look for a release that begins with “macos-”.
-
-1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish.
-
-### Via Carthage
-
-The Mapbox Maps SDK for macOS is a binary-only dependency, so you’ll need Carthage 0.19 or above. In your [Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#binary-only-frameworks), specify this dependency (plus an optional version requirement):
-
-```
-binary "https://mapbox.github.io/mapbox-gl-native/macos/Mapbox-macOS-SDK.json"
-```
-
-After running `carthage update`, you’ll find Mapbox.framework in the Carthage/Build/ folder. Follow [these instructions](https://github.com/Carthage/Carthage#if-youre-building-for-os-x) to integrate it into your project.
-
-### Via CocoaPods
-
-Create a [Podfile](https://guides.cocoapods.org/syntax/podfile.html) with the following specification:
-
-```rb
-platform :osx, '10.11'
-
-target 'TargetNameForYourApp' do
- pod 'Mapbox-macOS-SDK', '~> x.y'
-end
-```
-
-where _x.y_ is the current version. In Terminal, run `pod install`.
-
-## Usage
-
-Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target, then go to the Info tab. Under the “Custom macOS Application Target Properties” section, set `MGLMapboxAccessToken` to your access token. You can obtain an access token from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/).
-
-Then, in a storyboard or XIB:
-
-1. Add a view to your view controller or window. (Drag Custom View from the Object library to the View Controller scene on the Interface Builder canvas. In a XIB, drag it instead to the window on the canvas.)
-2. In the Identity inspector, set the view’s custom class to `MGLMapView`.
-3. MGLMapView needs to be layer-backed:
- * You can make the window layer-backed by selecting the window and checking Full Size Content View in the Attributes inspector. This allows the map view to underlap the title bar and toolbar.
- * Alternatively, if you don’t want the entire window to be layer-backed, you can make just the map view layer-backed by selecting it and checking its entry under the View Effects inspector’s Core Animation Layer section.
-4. Add a map feedback item to your Help menu. (Drag Menu Item from the Object library into Main Menu ‣ Help ‣ Menu.) Title it “Improve This Map” or similar, and connect it to the `giveFeedback:` action of First Responder.
-
-If you need to manipulate the map view programmatically:
-
-1. Switch to the Assistant Editor.
-1. Import the `Mapbox` module.
-1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this:
-
-```objc
-// ViewController.m
-@import Mapbox;
-
-@interface ViewController : NSViewController
-
-@property (strong) IBOutlet MGLMapView *mapView;
-
-@end
-```
-
-```swift
-// ViewController.swift
-import Mapbox
-
-class ViewController: NSViewController {
- @IBOutlet var mapView: MGLMapView!
-}
-```
-
-```applescript
--- AppDelegate.applescript
-script AppDelegate
- property parent : class "NSObject"
- property theMapView : missing value
-end script
-```
-
-Full API documentation is included in this package, within the `documentation` folder, and [online](https://mapbox.github.io/mapbox-gl-native/macos/). The [Mapbox Maps SDK for iOS](https://docs.mapbox.com/ios/maps/) has [API documentation](https://docs.mapbox.com/ios/api/maps/) and [online examples](https://docs.mapbox.com/ios/maps/examples/) that apply to the Mapbox Maps SDK for macOS with few differences, mostly around unimplemented features like user location tracking.
-
-Mapbox does not officially support the macOS SDK to the same extent as the iOS SDK; however, [bug reports and pull requests](https://github.com/mapbox/mapbox-gl-native/issues/) are certainly welcome.
diff --git a/platform/macos/jazzy.yml b/platform/macos/jazzy.yml
deleted file mode 100644
index 381e6f8b33..0000000000
--- a/platform/macos/jazzy.yml
+++ /dev/null
@@ -1,118 +0,0 @@
-module: Mapbox
-author: Mapbox
-author_url: https://www.mapbox.com/
-github_url: https://github.com/mapbox/mapbox-gl-native
-dash_url: https://mapbox.github.io/mapbox-gl-native/macos/docsets/Mapbox.xml
-copyright: '© 2014–2019 [Mapbox](https://www.mapbox.com/). See [license](https://github.com/mapbox/mapbox-gl-native/blob/master/LICENSE.md) for more details.'
-
-head: |
- <link rel='shortcut icon' href='https://www.mapbox.com/img/favicon.ico' type='image/x-icon' />
-
-objc: Yes
-skip_undocumented: Yes
-hide_documentation_coverage: Yes
-umbrella_header: src/Mapbox.h
-framework_root: ../darwin/src
-
-custom_categories:
- - name: Appendices
- children:
- - Working with GeoJSON Data
- - Predicates and Expressions
- - For Style Authors
- - Migrating to Expressions
- - Tile URL Templates
- - Info.plist Keys
- - name: Maps
- children:
- - MGLAccountManager
- - MGLMapCamera
- - MGLMapView
- - MGLMapViewDelegate
- - MGLMapSnapshot
- - MGLMapSnapshotOptions
- - MGLMapSnapshotter
- - name: Shapes and Annotations
- children:
- - MGLAnnotation
- - MGLAnnotationImage
- - MGLOverlay
- - MGLShape
- - MGLMultiPoint
- - MGLPointAnnotation
- - MGLPointCollection
- - MGLPolygon
- - MGLPolyline
- - MGLMultiPolygon
- - MGLMultiPolyline
- - MGLShapeCollection
- - name: Styling the Map
- children:
- - MGLStyle
- - MGLLight
- - name: Content Primitives
- children:
- - MGLFeature
- - MGLPointFeature
- - MGLPolygonFeature
- - MGLPolylineFeature
- - MGLMultiPolygonFeature
- - MGLMultiPolylineFeature
- - MGLPointCollectionFeature
- - MGLShapeCollectionFeature
- - name: Content Sources
- children:
- - MGLSource
- - MGLShapeSource
- - MGLComputedShapeSource
- - MGLTileSource
- - MGLRasterTileSource
- - MGLRasterDEMSource
- - MGLVectorTileSource
- - MGLImageSource
- - name: Style Layers
- children:
- - MGLStyleLayer
- - MGLForegroundStyleLayer
- - MGLBackgroundStyleLayer
- - MGLRasterStyleLayer
- - MGLVectorStyleLayer
- - MGLCircleStyleLayer
- - MGLFillStyleLayer
- - MGLFillExtrusionStyleLayer
- - MGLHeatmapStyleLayer
- - MGLHillshadeStyleLayer
- - MGLLineStyleLayer
- - MGLSymbolStyleLayer
- - name: Offline Maps
- children:
- - MGLOfflineRegion
- - MGLOfflineStorage
- - MGLOfflinePack
- - MGLOfflinePackProgress
- - MGLOfflinePackState
- - MGLTilePyramidOfflineRegion
- - MGLShapeOfflineRegion
- - name: Geometry
- children:
- - MGLCoordinateBounds
- - MGLCoordinateBoundsEqualToCoordinateBounds
- - MGLCoordinateBoundsGetCoordinateSpan
- - MGLCoordinateBoundsIntersectsCoordinateBounds
- - MGLCoordinateBoundsIsEmpty
- - MGLCoordinateBoundsMake
- - MGLCoordinateBoundsOffset
- - MGLCoordinateInCoordinateBounds
- - MGLCoordinateSpan
- - MGLCoordinateSpanEqualToCoordinateSpan
- - MGLCoordinateSpanMake
- - MGLCoordinateSpanZero
- - MGLDegreesFromRadians
- - MGLRadiansFromDegrees
- - MGLStringFromCoordinateBounds
- - name: Formatters
- children:
- - MGLClockDirectionFormatter
- - MGLCompassDirectionFormatter
- - MGLCoordinateFormatter
- - MGLDistanceFormatter
diff --git a/platform/macos/macos.cmake b/platform/macos/macos.cmake
index 61b6a33be9..3e23b8d5be 100644
--- a/platform/macos/macos.cmake
+++ b/platform/macos/macos.cmake
@@ -35,7 +35,6 @@ target_sources(
${PROJECT_SOURCE_DIR}/platform/darwin/src/native_apple_interface.m
${PROJECT_SOURCE_DIR}/platform/darwin/src/nsthread.mm
${PROJECT_SOURCE_DIR}/platform/darwin/src/number_format.mm
- ${PROJECT_SOURCE_DIR}/platform/darwin/src/reachability.m
${PROJECT_SOURCE_DIR}/platform/darwin/src/run_loop.cpp
${PROJECT_SOURCE_DIR}/platform/darwin/src/string_nsstring.mm
${PROJECT_SOURCE_DIR}/platform/darwin/src/timer.cpp
diff --git a/platform/macos/macos.xcodeproj/project.pbxproj b/platform/macos/macos.xcodeproj/project.pbxproj
deleted file mode 100644
index 7dcd72b47d..0000000000
--- a/platform/macos/macos.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,2332 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 0721493F1EE200E900085505 /* MGLImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 07A019EB1ED662D800ACD43E /* MGLImageSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 076171C5213A0DC200668A35 /* MGLMapViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 076171C4213A0DC200668A35 /* MGLMapViewTests.m */; };
- 07A019EF1ED665CD00ACD43E /* MGLImageSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07A019EC1ED662D800ACD43E /* MGLImageSource.mm */; };
- 07A240941F675674002C8210 /* MGLComputedShapeSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 07A240921F67566F002C8210 /* MGLComputedShapeSourceTests.m */; };
- 07BA4CAC1EE21887004528F5 /* MGLImageSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 07BA4CAB1EE21887004528F5 /* MGLImageSourceTests.m */; };
- 07D9474D1F67441B00E37934 /* MGLComputedShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D947471F6741F500E37934 /* MGLComputedShapeSource_Private.h */; };
- 07F8E2F71F674C8800F794BB /* MGLComputedShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F8E2F41F674C8000F794BB /* MGLComputedShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 07F8E2F81F674C9000F794BB /* MGLComputedShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07F8E2F51F674C8000F794BB /* MGLComputedShapeSource.mm */; };
- 170A82BF201BDD1B00943087 /* MGLHeatmapStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 170A82BE201BDD1B00943087 /* MGLHeatmapStyleLayerTests.mm */; };
- 170A82C4201FB6EC00943087 /* MGLHeatmapColorTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 170A82C2201FAFF800943087 /* MGLHeatmapColorTests.mm */; };
- 1753ED401E53CE6100A9FD90 /* MGLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1753ED3F1E53CE5200A9FD90 /* MGLConversion.h */; };
- 1F2B94C3221E22E600210640 /* MGLNetworkConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B94C2221E22E500210640 /* MGLNetworkConfiguration_Private.h */; };
- 1F7454A31ECFB00300021D39 /* MGLLight_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7454A01ECFB00300021D39 /* MGLLight_Private.h */; };
- 1F7454A41ECFB00300021D39 /* MGLLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7454A11ECFB00300021D39 /* MGLLight.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1F7454A51ECFB00300021D39 /* MGLLight.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F7454A21ECFB00300021D39 /* MGLLight.mm */; };
- 1F7454AB1ED1DDBD00021D39 /* MGLLightTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F7454AA1ED1DDBD00021D39 /* MGLLightTest.mm */; };
- 1F8A59FA21653483004DFE75 /* sideload_sat.db in Resources */ = {isa = PBXBuildFile; fileRef = 1F8A59F921653483004DFE75 /* sideload_sat.db */; };
- 1F8A5A04216D4696004DFE75 /* MGLLoggingConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F8A5A01216D4695004DFE75 /* MGLLoggingConfiguration_Private.h */; };
- 1F8A5A06216D4696004DFE75 /* MGLLoggingConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F8A5A03216D4696004DFE75 /* MGLLoggingConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1F95931B1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F95931A1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm */; };
- 1F9EF4061FBA1B0E0063FBB0 /* mapbox_helmet.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 1F9EF4051FBA1B0D0063FBB0 /* mapbox_helmet.pdf */; };
- 1FC481852098F323000D09B4 /* NSPredicate+MGLPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC481842098F323000D09B4 /* NSPredicate+MGLPrivateAdditions.h */; };
- 1FCCEC53222EF9FE00302E3B /* MGLSDKMetricsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCCEC50222EF9FC00302E3B /* MGLSDKMetricsManager.m */; };
- 1FCCEC54222EF9FE00302E3B /* MGLSDKMetricsManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCCEC51222EF9FD00302E3B /* MGLSDKMetricsManager_Private.h */; };
- 1FCCEC55222EF9FE00302E3B /* MGLSDKMetricsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCCEC52222EF9FE00302E3B /* MGLSDKMetricsManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1FF4858D2237235300F19727 /* MGLAttributedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF4858B2237235200F19727 /* MGLAttributedExpression.m */; };
- 1FF4858E2237235300F19727 /* MGLAttributedExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF4858C2237235200F19727 /* MGLAttributedExpression.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3508EC641D749D39009B0EE4 /* NSExpression+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3508EC621D749D39009B0EE4 /* NSExpression+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3508EC651D749D39009B0EE4 /* NSExpression+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3508EC631D749D39009B0EE4 /* NSExpression+MGLAdditions.mm */; };
- 3526EABD1DF9B19800006B43 /* MGLCodingTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3526EABC1DF9B19800006B43 /* MGLCodingTests.mm */; };
- 352742781D4C220900A1ECE6 /* MGLStyleValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 352742771D4C220900A1ECE6 /* MGLStyleValue.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 352742811D4C243B00A1ECE6 /* MGLSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3527427F1D4C243B00A1ECE6 /* MGLSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 352742821D4C243B00A1ECE6 /* MGLSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 352742801D4C243B00A1ECE6 /* MGLSource.mm */; };
- 352742851D4C244700A1ECE6 /* MGLRasterTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 352742831D4C244700A1ECE6 /* MGLRasterTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 352742861D4C244700A1ECE6 /* MGLRasterTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 352742841D4C244700A1ECE6 /* MGLRasterTileSource.mm */; };
- 352742891D4C245800A1ECE6 /* MGLShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 352742871D4C245800A1ECE6 /* MGLShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3527428A1D4C245800A1ECE6 /* MGLShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 352742881D4C245800A1ECE6 /* MGLShapeSource.mm */; };
- 3527428D1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3527428B1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3527428E1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3527428C1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.mm */; };
- 352742A11D4C25BD00A1ECE6 /* MGLStyleValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3527429E1D4C25BD00A1ECE6 /* MGLStyleValue.mm */; };
- 3529039B1D6C63B80002C7DF /* NSPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 352903991D6C63B80002C7DF /* NSPredicate+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3529039C1D6C63B80002C7DF /* NSPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3529039A1D6C63B80002C7DF /* NSPredicate+MGLAdditions.mm */; };
- 3537CA741D3F93A600380318 /* MGLStyle_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3537CA731D3F93A600380318 /* MGLStyle_Private.h */; };
- 3538AA231D542685008EC33D /* MGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3538AA211D542685008EC33D /* MGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3538AA241D542685008EC33D /* MGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3538AA221D542685008EC33D /* MGLStyleLayer.mm */; };
- 353BAEF81D6463B8009A8DA9 /* amsterdam.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 358EB3AE1D61F0DB00E46D9C /* amsterdam.geojson */; };
- 355BA4ED1D41633E00CCC6D5 /* NSColor+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 355BA4EB1D41633E00CCC6D5 /* NSColor+MGLAdditions.h */; };
- 355BA4EE1D41633E00CCC6D5 /* NSColor+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 355BA4EC1D41633E00CCC6D5 /* NSColor+MGLAdditions.mm */; };
- 35602BFA1D3EA99F0050646F /* MGLFillStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35602BF81D3EA99F0050646F /* MGLFillStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35602BFB1D3EA99F0050646F /* MGLFillStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35602BF91D3EA99F0050646F /* MGLFillStyleLayer.mm */; };
- 35602BFF1D3EA9B40050646F /* MGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35602BFC1D3EA9B40050646F /* MGLStyleLayer_Private.h */; };
- 35602C001D3EA9B40050646F /* MGLForegroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35602BFD1D3EA9B40050646F /* MGLForegroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35602C011D3EA9B40050646F /* MGLForegroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35602BFE1D3EA9B40050646F /* MGLForegroundStyleLayer.mm */; };
- 35724FC41D630502002A4AB4 /* amsterdam.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 358EB3AE1D61F0DB00E46D9C /* amsterdam.geojson */; };
- 359819591E02F611008FC139 /* NSCoder+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 359819571E02F611008FC139 /* NSCoder+MGLAdditions.h */; };
- 3598195A1E02F611008FC139 /* NSCoder+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 359819581E02F611008FC139 /* NSCoder+MGLAdditions.mm */; };
- 35C5D8471D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35C5D8431D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.h */; };
- 35C5D8481D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35C5D8441D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.mm */; };
- 35C5D8491D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35C5D8451D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.h */; };
- 35C5D84A1D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35C5D8461D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.mm */; };
- 35C6DF841E214C0400ACA483 /* MGLDistanceFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 35C6DF821E214C0400ACA483 /* MGLDistanceFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 35C6DF851E214C0400ACA483 /* MGLDistanceFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 35C6DF831E214C0400ACA483 /* MGLDistanceFormatter.m */; };
- 35C6DF871E214C1800ACA483 /* MGLDistanceFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 35C6DF861E214C1800ACA483 /* MGLDistanceFormatterTests.m */; };
- 35D65C5A1D65AD5500722C23 /* NSDate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D65C581D65AD5500722C23 /* NSDate+MGLAdditions.h */; };
- 35D65C5B1D65AD5500722C23 /* NSDate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D65C591D65AD5500722C23 /* NSDate+MGLAdditions.mm */; };
- 3E6465D9206576A900685536 /* LimeGreenStyleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6465D7206576A800685536 /* LimeGreenStyleLayer.m */; };
- 3EA9317388DC9A0BF46B7674 /* MGLRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9369A4C46957566058822 /* MGLRendererConfiguration.h */; };
- 3EA93BA38DBB4B814B6C1FCC /* MGLRendererConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3EA93B1B0864609938506E12 /* MGLRendererConfiguration.mm */; };
- 4031ACFC1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4031ACFB1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift */; };
- 4031AD031E9FD6AA00A3EA26 /* MGLSDKTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4031AD011E9FD6A300A3EA26 /* MGLSDKTestHelpers.swift */; };
- 4049C2A51DB6CE7F00B3F799 /* MGLPointCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C2A11DB6CE7800B3F799 /* MGLPointCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4049C2AD1DB8020600B3F799 /* MGLPointCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4049C2A71DB6D09B00B3F799 /* MGLPointCollection.mm */; };
- 408AA85B1DAEECFE00022900 /* MGLShape_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 408AA85A1DAEECF100022900 /* MGLShape_Private.h */; };
- 408AA8671DAEEE3900022900 /* NSDictionary+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 408AA85F1DAEED3300022900 /* NSDictionary+MGLAdditions.h */; };
- 408AA86A1DAEEE5D00022900 /* NSDictionary+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 408AA85E1DAEED3300022900 /* NSDictionary+MGLAdditions.mm */; };
- 40ABDB561DB0022100372083 /* NSImage+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 405C03971DB0004E001AC280 /* NSImage+MGLAdditions.mm */; };
- 40B77E451DB11BC9003DA2FE /* NSArray+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 40B77E431DB11BB0003DA2FE /* NSArray+MGLAdditions.h */; };
- 40B77E461DB11BCD003DA2FE /* NSArray+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 40B77E421DB11BB0003DA2FE /* NSArray+MGLAdditions.mm */; };
- 40E1601D1DF217D6005EA6D9 /* MGLStyleLayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 40E1601B1DF216E6005EA6D9 /* MGLStyleLayerTests.m */; };
- 52B5D17F1E5E26DF00BBCB48 /* libmbgl-loop-darwin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5548BE7B1D0ACBBD005DDE81 /* libmbgl-loop-darwin.a */; };
- 52B5D1801E5E26DF00BBCB48 /* libmbgl-loop-darwin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5548BE7B1D0ACBBD005DDE81 /* libmbgl-loop-darwin.a */; };
- 55335DF9212EC542000CE5F8 /* NSImage+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 405C03961DB0004E001AC280 /* NSImage+MGLAdditions.h */; };
- 5548BE781D09E718005DDE81 /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE6C3451CC31D1200DB3429 /* libmbgl-core.a */; };
- 556660C61E1BEA0100E2C41B /* MGLFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 556660C51E1BEA0100E2C41B /* MGLFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 556660D61E1D07E400E2C41B /* MGLVersionNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 556660D51E1D07E400E2C41B /* MGLVersionNumber.m */; };
- 558DE7A61E56161C00C7916D /* MGLFoundation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 558DE7A41E56161C00C7916D /* MGLFoundation_Private.h */; };
- 558DE7A71E56161C00C7916D /* MGLFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE7A51E56161C00C7916D /* MGLFoundation.mm */; };
- 5591AC6A2298361600FF9ADF /* MGLMapView+Impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5591AC682298361600FF9ADF /* MGLMapView+Impl.h */; };
- 5591AC6B2298361600FF9ADF /* MGLMapView+Impl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5591AC692298361600FF9ADF /* MGLMapView+Impl.mm */; };
- 55CAF6322294407F00F17770 /* MGLMapView+OpenGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 55CAF6312294407F00F17770 /* MGLMapView+OpenGL.h */; };
- 55CAF6342294409B00F17770 /* MGLMapView+OpenGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55CAF6332294409B00F17770 /* MGLMapView+OpenGL.mm */; };
- 55CF7533213EDADF00ED86C4 /* libmbgl-vendor-icu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CF7532213EDADF00ED86C4 /* libmbgl-vendor-icu.a */; };
- 55D120A31F7906E6004B6D81 /* libmbgl-filesource.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */; };
- 55D120A51F790A0C004B6D81 /* libmbgl-filesource.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */; };
- 55E2AD111E5B0A6900E8C587 /* MGLOfflineStorageTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55E2AD101E5B0A6900E8C587 /* MGLOfflineStorageTests.mm */; };
- 747ABE59219B2BDB00523B67 /* MGLFillExtrusionStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE54219B2BDA00523B67 /* MGLFillExtrusionStyleLayer_Private.h */; };
- 747ABE5A219B2BDB00523B67 /* MGLCircleStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE55219B2BDA00523B67 /* MGLCircleStyleLayer_Private.h */; };
- 747ABE5B219B2BDB00523B67 /* MGLBackgroundStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE56219B2BDB00523B67 /* MGLBackgroundStyleLayer_Private.h */; };
- 747ABE5C219B2BDB00523B67 /* MGLFillStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE57219B2BDB00523B67 /* MGLFillStyleLayer_Private.h */; };
- 747ABE5D219B2BDB00523B67 /* MGLHeatmapStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE58219B2BDB00523B67 /* MGLHeatmapStyleLayer_Private.h */; };
- 747ABE5F219B2BED00523B67 /* MGLHillshadeStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE5E219B2BED00523B67 /* MGLHillshadeStyleLayer_Private.h */; };
- 747ABE61219B2C0000523B67 /* MGLLineStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE60219B2C0000523B67 /* MGLLineStyleLayer_Private.h */; };
- 747ABE64219B2C1800523B67 /* MGLOpenGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE62219B2C1700523B67 /* MGLOpenGLStyleLayer_Private.h */; };
- 747ABE65219B2C1800523B67 /* MGLRasterStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE63219B2C1700523B67 /* MGLRasterStyleLayer_Private.h */; };
- 747ABE67219B2C3200523B67 /* MGLSymbolStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 747ABE66219B2C3200523B67 /* MGLSymbolStyleLayer_Private.h */; };
- 749EC8912199CCB9005608D7 /* MGLStyleLayerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 749EC88F2199CCB8005608D7 /* MGLStyleLayerManager.h */; };
- 749EC8932199CCB9005608D7 /* MGLStyleLayerManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 749EC8902199CCB9005608D7 /* MGLStyleLayerManager.mm */; };
- 89462399200D199100DA8EF2 /* heatmap.json in Resources */ = {isa = PBXBuildFile; fileRef = 89462398200D199100DA8EF2 /* heatmap.json */; };
- 8946239D200E744800DA8EF2 /* MGLHeatmapStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8946239A200E73CA00DA8EF2 /* MGLHeatmapStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 894623A0200E748000DA8EF2 /* MGLHeatmapStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8946239B200E73CA00DA8EF2 /* MGLHeatmapStyleLayer.mm */; };
- 92092EF01F5EB10E00AF5130 /* MGLMapSnapshotter.h in Headers */ = {isa = PBXBuildFile; fileRef = 92092EEE1F5EB10E00AF5130 /* MGLMapSnapshotter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 92092EF11F5EB10E00AF5130 /* MGLMapSnapshotter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92092EEF1F5EB10E00AF5130 /* MGLMapSnapshotter.mm */; };
- 920A3E591E6F859D00C16EFC /* MGLSourceQueryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 920A3E581E6F859D00C16EFC /* MGLSourceQueryTests.m */; };
- 9221BAAF20699CBB0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9221BAAE20699CBA0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h */; };
- 9250B8C32073C69100EF338C /* MGLShapeOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = 9250B8C22073C69000EF338C /* MGLShapeOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 92F2C3EB1F0E3A1900268EC0 /* MGLRendererFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F2C3EA1F0E3A1900268EC0 /* MGLRendererFrontend.h */; };
- 92FC0AE4207CC8DA007B6B54 /* MGLShapeOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE3207CC8DA007B6B54 /* MGLShapeOfflineRegion_Private.h */; };
- 92FC0AE6207CDD8D007B6B54 /* MGLShapeOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92FC0AE5207CDD8D007B6B54 /* MGLShapeOfflineRegion.mm */; };
- 9654C12B1FFC38E000DB6A19 /* MGLPolyline_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C12A1FFC38E000DB6A19 /* MGLPolyline_Private.h */; };
- 9654C12D1FFC394700DB6A19 /* MGLPolygon_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C12C1FFC394700DB6A19 /* MGLPolygon_Private.h */; };
- 96E027311E57C9A7004B8E66 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 96E027331E57C9A7004B8E66 /* Localizable.strings */; };
- CA0B3C072329F7E700E4B493 /* MGLTestAssertionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = CA0B3C052329F7E600E4B493 /* MGLTestAssertionHandler.m */; };
- CA0B3C092329FB4800E4B493 /* MGLOfflinePackTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA0B3C082329FB4800E4B493 /* MGLOfflinePackTests.mm */; };
- CA4045C7216720D700B356E1 /* MGLCluster.h in Headers */ = {isa = PBXBuildFile; fileRef = CA4045C4216720D700B356E1 /* MGLCluster.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CA8FBC0D21A4A74300D1203C /* MGLRendererConfigurationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA8FBC0C21A4A74300D1203C /* MGLRendererConfigurationTests.mm */; };
- CA9461A620884CCB0015EB12 /* MGLAnnotationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA9461A520884CCB0015EB12 /* MGLAnnotationTests.m */; };
- CAD9D0AC22A88A32001B25EE /* MGLResourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CAD9D0AB22A88A32001B25EE /* MGLResourceTests.mm */; };
- CF762DEF22DC7EFF00338472 /* MGLLoggingConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = CF762DEE22DC7EFF00338472 /* MGLLoggingConfiguration.mm */; };
- CFF9F98D23A2505700B0DE92 /* MGLNetworkIntegrationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CFF9F98B23A2505700B0DE92 /* MGLNetworkIntegrationManager.m */; };
- CFF9F98E23A2505700B0DE92 /* MGLNetworkIntegrationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF9F98C23A2505700B0DE92 /* MGLNetworkIntegrationManager.h */; };
- DA00FC8A1D5EEAC3009AABC8 /* MGLAttributionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA00FC881D5EEAC3009AABC8 /* MGLAttributionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA00FC8B1D5EEAC3009AABC8 /* MGLAttributionInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA00FC891D5EEAC3009AABC8 /* MGLAttributionInfo.mm */; };
- DA0CD58E1CF56F5800A5F5A5 /* MGLFeatureTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA0CD58D1CF56F5800A5F5A5 /* MGLFeatureTests.mm */; };
- DA2784FE1DF03060001D5B8D /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA2784FD1DF03060001D5B8D /* Media.xcassets */; };
- DA29875A1E1A4290002299F5 /* MGLDocumentationExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA2987591E1A4290002299F5 /* MGLDocumentationExampleTests.swift */; };
- DA35A2A41CC9EB1A00E826B2 /* MGLCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2A31CC9EB1A00E826B2 /* MGLCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2A61CC9EB2700E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A51CC9EB2700E826B2 /* MGLCoordinateFormatter.m */; };
- DA35A2A81CC9F41600E826B2 /* MGLCoordinateFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A71CC9F41600E826B2 /* MGLCoordinateFormatterTests.m */; };
- DA35A2AD1CCA091800E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AB1CCA091800E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2AE1CCA091800E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2AC1CCA091800E826B2 /* MGLCompassDirectionFormatter.m */; };
- DA35A2B61CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B51CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m */; };
- DA35A2BF1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BD1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2C01CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2BE1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m */; };
- DA35A2C21CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C11CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m */; };
- DA35A2CF1CCAAED300E826B2 /* NSValue+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2CD1CCAAED300E826B2 /* NSValue+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2D01CCAAED300E826B2 /* NSValue+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2CE1CCAAED300E826B2 /* NSValue+MGLAdditions.m */; };
- DA35D08A1E1A631B007DED41 /* one-liner.json in Resources */ = {isa = PBXBuildFile; fileRef = DA35D0891E1A631B007DED41 /* one-liner.json */; };
- DA551B821DB496AC0009AFAF /* MGLTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DA551B7F1DB496AC0009AFAF /* MGLTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA551B831DB496AC0009AFAF /* MGLTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA551B801DB496AC0009AFAF /* MGLTileSource_Private.h */; };
- DA551B841DB496AC0009AFAF /* MGLTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA551B811DB496AC0009AFAF /* MGLTileSource.mm */; };
- DA5589771D320C41006B7F64 /* wms.json in Resources */ = {isa = PBXBuildFile; fileRef = DA5589761D320C41006B7F64 /* wms.json */; };
- DA57D4B11EBC699800793288 /* MGLDocumentationGuideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA57D4B01EBC699800793288 /* MGLDocumentationGuideTests.swift */; };
- DA6408D71DA4E5DA00908C90 /* MGLVectorStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6408D51DA4E5DA00908C90 /* MGLVectorStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA6408D81DA4E5DA00908C90 /* MGLVectorStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA6408D61DA4E5DA00908C90 /* MGLVectorStyleLayer.mm */; };
- DA695424215B1E6C002041A4 /* MGLMapCameraTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA695423215B1E6C002041A4 /* MGLMapCameraTests.m */; };
- DA7262071DEEDD460043BB89 /* MGLOpenGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7262051DEEDD460043BB89 /* MGLOpenGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA7262081DEEDD460043BB89 /* MGLOpenGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA7262061DEEDD460043BB89 /* MGLOpenGLStyleLayer.mm */; };
- DA7DC9811DED5F5C0027472F /* MGLVectorTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7DC9801DED5F5C0027472F /* MGLVectorTileSource_Private.h */; };
- DA7DC9831DED647F0027472F /* MGLRasterTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7DC9821DED647F0027472F /* MGLRasterTileSource_Private.h */; };
- DA839E971CC2E3400062CAFB /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA839E961CC2E3400062CAFB /* AppDelegate.m */; };
- DA839E9A1CC2E3400062CAFB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA839E991CC2E3400062CAFB /* main.m */; };
- DA839E9D1CC2E3400062CAFB /* MapDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = DA839E9C1CC2E3400062CAFB /* MapDocument.m */; };
- DA839EA01CC2E3400062CAFB /* MapDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA839E9E1CC2E3400062CAFB /* MapDocument.xib */; };
- DA839EA21CC2E3400062CAFB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA839EA11CC2E3400062CAFB /* Assets.xcassets */; };
- DA839EA51CC2E3400062CAFB /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA839EA31CC2E3400062CAFB /* MainMenu.xib */; };
- DA87A9981DC9D88400810D09 /* MGLShapeSourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA87A9961DC9D88400810D09 /* MGLShapeSourceTests.mm */; };
- DA87A9991DC9D88400810D09 /* MGLTileSetTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA87A9971DC9D88400810D09 /* MGLTileSetTests.mm */; };
- DA87A99C1DC9D8DD00810D09 /* MGLShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA87A99B1DC9D8DD00810D09 /* MGLShapeSource_Private.h */; };
- DA87A99E1DC9DC2100810D09 /* MGLPredicateTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35C5D84B1D6DD75B00E95907 /* MGLPredicateTests.mm */; };
- DA87A9A01DC9DC6200810D09 /* MGLValueEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = DA87A99F1DC9DC6200810D09 /* MGLValueEvaluator.h */; };
- DA87A9A21DC9DCF100810D09 /* MGLFillStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25741D51C5F40010E6B5 /* MGLFillStyleLayerTests.mm */; };
- DA87A9A31DCACC5000810D09 /* MGLRasterStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25751D51C5F40010E6B5 /* MGLRasterStyleLayerTests.mm */; };
- DA87A9A41DCACC5000810D09 /* MGLSymbolStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25761D51C5F40010E6B5 /* MGLSymbolStyleLayerTests.mm */; };
- DA87A9A51DCACC5000810D09 /* MGLLineStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25771D51C5F40010E6B5 /* MGLLineStyleLayerTests.mm */; };
- DA87A9A61DCACC5000810D09 /* MGLCircleStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25781D51C5F40010E6B5 /* MGLCircleStyleLayerTests.mm */; };
- DA87A9A71DCACC5000810D09 /* MGLBackgroundStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25791D51C5F40010E6B5 /* MGLBackgroundStyleLayerTests.mm */; };
- DA8933A51CCD287300E68420 /* MGLAnnotationCallout.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA8933A71CCD287300E68420 /* MGLAnnotationCallout.xib */; };
- DA8933AE1CCD290700E68420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933AB1CCD290700E68420 /* Localizable.strings */; };
- DA8933B51CCD2C2500E68420 /* Foundation.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933B31CCD2C2500E68420 /* Foundation.strings */; };
- DA8933B81CCD2C2D00E68420 /* Foundation.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DA8933B61CCD2C2D00E68420 /* Foundation.stringsdict */; };
- DA8F25871D51C9E10010E6B5 /* MGLBackgroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25851D51C9E10010E6B5 /* MGLBackgroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8F25881D51C9E10010E6B5 /* MGLBackgroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25861D51C9E10010E6B5 /* MGLBackgroundStyleLayer.mm */; };
- DA8F258B1D51CA540010E6B5 /* MGLLineStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25891D51CA540010E6B5 /* MGLLineStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8F258C1D51CA540010E6B5 /* MGLLineStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F258A1D51CA540010E6B5 /* MGLLineStyleLayer.mm */; };
- DA8F258F1D51CA600010E6B5 /* MGLRasterStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F258D1D51CA600010E6B5 /* MGLRasterStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8F25901D51CA600010E6B5 /* MGLRasterStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F258E1D51CA600010E6B5 /* MGLRasterStyleLayer.mm */; };
- DA8F25931D51CA750010E6B5 /* MGLSymbolStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25911D51CA750010E6B5 /* MGLSymbolStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8F25941D51CA750010E6B5 /* MGLSymbolStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25921D51CA750010E6B5 /* MGLSymbolStyleLayer.mm */; };
- DA8F25971D51CAC70010E6B5 /* MGLVectorTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25951D51CAC70010E6B5 /* MGLVectorTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA8F25981D51CAC70010E6B5 /* MGLVectorTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25961D51CAC70010E6B5 /* MGLVectorTileSource.mm */; };
- DA8F259A1D51CAD00010E6B5 /* MGLSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25991D51CAD00010E6B5 /* MGLSource_Private.h */; };
- DA8F259C1D51CB000010E6B5 /* MGLStyleValue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F259B1D51CB000010E6B5 /* MGLStyleValue_Private.h */; };
- DA8F25B21D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25A61D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h */; };
- DA8F25B31D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25A71D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm */; };
- DAA48EFD1D6A4731006A7E36 /* StyleLayerIconTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */; };
- DAA998FB1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAA998F91E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAA998FC1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAA998FA1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm */; };
- DAA999011E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAA999001E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm */; };
- DAC25FCA200FD5E2009BE98E /* NSExpression+MGLPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC25FC9200FD5E2009BE98E /* NSExpression+MGLPrivateAdditions.h */; };
- DAC2ABC51CC6D343006D18C4 /* MGLAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */; };
- DACA8622201920BE00E9693A /* MGLRasterDEMSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA8620201920BE00E9693A /* MGLRasterDEMSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DACA8623201920BE00E9693A /* MGLRasterDEMSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACA8621201920BE00E9693A /* MGLRasterDEMSource.mm */; };
- DACB0C391E18DFFD005DDBEA /* MGLStyle+MBXAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DACB0C381E18DFFD005DDBEA /* MGLStyle+MBXAdditions.m */; };
- DACC22141CF3D3E200D220D9 /* MGLFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DACC22121CF3D3E200D220D9 /* MGLFeature.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DACC22151CF3D3E200D220D9 /* MGLFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACC22131CF3D3E200D220D9 /* MGLFeature.mm */; };
- DACC22181CF3D4F700D220D9 /* MGLFeature_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DACC22171CF3D4F700D220D9 /* MGLFeature_Private.h */; };
- DAD165741CF4CD7A001FF4B9 /* MGLShapeCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165721CF4CD7A001FF4B9 /* MGLShapeCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAD165751CF4CD7A001FF4B9 /* MGLShapeCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD165731CF4CD7A001FF4B9 /* MGLShapeCollection.mm */; };
- DAE0DD7A1D5F015A005A6BB1 /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE6C3451CC31D1200DB3429 /* libmbgl-core.a */; };
- DAE6C2E21CC304F900DB3429 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = DAE6C2E11CC304F900DB3429 /* Credits.rtf */; };
- DAE6C2ED1CC3050F00DB3429 /* DroppedPinAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C2E41CC3050F00DB3429 /* DroppedPinAnnotation.m */; };
- DAE6C2EE1CC3050F00DB3429 /* LocationCoordinate2DTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C2E61CC3050F00DB3429 /* LocationCoordinate2DTransformer.m */; };
- DAE6C2F01CC3050F00DB3429 /* OfflinePackNameValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C2EA1CC3050F00DB3429 /* OfflinePackNameValueTransformer.m */; };
- DAE6C2F11CC3050F00DB3429 /* TimeIntervalTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C2EC1CC3050F00DB3429 /* TimeIntervalTransformer.m */; };
- DAE6C3321CC30DB200DB3429 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE6C3281CC30DB200DB3429 /* Mapbox.framework */; };
- DAE6C33D1CC30DB200DB3429 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE6C3281CC30DB200DB3429 /* Mapbox.framework */; };
- DAE6C33E1CC30DB200DB3429 /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DAE6C3281CC30DB200DB3429 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- DAE6C35A1CC31E0400DB3429 /* MGLAccountManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C34A1CC31E0400DB3429 /* MGLAccountManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C35B1CC31E0400DB3429 /* MGLAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C34B1CC31E0400DB3429 /* MGLAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C35C1CC31E0400DB3429 /* MGLGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C34C1CC31E0400DB3429 /* MGLGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C35D1CC31E0400DB3429 /* MGLMapCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C34D1CC31E0400DB3429 /* MGLMapCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C35E1CC31E0400DB3429 /* MGLMultiPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C34E1CC31E0400DB3429 /* MGLMultiPoint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C35F1CC31E0400DB3429 /* MGLOfflinePack.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C34F1CC31E0400DB3429 /* MGLOfflinePack.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3601CC31E0400DB3429 /* MGLOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3501CC31E0400DB3429 /* MGLOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3611CC31E0400DB3429 /* MGLOfflineStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3511CC31E0400DB3429 /* MGLOfflineStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3621CC31E0400DB3429 /* MGLOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3521CC31E0400DB3429 /* MGLOverlay.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3631CC31E0400DB3429 /* MGLPointAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3531CC31E0400DB3429 /* MGLPointAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3641CC31E0400DB3429 /* MGLPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3541CC31E0400DB3429 /* MGLPolygon.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3651CC31E0400DB3429 /* MGLPolyline.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3551CC31E0400DB3429 /* MGLPolyline.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3661CC31E0400DB3429 /* MGLShape.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3561CC31E0400DB3429 /* MGLShape.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3671CC31E0400DB3429 /* MGLStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3571CC31E0400DB3429 /* MGLStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3681CC31E0400DB3429 /* MGLTilePyramidOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3581CC31E0400DB3429 /* MGLTilePyramidOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3691CC31E0400DB3429 /* MGLTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3591CC31E0400DB3429 /* MGLTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3841CC31E2A00DB3429 /* MGLAccountManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C36A1CC31E2A00DB3429 /* MGLAccountManager_Private.h */; };
- DAE6C3851CC31E2A00DB3429 /* MGLAccountManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C36B1CC31E2A00DB3429 /* MGLAccountManager.m */; };
- DAE6C3861CC31E2A00DB3429 /* MGLGeometry_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C36C1CC31E2A00DB3429 /* MGLGeometry_Private.h */; };
- DAE6C3871CC31E2A00DB3429 /* MGLGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C36D1CC31E2A00DB3429 /* MGLGeometry.mm */; };
- DAE6C3881CC31E2A00DB3429 /* MGLMapCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C36E1CC31E2A00DB3429 /* MGLMapCamera.mm */; };
- DAE6C3891CC31E2A00DB3429 /* MGLMultiPoint_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C36F1CC31E2A00DB3429 /* MGLMultiPoint_Private.h */; };
- DAE6C38A1CC31E2A00DB3429 /* MGLMultiPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3701CC31E2A00DB3429 /* MGLMultiPoint.mm */; };
- DAE6C38B1CC31E2A00DB3429 /* MGLOfflinePack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3711CC31E2A00DB3429 /* MGLOfflinePack_Private.h */; };
- DAE6C38C1CC31E2A00DB3429 /* MGLOfflinePack.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3721CC31E2A00DB3429 /* MGLOfflinePack.mm */; };
- DAE6C38D1CC31E2A00DB3429 /* MGLOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3731CC31E2A00DB3429 /* MGLOfflineRegion_Private.h */; };
- DAE6C38E1CC31E2A00DB3429 /* MGLOfflineStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3741CC31E2A00DB3429 /* MGLOfflineStorage_Private.h */; };
- DAE6C38F1CC31E2A00DB3429 /* MGLOfflineStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3751CC31E2A00DB3429 /* MGLOfflineStorage.mm */; };
- DAE6C3901CC31E2A00DB3429 /* MGLPointAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3761CC31E2A00DB3429 /* MGLPointAnnotation.mm */; };
- DAE6C3911CC31E2A00DB3429 /* MGLPolygon.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3771CC31E2A00DB3429 /* MGLPolygon.mm */; };
- DAE6C3921CC31E2A00DB3429 /* MGLPolyline.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3781CC31E2A00DB3429 /* MGLPolyline.mm */; };
- DAE6C3931CC31E2A00DB3429 /* MGLShape.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3791CC31E2A00DB3429 /* MGLShape.mm */; };
- DAE6C3941CC31E2A00DB3429 /* MGLStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C37A1CC31E2A00DB3429 /* MGLStyle.mm */; };
- DAE6C3951CC31E2A00DB3429 /* MGLTilePyramidOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C37B1CC31E2A00DB3429 /* MGLTilePyramidOfflineRegion.mm */; };
- DAE6C3961CC31E2A00DB3429 /* MGLTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C37C1CC31E2A00DB3429 /* MGLTypes.m */; };
- DAE6C3971CC31E2A00DB3429 /* NSBundle+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C37D1CC31E2A00DB3429 /* NSBundle+MGLAdditions.h */; };
- DAE6C3981CC31E2A00DB3429 /* NSBundle+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C37E1CC31E2A00DB3429 /* NSBundle+MGLAdditions.m */; };
- DAE6C3991CC31E2A00DB3429 /* NSException+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C37F1CC31E2A00DB3429 /* NSException+MGLAdditions.h */; };
- DAE6C39A1CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3801CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.h */; };
- DAE6C39B1CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3811CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.m */; };
- DAE6C39C1CC31E2A00DB3429 /* NSString+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3821CC31E2A00DB3429 /* NSString+MGLAdditions.h */; };
- DAE6C39D1CC31E2A00DB3429 /* NSString+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3831CC31E2A00DB3429 /* NSString+MGLAdditions.m */; };
- DAE6C3A31CC31E9400DB3429 /* MGLAnnotationImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C39F1CC31E9400DB3429 /* MGLAnnotationImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3A41CC31E9400DB3429 /* MGLMapView.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3A01CC31E9400DB3429 /* MGLMapView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3A51CC31E9400DB3429 /* MGLMapView+IBAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3A11CC31E9400DB3429 /* MGLMapView+IBAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3A61CC31E9400DB3429 /* MGLMapViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3A21CC31E9400DB3429 /* MGLMapViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3B11CC31EF300DB3429 /* MGLAnnotationImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3A71CC31EF300DB3429 /* MGLAnnotationImage.m */; };
- DAE6C3B21CC31EF300DB3429 /* MGLAttributionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3A81CC31EF300DB3429 /* MGLAttributionButton.h */; };
- DAE6C3B31CC31EF300DB3429 /* MGLAttributionButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3A91CC31EF300DB3429 /* MGLAttributionButton.mm */; };
- DAE6C3B41CC31EF300DB3429 /* MGLCompassCell.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3AA1CC31EF300DB3429 /* MGLCompassCell.h */; };
- DAE6C3B51CC31EF300DB3429 /* MGLCompassCell.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3AB1CC31EF300DB3429 /* MGLCompassCell.m */; };
- DAE6C3B61CC31EF300DB3429 /* MGLMapView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3AC1CC31EF300DB3429 /* MGLMapView_Private.h */; };
- DAE6C3B71CC31EF300DB3429 /* MGLMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3AD1CC31EF300DB3429 /* MGLMapView.mm */; };
- DAE6C3B81CC31EF300DB3429 /* MGLMapView+IBAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3AE1CC31EF300DB3429 /* MGLMapView+IBAdditions.mm */; };
- DAE6C3B91CC31EF300DB3429 /* MGLOpenGLLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3AF1CC31EF300DB3429 /* MGLOpenGLLayer.h */; };
- DAE6C3BA1CC31EF300DB3429 /* MGLOpenGLLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3B01CC31EF300DB3429 /* MGLOpenGLLayer.mm */; };
- DAE6C3BE1CC31F2E00DB3429 /* default_marker.pdf in Resources */ = {isa = PBXBuildFile; fileRef = DAE6C3BB1CC31F2E00DB3429 /* default_marker.pdf */; };
- DAE6C3BF1CC31F2E00DB3429 /* mapbox.pdf in Resources */ = {isa = PBXBuildFile; fileRef = DAE6C3BC1CC31F2E00DB3429 /* mapbox.pdf */; };
- DAE6C3C21CC31F4500DB3429 /* Mapbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE6C3C11CC31F4500DB3429 /* Mapbox.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAE6C3D21CC34C9900DB3429 /* MGLGeometryTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3C81CC34BD800DB3429 /* MGLGeometryTests.mm */; };
- DAE6C3D41CC34C9900DB3429 /* MGLOfflineRegionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3CA1CC34BD800DB3429 /* MGLOfflineRegionTests.m */; };
- DAE6C3D61CC34C9900DB3429 /* MGLStyleTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAE6C3CC1CC34BD800DB3429 /* MGLStyleTests.mm */; };
- DAE7DEC41E24549F007505A6 /* MGLNSStringAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE7DEC31E24549F007505A6 /* MGLNSStringAdditionsTests.m */; };
- DAED385F1D62CED700D7640F /* NSURL+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAED385D1D62CED700D7640F /* NSURL+MGLAdditions.h */; };
- DAED38601D62CED700D7640F /* NSURL+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAED385E1D62CED700D7640F /* NSURL+MGLAdditions.m */; };
- DAEDC4321D6033F1000224FF /* MGLAttributionInfoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEDC4311D6033F1000224FF /* MGLAttributionInfoTests.m */; };
- DAEDC4371D606291000224FF /* MGLAttributionButtonTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEDC4361D606291000224FF /* MGLAttributionButtonTests.m */; };
- DAF0D80E1DFE0E5D00B28378 /* MGLPointCollection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D80D1DFE0E5D00B28378 /* MGLPointCollection_Private.h */; };
- DAF0D8161DFE6B1800B28378 /* MGLAttributionInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8151DFE6B1800B28378 /* MGLAttributionInfo_Private.h */; };
- DAF25715201901C200367EF5 /* MGLHillshadeStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF25713201901C100367EF5 /* MGLHillshadeStyleLayer.mm */; };
- DAF25716201901C200367EF5 /* MGLHillshadeStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF25714201901C200367EF5 /* MGLHillshadeStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAF25721201902C100367EF5 /* MGLHillshadeStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF2571D201902A500367EF5 /* MGLHillshadeStyleLayerTests.mm */; };
- DD0902B21DB1AC6400C5BDCE /* MGLNetworkConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = DD0902AF1DB1AC6400C5BDCE /* MGLNetworkConfiguration.m */; };
- DD0902B31DB1AC6400C5BDCE /* MGLNetworkConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0902B01DB1AC6400C5BDCE /* MGLNetworkConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DD58A4C91D822C6700E1F038 /* MGLExpressionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD58A4C71D822C6200E1F038 /* MGLExpressionTests.mm */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- DAE6C3331CC30DB200DB3429 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA839E8A1CC2E3400062CAFB /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = DAE6C3271CC30DB200DB3429;
- remoteInfo = dynamic;
- };
- DAE6C33B1CC30DB200DB3429 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DA839E8A1CC2E3400062CAFB /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = DAE6C3271CC30DB200DB3429;
- remoteInfo = dynamic;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- DAE6C3221CC30B3C00DB3429 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- DAE6C33E1CC30DB200DB3429 /* Mapbox.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 076171C4213A0DC200668A35 /* MGLMapViewTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLMapViewTests.m; path = ../../darwin/test/MGLMapViewTests.m; sourceTree = "<group>"; };
- 07A019EB1ED662D800ACD43E /* MGLImageSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLImageSource.h; sourceTree = "<group>"; };
- 07A019EC1ED662D800ACD43E /* MGLImageSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLImageSource.mm; sourceTree = "<group>"; };
- 07A240921F67566F002C8210 /* MGLComputedShapeSourceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLComputedShapeSourceTests.m; sourceTree = "<group>"; };
- 07BA4CAB1EE21887004528F5 /* MGLImageSourceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLImageSourceTests.m; sourceTree = "<group>"; };
- 07D947471F6741F500E37934 /* MGLComputedShapeSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLComputedShapeSource_Private.h; sourceTree = "<group>"; };
- 07F8E2F41F674C8000F794BB /* MGLComputedShapeSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLComputedShapeSource.h; sourceTree = "<group>"; };
- 07F8E2F51F674C8000F794BB /* MGLComputedShapeSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLComputedShapeSource.mm; sourceTree = "<group>"; };
- 170A82BE201BDD1B00943087 /* MGLHeatmapStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLHeatmapStyleLayerTests.mm; sourceTree = "<group>"; };
- 170A82C2201FAFF800943087 /* MGLHeatmapColorTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLHeatmapColorTests.mm; sourceTree = "<group>"; };
- 1753ED3F1E53CE5200A9FD90 /* MGLConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLConversion.h; sourceTree = "<group>"; };
- 1F2B94C2221E22E500210640 /* MGLNetworkConfiguration_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLNetworkConfiguration_Private.h; sourceTree = "<group>"; };
- 1F7454A01ECFB00300021D39 /* MGLLight_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLight_Private.h; sourceTree = "<group>"; };
- 1F7454A11ECFB00300021D39 /* MGLLight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLight.h; sourceTree = "<group>"; };
- 1F7454A21ECFB00300021D39 /* MGLLight.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLight.mm; sourceTree = "<group>"; };
- 1F7454AA1ED1DDBD00021D39 /* MGLLightTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLightTest.mm; sourceTree = "<group>"; };
- 1F8A59F921653483004DFE75 /* sideload_sat.db */ = {isa = PBXFileReference; lastKnownFileType = file; name = sideload_sat.db; path = ../../../test/fixtures/offline_database/sideload_sat.db; sourceTree = "<group>"; };
- 1F8A5A01216D4695004DFE75 /* MGLLoggingConfiguration_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLoggingConfiguration_Private.h; sourceTree = "<group>"; };
- 1F8A5A03216D4696004DFE75 /* MGLLoggingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLoggingConfiguration.h; sourceTree = "<group>"; };
- 1F95931A1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLNSDateAdditionsTests.mm; path = ../../darwin/test/MGLNSDateAdditionsTests.mm; sourceTree = "<group>"; };
- 1F9EF4051FBA1B0D0063FBB0 /* mapbox_helmet.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = mapbox_helmet.pdf; sourceTree = "<group>"; };
- 1FC481842098F323000D09B4 /* NSPredicate+MGLPrivateAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+MGLPrivateAdditions.h"; sourceTree = "<group>"; };
- 1FCCEC50222EF9FC00302E3B /* MGLSDKMetricsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLSDKMetricsManager.m; sourceTree = "<group>"; };
- 1FCCEC51222EF9FD00302E3B /* MGLSDKMetricsManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSDKMetricsManager_Private.h; sourceTree = "<group>"; };
- 1FCCEC52222EF9FE00302E3B /* MGLSDKMetricsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSDKMetricsManager.h; sourceTree = "<group>"; };
- 1FDB00CC21F8F1FD00D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
- 1FDB00CD21F8F1FF00D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
- 1FF4858B2237235200F19727 /* MGLAttributedExpression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAttributedExpression.m; sourceTree = "<group>"; };
- 1FF4858C2237235200F19727 /* MGLAttributedExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAttributedExpression.h; sourceTree = "<group>"; };
- 3508EC621D749D39009B0EE4 /* NSExpression+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSExpression+MGLAdditions.h"; sourceTree = "<group>"; };
- 3508EC631D749D39009B0EE4 /* NSExpression+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSExpression+MGLAdditions.mm"; sourceTree = "<group>"; };
- 3526EABC1DF9B19800006B43 /* MGLCodingTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLCodingTests.mm; path = ../../darwin/test/MGLCodingTests.mm; sourceTree = "<group>"; };
- 352742771D4C220900A1ECE6 /* MGLStyleValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleValue.h; sourceTree = "<group>"; };
- 3527427F1D4C243B00A1ECE6 /* MGLSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSource.h; sourceTree = "<group>"; };
- 352742801D4C243B00A1ECE6 /* MGLSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLSource.mm; sourceTree = "<group>"; };
- 352742831D4C244700A1ECE6 /* MGLRasterTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterTileSource.h; sourceTree = "<group>"; };
- 352742841D4C244700A1ECE6 /* MGLRasterTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRasterTileSource.mm; sourceTree = "<group>"; };
- 352742871D4C245800A1ECE6 /* MGLShapeSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeSource.h; sourceTree = "<group>"; };
- 352742881D4C245800A1ECE6 /* MGLShapeSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShapeSource.mm; sourceTree = "<group>"; };
- 3527428B1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCircleStyleLayer.h; sourceTree = "<group>"; };
- 3527428C1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLCircleStyleLayer.mm; sourceTree = "<group>"; };
- 3527429E1D4C25BD00A1ECE6 /* MGLStyleValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyleValue.mm; sourceTree = "<group>"; };
- 352903991D6C63B80002C7DF /* NSPredicate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+MGLAdditions.h"; sourceTree = "<group>"; };
- 3529039A1D6C63B80002C7DF /* NSPredicate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSPredicate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 3537CA731D3F93A600380318 /* MGLStyle_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyle_Private.h; sourceTree = "<group>"; };
- 3538AA211D542685008EC33D /* MGLStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayer.h; sourceTree = "<group>"; };
- 3538AA221D542685008EC33D /* MGLStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyleLayer.mm; sourceTree = "<group>"; };
- 355BA4EB1D41633E00CCC6D5 /* NSColor+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSColor+MGLAdditions.h"; sourceTree = "<group>"; };
- 355BA4EC1D41633E00CCC6D5 /* NSColor+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSColor+MGLAdditions.mm"; sourceTree = "<group>"; };
- 35602BF81D3EA99F0050646F /* MGLFillStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillStyleLayer.h; sourceTree = "<group>"; };
- 35602BF91D3EA99F0050646F /* MGLFillStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillStyleLayer.mm; sourceTree = "<group>"; };
- 35602BFC1D3EA9B40050646F /* MGLStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayer_Private.h; sourceTree = "<group>"; };
- 35602BFD1D3EA9B40050646F /* MGLForegroundStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLForegroundStyleLayer.h; sourceTree = "<group>"; };
- 35602BFE1D3EA9B40050646F /* MGLForegroundStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLForegroundStyleLayer.mm; sourceTree = "<group>"; };
- 358EB3AE1D61F0DB00E46D9C /* amsterdam.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = amsterdam.geojson; path = ../../darwin/test/amsterdam.geojson; sourceTree = "<group>"; };
- 359819571E02F611008FC139 /* NSCoder+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSCoder+MGLAdditions.h"; sourceTree = "<group>"; };
- 359819581E02F611008FC139 /* NSCoder+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSCoder+MGLAdditions.mm"; sourceTree = "<group>"; };
- 35C5D8431D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSComparisonPredicate+MGLAdditions.h"; sourceTree = "<group>"; };
- 35C5D8441D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSComparisonPredicate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 35C5D8451D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSCompoundPredicate+MGLAdditions.h"; sourceTree = "<group>"; };
- 35C5D8461D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSCompoundPredicate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 35C5D84B1D6DD75B00E95907 /* MGLPredicateTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLPredicateTests.mm; path = ../../darwin/test/MGLPredicateTests.mm; sourceTree = "<group>"; };
- 35C6DF821E214C0400ACA483 /* MGLDistanceFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLDistanceFormatter.h; sourceTree = "<group>"; };
- 35C6DF831E214C0400ACA483 /* MGLDistanceFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLDistanceFormatter.m; sourceTree = "<group>"; };
- 35C6DF861E214C1800ACA483 /* MGLDistanceFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLDistanceFormatterTests.m; path = ../../darwin/test/MGLDistanceFormatterTests.m; sourceTree = "<group>"; };
- 35D65C581D65AD5500722C23 /* NSDate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+MGLAdditions.h"; sourceTree = "<group>"; };
- 35D65C591D65AD5500722C23 /* NSDate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSDate+MGLAdditions.mm"; sourceTree = "<group>"; };
- 3E6465D7206576A800685536 /* LimeGreenStyleLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LimeGreenStyleLayer.m; path = ../../darwin/app/LimeGreenStyleLayer.m; sourceTree = "<group>"; };
- 3E6465D8206576A900685536 /* LimeGreenStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LimeGreenStyleLayer.h; path = ../../darwin/app/LimeGreenStyleLayer.h; sourceTree = "<group>"; };
- 3EA9369A4C46957566058822 /* MGLRendererConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRendererConfiguration.h; sourceTree = "<group>"; };
- 3EA93B1B0864609938506E12 /* MGLRendererConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRendererConfiguration.mm; sourceTree = "<group>"; };
- 4031ACFB1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MGLMapViewDelegateIntegrationTests.swift; sourceTree = "<group>"; };
- 4031AD011E9FD6A300A3EA26 /* MGLSDKTestHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MGLSDKTestHelpers.swift; path = ../../darwin/test/MGLSDKTestHelpers.swift; sourceTree = "<group>"; };
- 4049C2A11DB6CE7800B3F799 /* MGLPointCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointCollection.h; sourceTree = "<group>"; };
- 4049C2A71DB6D09B00B3F799 /* MGLPointCollection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPointCollection.mm; sourceTree = "<group>"; };
- 405C03961DB0004E001AC280 /* NSImage+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+MGLAdditions.h"; sourceTree = "<group>"; };
- 405C03971DB0004E001AC280 /* NSImage+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSImage+MGLAdditions.mm"; sourceTree = "<group>"; };
- 408AA85A1DAEECF100022900 /* MGLShape_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShape_Private.h; sourceTree = "<group>"; };
- 408AA85E1DAEED3300022900 /* NSDictionary+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSDictionary+MGLAdditions.mm"; sourceTree = "<group>"; };
- 408AA85F1DAEED3300022900 /* NSDictionary+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+MGLAdditions.h"; sourceTree = "<group>"; };
- 40B77E421DB11BB0003DA2FE /* NSArray+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSArray+MGLAdditions.mm"; sourceTree = "<group>"; };
- 40B77E431DB11BB0003DA2FE /* NSArray+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+MGLAdditions.h"; sourceTree = "<group>"; };
- 40E1601A1DF216E6005EA6D9 /* MGLStyleLayerTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayerTests.h; sourceTree = "<group>"; };
- 40E1601B1DF216E6005EA6D9 /* MGLStyleLayerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLStyleLayerTests.m; sourceTree = "<group>"; };
- 52BECB091CC5A26F009CD791 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
- 5548BE7B1D0ACBBD005DDE81 /* libmbgl-loop-darwin.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libmbgl-loop-darwin.a"; path = "cmake/Debug/libmbgl-loop-darwin.a"; sourceTree = "<group>"; };
- 556660C51E1BEA0100E2C41B /* MGLFoundation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLFoundation.h; sourceTree = "<group>"; };
- 556660D51E1D07E400E2C41B /* MGLVersionNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLVersionNumber.m; path = ../../darwin/test/MGLVersionNumber.m; sourceTree = "<group>"; };
- 558DE7A41E56161C00C7916D /* MGLFoundation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFoundation_Private.h; sourceTree = "<group>"; };
- 558DE7A51E56161C00C7916D /* MGLFoundation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFoundation.mm; sourceTree = "<group>"; };
- 5591AC682298361600FF9ADF /* MGLMapView+Impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+Impl.h"; sourceTree = "<group>"; };
- 5591AC692298361600FF9ADF /* MGLMapView+Impl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MGLMapView+Impl.mm"; sourceTree = "<group>"; };
- 55CAF6312294407F00F17770 /* MGLMapView+OpenGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+OpenGL.h"; sourceTree = "<group>"; };
- 55CAF6332294409B00F17770 /* MGLMapView+OpenGL.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "MGLMapView+OpenGL.mm"; sourceTree = "<group>"; };
- 55CF7532213EDADF00ED86C4 /* libmbgl-vendor-icu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-vendor-icu.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-filesource.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 55D9B4B01D005D3900C1CCE2 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
- 55E2AD101E5B0A6900E8C587 /* MGLOfflineStorageTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLOfflineStorageTests.mm; path = ../../darwin/test/MGLOfflineStorageTests.mm; sourceTree = "<group>"; };
- 55FE0E8D1D100A0900FD240B /* config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = config.xcconfig; path = ../../build/macos/config.xcconfig; sourceTree = "<group>"; };
- 747ABE54219B2BDA00523B67 /* MGLFillExtrusionStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillExtrusionStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE55219B2BDA00523B67 /* MGLCircleStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCircleStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE56219B2BDB00523B67 /* MGLBackgroundStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLBackgroundStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE57219B2BDB00523B67 /* MGLFillStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE58219B2BDB00523B67 /* MGLHeatmapStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHeatmapStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE5E219B2BED00523B67 /* MGLHillshadeStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHillshadeStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE60219B2C0000523B67 /* MGLLineStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLineStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE62219B2C1700523B67 /* MGLOpenGLStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOpenGLStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE63219B2C1700523B67 /* MGLRasterStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterStyleLayer_Private.h; sourceTree = "<group>"; };
- 747ABE66219B2C3200523B67 /* MGLSymbolStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSymbolStyleLayer_Private.h; sourceTree = "<group>"; };
- 749EC88F2199CCB8005608D7 /* MGLStyleLayerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayerManager.h; sourceTree = "<group>"; };
- 749EC8902199CCB9005608D7 /* MGLStyleLayerManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyleLayerManager.mm; sourceTree = "<group>"; };
- 89462398200D199100DA8EF2 /* heatmap.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = heatmap.json; sourceTree = "<group>"; };
- 8946239A200E73CA00DA8EF2 /* MGLHeatmapStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHeatmapStyleLayer.h; sourceTree = "<group>"; };
- 8946239B200E73CA00DA8EF2 /* MGLHeatmapStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLHeatmapStyleLayer.mm; sourceTree = "<group>"; };
- 92092EEE1F5EB10E00AF5130 /* MGLMapSnapshotter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapSnapshotter.h; sourceTree = "<group>"; };
- 92092EEF1F5EB10E00AF5130 /* MGLMapSnapshotter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapSnapshotter.mm; sourceTree = "<group>"; };
- 920A3E581E6F859D00C16EFC /* MGLSourceQueryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLSourceQueryTests.m; sourceTree = "<group>"; };
- 9221BAAE20699CBA0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTilePyramidOfflineRegion_Private.h; sourceTree = "<group>"; };
- 9250B8C22073C69000EF338C /* MGLShapeOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeOfflineRegion.h; sourceTree = "<group>"; };
- 92F2C3EA1F0E3A1900268EC0 /* MGLRendererFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRendererFrontend.h; sourceTree = "<group>"; };
- 92FC0AE3207CC8DA007B6B54 /* MGLShapeOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeOfflineRegion_Private.h; sourceTree = "<group>"; };
- 92FC0AE5207CDD8D007B6B54 /* MGLShapeOfflineRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShapeOfflineRegion.mm; sourceTree = "<group>"; };
- 9654C12A1FFC38E000DB6A19 /* MGLPolyline_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolyline_Private.h; sourceTree = "<group>"; };
- 9654C12C1FFC394700DB6A19 /* MGLPolygon_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolygon_Private.h; sourceTree = "<group>"; };
- 966091701E5BBFF700A9A03B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
- 966091711E5BBFF900A9A03B /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
- 966091721E5BBFFA00A9A03B /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = "<group>"; };
- 966091731E5BBFFA00A9A03B /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027321E57C9A7004B8E66 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027341E57C9A9004B8E66 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
- 96E027351E57C9AB004B8E66 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
- 96E027361E57C9AC004B8E66 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027371E57C9B5004B8E66 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027381E57C9B7004B8E66 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E027391E57C9B9004B8E66 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E0273A1E57C9BB004B8E66 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
- 96E0273B1E57C9BC004B8E66 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
- CA0B3C042329F7E600E4B493 /* MGLTestAssertionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLTestAssertionHandler.h; path = ../../darwin/test/MGLTestAssertionHandler.h; sourceTree = "<group>"; };
- CA0B3C052329F7E600E4B493 /* MGLTestAssertionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLTestAssertionHandler.m; path = ../../darwin/test/MGLTestAssertionHandler.m; sourceTree = "<group>"; };
- CA0B3C082329FB4800E4B493 /* MGLOfflinePackTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLOfflinePackTests.mm; path = ../../darwin/test/MGLOfflinePackTests.mm; sourceTree = "<group>"; };
- CA4045C4216720D700B356E1 /* MGLCluster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCluster.h; sourceTree = "<group>"; };
- CA8FBC0C21A4A74300D1203C /* MGLRendererConfigurationTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLRendererConfigurationTests.mm; path = ../../darwin/test/MGLRendererConfigurationTests.mm; sourceTree = "<group>"; };
- CA9461A520884CCB0015EB12 /* MGLAnnotationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLAnnotationTests.m; path = test/MGLAnnotationTests.m; sourceTree = SOURCE_ROOT; };
- CAD9D0AB22A88A32001B25EE /* MGLResourceTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLResourceTests.mm; path = ../../darwin/test/MGLResourceTests.mm; sourceTree = "<group>"; };
- CF762DEE22DC7EFF00338472 /* MGLLoggingConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLoggingConfiguration.mm; sourceTree = "<group>"; };
- CFF9F98B23A2505700B0DE92 /* MGLNetworkIntegrationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLNetworkIntegrationManager.m; path = ../../darwin/src/MGLNetworkIntegrationManager.m; sourceTree = "<group>"; };
- CFF9F98C23A2505700B0DE92 /* MGLNetworkIntegrationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLNetworkIntegrationManager.h; path = ../../darwin/src/MGLNetworkIntegrationManager.h; sourceTree = "<group>"; };
- DA00FC881D5EEAC3009AABC8 /* MGLAttributionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAttributionInfo.h; sourceTree = "<group>"; };
- DA00FC891D5EEAC3009AABC8 /* MGLAttributionInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLAttributionInfo.mm; sourceTree = "<group>"; };
- DA0CD58D1CF56F5800A5F5A5 /* MGLFeatureTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLFeatureTests.mm; path = ../../darwin/test/MGLFeatureTests.mm; sourceTree = "<group>"; };
- DA1AC01E1E5B8826006DF1D6 /* lt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA1AC01F1E5B8904006DF1D6 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA2207BA1DC076930002F84D /* test-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "test-Bridging-Header.h"; sourceTree = "<group>"; };
- DA2784FD1DF03060001D5B8D /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Media.xcassets; path = ../../darwin/test/Media.xcassets; sourceTree = "<group>"; };
- DA2987591E1A4290002299F5 /* MGLDocumentationExampleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MGLDocumentationExampleTests.swift; path = ../../darwin/test/MGLDocumentationExampleTests.swift; sourceTree = "<group>"; };
- DA3389601FA3EAC4001EA329 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Foundation.strings"; sourceTree = "<group>"; };
- DA3389611FA3EDCE001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA3389621FA3EDEF001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA3389631FA3EDF5001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = bg; path = bg.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA3389641FA3EE00001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA33896C1FA3EF51001EA329 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = hu; path = hu.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA35A2A31CC9EB1A00E826B2 /* MGLCoordinateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCoordinateFormatter.h; sourceTree = "<group>"; };
- DA35A2A51CC9EB2700E826B2 /* MGLCoordinateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCoordinateFormatter.m; sourceTree = "<group>"; };
- DA35A2A71CC9F41600E826B2 /* MGLCoordinateFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCoordinateFormatterTests.m; path = ../../darwin/test/MGLCoordinateFormatterTests.m; sourceTree = "<group>"; };
- DA35A2AB1CCA091800E826B2 /* MGLCompassDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCompassDirectionFormatter.h; sourceTree = "<group>"; };
- DA35A2AC1CCA091800E826B2 /* MGLCompassDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCompassDirectionFormatter.m; sourceTree = "<group>"; };
- DA35A2B51CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCompassDirectionFormatterTests.m; path = ../../darwin/test/MGLCompassDirectionFormatterTests.m; sourceTree = "<group>"; };
- DA35A2BD1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLClockDirectionFormatter.h; sourceTree = "<group>"; };
- DA35A2BE1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLClockDirectionFormatter.m; sourceTree = "<group>"; };
- DA35A2C11CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLClockDirectionFormatterTests.m; path = ../../darwin/test/MGLClockDirectionFormatterTests.m; sourceTree = "<group>"; };
- DA35A2CD1CCAAED300E826B2 /* NSValue+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+MGLAdditions.h"; sourceTree = "<group>"; };
- DA35A2CE1CCAAED300E826B2 /* NSValue+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValue+MGLAdditions.m"; sourceTree = "<group>"; };
- DA35D0891E1A631B007DED41 /* one-liner.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "one-liner.json"; path = "../../darwin/test/one-liner.json"; sourceTree = "<group>"; };
- DA551B7F1DB496AC0009AFAF /* MGLTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTileSource.h; sourceTree = "<group>"; };
- DA551B801DB496AC0009AFAF /* MGLTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTileSource_Private.h; sourceTree = "<group>"; };
- DA551B811DB496AC0009AFAF /* MGLTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLTileSource.mm; sourceTree = "<group>"; };
- DA5589761D320C41006B7F64 /* wms.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = wms.json; sourceTree = "<group>"; };
- DA57D4B01EBC699800793288 /* MGLDocumentationGuideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MGLDocumentationGuideTests.swift; path = ../../darwin/test/MGLDocumentationGuideTests.swift; sourceTree = "<group>"; };
- DA6023EF1E4CE8E500DBFF23 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA6023F01E4CE8FF00DBFF23 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA618B131E68850300CB7F44 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA618B141E68852C00CB7F44 /* ru */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA618B151E6886DF00CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ca; path = ca.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA618B161E6886E000CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA618B171E68876C00CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA618B181E6887C600CB7F44 /* ca */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA618B231E6891ED00CB7F44 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA618B241E6891F300CB7F44 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = lt; path = lt.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA618B271E68926E00CB7F44 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA618B2A1E6892B500CB7F44 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA6408D51DA4E5DA00908C90 /* MGLVectorStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLVectorStyleLayer.h; sourceTree = "<group>"; };
- DA6408D61DA4E5DA00908C90 /* MGLVectorStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLVectorStyleLayer.mm; sourceTree = "<group>"; };
- DA695423215B1E6C002041A4 /* MGLMapCameraTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLMapCameraTests.m; path = ../../darwin/test/MGLMapCameraTests.m; sourceTree = "<group>"; };
- DA704CBA1F6372E8004B3F28 /* ru */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA704CBE1F637531004B3F28 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA704CBF1F637548004B3F28 /* hu */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA704CC61F666385004B3F28 /* uk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA7262051DEEDD460043BB89 /* MGLOpenGLStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOpenGLStyleLayer.h; sourceTree = "<group>"; };
- DA7262061DEEDD460043BB89 /* MGLOpenGLStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOpenGLStyleLayer.mm; sourceTree = "<group>"; };
- DA737ADE1E5914AD00AD2CDE /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA737ADF1E5914D300AD2CDE /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA737AE31E5915A500AD2CDE /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = pl; path = pl.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA737AE41E5915B000AD2CDE /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA737AEC1E59180E00AD2CDE /* uk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA7DC9801DED5F5C0027472F /* MGLVectorTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLVectorTileSource_Private.h; sourceTree = "<group>"; };
- DA7DC9821DED647F0027472F /* MGLRasterTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterTileSource_Private.h; sourceTree = "<group>"; };
- DA80E95D1FE84A300065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA80E95F1FE84A540065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA839E921CC2E3400062CAFB /* Mapbox GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mapbox GL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- DA839E951CC2E3400062CAFB /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
- DA839E961CC2E3400062CAFB /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
- DA839E991CC2E3400062CAFB /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- DA839E9B1CC2E3400062CAFB /* MapDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MapDocument.h; sourceTree = "<group>"; };
- DA839E9C1CC2E3400062CAFB /* MapDocument.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MapDocument.m; sourceTree = "<group>"; };
- DA839E9F1CC2E3400062CAFB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MapDocument.xib; sourceTree = "<group>"; };
- DA839EA11CC2E3400062CAFB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
- DA839EA41CC2E3400062CAFB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
- DA839EA61CC2E3400062CAFB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- DA87A9961DC9D88400810D09 /* MGLShapeSourceTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShapeSourceTests.mm; sourceTree = "<group>"; };
- DA87A9971DC9D88400810D09 /* MGLTileSetTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLTileSetTests.mm; sourceTree = "<group>"; };
- DA87A99B1DC9D8DD00810D09 /* MGLShapeSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeSource_Private.h; sourceTree = "<group>"; };
- DA87A99F1DC9DC6200810D09 /* MGLValueEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLValueEvaluator.h; sourceTree = "<group>"; };
- DA88520F1E0A4D0D009D7AD6 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DA8852101E0A4D3A009D7AD6 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Foundation.strings"; sourceTree = "<group>"; };
- DA8933A61CCD287300E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MGLAnnotationCallout.xib; sourceTree = "<group>"; };
- DA8933AC1CCD290700E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA8933B41CCD2C2500E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Foundation.strings; sourceTree = "<group>"; };
- DA8933B71CCD2C2D00E68420 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DA8F25741D51C5F40010E6B5 /* MGLFillStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillStyleLayerTests.mm; sourceTree = "<group>"; };
- DA8F25751D51C5F40010E6B5 /* MGLRasterStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRasterStyleLayerTests.mm; sourceTree = "<group>"; };
- DA8F25761D51C5F40010E6B5 /* MGLSymbolStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLSymbolStyleLayerTests.mm; sourceTree = "<group>"; };
- DA8F25771D51C5F40010E6B5 /* MGLLineStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLineStyleLayerTests.mm; sourceTree = "<group>"; };
- DA8F25781D51C5F40010E6B5 /* MGLCircleStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLCircleStyleLayerTests.mm; sourceTree = "<group>"; };
- DA8F25791D51C5F40010E6B5 /* MGLBackgroundStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLBackgroundStyleLayerTests.mm; sourceTree = "<group>"; };
- DA8F25851D51C9E10010E6B5 /* MGLBackgroundStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLBackgroundStyleLayer.h; sourceTree = "<group>"; };
- DA8F25861D51C9E10010E6B5 /* MGLBackgroundStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLBackgroundStyleLayer.mm; sourceTree = "<group>"; };
- DA8F25891D51CA540010E6B5 /* MGLLineStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLineStyleLayer.h; sourceTree = "<group>"; };
- DA8F258A1D51CA540010E6B5 /* MGLLineStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLineStyleLayer.mm; sourceTree = "<group>"; };
- DA8F258D1D51CA600010E6B5 /* MGLRasterStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterStyleLayer.h; sourceTree = "<group>"; };
- DA8F258E1D51CA600010E6B5 /* MGLRasterStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRasterStyleLayer.mm; sourceTree = "<group>"; };
- DA8F25911D51CA750010E6B5 /* MGLSymbolStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSymbolStyleLayer.h; sourceTree = "<group>"; };
- DA8F25921D51CA750010E6B5 /* MGLSymbolStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLSymbolStyleLayer.mm; sourceTree = "<group>"; };
- DA8F25951D51CAC70010E6B5 /* MGLVectorTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLVectorTileSource.h; sourceTree = "<group>"; };
- DA8F25961D51CAC70010E6B5 /* MGLVectorTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLVectorTileSource.mm; sourceTree = "<group>"; };
- DA8F25991D51CAD00010E6B5 /* MGLSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLSource_Private.h; sourceTree = "<group>"; };
- DA8F259B1D51CB000010E6B5 /* MGLStyleValue_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleValue_Private.h; sourceTree = "<group>"; };
- DA8F25A61D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+MGLStyleAttributeAdditions.h"; sourceTree = "<group>"; };
- DA8F25A71D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSValue+MGLStyleAttributeAdditions.mm"; sourceTree = "<group>"; };
- DA8F25B51D51D2240010E6B5 /* MGLStyleLayerTests.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; name = MGLStyleLayerTests.mm.ejs; path = ../test/MGLStyleLayerTests.mm.ejs; sourceTree = "<group>"; };
- DA8F25B61D51D2240010E6B5 /* MGLStyleLayer.h.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.h.ejs; sourceTree = "<group>"; };
- DA8F25B71D51D2240010E6B5 /* MGLStyleLayer.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.mm.ejs; sourceTree = "<group>"; };
- DA934097208562590059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DA934098208562870059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-PT"; path = "pt-PT.lproj/Foundation.stringsdict"; sourceTree = "<group>"; };
- DA9340992085629E0059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DA9340A0208565870059919A /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
- DA9C01301E4C7B9300C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-BR"; path = "pt-BR.lproj/Foundation.stringsdict"; sourceTree = "<group>"; };
- DA9C01311E4C7B9F00C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DAA32CA61E4C4849006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CA71E4C486D006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAA32CA81E4C48B9006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAA32CAE1E4C4B03006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAA32CAF1E4C4B0D006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CB21E4C4CB7006F8D24 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAA32CB31E4C4CC3006F8D24 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CBA1E4C4F10006F8D24 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA32CC01E4C4F89006F8D24 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAA32CC11E4C4F93006F8D24 /* vi */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAA48EFB1D6A4731006A7E36 /* StyleLayerIconTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleLayerIconTransformer.h; sourceTree = "<group>"; };
- DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StyleLayerIconTransformer.m; sourceTree = "<group>"; };
- DAA998F91E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillExtrusionStyleLayer.h; sourceTree = "<group>"; };
- DAA998FA1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillExtrusionStyleLayer.mm; sourceTree = "<group>"; };
- DAA999001E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillExtrusionStyleLayerTests.mm; sourceTree = "<group>"; };
- DAC25FC9200FD5E2009BE98E /* NSExpression+MGLPrivateAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSExpression+MGLPrivateAdditions.h"; sourceTree = "<group>"; };
- DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage_Private.h; sourceTree = "<group>"; };
- DACA8620201920BE00E9693A /* MGLRasterDEMSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MGLRasterDEMSource.h; sourceTree = "<group>"; };
- DACA8621201920BE00E9693A /* MGLRasterDEMSource.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRasterDEMSource.mm; sourceTree = "<group>"; };
- DACB0C371E18DFFD005DDBEA /* MGLStyle+MBXAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLStyle+MBXAdditions.h"; sourceTree = "<group>"; };
- DACB0C381E18DFFD005DDBEA /* MGLStyle+MBXAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MGLStyle+MBXAdditions.m"; sourceTree = "<group>"; };
- DACBC6082011885800C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
- DACBC6092011888C00C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Foundation.strings; sourceTree = "<group>"; };
- DACBC60A2011889E00C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
- DACC22121CF3D3E200D220D9 /* MGLFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature.h; sourceTree = "<group>"; };
- DACC22131CF3D3E200D220D9 /* MGLFeature.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFeature.mm; sourceTree = "<group>"; };
- DACC22171CF3D4F700D220D9 /* MGLFeature_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature_Private.h; sourceTree = "<group>"; };
- DACCD9C71F1F443B00BB09A1 /* fr */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Foundation.strings; sourceTree = "<group>"; };
- DACFE7971F66EA0C00630DA8 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = vi; path = vi.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAD165721CF4CD7A001FF4B9 /* MGLShapeCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeCollection.h; sourceTree = "<group>"; };
- DAD165731CF4CD7A001FF4B9 /* MGLShapeCollection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShapeCollection.mm; sourceTree = "<group>"; };
- DAD88E03202ACF5900AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAD88E04202ACF7C00AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAD88E05202ACF8200AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = da; path = da.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAD88E06202ACF9200AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAE6C2E11CC304F900DB3429 /* Credits.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = "<group>"; };
- DAE6C2E31CC3050F00DB3429 /* DroppedPinAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DroppedPinAnnotation.h; sourceTree = "<group>"; };
- DAE6C2E41CC3050F00DB3429 /* DroppedPinAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DroppedPinAnnotation.m; sourceTree = "<group>"; };
- DAE6C2E51CC3050F00DB3429 /* LocationCoordinate2DTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationCoordinate2DTransformer.h; sourceTree = "<group>"; };
- DAE6C2E61CC3050F00DB3429 /* LocationCoordinate2DTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationCoordinate2DTransformer.m; sourceTree = "<group>"; };
- DAE6C2E91CC3050F00DB3429 /* OfflinePackNameValueTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OfflinePackNameValueTransformer.h; sourceTree = "<group>"; };
- DAE6C2EA1CC3050F00DB3429 /* OfflinePackNameValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OfflinePackNameValueTransformer.m; sourceTree = "<group>"; };
- DAE6C2EB1CC3050F00DB3429 /* TimeIntervalTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimeIntervalTransformer.h; sourceTree = "<group>"; };
- DAE6C2EC1CC3050F00DB3429 /* TimeIntervalTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimeIntervalTransformer.m; sourceTree = "<group>"; };
- DAE6C3281CC30DB200DB3429 /* Mapbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- DAE6C32C1CC30DB200DB3429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- DAE6C3311CC30DB200DB3429 /* test.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = test.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- DAE6C33A1CC30DB200DB3429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- DAE6C3451CC31D1200DB3429 /* libmbgl-core.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libmbgl-core.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- DAE6C3461CC31D1200DB3429 /* libmbgl-platform-macos.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libmbgl-platform-macos.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- DAE6C34A1CC31E0400DB3429 /* MGLAccountManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAccountManager.h; sourceTree = "<group>"; };
- DAE6C34B1CC31E0400DB3429 /* MGLAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotation.h; sourceTree = "<group>"; };
- DAE6C34C1CC31E0400DB3429 /* MGLGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLGeometry.h; sourceTree = "<group>"; };
- DAE6C34D1CC31E0400DB3429 /* MGLMapCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapCamera.h; sourceTree = "<group>"; };
- DAE6C34E1CC31E0400DB3429 /* MGLMultiPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMultiPoint.h; sourceTree = "<group>"; };
- DAE6C34F1CC31E0400DB3429 /* MGLOfflinePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflinePack.h; sourceTree = "<group>"; };
- DAE6C3501CC31E0400DB3429 /* MGLOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineRegion.h; sourceTree = "<group>"; };
- DAE6C3511CC31E0400DB3429 /* MGLOfflineStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineStorage.h; sourceTree = "<group>"; };
- DAE6C3521CC31E0400DB3429 /* MGLOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOverlay.h; sourceTree = "<group>"; };
- DAE6C3531CC31E0400DB3429 /* MGLPointAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointAnnotation.h; sourceTree = "<group>"; };
- DAE6C3541CC31E0400DB3429 /* MGLPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolygon.h; sourceTree = "<group>"; };
- DAE6C3551CC31E0400DB3429 /* MGLPolyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolyline.h; sourceTree = "<group>"; };
- DAE6C3561CC31E0400DB3429 /* MGLShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShape.h; sourceTree = "<group>"; };
- DAE6C3571CC31E0400DB3429 /* MGLStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyle.h; sourceTree = "<group>"; };
- DAE6C3581CC31E0400DB3429 /* MGLTilePyramidOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTilePyramidOfflineRegion.h; sourceTree = "<group>"; };
- DAE6C3591CC31E0400DB3429 /* MGLTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTypes.h; sourceTree = "<group>"; };
- DAE6C36A1CC31E2A00DB3429 /* MGLAccountManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAccountManager_Private.h; sourceTree = "<group>"; };
- DAE6C36B1CC31E2A00DB3429 /* MGLAccountManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAccountManager.m; sourceTree = "<group>"; };
- DAE6C36C1CC31E2A00DB3429 /* MGLGeometry_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLGeometry_Private.h; sourceTree = "<group>"; };
- DAE6C36D1CC31E2A00DB3429 /* MGLGeometry.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLGeometry.mm; sourceTree = "<group>"; };
- DAE6C36E1CC31E2A00DB3429 /* MGLMapCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapCamera.mm; sourceTree = "<group>"; };
- DAE6C36F1CC31E2A00DB3429 /* MGLMultiPoint_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMultiPoint_Private.h; sourceTree = "<group>"; };
- DAE6C3701CC31E2A00DB3429 /* MGLMultiPoint.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMultiPoint.mm; sourceTree = "<group>"; };
- DAE6C3711CC31E2A00DB3429 /* MGLOfflinePack_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflinePack_Private.h; sourceTree = "<group>"; };
- DAE6C3721CC31E2A00DB3429 /* MGLOfflinePack.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOfflinePack.mm; sourceTree = "<group>"; };
- DAE6C3731CC31E2A00DB3429 /* MGLOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineRegion_Private.h; sourceTree = "<group>"; };
- DAE6C3741CC31E2A00DB3429 /* MGLOfflineStorage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineStorage_Private.h; sourceTree = "<group>"; };
- DAE6C3751CC31E2A00DB3429 /* MGLOfflineStorage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOfflineStorage.mm; sourceTree = "<group>"; };
- DAE6C3761CC31E2A00DB3429 /* MGLPointAnnotation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPointAnnotation.mm; sourceTree = "<group>"; };
- DAE6C3771CC31E2A00DB3429 /* MGLPolygon.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPolygon.mm; sourceTree = "<group>"; };
- DAE6C3781CC31E2A00DB3429 /* MGLPolyline.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPolyline.mm; sourceTree = "<group>"; };
- DAE6C3791CC31E2A00DB3429 /* MGLShape.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLShape.mm; sourceTree = "<group>"; };
- DAE6C37A1CC31E2A00DB3429 /* MGLStyle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyle.mm; sourceTree = "<group>"; };
- DAE6C37B1CC31E2A00DB3429 /* MGLTilePyramidOfflineRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLTilePyramidOfflineRegion.mm; sourceTree = "<group>"; };
- DAE6C37C1CC31E2A00DB3429 /* MGLTypes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLTypes.m; sourceTree = "<group>"; };
- DAE6C37D1CC31E2A00DB3429 /* NSBundle+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+MGLAdditions.h"; sourceTree = "<group>"; };
- DAE6C37E1CC31E2A00DB3429 /* NSBundle+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+MGLAdditions.m"; sourceTree = "<group>"; };
- DAE6C37F1CC31E2A00DB3429 /* NSException+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSException+MGLAdditions.h"; sourceTree = "<group>"; };
- DAE6C3801CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSProcessInfo+MGLAdditions.h"; sourceTree = "<group>"; };
- DAE6C3811CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSProcessInfo+MGLAdditions.m"; sourceTree = "<group>"; };
- DAE6C3821CC31E2A00DB3429 /* NSString+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MGLAdditions.h"; sourceTree = "<group>"; };
- DAE6C3831CC31E2A00DB3429 /* NSString+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MGLAdditions.m"; sourceTree = "<group>"; };
- DAE6C39F1CC31E9400DB3429 /* MGLAnnotationImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage.h; sourceTree = "<group>"; };
- DAE6C3A01CC31E9400DB3429 /* MGLMapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView.h; sourceTree = "<group>"; };
- DAE6C3A11CC31E9400DB3429 /* MGLMapView+IBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+IBAdditions.h"; sourceTree = "<group>"; };
- DAE6C3A21CC31E9400DB3429 /* MGLMapViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapViewDelegate.h; sourceTree = "<group>"; };
- DAE6C3A71CC31EF300DB3429 /* MGLAnnotationImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAnnotationImage.m; sourceTree = "<group>"; };
- DAE6C3A81CC31EF300DB3429 /* MGLAttributionButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAttributionButton.h; sourceTree = "<group>"; };
- DAE6C3A91CC31EF300DB3429 /* MGLAttributionButton.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLAttributionButton.mm; sourceTree = "<group>"; };
- DAE6C3AA1CC31EF300DB3429 /* MGLCompassCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCompassCell.h; sourceTree = "<group>"; };
- DAE6C3AB1CC31EF300DB3429 /* MGLCompassCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCompassCell.m; sourceTree = "<group>"; };
- DAE6C3AC1CC31EF300DB3429 /* MGLMapView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView_Private.h; sourceTree = "<group>"; };
- DAE6C3AD1CC31EF300DB3429 /* MGLMapView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapView.mm; sourceTree = "<group>"; };
- DAE6C3AE1CC31EF300DB3429 /* MGLMapView+IBAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MGLMapView+IBAdditions.mm"; sourceTree = "<group>"; };
- DAE6C3AF1CC31EF300DB3429 /* MGLOpenGLLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOpenGLLayer.h; sourceTree = "<group>"; };
- DAE6C3B01CC31EF300DB3429 /* MGLOpenGLLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOpenGLLayer.mm; sourceTree = "<group>"; };
- DAE6C3BB1CC31F2E00DB3429 /* default_marker.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = default_marker.pdf; sourceTree = "<group>"; };
- DAE6C3BC1CC31F2E00DB3429 /* mapbox.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = mapbox.pdf; sourceTree = "<group>"; };
- DAE6C3C11CC31F4500DB3429 /* Mapbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mapbox.h; path = src/Mapbox.h; sourceTree = SOURCE_ROOT; };
- DAE6C3C61CC3499100DB3429 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
- DAE6C3C81CC34BD800DB3429 /* MGLGeometryTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLGeometryTests.mm; path = ../../darwin/test/MGLGeometryTests.mm; sourceTree = "<group>"; };
- DAE6C3CA1CC34BD800DB3429 /* MGLOfflineRegionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLOfflineRegionTests.m; path = ../../darwin/test/MGLOfflineRegionTests.m; sourceTree = "<group>"; };
- DAE6C3CC1CC34BD800DB3429 /* MGLStyleTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLStyleTests.mm; path = ../../darwin/test/MGLStyleTests.mm; sourceTree = "<group>"; };
- DAE7DEC31E24549F007505A6 /* MGLNSStringAdditionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLNSStringAdditionsTests.m; path = ../../darwin/test/MGLNSStringAdditionsTests.m; sourceTree = "<group>"; };
- DAE8CCAA1E6E8605009B5CB0 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAE8CCAB1E6E8B72009B5CB0 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAE8CCAC1E6E8B8D009B5CB0 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAE9E0F21EB7BF39001E8E8B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAE9ED53223897C400C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAE9ED54223897ED00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAE9ED55223898B200C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = gl; path = gl.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DAE9ED56223898CF00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAED385D1D62CED700D7640F /* NSURL+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+MGLAdditions.h"; sourceTree = "<group>"; };
- DAED385E1D62CED700D7640F /* NSURL+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+MGLAdditions.m"; sourceTree = "<group>"; };
- DAEDC4311D6033F1000224FF /* MGLAttributionInfoTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLAttributionInfoTests.m; path = ../../darwin/test/MGLAttributionInfoTests.m; sourceTree = "<group>"; };
- DAEDC4361D606291000224FF /* MGLAttributionButtonTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAttributionButtonTests.m; sourceTree = "<group>"; };
- DAF0D80D1DFE0E5D00B28378 /* MGLPointCollection_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointCollection_Private.h; sourceTree = "<group>"; };
- DAF0D8151DFE6B1800B28378 /* MGLAttributionInfo_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAttributionInfo_Private.h; sourceTree = "<group>"; };
- DAF25713201901C100367EF5 /* MGLHillshadeStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLHillshadeStyleLayer.mm; sourceTree = "<group>"; };
- DAF25714201901C200367EF5 /* MGLHillshadeStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLHillshadeStyleLayer.h; sourceTree = "<group>"; };
- DAF2571D201902A500367EF5 /* MGLHillshadeStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLHillshadeStyleLayerTests.mm; sourceTree = "<group>"; };
- DAFBD0D51E3FA969000CD6BF /* zh-Hant */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
- DAFBD0D61E3FA983000CD6BF /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Foundation.strings"; sourceTree = "<group>"; };
- DAFEB3702093ACBF00A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
- DAFEB3722093ACDA00A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Foundation.strings; sourceTree = "<group>"; };
- DAFEB3732093ACE400A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ko; path = ko.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
- DD0902AF1DB1AC6400C5BDCE /* MGLNetworkConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLNetworkConfiguration.m; sourceTree = "<group>"; };
- DD0902B01DB1AC6400C5BDCE /* MGLNetworkConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLNetworkConfiguration.h; sourceTree = "<group>"; };
- DD58A4C71D822C6200E1F038 /* MGLExpressionTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLExpressionTests.mm; path = ../../darwin/test/MGLExpressionTests.mm; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- DA839E8F1CC2E3400062CAFB /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DAE6C33D1CC30DB200DB3429 /* Mapbox.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAE6C3241CC30DB200DB3429 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5548BE781D09E718005DDE81 /* libmbgl-core.a in Frameworks */,
- 55D120A31F7906E6004B6D81 /* libmbgl-filesource.a in Frameworks */,
- 52B5D17F1E5E26DF00BBCB48 /* libmbgl-loop-darwin.a in Frameworks */,
- 55CF7533213EDADF00ED86C4 /* libmbgl-vendor-icu.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAE6C32E1CC30DB200DB3429 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DAE0DD7A1D5F015A005A6BB1 /* libmbgl-core.a in Frameworks */,
- 55D120A51F790A0C004B6D81 /* libmbgl-filesource.a in Frameworks */,
- DAE6C3321CC30DB200DB3429 /* Mapbox.framework in Frameworks */,
- 52B5D1801E5E26DF00BBCB48 /* libmbgl-loop-darwin.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 35136D471D42295400C20EFD /* Layers */ = {
- isa = PBXGroup;
- children = (
- 747ABE66219B2C3200523B67 /* MGLSymbolStyleLayer_Private.h */,
- 747ABE62219B2C1700523B67 /* MGLOpenGLStyleLayer_Private.h */,
- 747ABE63219B2C1700523B67 /* MGLRasterStyleLayer_Private.h */,
- 747ABE60219B2C0000523B67 /* MGLLineStyleLayer_Private.h */,
- 747ABE5E219B2BED00523B67 /* MGLHillshadeStyleLayer_Private.h */,
- 747ABE56219B2BDB00523B67 /* MGLBackgroundStyleLayer_Private.h */,
- 747ABE55219B2BDA00523B67 /* MGLCircleStyleLayer_Private.h */,
- 747ABE54219B2BDA00523B67 /* MGLFillExtrusionStyleLayer_Private.h */,
- 747ABE57219B2BDB00523B67 /* MGLFillStyleLayer_Private.h */,
- 747ABE58219B2BDB00523B67 /* MGLHeatmapStyleLayer_Private.h */,
- 749EC88F2199CCB8005608D7 /* MGLStyleLayerManager.h */,
- 749EC8902199CCB9005608D7 /* MGLStyleLayerManager.mm */,
- DA8F25851D51C9E10010E6B5 /* MGLBackgroundStyleLayer.h */,
- DA8F25861D51C9E10010E6B5 /* MGLBackgroundStyleLayer.mm */,
- 3527428B1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.h */,
- 3527428C1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.mm */,
- DAA998F91E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h */,
- DAA998FA1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm */,
- 35602BF81D3EA99F0050646F /* MGLFillStyleLayer.h */,
- 35602BF91D3EA99F0050646F /* MGLFillStyleLayer.mm */,
- 35602BFD1D3EA9B40050646F /* MGLForegroundStyleLayer.h */,
- 35602BFE1D3EA9B40050646F /* MGLForegroundStyleLayer.mm */,
- 8946239A200E73CA00DA8EF2 /* MGLHeatmapStyleLayer.h */,
- 8946239B200E73CA00DA8EF2 /* MGLHeatmapStyleLayer.mm */,
- DAF25714201901C200367EF5 /* MGLHillshadeStyleLayer.h */,
- DAF25713201901C100367EF5 /* MGLHillshadeStyleLayer.mm */,
- DA8F25891D51CA540010E6B5 /* MGLLineStyleLayer.h */,
- DA8F258A1D51CA540010E6B5 /* MGLLineStyleLayer.mm */,
- DA7262051DEEDD460043BB89 /* MGLOpenGLStyleLayer.h */,
- DA7262061DEEDD460043BB89 /* MGLOpenGLStyleLayer.mm */,
- DA8F258D1D51CA600010E6B5 /* MGLRasterStyleLayer.h */,
- DA8F258E1D51CA600010E6B5 /* MGLRasterStyleLayer.mm */,
- 3538AA211D542685008EC33D /* MGLStyleLayer.h */,
- 35602BFC1D3EA9B40050646F /* MGLStyleLayer_Private.h */,
- 3538AA221D542685008EC33D /* MGLStyleLayer.mm */,
- DA8F25911D51CA750010E6B5 /* MGLSymbolStyleLayer.h */,
- DA8F25921D51CA750010E6B5 /* MGLSymbolStyleLayer.mm */,
- DA6408D51DA4E5DA00908C90 /* MGLVectorStyleLayer.h */,
- DA6408D61DA4E5DA00908C90 /* MGLVectorStyleLayer.mm */,
- );
- name = Layers;
- sourceTree = "<group>";
- };
- 352742791D4C235C00A1ECE6 /* Categories */ = {
- isa = PBXGroup;
- children = (
- DA8F25A61D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h */,
- DA8F25A71D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm */,
- );
- name = Categories;
- sourceTree = "<group>";
- };
- 3527427E1D4C242B00A1ECE6 /* Sources */ = {
- isa = PBXGroup;
- children = (
- 07F8E2F41F674C8000F794BB /* MGLComputedShapeSource.h */,
- 07D947471F6741F500E37934 /* MGLComputedShapeSource_Private.h */,
- 07F8E2F51F674C8000F794BB /* MGLComputedShapeSource.mm */,
- 352742831D4C244700A1ECE6 /* MGLRasterTileSource.h */,
- DA7DC9821DED647F0027472F /* MGLRasterTileSource_Private.h */,
- 352742841D4C244700A1ECE6 /* MGLRasterTileSource.mm */,
- DACA8620201920BE00E9693A /* MGLRasterDEMSource.h */,
- DACA8621201920BE00E9693A /* MGLRasterDEMSource.mm */,
- 352742871D4C245800A1ECE6 /* MGLShapeSource.h */,
- DA87A99B1DC9D8DD00810D09 /* MGLShapeSource_Private.h */,
- 352742881D4C245800A1ECE6 /* MGLShapeSource.mm */,
- 3527427F1D4C243B00A1ECE6 /* MGLSource.h */,
- DA8F25991D51CAD00010E6B5 /* MGLSource_Private.h */,
- 352742801D4C243B00A1ECE6 /* MGLSource.mm */,
- DA551B7F1DB496AC0009AFAF /* MGLTileSource.h */,
- DA551B801DB496AC0009AFAF /* MGLTileSource_Private.h */,
- DA551B811DB496AC0009AFAF /* MGLTileSource.mm */,
- DA8F25951D51CAC70010E6B5 /* MGLVectorTileSource.h */,
- DA7DC9801DED5F5C0027472F /* MGLVectorTileSource_Private.h */,
- DA8F25961D51CAC70010E6B5 /* MGLVectorTileSource.mm */,
- 07A019EB1ED662D800ACD43E /* MGLImageSource.h */,
- 07A019EC1ED662D800ACD43E /* MGLImageSource.mm */,
- );
- name = Sources;
- sourceTree = "<group>";
- };
- 3527429B1D4C259500A1ECE6 /* Styling */ = {
- isa = PBXGroup;
- children = (
- 1753ED3F1E53CE5200A9FD90 /* MGLConversion.h */,
- 352742791D4C235C00A1ECE6 /* Categories */,
- 35136D471D42295400C20EFD /* Layers */,
- 3527427E1D4C242B00A1ECE6 /* Sources */,
- 352742771D4C220900A1ECE6 /* MGLStyleValue.h */,
- DA8F259B1D51CB000010E6B5 /* MGLStyleValue_Private.h */,
- 3527429E1D4C25BD00A1ECE6 /* MGLStyleValue.mm */,
- 1F7454A11ECFB00300021D39 /* MGLLight.h */,
- 1F7454A21ECFB00300021D39 /* MGLLight.mm */,
- 1F7454A01ECFB00300021D39 /* MGLLight_Private.h */,
- );
- name = Styling;
- sourceTree = "<group>";
- };
- 4031ACFA1E9EB39A00A3EA26 /* Swift Integration */ = {
- isa = PBXGroup;
- children = (
- 4031ACFB1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift */,
- );
- name = "Swift Integration";
- sourceTree = "<group>";
- };
- 4031AD001E9FD61000A3EA26 /* Test Helpers */ = {
- isa = PBXGroup;
- children = (
- CA0B3C042329F7E600E4B493 /* MGLTestAssertionHandler.h */,
- CA0B3C052329F7E600E4B493 /* MGLTestAssertionHandler.m */,
- 4031AD011E9FD6A300A3EA26 /* MGLSDKTestHelpers.swift */,
- );
- name = "Test Helpers";
- sourceTree = "<group>";
- };
- CFF9F98A23A2503300B0DE92 /* Interface */ = {
- isa = PBXGroup;
- children = (
- CFF9F98C23A2505700B0DE92 /* MGLNetworkIntegrationManager.h */,
- CFF9F98B23A2505700B0DE92 /* MGLNetworkIntegrationManager.m */,
- );
- name = Interface;
- sourceTree = "<group>";
- };
- DA33895E1FA3E997001EA329 /* Recovered References */ = {
- isa = PBXGroup;
- children = (
- );
- name = "Recovered References";
- sourceTree = "<group>";
- };
- DA839E891CC2E3400062CAFB = {
- isa = PBXGroup;
- children = (
- DA839E941CC2E3400062CAFB /* Demo App */,
- DAE6C3291CC30DB200DB3429 /* SDK */,
- DAE6C3371CC30DB200DB3429 /* SDK Tests */,
- DAE6C31E1CC308BC00DB3429 /* Frameworks */,
- DAE6C3C41CC31F7800DB3429 /* Configuration */,
- DA839E931CC2E3400062CAFB /* Products */,
- DA33895E1FA3E997001EA329 /* Recovered References */,
- );
- sourceTree = "<group>";
- };
- DA839E931CC2E3400062CAFB /* Products */ = {
- isa = PBXGroup;
- children = (
- DA839E921CC2E3400062CAFB /* Mapbox GL.app */,
- DAE6C3281CC30DB200DB3429 /* Mapbox.framework */,
- DAE6C3311CC30DB200DB3429 /* test.xctest */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- DA839E941CC2E3400062CAFB /* Demo App */ = {
- isa = PBXGroup;
- children = (
- DA839E951CC2E3400062CAFB /* AppDelegate.h */,
- DA839E961CC2E3400062CAFB /* AppDelegate.m */,
- DAE6C2E31CC3050F00DB3429 /* DroppedPinAnnotation.h */,
- DAE6C2E41CC3050F00DB3429 /* DroppedPinAnnotation.m */,
- 3E6465D8206576A900685536 /* LimeGreenStyleLayer.h */,
- 3E6465D7206576A800685536 /* LimeGreenStyleLayer.m */,
- DAE6C2E51CC3050F00DB3429 /* LocationCoordinate2DTransformer.h */,
- DAE6C2E61CC3050F00DB3429 /* LocationCoordinate2DTransformer.m */,
- DA839E9B1CC2E3400062CAFB /* MapDocument.h */,
- DA839E9C1CC2E3400062CAFB /* MapDocument.m */,
- DA839E9E1CC2E3400062CAFB /* MapDocument.xib */,
- DACB0C371E18DFFD005DDBEA /* MGLStyle+MBXAdditions.h */,
- DACB0C381E18DFFD005DDBEA /* MGLStyle+MBXAdditions.m */,
- DAE6C2E91CC3050F00DB3429 /* OfflinePackNameValueTransformer.h */,
- DAE6C2EA1CC3050F00DB3429 /* OfflinePackNameValueTransformer.m */,
- DAA48EFB1D6A4731006A7E36 /* StyleLayerIconTransformer.h */,
- DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */,
- DAE6C2EB1CC3050F00DB3429 /* TimeIntervalTransformer.h */,
- DAE6C2EC1CC3050F00DB3429 /* TimeIntervalTransformer.m */,
- DA839EA11CC2E3400062CAFB /* Assets.xcassets */,
- DA839EA31CC2E3400062CAFB /* MainMenu.xib */,
- 358EB3AE1D61F0DB00E46D9C /* amsterdam.geojson */,
- DA5589761D320C41006B7F64 /* wms.json */,
- DAE6C2E11CC304F900DB3429 /* Credits.rtf */,
- DA839EA61CC2E3400062CAFB /* Info.plist */,
- 96E027331E57C9A7004B8E66 /* Localizable.strings */,
- DA839E981CC2E3400062CAFB /* Supporting Files */,
- 89462398200D199100DA8EF2 /* heatmap.json */,
- );
- name = "Demo App";
- path = app;
- sourceTree = "<group>";
- };
- DA839E981CC2E3400062CAFB /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- DA839E991CC2E3400062CAFB /* main.m */,
- );
- name = "Supporting Files";
- sourceTree = "<group>";
- };
- DA87A99A1DC9D88800810D09 /* Sources */ = {
- isa = PBXGroup;
- children = (
- 07A240921F67566F002C8210 /* MGLComputedShapeSourceTests.m */,
- DA87A9961DC9D88400810D09 /* MGLShapeSourceTests.mm */,
- DA87A9971DC9D88400810D09 /* MGLTileSetTests.mm */,
- 920A3E581E6F859D00C16EFC /* MGLSourceQueryTests.m */,
- 07BA4CAB1EE21887004528F5 /* MGLImageSourceTests.m */,
- );
- name = Sources;
- sourceTree = "<group>";
- };
- DA8933A81CCD28D100E68420 /* Kit Resources */ = {
- isa = PBXGroup;
- children = (
- DA8933AB1CCD290700E68420 /* Localizable.strings */,
- DAE6C3BB1CC31F2E00DB3429 /* default_marker.pdf */,
- DAE6C3BC1CC31F2E00DB3429 /* mapbox.pdf */,
- 1F9EF4051FBA1B0D0063FBB0 /* mapbox_helmet.pdf */,
- DA8933A71CCD287300E68420 /* MGLAnnotationCallout.xib */,
- );
- name = "Kit Resources";
- sourceTree = "<group>";
- };
- DA8933B21CCD2C0700E68420 /* Foundation Resources */ = {
- isa = PBXGroup;
- children = (
- DA8933B31CCD2C2500E68420 /* Foundation.strings */,
- DA8933B61CCD2C2D00E68420 /* Foundation.stringsdict */,
- );
- name = "Foundation Resources";
- path = ../../darwin/resources;
- sourceTree = "<group>";
- };
- DA8F257C1D51C5F40010E6B5 /* Layers */ = {
- isa = PBXGroup;
- children = (
- 170A82C2201FAFF800943087 /* MGLHeatmapColorTests.mm */,
- 170A82BE201BDD1B00943087 /* MGLHeatmapStyleLayerTests.mm */,
- 40E1601A1DF216E6005EA6D9 /* MGLStyleLayerTests.h */,
- 40E1601B1DF216E6005EA6D9 /* MGLStyleLayerTests.m */,
- DA2207BA1DC076930002F84D /* test-Bridging-Header.h */,
- DAA999001E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm */,
- DA8F25741D51C5F40010E6B5 /* MGLFillStyleLayerTests.mm */,
- DAF2571D201902A500367EF5 /* MGLHillshadeStyleLayerTests.mm */,
- DA8F25751D51C5F40010E6B5 /* MGLRasterStyleLayerTests.mm */,
- DA8F25761D51C5F40010E6B5 /* MGLSymbolStyleLayerTests.mm */,
- DA8F25771D51C5F40010E6B5 /* MGLLineStyleLayerTests.mm */,
- DA8F25781D51C5F40010E6B5 /* MGLCircleStyleLayerTests.mm */,
- DA8F25791D51C5F40010E6B5 /* MGLBackgroundStyleLayerTests.mm */,
- );
- name = Layers;
- sourceTree = "<group>";
- };
- DA8F257D1D51C5F40010E6B5 /* Styling */ = {
- isa = PBXGroup;
- children = (
- DA8F257C1D51C5F40010E6B5 /* Layers */,
- DA87A99A1DC9D88800810D09 /* Sources */,
- 1F7454AA1ED1DDBD00021D39 /* MGLLightTest.mm */,
- );
- name = Styling;
- path = ../../darwin/test;
- sourceTree = "<group>";
- };
- DA8F25B81D51D2280010E6B5 /* Foundation Templates */ = {
- isa = PBXGroup;
- children = (
- DA8F25B61D51D2240010E6B5 /* MGLStyleLayer.h.ejs */,
- DA8F25B71D51D2240010E6B5 /* MGLStyleLayer.mm.ejs */,
- DA8F25B51D51D2240010E6B5 /* MGLStyleLayerTests.mm.ejs */,
- );
- name = "Foundation Templates";
- path = ../../darwin/src;
- sourceTree = "<group>";
- };
- DA90B12C1DB43B180073CF55 /* Categories */ = {
- isa = PBXGroup;
- children = (
- 355BA4EB1D41633E00CCC6D5 /* NSColor+MGLAdditions.h */,
- 355BA4EC1D41633E00CCC6D5 /* NSColor+MGLAdditions.mm */,
- 405C03961DB0004E001AC280 /* NSImage+MGLAdditions.h */,
- 405C03971DB0004E001AC280 /* NSImage+MGLAdditions.mm */,
- DAE6C3801CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.h */,
- DAE6C3811CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.m */,
- );
- name = Categories;
- sourceTree = "<group>";
- };
- DAD1657C1CF4CE6B001FF4B9 /* Formatters */ = {
- isa = PBXGroup;
- children = (
- DA35A2BD1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h */,
- DA35A2BE1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m */,
- DA35A2AB1CCA091800E826B2 /* MGLCompassDirectionFormatter.h */,
- DA35A2AC1CCA091800E826B2 /* MGLCompassDirectionFormatter.m */,
- DA35A2A31CC9EB1A00E826B2 /* MGLCoordinateFormatter.h */,
- DA35A2A51CC9EB2700E826B2 /* MGLCoordinateFormatter.m */,
- 35C6DF821E214C0400ACA483 /* MGLDistanceFormatter.h */,
- 35C6DF831E214C0400ACA483 /* MGLDistanceFormatter.m */,
- );
- name = Formatters;
- sourceTree = "<group>";
- };
- DAD1657D1CF4CECB001FF4B9 /* Geometry */ = {
- isa = PBXGroup;
- children = (
- DAE6C34B1CC31E0400DB3429 /* MGLAnnotation.h */,
- CA4045C4216720D700B356E1 /* MGLCluster.h */,
- DACC22171CF3D4F700D220D9 /* MGLFeature_Private.h */,
- DACC22121CF3D3E200D220D9 /* MGLFeature.h */,
- DACC22131CF3D3E200D220D9 /* MGLFeature.mm */,
- DAE6C36C1CC31E2A00DB3429 /* MGLGeometry_Private.h */,
- DAE6C34C1CC31E0400DB3429 /* MGLGeometry.h */,
- DAE6C36D1CC31E2A00DB3429 /* MGLGeometry.mm */,
- DAE6C36F1CC31E2A00DB3429 /* MGLMultiPoint_Private.h */,
- DAE6C34E1CC31E0400DB3429 /* MGLMultiPoint.h */,
- DAE6C3701CC31E2A00DB3429 /* MGLMultiPoint.mm */,
- DAE6C3521CC31E0400DB3429 /* MGLOverlay.h */,
- DAE6C3531CC31E0400DB3429 /* MGLPointAnnotation.h */,
- DAE6C3761CC31E2A00DB3429 /* MGLPointAnnotation.mm */,
- DAF0D80D1DFE0E5D00B28378 /* MGLPointCollection_Private.h */,
- 4049C2A11DB6CE7800B3F799 /* MGLPointCollection.h */,
- 4049C2A71DB6D09B00B3F799 /* MGLPointCollection.mm */,
- 9654C12C1FFC394700DB6A19 /* MGLPolygon_Private.h */,
- DAE6C3541CC31E0400DB3429 /* MGLPolygon.h */,
- DAE6C3771CC31E2A00DB3429 /* MGLPolygon.mm */,
- 9654C12A1FFC38E000DB6A19 /* MGLPolyline_Private.h */,
- DAE6C3551CC31E0400DB3429 /* MGLPolyline.h */,
- DAE6C3781CC31E2A00DB3429 /* MGLPolyline.mm */,
- 408AA85A1DAEECF100022900 /* MGLShape_Private.h */,
- DAE6C3561CC31E0400DB3429 /* MGLShape.h */,
- DAE6C3791CC31E2A00DB3429 /* MGLShape.mm */,
- DAD165721CF4CD7A001FF4B9 /* MGLShapeCollection.h */,
- DAD165731CF4CD7A001FF4B9 /* MGLShapeCollection.mm */,
- );
- name = Geometry;
- sourceTree = "<group>";
- };
- DAD1657E1CF4CF04001FF4B9 /* Offline Maps */ = {
- isa = PBXGroup;
- children = (
- DAE6C34F1CC31E0400DB3429 /* MGLOfflinePack.h */,
- DAE6C3711CC31E2A00DB3429 /* MGLOfflinePack_Private.h */,
- DAE6C3721CC31E2A00DB3429 /* MGLOfflinePack.mm */,
- DAE6C3501CC31E0400DB3429 /* MGLOfflineRegion.h */,
- DAE6C3731CC31E2A00DB3429 /* MGLOfflineRegion_Private.h */,
- DAE6C3511CC31E0400DB3429 /* MGLOfflineStorage.h */,
- DAE6C3741CC31E2A00DB3429 /* MGLOfflineStorage_Private.h */,
- DAE6C3751CC31E2A00DB3429 /* MGLOfflineStorage.mm */,
- 9250B8C22073C69000EF338C /* MGLShapeOfflineRegion.h */,
- 92FC0AE3207CC8DA007B6B54 /* MGLShapeOfflineRegion_Private.h */,
- 92FC0AE5207CDD8D007B6B54 /* MGLShapeOfflineRegion.mm */,
- DAE6C3581CC31E0400DB3429 /* MGLTilePyramidOfflineRegion.h */,
- 9221BAAE20699CBA0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h */,
- DAE6C37B1CC31E2A00DB3429 /* MGLTilePyramidOfflineRegion.mm */,
- );
- name = "Offline Maps";
- sourceTree = "<group>";
- };
- DAD1657F1CF4CF50001FF4B9 /* Categories */ = {
- isa = PBXGroup;
- children = (
- 40B77E431DB11BB0003DA2FE /* NSArray+MGLAdditions.h */,
- 40B77E421DB11BB0003DA2FE /* NSArray+MGLAdditions.mm */,
- DAE6C37D1CC31E2A00DB3429 /* NSBundle+MGLAdditions.h */,
- DAE6C37E1CC31E2A00DB3429 /* NSBundle+MGLAdditions.m */,
- 359819571E02F611008FC139 /* NSCoder+MGLAdditions.h */,
- 359819581E02F611008FC139 /* NSCoder+MGLAdditions.mm */,
- 35C5D8431D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.h */,
- 35C5D8441D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.mm */,
- 35C5D8451D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.h */,
- 35C5D8461D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.mm */,
- 35D65C581D65AD5500722C23 /* NSDate+MGLAdditions.h */,
- 35D65C591D65AD5500722C23 /* NSDate+MGLAdditions.mm */,
- 408AA85F1DAEED3300022900 /* NSDictionary+MGLAdditions.h */,
- 408AA85E1DAEED3300022900 /* NSDictionary+MGLAdditions.mm */,
- DAE6C37F1CC31E2A00DB3429 /* NSException+MGLAdditions.h */,
- 3508EC621D749D39009B0EE4 /* NSExpression+MGLAdditions.h */,
- DAC25FC9200FD5E2009BE98E /* NSExpression+MGLPrivateAdditions.h */,
- 3508EC631D749D39009B0EE4 /* NSExpression+MGLAdditions.mm */,
- 352903991D6C63B80002C7DF /* NSPredicate+MGLAdditions.h */,
- 3529039A1D6C63B80002C7DF /* NSPredicate+MGLAdditions.mm */,
- 1FC481842098F323000D09B4 /* NSPredicate+MGLPrivateAdditions.h */,
- DAE6C3821CC31E2A00DB3429 /* NSString+MGLAdditions.h */,
- DAE6C3831CC31E2A00DB3429 /* NSString+MGLAdditions.m */,
- DAED385D1D62CED700D7640F /* NSURL+MGLAdditions.h */,
- DAED385E1D62CED700D7640F /* NSURL+MGLAdditions.m */,
- DA35A2CD1CCAAED300E826B2 /* NSValue+MGLAdditions.h */,
- DA35A2CE1CCAAED300E826B2 /* NSValue+MGLAdditions.m */,
- );
- name = Categories;
- sourceTree = "<group>";
- };
- DAE6C31E1CC308BC00DB3429 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 55CF7532213EDADF00ED86C4 /* libmbgl-vendor-icu.a */,
- 55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */,
- 5548BE7B1D0ACBBD005DDE81 /* libmbgl-loop-darwin.a */,
- 55D9B4B01D005D3900C1CCE2 /* libz.tbd */,
- 52BECB091CC5A26F009CD791 /* SystemConfiguration.framework */,
- DAE6C3451CC31D1200DB3429 /* libmbgl-core.a */,
- DAE6C3461CC31D1200DB3429 /* libmbgl-platform-macos.a */,
- DAE6C3C61CC3499100DB3429 /* libsqlite3.tbd */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- DAE6C3291CC30DB200DB3429 /* SDK */ = {
- isa = PBXGroup;
- children = (
- DAE6C3C11CC31F4500DB3429 /* Mapbox.h */,
- DAE6C3491CC31DF500DB3429 /* Foundation */,
- DA8F25B81D51D2280010E6B5 /* Foundation Templates */,
- DA8933B21CCD2C0700E68420 /* Foundation Resources */,
- DAE6C39E1CC31E7C00DB3429 /* Kit */,
- DA8933A81CCD28D100E68420 /* Kit Resources */,
- DAE6C32C1CC30DB200DB3429 /* Info.plist */,
- );
- name = SDK;
- path = sdk;
- sourceTree = "<group>";
- };
- DAE6C3371CC30DB200DB3429 /* SDK Tests */ = {
- isa = PBXGroup;
- children = (
- DAE6C33A1CC30DB200DB3429 /* Info.plist */,
- DA2784FD1DF03060001D5B8D /* Media.xcassets */,
- CA9461A520884CCB0015EB12 /* MGLAnnotationTests.m */,
- DAEDC4361D606291000224FF /* MGLAttributionButtonTests.m */,
- DAEDC4311D6033F1000224FF /* MGLAttributionInfoTests.m */,
- DA35A2C11CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m */,
- 3526EABC1DF9B19800006B43 /* MGLCodingTests.mm */,
- DA35A2B51CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m */,
- DA35A2A71CC9F41600E826B2 /* MGLCoordinateFormatterTests.m */,
- 35C6DF861E214C1800ACA483 /* MGLDistanceFormatterTests.m */,
- DA2987591E1A4290002299F5 /* MGLDocumentationExampleTests.swift */,
- DA57D4B01EBC699800793288 /* MGLDocumentationGuideTests.swift */,
- DD58A4C71D822C6200E1F038 /* MGLExpressionTests.mm */,
- DA0CD58D1CF56F5800A5F5A5 /* MGLFeatureTests.mm */,
- DAE6C3C81CC34BD800DB3429 /* MGLGeometryTests.mm */,
- DA695423215B1E6C002041A4 /* MGLMapCameraTests.m */,
- 076171C4213A0DC200668A35 /* MGLMapViewTests.m */,
- 1F95931A1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm */,
- DAE7DEC31E24549F007505A6 /* MGLNSStringAdditionsTests.m */,
- CA0B3C082329FB4800E4B493 /* MGLOfflinePackTests.mm */,
- DAE6C3CA1CC34BD800DB3429 /* MGLOfflineRegionTests.m */,
- 55E2AD101E5B0A6900E8C587 /* MGLOfflineStorageTests.mm */,
- 35C5D84B1D6DD75B00E95907 /* MGLPredicateTests.mm */,
- CA8FBC0C21A4A74300D1203C /* MGLRendererConfigurationTests.mm */,
- CAD9D0AB22A88A32001B25EE /* MGLResourceTests.mm */,
- DAE6C3CC1CC34BD800DB3429 /* MGLStyleTests.mm */,
- 556660D51E1D07E400E2C41B /* MGLVersionNumber.m */,
- DA35D0891E1A631B007DED41 /* one-liner.json */,
- 1F8A59F921653483004DFE75 /* sideload_sat.db */,
- DA8F257D1D51C5F40010E6B5 /* Styling */,
- 4031ACFA1E9EB39A00A3EA26 /* Swift Integration */,
- 4031AD001E9FD61000A3EA26 /* Test Helpers */,
- );
- name = "SDK Tests";
- path = test;
- sourceTree = "<group>";
- };
- DAE6C3491CC31DF500DB3429 /* Foundation */ = {
- isa = PBXGroup;
- children = (
- 3527429B1D4C259500A1ECE6 /* Styling */,
- DAD1657F1CF4CF50001FF4B9 /* Categories */,
- DAD1657C1CF4CE6B001FF4B9 /* Formatters */,
- DAD1657D1CF4CECB001FF4B9 /* Geometry */,
- DAD1657E1CF4CF04001FF4B9 /* Offline Maps */,
- DAE6C34A1CC31E0400DB3429 /* MGLAccountManager.h */,
- DAE6C36A1CC31E2A00DB3429 /* MGLAccountManager_Private.h */,
- DAE6C36B1CC31E2A00DB3429 /* MGLAccountManager.m */,
- DA00FC881D5EEAC3009AABC8 /* MGLAttributionInfo.h */,
- DAF0D8151DFE6B1800B28378 /* MGLAttributionInfo_Private.h */,
- DA00FC891D5EEAC3009AABC8 /* MGLAttributionInfo.mm */,
- 1FF4858C2237235200F19727 /* MGLAttributedExpression.h */,
- 1FF4858B2237235200F19727 /* MGLAttributedExpression.m */,
- 556660C51E1BEA0100E2C41B /* MGLFoundation.h */,
- 558DE7A41E56161C00C7916D /* MGLFoundation_Private.h */,
- 558DE7A51E56161C00C7916D /* MGLFoundation.mm */,
- DAE6C34D1CC31E0400DB3429 /* MGLMapCamera.h */,
- DAE6C36E1CC31E2A00DB3429 /* MGLMapCamera.mm */,
- 92092EEE1F5EB10E00AF5130 /* MGLMapSnapshotter.h */,
- 92092EEF1F5EB10E00AF5130 /* MGLMapSnapshotter.mm */,
- 1FCCEC52222EF9FE00302E3B /* MGLSDKMetricsManager.h */,
- 1FCCEC51222EF9FD00302E3B /* MGLSDKMetricsManager_Private.h */,
- 1FCCEC50222EF9FC00302E3B /* MGLSDKMetricsManager.m */,
- DD0902B01DB1AC6400C5BDCE /* MGLNetworkConfiguration.h */,
- 1F2B94C2221E22E500210640 /* MGLNetworkConfiguration_Private.h */,
- DD0902AF1DB1AC6400C5BDCE /* MGLNetworkConfiguration.m */,
- 3EA9369A4C46957566058822 /* MGLRendererConfiguration.h */,
- 3EA93B1B0864609938506E12 /* MGLRendererConfiguration.mm */,
- 92F2C3EA1F0E3A1900268EC0 /* MGLRendererFrontend.h */,
- DAE6C3571CC31E0400DB3429 /* MGLStyle.h */,
- 3537CA731D3F93A600380318 /* MGLStyle_Private.h */,
- DAE6C37A1CC31E2A00DB3429 /* MGLStyle.mm */,
- DAE6C3591CC31E0400DB3429 /* MGLTypes.h */,
- DAE6C37C1CC31E2A00DB3429 /* MGLTypes.m */,
- DA87A99F1DC9DC6200810D09 /* MGLValueEvaluator.h */,
- 1F8A5A03216D4696004DFE75 /* MGLLoggingConfiguration.h */,
- 1F8A5A01216D4695004DFE75 /* MGLLoggingConfiguration_Private.h */,
- CF762DEE22DC7EFF00338472 /* MGLLoggingConfiguration.mm */,
- );
- name = Foundation;
- path = ../darwin/src;
- sourceTree = SOURCE_ROOT;
- };
- DAE6C39E1CC31E7C00DB3429 /* Kit */ = {
- isa = PBXGroup;
- children = (
- CFF9F98A23A2503300B0DE92 /* Interface */,
- DA90B12C1DB43B180073CF55 /* Categories */,
- DAE6C39F1CC31E9400DB3429 /* MGLAnnotationImage.h */,
- DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */,
- DAE6C3A71CC31EF300DB3429 /* MGLAnnotationImage.m */,
- DAE6C3A81CC31EF300DB3429 /* MGLAttributionButton.h */,
- DAE6C3A91CC31EF300DB3429 /* MGLAttributionButton.mm */,
- DAE6C3AA1CC31EF300DB3429 /* MGLCompassCell.h */,
- DAE6C3AB1CC31EF300DB3429 /* MGLCompassCell.m */,
- DAE6C3A01CC31E9400DB3429 /* MGLMapView.h */,
- DAE6C3AC1CC31EF300DB3429 /* MGLMapView_Private.h */,
- DAE6C3AD1CC31EF300DB3429 /* MGLMapView.mm */,
- 5591AC682298361600FF9ADF /* MGLMapView+Impl.h */,
- 5591AC692298361600FF9ADF /* MGLMapView+Impl.mm */,
- 55CAF6332294409B00F17770 /* MGLMapView+OpenGL.mm */,
- 55CAF6312294407F00F17770 /* MGLMapView+OpenGL.h */,
- DAE6C3A11CC31E9400DB3429 /* MGLMapView+IBAdditions.h */,
- DAE6C3AE1CC31EF300DB3429 /* MGLMapView+IBAdditions.mm */,
- DAE6C3A21CC31E9400DB3429 /* MGLMapViewDelegate.h */,
- DAE6C3AF1CC31EF300DB3429 /* MGLOpenGLLayer.h */,
- DAE6C3B01CC31EF300DB3429 /* MGLOpenGLLayer.mm */,
- );
- name = Kit;
- path = src;
- sourceTree = SOURCE_ROOT;
- };
- DAE6C3C41CC31F7800DB3429 /* Configuration */ = {
- isa = PBXGroup;
- children = (
- 55FE0E8D1D100A0900FD240B /* config.xcconfig */,
- );
- name = Configuration;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- DAE6C3251CC30DB200DB3429 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 556660C61E1BEA0100E2C41B /* MGLFoundation.h in Headers */,
- 07F8E2F71F674C8800F794BB /* MGLComputedShapeSource.h in Headers */,
- DA8F258F1D51CA600010E6B5 /* MGLRasterStyleLayer.h in Headers */,
- 3508EC641D749D39009B0EE4 /* NSExpression+MGLAdditions.h in Headers */,
- DAE6C38D1CC31E2A00DB3429 /* MGLOfflineRegion_Private.h in Headers */,
- DA7DC9831DED647F0027472F /* MGLRasterTileSource_Private.h in Headers */,
- 747ABE5B219B2BDB00523B67 /* MGLBackgroundStyleLayer_Private.h in Headers */,
- 1FF4858E2237235300F19727 /* MGLAttributedExpression.h in Headers */,
- 1753ED401E53CE6100A9FD90 /* MGLConversion.h in Headers */,
- 747ABE59219B2BDB00523B67 /* MGLFillExtrusionStyleLayer_Private.h in Headers */,
- DA8F259C1D51CB000010E6B5 /* MGLStyleValue_Private.h in Headers */,
- DAE6C35B1CC31E0400DB3429 /* MGLAnnotation.h in Headers */,
- DAE6C3B61CC31EF300DB3429 /* MGLMapView_Private.h in Headers */,
- 747ABE65219B2C1800523B67 /* MGLRasterStyleLayer_Private.h in Headers */,
- 747ABE5D219B2BDB00523B67 /* MGLHeatmapStyleLayer_Private.h in Headers */,
- DAF25716201901C200367EF5 /* MGLHillshadeStyleLayer.h in Headers */,
- 92092EF01F5EB10E00AF5130 /* MGLMapSnapshotter.h in Headers */,
- 3527428D1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.h in Headers */,
- DA00FC8A1D5EEAC3009AABC8 /* MGLAttributionInfo.h in Headers */,
- DAE6C3B21CC31EF300DB3429 /* MGLAttributionButton.h in Headers */,
- DAA998FB1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h in Headers */,
- 40B77E451DB11BC9003DA2FE /* NSArray+MGLAdditions.h in Headers */,
- 35C5D8471D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.h in Headers */,
- DAE6C3A31CC31E9400DB3429 /* MGLAnnotationImage.h in Headers */,
- DAE6C3A41CC31E9400DB3429 /* MGLMapView.h in Headers */,
- DAE6C3611CC31E0400DB3429 /* MGLOfflineStorage.h in Headers */,
- 749EC8912199CCB9005608D7 /* MGLStyleLayerManager.h in Headers */,
- 352742781D4C220900A1ECE6 /* MGLStyleValue.h in Headers */,
- 1FCCEC55222EF9FE00302E3B /* MGLSDKMetricsManager.h in Headers */,
- DAE6C35E1CC31E0400DB3429 /* MGLMultiPoint.h in Headers */,
- 35602BFF1D3EA9B40050646F /* MGLStyleLayer_Private.h in Headers */,
- 92FC0AE4207CC8DA007B6B54 /* MGLShapeOfflineRegion_Private.h in Headers */,
- DAF0D8161DFE6B1800B28378 /* MGLAttributionInfo_Private.h in Headers */,
- DAE6C3971CC31E2A00DB3429 /* NSBundle+MGLAdditions.h in Headers */,
- DAED385F1D62CED700D7640F /* NSURL+MGLAdditions.h in Headers */,
- DAD165741CF4CD7A001FF4B9 /* MGLShapeCollection.h in Headers */,
- DAE6C3631CC31E0400DB3429 /* MGLPointAnnotation.h in Headers */,
- DAC2ABC51CC6D343006D18C4 /* MGLAnnotationImage_Private.h in Headers */,
- DAE6C35F1CC31E0400DB3429 /* MGLOfflinePack.h in Headers */,
- 1F8A5A04216D4696004DFE75 /* MGLLoggingConfiguration_Private.h in Headers */,
- 1FC481852098F323000D09B4 /* NSPredicate+MGLPrivateAdditions.h in Headers */,
- DAE6C39C1CC31E2A00DB3429 /* NSString+MGLAdditions.h in Headers */,
- 1F8A5A06216D4696004DFE75 /* MGLLoggingConfiguration.h in Headers */,
- 3529039B1D6C63B80002C7DF /* NSPredicate+MGLAdditions.h in Headers */,
- 747ABE5A219B2BDB00523B67 /* MGLCircleStyleLayer_Private.h in Headers */,
- DA8F25971D51CAC70010E6B5 /* MGLVectorTileSource.h in Headers */,
- DA7DC9811DED5F5C0027472F /* MGLVectorTileSource_Private.h in Headers */,
- DAE6C3861CC31E2A00DB3429 /* MGLGeometry_Private.h in Headers */,
- DAE6C3841CC31E2A00DB3429 /* MGLAccountManager_Private.h in Headers */,
- CFF9F98E23A2505700B0DE92 /* MGLNetworkIntegrationManager.h in Headers */,
- DACA8622201920BE00E9693A /* MGLRasterDEMSource.h in Headers */,
- DAE6C3691CC31E0400DB3429 /* MGLTypes.h in Headers */,
- 07D9474D1F67441B00E37934 /* MGLComputedShapeSource_Private.h in Headers */,
- DAE6C3991CC31E2A00DB3429 /* NSException+MGLAdditions.h in Headers */,
- DA8F25871D51C9E10010E6B5 /* MGLBackgroundStyleLayer.h in Headers */,
- 4049C2A51DB6CE7F00B3F799 /* MGLPointCollection.h in Headers */,
- DAE6C3661CC31E0400DB3429 /* MGLShape.h in Headers */,
- DA551B831DB496AC0009AFAF /* MGLTileSource_Private.h in Headers */,
- DAC25FCA200FD5E2009BE98E /* NSExpression+MGLPrivateAdditions.h in Headers */,
- DA7262071DEEDD460043BB89 /* MGLOpenGLStyleLayer.h in Headers */,
- 352742811D4C243B00A1ECE6 /* MGLSource.h in Headers */,
- 1FCCEC54222EF9FE00302E3B /* MGLSDKMetricsManager_Private.h in Headers */,
- DAE6C3C21CC31F4500DB3429 /* Mapbox.h in Headers */,
- DAE6C3641CC31E0400DB3429 /* MGLPolygon.h in Headers */,
- DA35A2BF1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h in Headers */,
- 1F2B94C3221E22E600210640 /* MGLNetworkConfiguration_Private.h in Headers */,
- 35602BFA1D3EA99F0050646F /* MGLFillStyleLayer.h in Headers */,
- DA35A2A41CC9EB1A00E826B2 /* MGLCoordinateFormatter.h in Headers */,
- 35C5D8491D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.h in Headers */,
- 9250B8C32073C69100EF338C /* MGLShapeOfflineRegion.h in Headers */,
- 747ABE67219B2C3200523B67 /* MGLSymbolStyleLayer_Private.h in Headers */,
- 55CAF6322294407F00F17770 /* MGLMapView+OpenGL.h in Headers */,
- DD0902B31DB1AC6400C5BDCE /* MGLNetworkConfiguration.h in Headers */,
- DAE6C3621CC31E0400DB3429 /* MGLOverlay.h in Headers */,
- DAE6C3651CC31E0400DB3429 /* MGLPolyline.h in Headers */,
- DAE6C39A1CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.h in Headers */,
- 92F2C3EB1F0E3A1900268EC0 /* MGLRendererFrontend.h in Headers */,
- DA8F258B1D51CA540010E6B5 /* MGLLineStyleLayer.h in Headers */,
- 35C6DF841E214C0400ACA483 /* MGLDistanceFormatter.h in Headers */,
- DA8F25B21D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h in Headers */,
- 55335DF9212EC542000CE5F8 /* NSImage+MGLAdditions.h in Headers */,
- 1F7454A31ECFB00300021D39 /* MGLLight_Private.h in Headers */,
- 5591AC6A2298361600FF9ADF /* MGLMapView+Impl.h in Headers */,
- 359819591E02F611008FC139 /* NSCoder+MGLAdditions.h in Headers */,
- DAE6C38E1CC31E2A00DB3429 /* MGLOfflineStorage_Private.h in Headers */,
- 747ABE61219B2C0000523B67 /* MGLLineStyleLayer_Private.h in Headers */,
- 747ABE5F219B2BED00523B67 /* MGLHillshadeStyleLayer_Private.h in Headers */,
- DA87A9A01DC9DC6200810D09 /* MGLValueEvaluator.h in Headers */,
- 8946239D200E744800DA8EF2 /* MGLHeatmapStyleLayer.h in Headers */,
- DAE6C3601CC31E0400DB3429 /* MGLOfflineRegion.h in Headers */,
- DAE6C3681CC31E0400DB3429 /* MGLTilePyramidOfflineRegion.h in Headers */,
- DA35A2CF1CCAAED300E826B2 /* NSValue+MGLAdditions.h in Headers */,
- DAE6C3A61CC31E9400DB3429 /* MGLMapViewDelegate.h in Headers */,
- DAE6C38B1CC31E2A00DB3429 /* MGLOfflinePack_Private.h in Headers */,
- 558DE7A61E56161C00C7916D /* MGLFoundation_Private.h in Headers */,
- CA4045C7216720D700B356E1 /* MGLCluster.h in Headers */,
- DACC22141CF3D3E200D220D9 /* MGLFeature.h in Headers */,
- 3538AA231D542685008EC33D /* MGLStyleLayer.h in Headers */,
- DAE6C35C1CC31E0400DB3429 /* MGLGeometry.h in Headers */,
- DAE6C35A1CC31E0400DB3429 /* MGLAccountManager.h in Headers */,
- DA551B821DB496AC0009AFAF /* MGLTileSource.h in Headers */,
- 35602C001D3EA9B40050646F /* MGLForegroundStyleLayer.h in Headers */,
- DAE6C35D1CC31E0400DB3429 /* MGLMapCamera.h in Headers */,
- DAE6C3B41CC31EF300DB3429 /* MGLCompassCell.h in Headers */,
- DA87A99C1DC9D8DD00810D09 /* MGLShapeSource_Private.h in Headers */,
- 3537CA741D3F93A600380318 /* MGLStyle_Private.h in Headers */,
- 0721493F1EE200E900085505 /* MGLImageSource.h in Headers */,
- DA8F259A1D51CAD00010E6B5 /* MGLSource_Private.h in Headers */,
- DA8F25931D51CA750010E6B5 /* MGLSymbolStyleLayer.h in Headers */,
- DAE6C3B91CC31EF300DB3429 /* MGLOpenGLLayer.h in Headers */,
- DAF0D80E1DFE0E5D00B28378 /* MGLPointCollection_Private.h in Headers */,
- 35D65C5A1D65AD5500722C23 /* NSDate+MGLAdditions.h in Headers */,
- 355BA4ED1D41633E00CCC6D5 /* NSColor+MGLAdditions.h in Headers */,
- DAE6C3891CC31E2A00DB3429 /* MGLMultiPoint_Private.h in Headers */,
- 747ABE64219B2C1800523B67 /* MGLOpenGLStyleLayer_Private.h in Headers */,
- DAE6C3A51CC31E9400DB3429 /* MGLMapView+IBAdditions.h in Headers */,
- DA35A2AD1CCA091800E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
- 352742851D4C244700A1ECE6 /* MGLRasterTileSource.h in Headers */,
- 9654C12D1FFC394700DB6A19 /* MGLPolygon_Private.h in Headers */,
- 408AA85B1DAEECFE00022900 /* MGLShape_Private.h in Headers */,
- 9221BAAF20699CBB0054BDF4 /* MGLTilePyramidOfflineRegion_Private.h in Headers */,
- DACC22181CF3D4F700D220D9 /* MGLFeature_Private.h in Headers */,
- 9654C12B1FFC38E000DB6A19 /* MGLPolyline_Private.h in Headers */,
- DA6408D71DA4E5DA00908C90 /* MGLVectorStyleLayer.h in Headers */,
- 352742891D4C245800A1ECE6 /* MGLShapeSource.h in Headers */,
- 1F7454A41ECFB00300021D39 /* MGLLight.h in Headers */,
- 747ABE5C219B2BDB00523B67 /* MGLFillStyleLayer_Private.h in Headers */,
- 408AA8671DAEEE3900022900 /* NSDictionary+MGLAdditions.h in Headers */,
- DAE6C3671CC31E0400DB3429 /* MGLStyle.h in Headers */,
- 3EA9317388DC9A0BF46B7674 /* MGLRendererConfiguration.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXLegacyTarget section */
- DAAA17961CE13BAE00731EFE /* docs */ = {
- isa = PBXLegacyTarget;
- buildArgumentsString = "xdocument OUTPUT=build/macos/pkg/documentation";
- buildConfigurationList = DAAA17991CE13BAE00731EFE /* Build configuration list for PBXLegacyTarget "docs" */;
- buildPhases = (
- );
- buildToolPath = /usr/bin/make;
- buildWorkingDirectory = ../../;
- dependencies = (
- );
- name = docs;
- passBuildSettingsInEnvironment = 1;
- productName = docs;
- };
-/* End PBXLegacyTarget section */
-
-/* Begin PBXNativeTarget section */
- DA839E911CC2E3400062CAFB /* macosapp */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DA839EA91CC2E3400062CAFB /* Build configuration list for PBXNativeTarget "macosapp" */;
- buildPhases = (
- DA839E8E1CC2E3400062CAFB /* Sources */,
- DA839E8F1CC2E3400062CAFB /* Frameworks */,
- DA839E901CC2E3400062CAFB /* Resources */,
- DAE6C3221CC30B3C00DB3429 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- DAE6C33C1CC30DB200DB3429 /* PBXTargetDependency */,
- );
- name = macosapp;
- productName = macosapp;
- productReference = DA839E921CC2E3400062CAFB /* Mapbox GL.app */;
- productType = "com.apple.product-type.application";
- };
- DAE6C3271CC30DB200DB3429 /* dynamic */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DAE6C3431CC30DB200DB3429 /* Build configuration list for PBXNativeTarget "dynamic" */;
- buildPhases = (
- DAE6C3231CC30DB200DB3429 /* Sources */,
- DAE6C3241CC30DB200DB3429 /* Frameworks */,
- DAE6C3251CC30DB200DB3429 /* Headers */,
- DAE6C3261CC30DB200DB3429 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = dynamic;
- productName = dynamic;
- productReference = DAE6C3281CC30DB200DB3429 /* Mapbox.framework */;
- productType = "com.apple.product-type.framework";
- };
- DAE6C3301CC30DB200DB3429 /* test */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = DAE6C3441CC30DB200DB3429 /* Build configuration list for PBXNativeTarget "test" */;
- buildPhases = (
- DAE6C32D1CC30DB200DB3429 /* Sources */,
- DAE6C32E1CC30DB200DB3429 /* Frameworks */,
- DAE6C32F1CC30DB200DB3429 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- DAE6C3341CC30DB200DB3429 /* PBXTargetDependency */,
- );
- name = test;
- productName = dynamicTests;
- productReference = DAE6C3311CC30DB200DB3429 /* test.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- DA839E8A1CC2E3400062CAFB /* Project object */ = {
- isa = PBXProject;
- attributes = {
- CLASSPREFIX = MBX;
- LastUpgradeCheck = 0930;
- ORGANIZATIONNAME = Mapbox;
- TargetAttributes = {
- DA839E911CC2E3400062CAFB = {
- CreatedOnToolsVersion = 7.3;
- LastSwiftMigration = 0920;
- };
- DAAA17961CE13BAE00731EFE = {
- CreatedOnToolsVersion = 7.3.1;
- };
- DAE6C3271CC30DB200DB3429 = {
- CreatedOnToolsVersion = 7.3;
- };
- DAE6C3301CC30DB200DB3429 = {
- CreatedOnToolsVersion = 7.3;
- LastSwiftMigration = 0920;
- };
- };
- };
- buildConfigurationList = DA839E8D1CC2E3400062CAFB /* Build configuration list for PBXProject "macos" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 0;
- knownRegions = (
- English,
- en,
- Base,
- "zh-Hans",
- "zh-Hant",
- de,
- fr,
- ja,
- sv,
- vi,
- "pt-BR",
- es,
- pl,
- uk,
- lt,
- ru,
- ca,
- fi,
- nl,
- hu,
- bg,
- ar,
- he,
- da,
- "pt-PT",
- ko,
- cs,
- gl,
- );
- mainGroup = DA839E891CC2E3400062CAFB;
- productRefGroup = DA839E931CC2E3400062CAFB /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- DA839E911CC2E3400062CAFB /* macosapp */,
- DAE6C3271CC30DB200DB3429 /* dynamic */,
- DAE6C3301CC30DB200DB3429 /* test */,
- DAAA17961CE13BAE00731EFE /* docs */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- DA839E901CC2E3400062CAFB /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA839EA21CC2E3400062CAFB /* Assets.xcassets in Resources */,
- DA839EA01CC2E3400062CAFB /* MapDocument.xib in Resources */,
- 353BAEF81D6463B8009A8DA9 /* amsterdam.geojson in Resources */,
- 96E027311E57C9A7004B8E66 /* Localizable.strings in Resources */,
- 89462399200D199100DA8EF2 /* heatmap.json in Resources */,
- DA839EA51CC2E3400062CAFB /* MainMenu.xib in Resources */,
- DA5589771D320C41006B7F64 /* wms.json in Resources */,
- DAE6C2E21CC304F900DB3429 /* Credits.rtf in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAE6C3261CC30DB200DB3429 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA8933AE1CCD290700E68420 /* Localizable.strings in Resources */,
- DAE6C3BE1CC31F2E00DB3429 /* default_marker.pdf in Resources */,
- DAE6C3BF1CC31F2E00DB3429 /* mapbox.pdf in Resources */,
- DA8933A51CCD287300E68420 /* MGLAnnotationCallout.xib in Resources */,
- DA8933B51CCD2C2500E68420 /* Foundation.strings in Resources */,
- DA8933B81CCD2C2D00E68420 /* Foundation.stringsdict in Resources */,
- 1F9EF4061FBA1B0E0063FBB0 /* mapbox_helmet.pdf in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAE6C32F1CC30DB200DB3429 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 35724FC41D630502002A4AB4 /* amsterdam.geojson in Resources */,
- DA2784FE1DF03060001D5B8D /* Media.xcassets in Resources */,
- DA35D08A1E1A631B007DED41 /* one-liner.json in Resources */,
- 1F8A59FA21653483004DFE75 /* sideload_sat.db in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- DA839E8E1CC2E3400062CAFB /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DAA48EFD1D6A4731006A7E36 /* StyleLayerIconTransformer.m in Sources */,
- DA839E9D1CC2E3400062CAFB /* MapDocument.m in Sources */,
- DAE6C2ED1CC3050F00DB3429 /* DroppedPinAnnotation.m in Sources */,
- DAE6C2EE1CC3050F00DB3429 /* LocationCoordinate2DTransformer.m in Sources */,
- DAE6C2F11CC3050F00DB3429 /* TimeIntervalTransformer.m in Sources */,
- DACB0C391E18DFFD005DDBEA /* MGLStyle+MBXAdditions.m in Sources */,
- DA839E9A1CC2E3400062CAFB /* main.m in Sources */,
- DA839E971CC2E3400062CAFB /* AppDelegate.m in Sources */,
- 3E6465D9206576A900685536 /* LimeGreenStyleLayer.m in Sources */,
- DAE6C2F01CC3050F00DB3429 /* OfflinePackNameValueTransformer.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAE6C3231CC30DB200DB3429 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 07A019EF1ED665CD00ACD43E /* MGLImageSource.mm in Sources */,
- 92092EF11F5EB10E00AF5130 /* MGLMapSnapshotter.mm in Sources */,
- 40ABDB561DB0022100372083 /* NSImage+MGLAdditions.mm in Sources */,
- DAF25715201901C200367EF5 /* MGLHillshadeStyleLayer.mm in Sources */,
- DAE6C3901CC31E2A00DB3429 /* MGLPointAnnotation.mm in Sources */,
- 1FCCEC53222EF9FE00302E3B /* MGLSDKMetricsManager.m in Sources */,
- DAE6C3981CC31E2A00DB3429 /* NSBundle+MGLAdditions.m in Sources */,
- DAE6C3B71CC31EF300DB3429 /* MGLMapView.mm in Sources */,
- 55CAF6342294409B00F17770 /* MGLMapView+OpenGL.mm in Sources */,
- 40B77E461DB11BCD003DA2FE /* NSArray+MGLAdditions.mm in Sources */,
- DAE6C38C1CC31E2A00DB3429 /* MGLOfflinePack.mm in Sources */,
- 35D65C5B1D65AD5500722C23 /* NSDate+MGLAdditions.mm in Sources */,
- CF762DEF22DC7EFF00338472 /* MGLLoggingConfiguration.mm in Sources */,
- DD0902B21DB1AC6400C5BDCE /* MGLNetworkConfiguration.m in Sources */,
- 1F7454A51ECFB00300021D39 /* MGLLight.mm in Sources */,
- DAE6C3B11CC31EF300DB3429 /* MGLAnnotationImage.m in Sources */,
- 3508EC651D749D39009B0EE4 /* NSExpression+MGLAdditions.mm in Sources */,
- DACC22151CF3D3E200D220D9 /* MGLFeature.mm in Sources */,
- DA7262081DEEDD460043BB89 /* MGLOpenGLStyleLayer.mm in Sources */,
- 355BA4EE1D41633E00CCC6D5 /* NSColor+MGLAdditions.mm in Sources */,
- DAE6C3B31CC31EF300DB3429 /* MGLAttributionButton.mm in Sources */,
- 35602BFB1D3EA99F0050646F /* MGLFillStyleLayer.mm in Sources */,
- DAE6C3931CC31E2A00DB3429 /* MGLShape.mm in Sources */,
- 352742861D4C244700A1ECE6 /* MGLRasterTileSource.mm in Sources */,
- 558DE7A71E56161C00C7916D /* MGLFoundation.mm in Sources */,
- DAE6C39D1CC31E2A00DB3429 /* NSString+MGLAdditions.m in Sources */,
- 3598195A1E02F611008FC139 /* NSCoder+MGLAdditions.mm in Sources */,
- 749EC8932199CCB9005608D7 /* MGLStyleLayerManager.mm in Sources */,
- DAE6C3941CC31E2A00DB3429 /* MGLStyle.mm in Sources */,
- DAE6C3871CC31E2A00DB3429 /* MGLGeometry.mm in Sources */,
- 894623A0200E748000DA8EF2 /* MGLHeatmapStyleLayer.mm in Sources */,
- 3527428E1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.mm in Sources */,
- 35602C011D3EA9B40050646F /* MGLForegroundStyleLayer.mm in Sources */,
- 408AA86A1DAEEE5D00022900 /* NSDictionary+MGLAdditions.mm in Sources */,
- DA8F25881D51C9E10010E6B5 /* MGLBackgroundStyleLayer.mm in Sources */,
- DA551B841DB496AC0009AFAF /* MGLTileSource.mm in Sources */,
- CFF9F98D23A2505700B0DE92 /* MGLNetworkIntegrationManager.m in Sources */,
- DAE6C3B81CC31EF300DB3429 /* MGLMapView+IBAdditions.mm in Sources */,
- DA35A2D01CCAAED300E826B2 /* NSValue+MGLAdditions.m in Sources */,
- 3538AA241D542685008EC33D /* MGLStyleLayer.mm in Sources */,
- DA35A2C01CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
- 07F8E2F81F674C9000F794BB /* MGLComputedShapeSource.mm in Sources */,
- DAE6C3BA1CC31EF300DB3429 /* MGLOpenGLLayer.mm in Sources */,
- DAE6C38A1CC31E2A00DB3429 /* MGLMultiPoint.mm in Sources */,
- DAE6C3961CC31E2A00DB3429 /* MGLTypes.m in Sources */,
- 4049C2AD1DB8020600B3F799 /* MGLPointCollection.mm in Sources */,
- DA35A2A61CC9EB2700E826B2 /* MGLCoordinateFormatter.m in Sources */,
- 352742821D4C243B00A1ECE6 /* MGLSource.mm in Sources */,
- DAE6C3881CC31E2A00DB3429 /* MGLMapCamera.mm in Sources */,
- DA6408D81DA4E5DA00908C90 /* MGLVectorStyleLayer.mm in Sources */,
- 1FF4858D2237235300F19727 /* MGLAttributedExpression.m in Sources */,
- DA8F25B31D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */,
- DAE6C3911CC31E2A00DB3429 /* MGLPolygon.mm in Sources */,
- 35C6DF851E214C0400ACA483 /* MGLDistanceFormatter.m in Sources */,
- DAE6C39B1CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.m in Sources */,
- DAA998FC1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm in Sources */,
- DAE6C38F1CC31E2A00DB3429 /* MGLOfflineStorage.mm in Sources */,
- DAED38601D62CED700D7640F /* NSURL+MGLAdditions.m in Sources */,
- 35C5D84A1D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.mm in Sources */,
- DAE6C3951CC31E2A00DB3429 /* MGLTilePyramidOfflineRegion.mm in Sources */,
- DAE6C3851CC31E2A00DB3429 /* MGLAccountManager.m in Sources */,
- DA00FC8B1D5EEAC3009AABC8 /* MGLAttributionInfo.mm in Sources */,
- DAE6C3921CC31E2A00DB3429 /* MGLPolyline.mm in Sources */,
- 3527428A1D4C245800A1ECE6 /* MGLShapeSource.mm in Sources */,
- DAE6C3B51CC31EF300DB3429 /* MGLCompassCell.m in Sources */,
- DA8F25901D51CA600010E6B5 /* MGLRasterStyleLayer.mm in Sources */,
- DAD165751CF4CD7A001FF4B9 /* MGLShapeCollection.mm in Sources */,
- 92FC0AE6207CDD8D007B6B54 /* MGLShapeOfflineRegion.mm in Sources */,
- 35C5D8481D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.mm in Sources */,
- 5591AC6B2298361600FF9ADF /* MGLMapView+Impl.mm in Sources */,
- DA35A2AE1CCA091800E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
- DACA8623201920BE00E9693A /* MGLRasterDEMSource.mm in Sources */,
- DA8F258C1D51CA540010E6B5 /* MGLLineStyleLayer.mm in Sources */,
- DA8F25941D51CA750010E6B5 /* MGLSymbolStyleLayer.mm in Sources */,
- 3529039C1D6C63B80002C7DF /* NSPredicate+MGLAdditions.mm in Sources */,
- DA8F25981D51CAC70010E6B5 /* MGLVectorTileSource.mm in Sources */,
- 352742A11D4C25BD00A1ECE6 /* MGLStyleValue.mm in Sources */,
- 3EA93BA38DBB4B814B6C1FCC /* MGLRendererConfiguration.mm in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- DAE6C32D1CC30DB200DB3429 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- DA35A2C21CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m in Sources */,
- DAE6C3D41CC34C9900DB3429 /* MGLOfflineRegionTests.m in Sources */,
- DAE6C3D61CC34C9900DB3429 /* MGLStyleTests.mm in Sources */,
- 1F7454AB1ED1DDBD00021D39 /* MGLLightTest.mm in Sources */,
- 07A240941F675674002C8210 /* MGLComputedShapeSourceTests.m in Sources */,
- DAEDC4371D606291000224FF /* MGLAttributionButtonTests.m in Sources */,
- CA0B3C072329F7E700E4B493 /* MGLTestAssertionHandler.m in Sources */,
- DA695424215B1E6C002041A4 /* MGLMapCameraTests.m in Sources */,
- 920A3E591E6F859D00C16EFC /* MGLSourceQueryTests.m in Sources */,
- DA35A2B61CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */,
- 35C6DF871E214C1800ACA483 /* MGLDistanceFormatterTests.m in Sources */,
- CAD9D0AC22A88A32001B25EE /* MGLResourceTests.mm in Sources */,
- DAE6C3D21CC34C9900DB3429 /* MGLGeometryTests.mm in Sources */,
- DA87A9A41DCACC5000810D09 /* MGLSymbolStyleLayerTests.mm in Sources */,
- 40E1601D1DF217D6005EA6D9 /* MGLStyleLayerTests.m in Sources */,
- 076171C5213A0DC200668A35 /* MGLMapViewTests.m in Sources */,
- 170A82BF201BDD1B00943087 /* MGLHeatmapStyleLayerTests.mm in Sources */,
- 1F95931B1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm in Sources */,
- DAF25721201902C100367EF5 /* MGLHillshadeStyleLayerTests.mm in Sources */,
- DA87A9A61DCACC5000810D09 /* MGLCircleStyleLayerTests.mm in Sources */,
- DA87A99E1DC9DC2100810D09 /* MGLPredicateTests.mm in Sources */,
- DD58A4C91D822C6700E1F038 /* MGLExpressionTests.mm in Sources */,
- CA0B3C092329FB4800E4B493 /* MGLOfflinePackTests.mm in Sources */,
- 170A82C4201FB6EC00943087 /* MGLHeatmapColorTests.mm in Sources */,
- 4031ACFC1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift in Sources */,
- CA8FBC0D21A4A74300D1203C /* MGLRendererConfigurationTests.mm in Sources */,
- 4031AD031E9FD6AA00A3EA26 /* MGLSDKTestHelpers.swift in Sources */,
- DA87A9A71DCACC5000810D09 /* MGLBackgroundStyleLayerTests.mm in Sources */,
- DAA999011E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm in Sources */,
- DA29875A1E1A4290002299F5 /* MGLDocumentationExampleTests.swift in Sources */,
- 07BA4CAC1EE21887004528F5 /* MGLImageSourceTests.m in Sources */,
- DA87A9A51DCACC5000810D09 /* MGLLineStyleLayerTests.mm in Sources */,
- DA87A9A31DCACC5000810D09 /* MGLRasterStyleLayerTests.mm in Sources */,
- CA9461A620884CCB0015EB12 /* MGLAnnotationTests.m in Sources */,
- DA87A9991DC9D88400810D09 /* MGLTileSetTests.mm in Sources */,
- DA35A2A81CC9F41600E826B2 /* MGLCoordinateFormatterTests.m in Sources */,
- DAE7DEC41E24549F007505A6 /* MGLNSStringAdditionsTests.m in Sources */,
- DA87A9981DC9D88400810D09 /* MGLShapeSourceTests.mm in Sources */,
- 55E2AD111E5B0A6900E8C587 /* MGLOfflineStorageTests.mm in Sources */,
- 3526EABD1DF9B19800006B43 /* MGLCodingTests.mm in Sources */,
- DA87A9A21DC9DCF100810D09 /* MGLFillStyleLayerTests.mm in Sources */,
- DA57D4B11EBC699800793288 /* MGLDocumentationGuideTests.swift in Sources */,
- DAEDC4321D6033F1000224FF /* MGLAttributionInfoTests.m in Sources */,
- DA0CD58E1CF56F5800A5F5A5 /* MGLFeatureTests.mm in Sources */,
- 556660D61E1D07E400E2C41B /* MGLVersionNumber.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- DAE6C3341CC30DB200DB3429 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = DAE6C3271CC30DB200DB3429 /* dynamic */;
- targetProxy = DAE6C3331CC30DB200DB3429 /* PBXContainerItemProxy */;
- };
- DAE6C33C1CC30DB200DB3429 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = DAE6C3271CC30DB200DB3429 /* dynamic */;
- targetProxy = DAE6C33B1CC30DB200DB3429 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 96E027331E57C9A7004B8E66 /* Localizable.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 96E027321E57C9A7004B8E66 /* Base */,
- 96E027341E57C9A9004B8E66 /* zh-Hans */,
- 96E027351E57C9AB004B8E66 /* zh-Hant */,
- 96E027361E57C9AC004B8E66 /* de */,
- 96E027371E57C9B5004B8E66 /* fr */,
- 96E027381E57C9B7004B8E66 /* ja */,
- 96E027391E57C9B9004B8E66 /* sv */,
- 96E0273A1E57C9BB004B8E66 /* vi */,
- 96E0273B1E57C9BC004B8E66 /* pt-BR */,
- 966091701E5BBFF700A9A03B /* es */,
- 966091711E5BBFF900A9A03B /* pl */,
- 966091721E5BBFFA00A9A03B /* uk */,
- 966091731E5BBFFA00A9A03B /* lt */,
- DA618B131E68850300CB7F44 /* ru */,
- DA618B161E6886E000CB7F44 /* ca */,
- DA618B271E68926E00CB7F44 /* fi */,
- DAE8CCAB1E6E8B72009B5CB0 /* nl */,
- DA704CBE1F637531004B3F28 /* hu */,
- DA3389611FA3EDCE001EA329 /* bg */,
- DA80E95D1FE84A300065FC9B /* ar */,
- DACBC6082011885800C4D7E2 /* he */,
- DAD88E03202ACF5900AAA536 /* da */,
- DA934097208562590059919A /* pt-PT */,
- DAFEB3702093ACBF00A86A83 /* ko */,
- 1FDB00CC21F8F1FD00D21389 /* cs */,
- DAE9ED53223897C400C01291 /* gl */,
- );
- name = Localizable.strings;
- sourceTree = "<group>";
- };
- DA839E9E1CC2E3400062CAFB /* MapDocument.xib */ = {
- isa = PBXVariantGroup;
- children = (
- DA839E9F1CC2E3400062CAFB /* Base */,
- );
- name = MapDocument.xib;
- sourceTree = "<group>";
- };
- DA839EA31CC2E3400062CAFB /* MainMenu.xib */ = {
- isa = PBXVariantGroup;
- children = (
- DA839EA41CC2E3400062CAFB /* Base */,
- );
- name = MainMenu.xib;
- sourceTree = "<group>";
- };
- DA8933A71CCD287300E68420 /* MGLAnnotationCallout.xib */ = {
- isa = PBXVariantGroup;
- children = (
- DA8933A61CCD287300E68420 /* Base */,
- );
- name = MGLAnnotationCallout.xib;
- sourceTree = "<group>";
- };
- DA8933AB1CCD290700E68420 /* Localizable.strings */ = {
- isa = PBXVariantGroup;
- children = (
- DA8933AC1CCD290700E68420 /* Base */,
- DA88520F1E0A4D0D009D7AD6 /* zh-Hans */,
- DAFBD0D51E3FA969000CD6BF /* zh-Hant */,
- DAA32CA61E4C4849006F8D24 /* de */,
- DAA32CAF1E4C4B0D006F8D24 /* fr */,
- DAA32CB31E4C4CC3006F8D24 /* ja */,
- DAA32CBA1E4C4F10006F8D24 /* sv */,
- DAA32CC11E4C4F93006F8D24 /* vi */,
- DA9C01311E4C7B9F00C4742A /* pt-BR */,
- DA737ADF1E5914D300AD2CDE /* es */,
- DA737AE41E5915B000AD2CDE /* pl */,
- DA737AEC1E59180E00AD2CDE /* uk */,
- DA1AC01E1E5B8826006DF1D6 /* lt */,
- DA618B141E68852C00CB7F44 /* ru */,
- DA618B181E6887C600CB7F44 /* ca */,
- DA618B2A1E6892B500CB7F44 /* fi */,
- DAE8CCAC1E6E8B8D009B5CB0 /* nl */,
- DA704CBF1F637548004B3F28 /* hu */,
- DA3389641FA3EE00001EA329 /* bg */,
- DACBC60A2011889E00C4D7E2 /* he */,
- DAD88E06202ACF9200AAA536 /* da */,
- DA9340992085629E0059919A /* pt-PT */,
- DA9340A0208565870059919A /* ar */,
- 1FDB00CD21F8F1FF00D21389 /* cs */,
- DAE9ED56223898CF00C01291 /* gl */,
- );
- name = Localizable.strings;
- sourceTree = "<group>";
- };
- DA8933B31CCD2C2500E68420 /* Foundation.strings */ = {
- isa = PBXVariantGroup;
- children = (
- DA8933B41CCD2C2500E68420 /* Base */,
- DA8852101E0A4D3A009D7AD6 /* zh-Hans */,
- DAFBD0D61E3FA983000CD6BF /* zh-Hant */,
- DAA32CA71E4C486D006F8D24 /* de */,
- DAA32CB21E4C4CB7006F8D24 /* ja */,
- DAA32CC01E4C4F89006F8D24 /* vi */,
- DA6023EF1E4CE8E500DBFF23 /* sv */,
- DA618B171E68876C00CB7F44 /* ca */,
- DA618B231E6891ED00CB7F44 /* lt */,
- DAE9E0F21EB7BF39001E8E8B /* es */,
- DACCD9C71F1F443B00BB09A1 /* fr */,
- DA704CBA1F6372E8004B3F28 /* ru */,
- DA704CC61F666385004B3F28 /* uk */,
- DA3389601FA3EAC4001EA329 /* pt-BR */,
- DA3389621FA3EDEF001EA329 /* bg */,
- DACBC6092011888C00C4D7E2 /* he */,
- DAD88E04202ACF7C00AAA536 /* da */,
- DAFEB3722093ACDA00A86A83 /* ko */,
- DAE9ED54223897ED00C01291 /* gl */,
- );
- name = Foundation.strings;
- sourceTree = "<group>";
- };
- DA8933B61CCD2C2D00E68420 /* Foundation.stringsdict */ = {
- isa = PBXVariantGroup;
- children = (
- DA8933B71CCD2C2D00E68420 /* en */,
- DAA32CA81E4C48B9006F8D24 /* de */,
- DAA32CAE1E4C4B03006F8D24 /* fr */,
- DA9C01301E4C7B9300C4742A /* pt-BR */,
- DA6023F01E4CE8FF00DBFF23 /* sv */,
- DA737ADE1E5914AD00AD2CDE /* es */,
- DA737AE31E5915A500AD2CDE /* pl */,
- DA1AC01F1E5B8904006DF1D6 /* uk */,
- DAE8CCAA1E6E8605009B5CB0 /* ru */,
- DA618B151E6886DF00CB7F44 /* ca */,
- DA618B241E6891F300CB7F44 /* lt */,
- DACFE7971F66EA0C00630DA8 /* vi */,
- DA3389631FA3EDF5001EA329 /* bg */,
- DA33896C1FA3EF51001EA329 /* hu */,
- DA80E95F1FE84A540065FC9B /* ar */,
- DAD88E05202ACF8200AAA536 /* da */,
- DA934098208562870059919A /* pt-PT */,
- DAFEB3732093ACE400A86A83 /* ko */,
- DAE9ED55223898B200C01291 /* gl */,
- );
- name = Foundation.stringsdict;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- DA839EA71CC2E3400062CAFB /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- CURRENT_COMMIT_HASH = deadbeef;
- CURRENT_SEMANTIC_VERSION = 1.0.0;
- CURRENT_SHORT_VERSION = 1.0;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_CPP_RTTI = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
- GCC_WARN_SHADOW = YES;
- GCC_WARN_SIGN_COMPARE = YES;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNKNOWN_PRAGMAS = YES;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_LABEL = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SYMROOT = "$(PROJECT_DIR)/cmake";
- };
- name = Debug;
- };
- DA839EA81CC2E3400062CAFB /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- CURRENT_COMMIT_HASH = deadbeef;
- CURRENT_SEMANTIC_VERSION = 1.0.0;
- CURRENT_SHORT_VERSION = 1.0;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_ENABLE_CPP_RTTI = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
- GCC_WARN_SHADOW = YES;
- GCC_WARN_SIGN_COMPARE = YES;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNKNOWN_PRAGMAS = YES;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_LABEL = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
- MTL_ENABLE_DEBUG_INFO = NO;
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SYMROOT = "$(PROJECT_DIR)/cmake";
- };
- name = Release;
- };
- DA839EAA1CC2E3400062CAFB /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = "$(SRCROOT)/app/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
- OTHER_CFLAGS = "-fvisibility=hidden";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxGL;
- PRODUCT_NAME = "Mapbox GL";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 4.0;
- };
- name = Debug;
- };
- DA839EAB1CC2E3400062CAFB /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = "$(SRCROOT)/app/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
- OTHER_CFLAGS = "-fvisibility=hidden";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxGL;
- PRODUCT_NAME = "Mapbox GL";
- SWIFT_VERSION = 4.0;
- };
- name = Release;
- };
- DAAA17971CE13BAE00731EFE /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- DEBUGGING_SYMBOLS = YES;
- DEBUG_INFORMATION_FORMAT = dwarf;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "";
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Debug;
- };
- DAAA17981CE13BAE00731EFE /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "";
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Release;
- };
- DAE6C33F1CC30DB200DB3429 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55FE0E8D1D100A0900FD240B /* config.xcconfig */;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- FRAMEWORK_VERSION = A;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = "$(SRCROOT)/sdk/Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = Debug;
- };
- DAE6C3401CC30DB200DB3429 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55FE0E8D1D100A0900FD240B /* config.xcconfig */;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 1;
- DEAD_CODE_STRIPPING = YES;
- DEFINES_MODULE = YES;
- DEPLOYMENT_POSTPROCESSING = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- FRAMEWORK_VERSION = A;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = "$(SRCROOT)/sdk/Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- LLVM_LTO = YES;
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox;
- PRODUCT_NAME = Mapbox;
- SKIP_INSTALL = YES;
- STRIP_STYLE = "non-global";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) ";
- };
- name = Release;
- };
- DAE6C3411CC30DB200DB3429 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55FE0E8D1D100A0900FD240B /* config.xcconfig */;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- COMBINE_HIDPI_IMAGES = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = test/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/cmake/Debug",
- );
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- OTHER_SWIFT_FLAGS = "-warnings-as-errors";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 4.0;
- };
- name = Debug;
- };
- DAE6C3421CC30DB200DB3429 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 55FE0E8D1D100A0900FD240B /* config.xcconfig */;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- COMBINE_HIDPI_IMAGES = YES;
- HEADER_SEARCH_PATHS = (
- "$(mbgl_core_INCLUDE_DIRECTORIES)",
- "$(mbgl_filesource_INCLUDE_DIRECTORIES)",
- );
- INFOPLIST_FILE = test/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- OTHER_CFLAGS = "-fvisibility=hidden";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "$(variant_cflags)",
- "$(geometry_cflags)",
- "$(geojson_cflags)",
- );
- OTHER_LDFLAGS = (
- "$(mbgl_core_LINK_LIBRARIES)",
- "$(mbgl_filesource_LINK_LIBRARIES)",
- );
- OTHER_SWIFT_FLAGS = "-warnings-as-errors";
- PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h";
- SWIFT_VERSION = 4.0;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- DA839E8D1CC2E3400062CAFB /* Build configuration list for PBXProject "macos" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DA839EA71CC2E3400062CAFB /* Debug */,
- DA839EA81CC2E3400062CAFB /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- DA839EA91CC2E3400062CAFB /* Build configuration list for PBXNativeTarget "macosapp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DA839EAA1CC2E3400062CAFB /* Debug */,
- DA839EAB1CC2E3400062CAFB /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- DAAA17991CE13BAE00731EFE /* Build configuration list for PBXLegacyTarget "docs" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DAAA17971CE13BAE00731EFE /* Debug */,
- DAAA17981CE13BAE00731EFE /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- DAE6C3431CC30DB200DB3429 /* Build configuration list for PBXNativeTarget "dynamic" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DAE6C33F1CC30DB200DB3429 /* Debug */,
- DAE6C3401CC30DB200DB3429 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- DAE6C3441CC30DB200DB3429 /* Build configuration list for PBXNativeTarget "test" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DAE6C3411CC30DB200DB3429 /* Debug */,
- DAE6C3421CC30DB200DB3429 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = DA839E8A1CC2E3400062CAFB /* Project object */;
-}
diff --git a/platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index f2c779de46..0000000000
--- a/platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
- version = "1.0">
- <FileRef
- location = "self:/Users/mxn/hub/mapbox-gl-native/platform/macos/macos.xcodeproj">
- </FileRef>
-</Workspace>
diff --git a/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme b/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme
deleted file mode 100644
index cfb1eca382..0000000000
--- a/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "4E8A9455A3A23B7FD2A8FC52"
- BuildableName = "All"
- BlueprintName = "All"
- ReferencedContainer = "container:../../build/macos/platform/macos/platform.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "NO"
- buildForProfiling = "NO"
- buildForArchiving = "NO"
- buildForAnalyzing = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3301CC30DB200DB3429"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "9771D7F76DA54F52A89268C6"
- BuildableName = "mbgl-test"
- BlueprintName = "mbgl-test"
- ReferencedContainer = "container:../../build/macos/mbgl.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "NO"
- buildForRunning = "NO"
- buildForProfiling = "NO"
- buildForArchiving = "NO"
- buildForAnalyzing = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "D87DA13F4A80489CB4508EBD"
- BuildableName = "mbgl-benchmark"
- BlueprintName = "mbgl-benchmark"
- ReferencedContainer = "container:../../build/macos/mbgl.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES"
- language = "en"
- region = "US">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3301CC30DB200DB3429"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme b/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme
deleted file mode 100644
index 55a36344d5..0000000000
--- a/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3271CC30DB200DB3429"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "NO"
- buildForProfiling = "NO"
- buildForArchiving = "NO"
- buildForAnalyzing = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3301CC30DB200DB3429"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES"
- language = "en"
- region = "US">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3271CC30DB200DB3429"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3301CC30DB200DB3429"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3271CC30DB200DB3429"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3271CC30DB200DB3429"
- BuildableName = "Mapbox.framework"
- BlueprintName = "dynamic"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme b/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme
deleted file mode 100644
index 98e6c54a33..0000000000
--- a/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0930"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES"
- language = "en"
- region = "US">
- <MacroExpansion>
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </MacroExpansion>
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DAE6C3301CC30DB200DB3429"
- BuildableName = "test.xctest"
- BlueprintName = "test"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- </TestAction>
- <LaunchAction
- buildConfiguration = "Debug"
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- debugServiceExtension = "internal"
- allowLocationSimulation = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- </LaunchAction>
- <ProfileAction
- buildConfiguration = "Release"
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- debugDocumentVersioning = "YES">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "DA839E911CC2E3400062CAFB"
- BuildableName = "Mapbox GL.app"
- BlueprintName = "macosapp"
- ReferencedContainer = "container:macos.xcodeproj">
- </BuildableReference>
- </BuildableProductRunnable>
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Debug">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Release"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
diff --git a/platform/macos/macos.xcworkspace/contents.xcworkspacedata b/platform/macos/macos.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 65341f19fa..0000000000
--- a/platform/macos/macos.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
- version = "1.0">
- <FileRef
- location = "container:macos.xcodeproj">
- </FileRef>
- <FileRef
- location = "group:../../build/macos/mbgl.xcodeproj">
- </FileRef>
-</Workspace>
diff --git a/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d981003d..0000000000
--- a/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IDEDidComputeMac32BitWarning</key>
- <true/>
-</dict>
-</plist>
diff --git a/platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist b/platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
deleted file mode 100644
index cb6ecad738..0000000000
--- a/platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Bucket
- type = "3"
- version = "2.0">
- <Breakpoints>
- <BreakpointProxy
- BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
- <BreakpointContent
- shouldBeEnabled = "No"
- ignoreCount = "0"
- continueAfterRunningActions = "No"
- scope = "1"
- stopOnStyle = "0">
- <Actions>
- <BreakpointActionProxy
- ActionExtensionID = "Xcode.BreakpointAction.Sound">
- <ActionContent
- soundName = "Basso">
- </ActionContent>
- </BreakpointActionProxy>
- </Actions>
- </BreakpointContent>
- </BreakpointProxy>
- </Breakpoints>
-</Bucket>
diff --git a/platform/macos/scripts/deploy-packages.sh b/platform/macos/scripts/deploy-packages.sh
deleted file mode 100755
index bb90f3a8b0..0000000000
--- a/platform/macos/scripts/deploy-packages.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-# dynamic environment variables:
-# VERSION_TAG={determined automatically}: Version tag in format macos-vX.X.X-pre.X
-# GITHUB_RELEASE=true: Upload to github
-# BINARY_DIRECTORY=build/macos/deploy: Directory in which to save test packages
-
-# environment variables and dependencies:
-# - You must run "mbx auth ..." before running
-# - Set GITHUB_TOKEN to a GitHub API access token in your environment to use GITHUB_RELEASE
-# - "wget" is required for downloading the zip files from s3
-# - The "github-release" command is required to use GITHUB_RELEASE
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-publish() {
- OPTRESET=1
- OPTIND=
- local arg
- local rule=
- local suffix=
- local app=
- while getopts 'r:s:a:' arg; do
- case ${arg} in
- r) rule=${OPTARG};;
- s) suffix=${OPTARG};;
- a) app=${OPTARG};;
- *) "Usage: [-r rule] [-s suffix] [-a app]"; return
- esac
- done
-
- step "Building: make ${rule} ${suffix}"
- make ${rule}
- step "Publishing ${rule} with ${suffix}"
- local file_name=""
- if [ -z ${suffix} ]
- then
- file_name=mapbox-macos-sdk-${PUBLISH_VERSION}.zip
- else
- file_name=mapbox-macos-sdk-${PUBLISH_VERSION}-${suffix}.zip
- fi
- step "Compressing ${file_name}…"
- cd build/macos/pkg
- rm -f ../deploy/${file_name}
- zip -yr ../deploy/${file_name} *
- cd -
- if [[ "${GITHUB_RELEASE}" == true ]]; then
- echo "Uploading ${file_name} to GitHub"
- github-release upload \
- --tag "macos-v${PUBLISH_VERSION}" \
- --name ${file_name} \
- --file "${BINARY_DIRECTORY}/${file_name}" > /dev/null
- fi
- if [ ${app} ]; then
- file_name="Mapbox GL.app.zip"
- step "Compressing ${file_name}…"
- cd build/macos/app
- rm -f "${file_name}"
- zip -yr "../deploy/${file_name}" 'Mapbox GL.app'
- cd -
- if [[ "${GITHUB_RELEASE}" == true ]]; then
- echo "Uploading ${file_name} to GitHub"
- github-release upload \
- --tag "macos-v${PUBLISH_VERSION}" \
- --name "${file_name}" \
- --file "${BINARY_DIRECTORY}/${file_name}" > /dev/null
- fi
- fi
-}
-
-export GITHUB_USER=mapbox
-export GITHUB_REPO=mapbox-gl-native
-export BUILDTYPE=Release
-
-VERSION_TAG=${VERSION_TAG:-''}
-PUBLISH_VERSION=
-BINARY_DIRECTORY=${BINARY_DIRECTORY:-build/macos/deploy}
-GITHUB_RELEASE=${GITHUB_RELEASE:-true}
-PUBLISH_PRE_FLAG=''
-
-if [[ ${GITHUB_RELEASE} = "true" ]]; then
- GITHUB_RELEASE=true # Assign bool, not just a string
-
- if [[ -z `which github-release` ]]; then
- step "Installing github-release…"
- brew install github-release
- if [ -z `which github-release` ]; then
- echo "Unable to install github-release. See: https://github.com/aktau/github-release"
- exit 1
- fi
- fi
-fi
-
-if [[ -z ${VERSION_TAG} ]]; then
- step "Determining version number from most recent relevant git tag…"
- VERSION_TAG=$( git describe --tags --match=macos-v*.*.* --abbrev=0 )
- echo "Found tag: ${VERSION_TAG}"
-fi
-
-if [[ $( echo ${VERSION_TAG} | grep --invert-match macos-v ) ]]; then
- echo "Error: ${VERSION_TAG} is not a valid macOS version tag"
- echo "VERSION_TAG should be in format: macos-vX.X.X-pre.X"
- exit 1
-fi
-
-if [[ $( wget --spider -O- https://api.github.com/repos/${GITHUB_USER}/${GITHUB_REPO}/releases/tags/${VERSION_TAG} 2>&1 | grep -c "404 Not Found" ) == 0 ]]; then
- echo "Error: ${VERSION_TAG} has already been published on GitHub"
- echo "See: https://github.com/${GITHUB_USER}/${GITHUB_REPO}/releases/tag/${VERSION_TAG}"
- exit 1
-fi
-
-PUBLISH_VERSION=$( echo ${VERSION_TAG} | sed 's/^macos-v//' )
-git checkout ${VERSION_TAG}
-
-step "Deploying version ${PUBLISH_VERSION}…"
-
-if [[ ${#} -eq 3 && $3 == "-g" ]]; then
- GITHUB_RELEASE=true
-fi
-
-make clean && make distclean
-mkdir -p ${BINARY_DIRECTORY}
-
-if [[ "${GITHUB_RELEASE}" == true ]]; then
- step "Create GitHub release…"
- if [[ $( echo ${PUBLISH_VERSION} | awk '/[0-9]-/' ) ]]; then
- PUBLISH_PRE_FLAG='--pre-release'
- fi
- github-release release \
- --tag "macos-v${PUBLISH_VERSION}" \
- --name "macos-v${PUBLISH_VERSION}" \
- --draft ${PUBLISH_PRE_FLAG}
-fi
-
-publish -r xpackage -s symbols
-publish -r "xpackage SYMBOLS=NO" -a true
-
-step "Finished deploying ${PUBLISH_VERSION} in $(($SECONDS / 60)) minutes and $(($SECONDS % 60)) seconds"
diff --git a/platform/macos/scripts/document.sh b/platform/macos/scripts/document.sh
deleted file mode 100755
index 8d8d1c7bf2..0000000000
--- a/platform/macos/scripts/document.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-if [ -z `which jazzy` ]; then
- echo "Installing jazzy…"
- gem install jazzy
- if [ -z `which jazzy` ]; then
- echo "Unable to install jazzy. See https://github.com/mapbox/mapbox-gl-native/blob/master/platform/macos/INSTALL.md"
- exit 1
- fi
-fi
-
-OUTPUT=${OUTPUT:-documentation}
-
-BRANCH=$( git describe --tags --match=macos-v*.*.* --abbrev=0 )
-SHORT_VERSION=$( echo ${BRANCH} | sed 's/^macos-v//' )
-RELEASE_VERSION=$( echo ${SHORT_VERSION} | sed -e 's/^macos-v//' -e 's/-.*//' )
-
-rm -rf /tmp/mbgl
-mkdir -p /tmp/mbgl/
-README=/tmp/mbgl/README.md
-if [[ ${STANDALONE:-} ]]; then
- cp platform/macos/docs/pod-README.md "${README}"
- perl -pi -e 's|https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/macos/docs/||' \
- "${README}"
-else
- cp platform/macos/docs/doc-README.md "${README}"
-fi
-# http://stackoverflow.com/a/4858011/4585461
-echo "## Changes in [version ${RELEASE_VERSION}](https://github.com/mapbox/mapbox-gl-native/releases/tag/${BRANCH})" >> "${README}"
-sed -n -e '/^## /{' -e ':a' -e 'n' -e '/^## /q' -e 'p' -e 'ba' -e '}' platform/macos/CHANGELOG.md >> "${README}"
-
-rm -rf ${OUTPUT}
-mkdir -p ${OUTPUT}
-
-cp -r platform/darwin/docs/img "${OUTPUT}"
-cp -r platform/macos/docs/img "${OUTPUT}"
-
-jazzy \
- --config platform/macos/jazzy.yml \
- --sdk macosx \
- --github-file-prefix https://github.com/mapbox/mapbox-gl-native/tree/${BRANCH} \
- --module-version ${SHORT_VERSION} \
- --readme ${README} \
- --documentation="platform/{darwin,macos}/docs/guides/*.md" \
- --theme platform/darwin/docs/theme \
- --output ${OUTPUT} \
- --title "Maps SDK for macOS" \
- --module-version ${SHORT_VERSION}
diff --git a/platform/macos/scripts/metrics.sh b/platform/macos/scripts/metrics.sh
deleted file mode 100755
index 91dfc60358..0000000000
--- a/platform/macos/scripts/metrics.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-
-# Track individual architectures
-scripts/check_binary_size.js "build/macos/pkg/Mapbox.framework/Versions/Current/Mapbox" "macOS x86_64"
diff --git a/platform/macos/scripts/package.sh b/platform/macos/scripts/package.sh
deleted file mode 100755
index 407b116b06..0000000000
--- a/platform/macos/scripts/package.sh
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-NAME=Mapbox
-OUTPUT=build/macos/pkg
-APP_OUTPUT=build/macos/app
-DERIVED_DATA=build/macos
-
-BUILDTYPE=${BUILDTYPE:-Release}
-SYMBOLS=${SYMBOLS:-YES}
-PRODUCTS=${DERIVED_DATA}/${BUILDTYPE}
-
-function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
-function finish { >&2 echo -en "\033[0m"; }
-trap finish EXIT
-
-rm -rf ${OUTPUT} ${APP_OUTPUT}
-
-HASH=`git log | head -1 | awk '{ print $2 }' | cut -c 1-10` && true
-PROJ_VERSION=$(git rev-list --count HEAD)
-SEM_VERSION=$( git describe --tags --match=macos-v*.*.* --abbrev=0 | sed 's/^macos-v//' )
-SHORT_VERSION=${SEM_VERSION%-*}
-
-CI_XCCONFIG=''
-if [[ ! -z "${CI:=}" ]]; then
- xcconfig='platform/darwin/ci.xcconfig'
- echo "CI environment, using ${xcconfig}"
- CI_XCCONFIG="-xcconfig ./${xcconfig}"
-fi
-
-step "Building dynamic framework (build ${PROJ_VERSION}, version ${SEM_VERSION})…"
-xcodebuild \
- CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- CURRENT_SHORT_VERSION=${SHORT_VERSION} \
- CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \
- CURRENT_COMMIT_HASH=${HASH} \
- ${CI_XCCONFIG} \
- -derivedDataPath ${DERIVED_DATA} \
- -archivePath "${APP_OUTPUT}/macosapp.xcarchive" \
- -workspace ./platform/macos/macos.xcworkspace \
- -scheme dynamic \
- -configuration ${BUILDTYPE} \
- -jobs ${JOBS} \
- build | xcpretty
-
-step "Copying dynamic framework into place"
-mkdir -p "${OUTPUT}/${NAME}.framework"
-ditto ${PRODUCTS}/${NAME}.framework "${OUTPUT}/${NAME}.framework"
-if [[ -e ${PRODUCTS}/${NAME}.framework.dSYM ]]; then
- cp -r ${PRODUCTS}/${NAME}.framework.dSYM "${OUTPUT}"
-fi
-
-step "Building and archiving Mapbox GL.app (build ${PROJ_VERSION}, version ${SEM_VERSION})…"
-if [[ ${BUILDTYPE} == Release ]]; then
- mkdir -p ${APP_OUTPUT}
- xcodebuild \
- CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- CURRENT_SHORT_VERSION=${SHORT_VERSION} \
- CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \
- CURRENT_COMMIT_HASH=${HASH} \
- ${CI_XCCONFIG} \
- -derivedDataPath ${DERIVED_DATA} \
- -archivePath "${APP_OUTPUT}/macosapp.xcarchive" \
- -workspace ./platform/macos/macos.xcworkspace \
- -scheme macosapp \
- -configuration ${BUILDTYPE} \
- -jobs ${JOBS} \
- archive | xcpretty
-fi
-
-if [[ ${SYMBOLS} = NO ]]; then
- step "Stripping symbols from binaries"
- strip -Sx "${OUTPUT}/${NAME}.framework/${NAME}"
-fi
-
-function get_comparable_uuid {
- echo $(dwarfdump --uuid ${1} | sed -n 's/.*UUID:\([^\"]*\) .*/\1/p' | sort)
-}
-
-function validate_dsym {
- step "Validating dSYM and framework UUIDs…"
- DSYM_UUID=$(get_comparable_uuid "${1}")
- FRAMEWORK_UUID=$(get_comparable_uuid "${2}")
- echo -e "${1}\n ${DSYM_UUID}\n${2}\n ${FRAMEWORK_UUID}"
- if [[ ${DSYM_UUID} != ${FRAMEWORK_UUID} ]]; then
- echo "Error: dSYM and framework UUIDs do not match."
- exit 1
- fi
-}
-
-if [[ ${BUILDTYPE} == Release ]]; then
- validate_dsym \
- "${OUTPUT}/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" \
- "${OUTPUT}/${NAME}.framework/${NAME}"
-
- step "Exporting Mapbox GL.app"
- xcodebuild \
- ${CI_XCCONFIG} \
- -exportArchive \
- -archivePath "${APP_OUTPUT}/macosapp.xcarchive" \
- -exportPath "${APP_OUTPUT}" \
- -exportOptionsPlist platform/macos/ExportOptions.plist
-fi
-
-function create_podspec {
- step "Creating local podspec…"
- [[ $SYMBOLS = YES ]] && POD_SUFFIX="-symbols" || POD_SUFFIX=""
- POD_SOURCE_PATH=' :path => ".",'
- POD_FRAMEWORKS=" m.vendored_frameworks = '"${NAME}".framework'"
- INPUT_PODSPEC=platform/macos/${NAME}-macOS-SDK${POD_SUFFIX}.podspec
- OUTPUT_PODSPEC=${OUTPUT}/${NAME}-macOS-SDK${POD_SUFFIX}.podspec
- sed "s/.*:http.*/${POD_SOURCE_PATH}/" ${INPUT_PODSPEC} > ${OUTPUT_PODSPEC}
- sed -i '' "s/.*vendored_frameworks.*/${POD_FRAMEWORKS}/" ${OUTPUT_PODSPEC}
-}
-
-create_podspec
-
-step "Copying library resources…"
-cp -pv LICENSE.md "${OUTPUT}"
-cp -pv platform/macos/docs/pod-README.md "${OUTPUT}/README.md"
-sed -n -e '/^## /,$p' platform/macos/CHANGELOG.md > "${OUTPUT}/CHANGELOG.md"
-
-step "Generating API documentation…"
-make xdocument OUTPUT="${OUTPUT}/documentation"
-
-step "Checking that all public symbols are exported…"
-node platform/darwin/scripts/check-public-symbols.js macOS
diff --git a/platform/macos/sdk/Base.lproj/Localizable.strings b/platform/macos/sdk/Base.lproj/Localizable.strings
deleted file mode 100644
index 68360320eb..0000000000
--- a/platform/macos/sdk/Base.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "The map failed to load because an unknown error occurred.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "The map failed to load because the style can't be loaded.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "The map failed to load because the style is corrupted.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "The map failed to load because the style can’t be found or is incompatible.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Zoom In";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Zoom Out";
-
diff --git a/platform/macos/sdk/Base.lproj/MGLAnnotationCallout.xib b/platform/macos/sdk/Base.lproj/MGLAnnotationCallout.xib
deleted file mode 100644
index c8e29bc29e..0000000000
--- a/platform/macos/sdk/Base.lproj/MGLAnnotationCallout.xib
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10116"/>
- </dependencies>
- <objects>
- <customObject id="-2" userLabel="File's Owner" customClass="NSViewController">
- <connections>
- <outlet property="view" destination="c22-O7-iKe" id="QAM-0O-WIj"/>
- </connections>
- </customObject>
- <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
- <customObject id="-3" userLabel="Application" customClass="NSObject"/>
- <customView id="c22-O7-iKe">
- <rect key="frame" x="0.0" y="0.0" width="270" height="50"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
- <subviews>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="k5x-ao-Pz3">
- <rect key="frame" x="18" y="25" width="234" height="17"/>
- <textFieldCell key="cell" selectable="YES" sendsActionOnEndEditing="YES" title="Title" id="nVE-Zi-KcG">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <attributedString key="userComments">
- <fragment content="Placeholder for the annotation’s title">
- <attributes>
- <font key="NSFont" metaFont="smallSystem"/>
- <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
- </attributes>
- </fragment>
- </attributedString>
- <connections>
- <binding destination="-2" name="value" keyPath="representedObject.title" id="3nD-YS-gzq"/>
- </connections>
- </textField>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e9C-Ve-ccw">
- <rect key="frame" x="18" y="8" width="234" height="14"/>
- <textFieldCell key="cell" controlSize="small" selectable="YES" sendsActionOnEndEditing="YES" title="Subtitle" id="eKw-tQ-dw8">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <attributedString key="userComments">
- <fragment content="Placeholder for the annotation’s subtitle">
- <attributes>
- <font key="NSFont" metaFont="smallSystem"/>
- <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
- </attributes>
- </fragment>
- </attributedString>
- <connections>
- <binding destination="-2" name="value" keyPath="representedObject.subtitle" id="RQf-48-DyH"/>
- </connections>
- </textField>
- </subviews>
- <constraints>
- <constraint firstItem="e9C-Ve-ccw" firstAttribute="leading" secondItem="k5x-ao-Pz3" secondAttribute="leading" id="ApT-ew-CYb"/>
- <constraint firstAttribute="bottom" secondItem="e9C-Ve-ccw" secondAttribute="bottom" constant="8" id="CWV-Dd-8oi"/>
- <constraint firstItem="k5x-ao-Pz3" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="20" id="UUL-GB-Jtv"/>
- <constraint firstItem="e9C-Ve-ccw" firstAttribute="top" secondItem="k5x-ao-Pz3" secondAttribute="bottom" constant="3" id="Urc-wn-m8X"/>
- <constraint firstItem="e9C-Ve-ccw" firstAttribute="trailing" secondItem="k5x-ao-Pz3" secondAttribute="trailing" id="gss-6G-9GF"/>
- <constraint firstAttribute="trailing" secondItem="k5x-ao-Pz3" secondAttribute="trailing" constant="20" id="xCZ-s9-HaP"/>
- <constraint firstItem="k5x-ao-Pz3" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="8" id="xcm-oY-jjy"/>
- </constraints>
- <point key="canvasLocation" x="257" y="355"/>
- </customView>
- </objects>
-</document>
diff --git a/platform/macos/sdk/Info.plist b/platform/macos/sdk/Info.plist
deleted file mode 100644
index a3a7d6b902..0000000000
--- a/platform/macos/sdk/Info.plist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleShortVersionString</key>
- <string>$(CURRENT_SHORT_VERSION)</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>$(CURRENT_PROJECT_VERSION)</string>
- <key>MGLCommitHash</key>
- <string>$(CURRENT_COMMIT_HASH)</string>
- <key>MGLSemanticVersionString</key>
- <string>$(CURRENT_SEMANTIC_VERSION)</string>
-</dict>
-</plist>
diff --git a/platform/macos/sdk/ar.lproj/Localizable.strings b/platform/macos/sdk/ar.lproj/Localizable.strings
deleted file mode 100644
index fb0b0a2a46..0000000000
--- a/platform/macos/sdk/ar.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "فشل تحميل الخريطة بسبب حدوث خطأ مجهول.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "فشل تحميل الخريطة بسبب تعذر تحميل النمط.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "فشل تحميل الخريطة لأن النمط تالف.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "فشل تحميل الخريطة بسبب تعذر العثور على النمط أو أنه غير متوافق";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "قرّب";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "بعّد";
-
diff --git a/platform/macos/sdk/bg.lproj/Localizable.strings b/platform/macos/sdk/bg.lproj/Localizable.strings
deleted file mode 100644
index 5c71390076..0000000000
--- a/platform/macos/sdk/bg.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Картата не се зареди поради неизвестна грешка.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Картата не се зареди, поради незареждане на стила.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Картата не се зареди поради повреден стил.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Картата не се зареди поради неоткрит или несъвместим стил.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Приближи";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Отдалечи";
-
diff --git a/platform/macos/sdk/ca.lproj/Localizable.strings b/platform/macos/sdk/ca.lproj/Localizable.strings
deleted file mode 100644
index cd3073a8cb..0000000000
--- a/platform/macos/sdk/ca.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "El mapa no s’ha carregat a causa d’un error desconegut.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "El mapa no s’ha carregat perquè l’estil no es pot carregar.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "El mapa no s’ha carregat perquè s’ha corromput l’estil.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "El mapa no s’ha carregat perquè no es troba l’estil o bé és incompatible.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Apropar";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Allunyar";
-
diff --git a/platform/macos/sdk/cs.lproj/Localizable.strings b/platform/macos/sdk/cs.lproj/Localizable.strings
deleted file mode 100644
index f3c3ef1839..0000000000
--- a/platform/macos/sdk/cs.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Mapa selhala, protože došlo k neznámé chybě.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Mapa selhala, protože styl nelze načíst.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Mapa selhala, protože styl je poškozen.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Mapa selhala, protože styl nelze nalézt nebo je nekompatibilní.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Přiblížit";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Oddálit";
-
diff --git a/platform/macos/sdk/da.lproj/Localizable.strings b/platform/macos/sdk/da.lproj/Localizable.strings
deleted file mode 100644
index 1c9dcaa68d..0000000000
--- a/platform/macos/sdk/da.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Kortet kunne ikke indlæses, fordi der opstod en ukendt fejl.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Kortet kunne ikke indlæses, fordi benævnelsen ikke kan indlæses.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Kortet kunne ikke indlæses, fordi benævnelsen er beskadiget.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Kortet kunne ikke indlæses, fordi benævnelsen ikke kan findes eller er uforenelig.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Zoom Ind";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Zoom Ud";
-
diff --git a/platform/macos/sdk/de.lproj/Localizable.strings b/platform/macos/sdk/de.lproj/Localizable.strings
deleted file mode 100644
index fe3d979a31..0000000000
--- a/platform/macos/sdk/de.lproj/Localizable.strings
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Vergrößern";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Verkleinern";
-
diff --git a/platform/macos/sdk/default_marker.pdf b/platform/macos/sdk/default_marker.pdf
deleted file mode 100644
index d3e0e2ce12..0000000000
--- a/platform/macos/sdk/default_marker.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/macos/sdk/es.lproj/Localizable.strings b/platform/macos/sdk/es.lproj/Localizable.strings
deleted file mode 100644
index feb5e934fe..0000000000
--- a/platform/macos/sdk/es.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "No se pudo cargar el mapa debido a un error desconocido.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "No se pudo cargar el mapa debido a un error de carga en el estilo.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "No se pudo cargar el mapa debido a que el estilo está dañado.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "No se pudo cargar el mapa debido a que no se encuentra el estilo o está incompleto.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Acercar";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Alejar";
-
diff --git a/platform/macos/sdk/fi.lproj/Localizable.strings b/platform/macos/sdk/fi.lproj/Localizable.strings
deleted file mode 100644
index 071cc3558b..0000000000
--- a/platform/macos/sdk/fi.lproj/Localizable.strings
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Lähennä";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Loitonna";
-
diff --git a/platform/macos/sdk/fr.lproj/Localizable.strings b/platform/macos/sdk/fr.lproj/Localizable.strings
deleted file mode 100644
index da60467659..0000000000
--- a/platform/macos/sdk/fr.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Le chargement de la carte a échoué car une erreur inconnue est survenue.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Le chargement de la carte a échoué car le style n’a pas pu être chargé";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Le chargement de la carte a échoué car le style est corrompu.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Le chargement de la carte a échoué car le style n’a pas été trouvé ou est incompatible.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Zoomer";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Dézoomer";
-
diff --git a/platform/macos/sdk/gl.lproj/Localizable.strings b/platform/macos/sdk/gl.lproj/Localizable.strings
deleted file mode 100644
index 49652afb1b..0000000000
--- a/platform/macos/sdk/gl.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Non se puido cargar o mapa por mor dun erro descoñecido.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Non se puido cargar o mapa por mor dun erro de carga no estilo.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Non se puido cargar o mapa por mor de que o estilo está danado.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Non se puido cargar o mapa por mor de que non se atopa o estilo ou non está completo.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Achegar";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Afastar";
-
diff --git a/platform/macos/sdk/he.lproj/Localizable.strings b/platform/macos/sdk/he.lproj/Localizable.strings
deleted file mode 100644
index 0d9564894e..0000000000
--- a/platform/macos/sdk/he.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "טעינת המפה נכשלה עכב שגיאה לא ידועה.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "טעינת המפה נכשלה - לא ניתן לטעון את הסגנון.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "טעינת המפה נכשלה - הסגנון פגום.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "טעינת המפה נכשלה - לא ניתן למצוא את הסגנון או שהסגנון אינו תואם.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Zoom In";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Zoom Out";
-
diff --git a/platform/macos/sdk/hu.lproj/Localizable.strings b/platform/macos/sdk/hu.lproj/Localizable.strings
deleted file mode 100644
index 062b1f5cea..0000000000
--- a/platform/macos/sdk/hu.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Egy ismeretlen hiba miatt nem sikerült betölteni a térképet.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Nem sikerült betölteni a térképet, mert a stílust nem lehetett betölteni.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Nem sikerült betölteni a térképet, mert a stílus hibás.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Nem sikerült betölteni a térképet, mert a stílus nem található vagy inkompatibilis.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Nagyítás";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Kicsinyítés";
-
diff --git a/platform/macos/sdk/ja.lproj/Localizable.strings b/platform/macos/sdk/ja.lproj/Localizable.strings
deleted file mode 100644
index def56d1a9d..0000000000
--- a/platform/macos/sdk/ja.lproj/Localizable.strings
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "ズームイン";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "ズームアウト";
-
diff --git a/platform/macos/sdk/lt.lproj/Localizable.strings b/platform/macos/sdk/lt.lproj/Localizable.strings
deleted file mode 100644
index 0e2e604e84..0000000000
--- a/platform/macos/sdk/lt.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Nepavyko užkrauti žemėlapio dėl nežinomos klaidos.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Nepavyko užkrauti žemėlapio, nes nepavyko užkrauti stiliaus.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Nepavyko užkrauti žemėlapio, nes stilius yra netinkamo formato.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Nepavyko užkrauti žemėlapio, nes neįmanoma rasti stiliaus arba jis nėra suderinamas.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Priartinti";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Nutolinti";
-
diff --git a/platform/macos/sdk/mapbox.pdf b/platform/macos/sdk/mapbox.pdf
deleted file mode 100644
index fbe86d3a43..0000000000
--- a/platform/macos/sdk/mapbox.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/macos/sdk/mapbox_helmet.pdf b/platform/macos/sdk/mapbox_helmet.pdf
deleted file mode 100644
index 699b2ff293..0000000000
--- a/platform/macos/sdk/mapbox_helmet.pdf
+++ /dev/null
@@ -1,355 +0,0 @@
-%PDF-1.5 %
-1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 33 0 R]/Order 34 0 R/RBGroups[]>>/OCGs[5 0 R 33 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 16470/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c137 79.159768, 2016/08/11-13:24:42 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
- xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
- xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
- xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
- <xmp:CreatorTool>Adobe Illustrator CC 2017 (Macintosh)</xmp:CreatorTool>
- <xmp:CreateDate>2017-11-16T09:51:51-08:00</xmp:CreateDate>
- <xmp:ModifyDate>2017-11-16T10:04:52-08:00</xmp:ModifyDate>
- <xmp:MetadataDate>2017-11-16T10:04:52-08:00</xmp:MetadataDate>
- <xmp:Thumbnails>
- <rdf:Alt>
- <rdf:li rdf:parseType="Resource">
- <xmpGImg:width>256</xmpGImg:width>
- <xmpGImg:height>256</xmpGImg:height>
- <xmpGImg:format>JPEG</xmpGImg:format>
- <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FUPe6jYWMfqXdwkC9ubAE/IdT9GKsbv/wAx9HhqtpFJdMOjf3aH6W+L/hcVSC7/ADH1uUkW&#xA;8cNuvY0Lt97Gn/C4qlNx5q8xT19S/lFf99n0/wDiHHFUBJfXsprJcSOfFnY/rOKqOKuxVWjvr2I1&#xA;iuJIz/kuw/UcVR9v5q8xQU9O/lNP9+H1P+J8sVTa0/MfWoqC4jhuF7mhRvvU0/DFU/sPzH0eai3c&#xA;Ulqx6t/eIPpX4v8AhcVZJZajYX0fqWlwk69+DAkfMdR9OKojFXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYqlmr+ZNI0lT9amHrUqIE+KQ/R2+nFWDav+YWrXRaOyAs4ezD4pCP9Y7D6B9OK&#xA;sYmmmmkMk0jSSN9p3JZj8ycVWYq7FXYqujilkNI0Zz4KCf1YqiF0rVGFVs52HiI3P8MVc2laooq1&#xA;nOo8TG4/hiqHkiljNJEZD4MCP14qtxV2KuxVfDNNDIJIZGjkX7LoSrD5EYqyfSPzC1W1Kx3oF5D/&#xA;ADH4ZAP9YbH6R9OKs50fzJpOrKPqsw9alWgf4ZB9Hf6MVTPFXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYqpXV3bWkD3FzIsUKCrOxoMVYB5g/MG4nLW+lVgh6G5P943+qP2R+PyxVhzu7uXdizsaszGpJ&#xA;Pck4q1iqpb21xcyiK3ieaU9ERSx+4YqyXTvy71q5o10yWcZ7Meb/APArt95xVkdl+XWhw0Nw0t03&#xA;cM3BfuSh/wCGxVOrby/odsB6NjCpHRigZv8AgmqcVR6qqiigADoBsMVbxV2KtMqsKMAQeoO4xVAX&#xA;Pl/Q7kH1rGFierBArf8ABLQ4qk17+XWhzAm3aW1bsFbmv3PU/jirG9R/LvWrYFrVkvEHZfgf/gW2&#xA;+5sVY1cW1xbSmK4ieGUdUdSp+44qp4q2jujh0Yq6mqspoQR3BGKsx8v/AJg3MBW31as8PQXI/vF/&#xA;1h+1+v54qz+1u7a7gS4tpFlhcVV1NRiqrirsVdirsVdirsVdirsVdirsVdiqWa75gsNGtvVuG5St&#xA;/cwKfjc/wHicVeXa3r+oaxcepcvSNT+6gX7CD2Hj74qluKqtta3F1MsFvG0sz7KiCpOKs10T8uCQ&#xA;s2rSU7/VYj/xJ/8Amn78VZpZadY2MXpWcCQR9wgoT8z1P04qiMVdirsVdirsVdirsVdirsVdiqHv&#xA;dPsb6L0ruBJ4+wcVp8j1H0YqwzWvy4oGm0mSvf6rKf8AiL/81ffirCbq1ubWZoLmNopU+0jihxVS&#xA;xVMtE8waho9x6ls9Y2P72BvsOPcePvir1HQvMFhrNt6tu3GVf72Bvtof4jwOKpnirsVdirsVdirs&#xA;VdirsVdiqT+ZPMlrotryakl3ID6EFev+U3goxV5Tf393f3T3N1IZJn6k9APADsB4Yqh8VTzy75Tv&#xA;9Zf1B+4slPx3DDr7IP2jir0vSND07SoPSs4gpI+OU7u/+s2Ko/FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYqgdX0TTtVg9G8iDEfYlGzofFWxV5n5i8p3+juZN57In4LhR0r2cdj+GKpHiqIsNQu7C6S&#xA;6tJDHMnQjoR4EdwcVereW/MlrrVryWkd3GB68Fen+UvipxVOMVdirsVdirsVdirsVSzzBrtto1g1&#xA;xL8UrVWCHu7/ANB3OKvJL+/ur+7kurl+c0hqT2A7AeAHbFUPirLfKPkttQ432oApZdY4ujS+/sv6&#xA;8VejxRRxRrHEoSNAFRFFAAOgAGKrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq2SOOSNo5&#xA;FDxuKMjCoIPYg4q8582+Snsed9pyl7PdpYerRe47lf1YqxHFURp9/dWF3Hd2r8JozUHsR3BHcHFX&#xA;rmga5baxYLcxfDIvwzw90f8AoexxVMsVdirsVdirsVUru6gtLaS5uHCQxKWdj4DFXkGv63caxqD3&#xA;MlVjHwwRdkTsPn44qluKst8l+URqDDUL5T9SQ/uoz/u1h4/5I/HFXpIAAAAoB0GKuxV2KuxV2Kux&#xA;V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuIBFDuD1GKvN/OvlL6i7ajYp/oTn99EB/dMe4/ySfux&#xA;ViOKpl5f1y40fUEuY6tEfhni7On9R2xV6/a3UF3bR3MDB4ZVDIw7g4qq4q7FXYq7FXnf5g+YDPcf&#xA;oq3b9zAa3JH7UnZfkv6/lirDcVTvyp5dfWb+jgizho1w42r4ID4tir1mKKOKNYo1CRoAqIooABsA&#xA;Biq7FXYq7FXYq7FXYq7FXYqhb/VNO0+P1Ly4SBT0DHc/JRufoxVjN7+ZWmREraW0lwR+0xEa/wDG&#xA;x/DFUpl/MzVi37m1gRfB+bn7wyYqor+ZGvAmsVs1exR9vucYqjbf8zrgH/SbFGHcxuV/Bg2Kp7p/&#xA;n3y/dkLJI1pIdqTCi/8ABLVfvpirII5I5UEkbB0bdXUggj2IxVdirsVdirsVdiq2SOOWNo5FDxuC&#xA;rqdwQdiDiryfzZ5dfRr+kYJsp6tbue3ih91xVI8VZn+XvmD0Lg6TcN+5nPK2JP2ZO6/7L9fzxV6H&#xA;irsVdiqWeZNXXSdImuqj1qcIAe8jdPu64q8dd3d2dyWdiWZjuSTuScVX21vNc3EdvCvOWVgiL4km&#xA;mKvY9C0iDSdNis4qFlHKZ/55D9pv6e2Ko/FXYq7FXYq7FXYq7FWndEUu7BVUVZiaAAdycVYL5i/M&#xA;IhmttHpts14wr/yLU/rOKsIuLm4uZWmuJGllb7TuSxP0nFVPFXYq7FXYq7FUfpWu6ppUnOznKLWr&#xA;RHeNvmp2+nrir0Ty550sdVK28wFtfHYRk/C5/wAgn9R/HFWR4q7FXYq7FXYqgNc0iDVtNls5diwr&#xA;FJ14OPst/X2xV47dW01rcSW868JomKOp7EYqpo7xuroxV0IZWGxBG4IxV7F5c1hdW0mG629X7E6j&#xA;tIvX7+uKpnirsVeZ/mFq5utWFlG37mzFGHYyNu33Cg+/FWK4qzn8uNFDPJq0y7JWK2r40+Nvu2+/&#xA;FWe4q7FXYq7FXYq7FXYq0zKqlmIVVFSTsABirzPzh5ufUpGsrNiunoaMw2MpHc/5PgPpxVi2KuxV&#xA;2KuxV2KuxV2KuxVwJBBBoRuCMVeheTfObXLJpupPWc/Db3B/b/yX/wArwPf59VWaYq7FXYq7FXYq&#xA;wP8AMfRADHq8K/apFcgeP7D/APGv3YqwXFWV/l5q/wBV1VrGQ0hvBRa9BIu6/eKj7sVel4qh9RvY&#xA;7GwuLuT7MCM9PEgbD6TtirxSaaSaaSaQ8pJGLu3izGpOKt28EtxPHBEOUsrBEHiWNBir2nTbGKws&#xA;ILOL7ECBa9KnufpO+KonFXYq7FXYq7FXYq7FWC+f/MpFdHtHoSK3jjwO4j/5qxVgeKuxV2KuxV2K&#xA;ss0Lygb7y1d3jJ/pcu9j8ozv/wAGarirE8VdirsVdirgSCCDQjocVep+S/MZ1WxMFw1b62AEhPV0&#xA;6B/n2P8AbirI8VdirsVdiqG1Kxiv7Cezl+xOhWvgezfQd8VeLXNvLb3EtvKKSwsyOP8AKU0OKtQT&#xA;SQTRzRHjJEwdG8GU1GKva9PvI72xgu4/szorgeFRuPo6Yqxv8x7/ANHR4rRTRrqT4h4pH8R/4bji&#xA;rzXFWUfl7p31nWzcsKx2aF/bm3wr/E/Rir07FXYq7FXYq7FXYq7FUt8xawmk6VLdmhk+xAp7yN9n&#xA;7upxV47LLJNK8srF5JGLOx6kk1JOKrcVdirsVdiqK0rT5tR1CCyi+3MwUnwXqzfQN8Ve0W1vFb28&#xA;dvCvGKJQiL4BRQYq8v8APOj/AKP1lpY1pb3lZY/AN+2Pv3+nFWO4q7FXYq7FUdomqy6XqcN5HWiG&#xA;kqj9pDsy/dir2aKSOWNJY2DRuAyMOhBFQcVXYq7FXYq7FXmP5h6cLbWxcoKR3iBz4c1+Fv4H6cVY&#xA;vir0v8ub8z6NJasataSEKPBJPiH/AA3LFWP/AJj3Zl1uO3B+G3hFR/lOSx/DjirFMVel/lxZCHRZ&#xA;Lkj4rqUkH/Jj+Ef8NyxVleKuxV2KuxV2KuxV2KvM/wAwtWN1qoso2/c2Yo1OhkbdvuFB9+KsVxV2&#xA;KuxV2KuxVn/5b6Pwil1WUbyVit/9UH42+kin0YqzfFUl836ONU0WVEWtxB+9gp1LKN1/2Q2xV5Hi&#xA;rsVdirsVdir1PyDqBu9ASJzWS0YwmvXj9pfwNPoxVkeKuxV2KuxVin5jWXraIlyB8VrKCT/kP8J/&#xA;4bjirzTFWWflvdmLWZbcn4biI0H+UhBH4csVSjzVcev5iv5K1pKY/wDkX8H/ABriqVYq9l8uW31b&#xA;QrCGlCIUZh/lOOR/E4qmOKuxV2KuxV2KuxVQ1C8SysZ7t91gjaQjx4itPpxV4nPNJPNJNIeUkrF3&#xA;bxZjUnFVmKuxV2KpppHlnWNVINtARCTQ3Enwxj6T1+iuKs50f8v9Ks+Ml6frs43o20QP+r3+n7sV&#xA;ZQiIihEUKiiiqBQADwGKt4q7FUk1nyfouqEyPH6Fyd/XhopJ/wAodG/XirBtY8jazp5LxJ9ctx/u&#xA;yIHkB/lJ1+6uKsdxV2KuxVm35Y3JF3e21dnjWQD/AFDxP/E8VegYq7FXYq7FUu8x231nQr6GlSYX&#xA;ZR/lIOS/iMVeNYqmvlS49DzHp79KyiP/AJGAp/xtiqAvpDLe3Ep6ySO33sTiqkilmCjqxAH04q9z&#xA;jRY41RfsoAo+QFMVXYq7FXYq7FXYq7FWLfmLe+hoa26n4rqVVI/yU+I/iBirzLFXYq7FU38uahol&#xA;ndc9UsjdKSOD1qE+cZ+FvpxV6npuq6bqEIexnSVFAqq7FfmpoR92KozFXYq7FXYq7FVO4uLe3iaa&#xA;4kWKJftO5CgfScVedeb9c8s3xYWdr6t2f+P0ViH3dX+kYqxLFXYqyr8uGI1+QDo1u4P/AASH+GKv&#xA;TMVdirsVdirToroyN9lgQfkdsVeFupVip6qSD9GKq1jIYr63lHVJUb7mBxVQxVEacpbULZQKkyoA&#xA;PmwxV7dirsVdirsVdirsVdirzr8y7rnqdrag7QxFz/rSN/RBirDsVdirsVdiqpb3FxbyrNbyNFKv&#xA;2XQlSPpGKsv0f8x7uHjFqcX1hOnrx0WQfNdlb8MVZ3p+oWmoWiXVq/qQyV4tQg1BoQQcVRGKtMyq&#xA;pZiAqipJ6ADFWF6z+Y9vHWLSovWb/lolBCfQuzH6aYqwnUtX1HUpfVvZ2mYfZU7Kv+qo2GKoTFXY&#xA;q7FWX/lpCW1i5lpsluV+lnWn/ETir0fFXYq7FXYq7FXiOoqV1C6UihWWQEfJjiqHxV2KojTmK6hb&#xA;MDQiVCD8mGKvbsVdirsVdirsVdirsVeS+dZ/W8y3h7IVjH+xQA/jXFUjxV2KuxV2KuxV2Ksz/LjW&#xA;PRu5dMlb93cfvIK/78UfEP8AZKPwxV6HirGPP2s/UdJ+qxtS4vapt1EY+2fp+z9OKvMMVdirsVdi&#xA;rsVei/lpYmPTrm8YUNxIEX/VjHX72OKsxxV2KuxV2KuxV4jqLFtQuWJqWlck/NjiqHxVWvozFe3E&#xA;R6xyOv3MRiqkjFWDDqpBH0Yq9zjdZI1dfsuAw+RFcVXYq7FXYq7FXYq7FXi+uyGXWr+T+a4lp8uZ&#xA;piqBxV2KuxV2KuxV2KqlvcS29xHcQtxliYOjeBU1GKvZ9L1GHUNOgvYjRJU5EfykbMD8jtiryrzT&#xA;rH6V1ma4U1gT91b/AOovf/ZGpxVKcVdirsVdiq+CCWeeOCJeUsrBEUd2Y0AxV7RpOnpp+m29km4h&#xA;QKSO7dWP0sScVReKuxV2KuxVbI6xxs7fZQFj8gK4q8MdizFj1Ykn6cVVbGMy3tvEOskiL97AYqj/&#xA;ADVb+h5iv46UrKZP+Rnx/wDG2KpVir2Xy5c/WdCsJq1JhRWP+Ug4n8RiqY4q7FXYq7FXYq7FXh12&#xA;3O7melOUjGnzJxVSxV2KuxV2KuxV2KuxVOdN8y3Flod7pign6yR6T/yBtpP+CUbYqk2KuxV2KuxV&#xA;2Ks5/L3y6xf9MXK0Aqtop7k7NJ/AYqz3FXYq7FXYq7FUu8x3P1bQb+WtCIXVT/lOOI/E4q8axVNf&#xA;Ktv6/mKwjpWkok/5F/H/AMa4qm35j2hi1uO4A+G4hFT/AJSEqfw44qxTFXpf5cXom0WS2J+K1lIA&#xA;/wAmT4h/w3LFWV4q7FXYq7FXYq7FXhlx/fyf6zfrxVZirsVdirsVdirsVdirsVdirsVdirsVZN5S&#xA;8oS6rIt1dqY9OQ/Iykdl/wAnxP8AmFXp8caRoscahEQBVVRQADoAMVbxV2KuxV2KuxVin5j3oh0W&#xA;O2B+K6lAI/yY/iP/AA3HFXmmKsr/AC4tDLrclwR8NtESD/lOQo/Dliqf/mPYeto8V2oq1rJ8R8Ek&#xA;+E/8NxxV5rirKPy91H6trZtmNI7xCntzX4l/iPpxV6dirsVdirsVdirsVeHXa8LuZK14yMK/InFV&#xA;LFXYq7FXYq7FXYq7FXYq7FXYq2kbyOqRqXdjRVUVJJ7ADFWceW/y/YlbrWBReqWYO5/4yEfqGKs8&#xA;RERAiKFRRRVAoAB2AGKt4q7FXYq7FXYq7FXmP5haj9Z1sWymsdmgT25t8TfwH0YqxfFXpX5cWHo6&#xA;PLdsKNdyfCfFI/hH/DFsVZJqNlHfWFxaSfZnRkr4EjY/Qd8VeKTQyQzSQyDjJGxR18GU0IxVu3nl&#xA;t5454jxliYOh8CpqMVe06ZfRX9hBeRfYnQNTwPcfQdsVROKuxV2KuxV2KvFtci9LWr+P+W4lA+XM&#xA;0xVBYq7FXYq7FXYq7FXYq7FV0cUkriOJGeRtlRQSSfYDFWTaR+X+r3hV7yllAevPeQj2QdPpOKs6&#xA;0by1pOkr/osVZqUa4k+KQ/T2+jFU0xV2KuxV2KuxV2KuxVDalfRWFhPeS/YgQtTxPYfSdsVeLXE8&#xA;txPJPKeUsrF3PiWNTirUMUk0yQxjlJIwRF8WY0AxV7XptkljYW9om6wIqV8SBufpO+KojFXmf5ha&#xA;QbXVhexr+5vBVj2Ei7N94ofvxViuKs5/LjWgryaTM2z1ltq+NPjX7t/vxVnuKuxV2KuxV2KvNPNX&#xA;lfWpNbu7m2tHlt5WDo6UNaqC2wNftV7Yqx+XR9Xi/vbKdP8AWicfrGKqBtrlTQxOCOoKnFVPFVRb&#xA;a5YgLE5J6AKTiqIi0bV5aelY3D17rE5H6sVR0Hk3zLN9mxZR4yFU/wCJEHFU0tfy11aQg3NxDAv+&#xA;Tykb7qKPxxVPbH8uNGhIa6kkumHVSfTQ/Qvxf8NirIrLTNPsU4WdvHAD14KAT8z1P04qicVdirsV&#xA;dirsVdirsVdirsVYF+Y+tBni0mFtkpLc08f2F+7f7sVYNirKvy90k3WrG9cVhshUe8jVC/ducVem&#xA;Yq7FUs8yaQuraRNa0HrU5wE9pF6ff0xV466Ojsjgq6kqynYgjYg4qvtria2uI7iFuEsTB0YdiDXF&#xA;XsehavDq2mxXkdAzfDLGP2HH2l/p7Yqj8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi&#xA;rsVdirsVdiqA1zV4NJ02W8l3Zfhij/nc/ZX+vtirxy5uZrm4kuJm5yysXdj3JNcVWIjO6ogLOxAV&#xA;R1JOwGKvYfLWjrpOkw21P3x/eXDeMjDf7umKppirsVdirzv8wfL5guP0rbr+5nNLkD9mTs3yb9fz&#xA;xVhuKp35U8xPo2ocnq1nNRbhB2HZx7rir1mKWOWJJYmDxuAyOpqCDuCMVXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVssscUbSyMEjQFndjQADcknFXk3mvzE+s39UJFlDVbdDt&#xA;Xxc+7YqkmKsx/L7y/wDWLk6rcL+5tzS3B/ak/m/2P6/lir0XFXYq7FXYqpXdrBd20ltcIHhlUq6n&#xA;wOKvINf0S40fUHtpKtGfigl7OnY/PxxVLcVZZ5L82/o9xYXz/wChOf3Uh/3Ux/41P4Yq9KBDAMpq&#xA;DuCOhGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuJAFTsB1OKvNvOnm36+7afYt&#xA;/oSH97IP92sD2/yR+OKsSxVMdA0W41fUEtYqiP7U8vZEHU/PwxV7BaWkFpbRW1uoSGJQqKPAYqq4&#xA;q7FXYq7FXYqlnmDQrbWbBreX4ZVq0E3dH/oe4xV5Jf2F1YXclrcpwmjNCOxHYjxB7Yqh8VZZ5S86&#xA;Pp/CxvyXsukcvVov6r+rFXpEUsUsayxOHjcBkdTUEHuCMVXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FVssscUbSSsEjQFndjQADqSTirzjzb50e/5WOnMUsuksu4aX29l/XirEsVRFhYXV/dx&#xA;2tqhkmkNAOw8SfADFXrfl/QrbRrAW8XxStRp5u7t/QdhiqZ4q7FXYq7FXYq7FXYqk/mTy3a61a8W&#xA;pHdxg+hPTp/kt4qcVeU39hd2F09rdRmOZDuD3HiD3BxVD4qnfl3zXqGjOEX99Zk1e3Y7CvdD+ycV&#xA;emaRrum6tB6tnKGYD44W2kT/AFl/j0xVH4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUBq+uabpM&#xA;Hq3kvFj/AHcS7u/+qv8AHpirzTzF5sv9Zf0z+4slPwW6nr7uf2jiqR4qiLCwu7+6S1tYzJNIdgOw&#xA;8SewGKvVPLPlm20W2IBEt3KP303/ABqvgo/HFU6xV2KuxV2KuxV2KuxV2KuxVLNd8v2Gs23pXC8Z&#xA;V/uZ1Hxof4jxGKvLtb0DUNHuPTuUrGx/dTr9hx7Hx9sVS3FVS3ubi2mWa3kaKVPsuhII+7FWa6L+&#xA;Y7qFh1aPmOn1mICv+yTp933YqzSx1Kwv4vVs50nTvxO4r4jqPpxVE4q7FXYq7FXYq7FXYq7FXYq7&#xA;FUNfalYWEXq3k6QJ25Hc/wCqOp+jFWF63+Y7MGh0mPj2NzKN/wDYp/X7sVYVc3VxdTNPcSNLK/2n&#xA;ckk/fiqniqY6LoGoavcelap+7B/eztsiD3Pj7Yq9S0Ly/YaNbelbjlK399Ow+Jz/AAHgMVTPFXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FVK6tLa7ga3uYllhfZkYVGKsA8wfl9cwFrjSazw9TbH+8X/AFT+0Px+&#xA;eKsOdHRijqVdTRlIoQfcHFWsVVILie3lEsEjRSr0dCVI+kYqyTTvzC1u2otyEvIx/OOL0/1l/iDi&#xA;rI7L8x9FmoLmOW1buSPUX71+L/hcVTq28x6Fc09G/hJPRWcI33NQ4qj0kjkXkjB18VII/DFV2Kux&#xA;Vp5EjXk7BVHVmNB+OKpfc+Y9Cth++v4QR1VXDt/wK1OKpLe/mPosIIto5bpuxA9NPvb4v+FxVjmo&#xA;/mFrdzVbYJZxn+Qcnp/rN/ADFWN3FzcXEpluJWmlPV3Ys33nFVPFW0R3YIilnY0VQKkn2AxVmHl/&#xA;8vrm443Gqk28PUW4/vG/1v5f1/LFXoFpaW1pAtvbRLFCgoqKKDFVXFXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYqlmseW9J1ZT9ahAmpQXCfDIPp7/TirBtX/AC91a1LSWRF5D2UfDIB/qnY/QfoxVjE0&#xA;M0MhjmjaORftI4KsPmDiqzFXYq7FW1dlNVJU+INMVV11HUFIK3UqkdCJGH8cVc2o6gxJa6lYnqTI&#xA;x/jiqgzsxqxLHxJrirWKuxV2Kr4oZppBHCjSSN9lEBZj8gMVZPpP5e6tdEPekWUJ7H4pD/sQdvpO&#xA;Ks40fy1pOkqPq0NZv2riSjSH6e30YqmmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV&#xA;D3um2F8nC7t0nUdOagkfI9R9GKsbv/y40earWkslox6L/eIPoajf8NiqQXf5ca3ESbeSK5XsASjf&#xA;cwp/w2KpTceVfMUFfUsJTT/fY9T/AIhyxVASWN7EaS28kZ/ykYfrGKqOKuxVWjsb2U0it5JD/kox&#xA;/UMVR9v5V8xT09OwlFf9+D0/+J8cVTa0/LjW5SDcSRWy9wSXb7lFP+GxVP7D8uNHho13LJdMOq/3&#xA;aH6Fq3/DYqySy02wsU4WlukCnrwUAn5nqfpxVEYq7FXYq7FXYq7FXYq7FXYq7FX/2Q==</xmpGImg:image>
- </rdf:li>
- </rdf:Alt>
- </xmp:Thumbnails>
- <xmpTPg:NPages>1</xmpTPg:NPages>
- <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
- <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
- <xmpTPg:MaxPageSize rdf:parseType="Resource">
- <stDim:w>0.222222</stDim:w>
- <stDim:h>0.221944</stDim:h>
- <stDim:unit>Inches</stDim:unit>
- </xmpTPg:MaxPageSize>
- <xmpTPg:PlateNames>
- <rdf:Seq>
- <rdf:li>Cyan</rdf:li>
- <rdf:li>Magenta</rdf:li>
- <rdf:li>Yellow</rdf:li>
- <rdf:li>Black</rdf:li>
- </rdf:Seq>
- </xmpTPg:PlateNames>
- <xmpTPg:SwatchGroups>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Default Swatch Group</xmpG:groupName>
- <xmpG:groupType>0</xmpG:groupType>
- </rdf:li>
- </rdf:Seq>
- </xmpTPg:SwatchGroups>
- <dc:format>application/pdf</dc:format>
- <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
- <xmpMM:DocumentID>uuid:ad04dd96-0b1b-0043-88c6-2612e9f199e0</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:fd70734a-8143-0b42-928a-90f58b786320</xmpMM:InstanceID>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[7 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[0.0 0.0 16.0 15.98]/BleedBox[0.0 0.0 16.0 15.98]/Contents 35 0 R/Group 36 0 R/LastModified(D:20171116100452-08'00')/MediaBox[0.0 0.0 16.0 15.98]/Parent 3 0 R/PieceInfo<</Illustrator 37 0 R>>/Resources<</ExtGState<</GS0 38 0 R/GS1 39 0 R>>/Properties<</MC0 33 0 R>>/XObject<</Fm0 40 0 R/Fm1 41 0 R/Fm2 42 0 R/Fm3 43 0 R>>>>/Thumb 44 0 R/TrimBox[0.0 0.0 16.0 15.98]/Type/Page>> endobj 35 0 obj <</Filter/FlateDecode/Length 90>>stream
-HwVu6PprqV*2P04ճP04SЅRR
-@%!>n
-.\qC$qCFHC]}r
-8;Xp,*?`,t!f$f[~> endstream endobj 45 0 obj [/Indexed/DeviceRGB 255 46 0 R] endobj 46 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
-b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
-E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
-6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
-VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
-PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
-l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 40 0 obj <</BBox[0.952377 15.0476 15.0476 0.952377]/Group 47 0 R/Length 455/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-1 1 1 rg
-/GS0 gs
-q 1 0 0 1 11.3447 6.2625 cm
-0 0 m
--1.47 -1.47 -3.642 -1.76 -5.104 -1.76 c
--5.638 -1.76 -6.179 -1.722 -6.705 -1.638 c
--7.482 2.66 -5.074 5.075 v
--4.442 5.707 -3.588 6.05 -2.689 6.05 c
--1.722 6.05 -0.792 5.661 -0.106 4.968 c
-1.295 3.566 1.333 1.349 0 0 c
--3.345 8.785 m
--7.238 8.785 -10.393 5.623 -10.393 1.737 c
--10.393 -2.148 -7.23 -5.311 -3.345 -5.311 c
-0.541 -5.311 3.703 -2.148 3.703 1.737 c
-3.703 5.631 0.549 8.785 -3.345 8.785 c
-f
-Q
- endstream endobj 41 0 obj <</BBox[0.0 16.0 16.0 0.0]/Group 49 0 R/Length 339/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-0 0 0 rg
-/GS0 gs
-q 1 0 0 1 8 0.9519 cm
-0 0 m
--3.894 0 -7.048 3.162 -7.048 7.048 c
--7.048 10.934 -3.894 14.104 0 14.104 c
-3.894 14.104 7.048 10.941 7.048 7.056 c
-7.048 3.147 3.894 0 0 0 c
-0 15.048 m
--4.419 15.048 -8 11.459 -8 7.048 c
--8 2.637 -4.419 -0.952 0 -0.952 c
-4.419 -0.952 8 2.629 8 7.048 c
-7.992 11.459 4.419 15.048 0 15.048 c
-f
-Q
- endstream endobj 42 0 obj <</BBox[4.52039 12.3142 12.318 4.51277]/Group 50 0 R/Length 300/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-0 0 0 rg
-/GS0 gs
-q 1 0 0 1 9.501 8.1145 cm
-0 0 m
--0.693 -1.425 l
--1.379 0 l
--2.796 0.693 l
--1.379 1.379 l
--0.693 2.804 l
-0 1.379 l
-1.417 0.693 l
-h
-1.729 3.116 m
-0.328 4.518 -1.897 4.563 -3.23 3.23 c
--5.638 0.815 -4.861 -3.482 y
--0.564 -4.259 1.852 -1.852 v
-3.177 -0.503 3.139 1.714 1.729 3.116 c
-f
-Q
- endstream endobj 43 0 obj <</BBox[6.70476 10.9181 10.9181 6.68953]/Group 51 0 R/Length 158/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 48 0 R>>>>/Subtype/Form>>stream
-1 1 1 rg
-/GS0 gs
-q 1 0 0 1 10.918 8.8074 cm
-0 0 m
--1.417 -0.693 l
--2.11 -2.118 l
--2.796 -0.693 l
--4.213 0 l
--2.796 0.686 l
--2.11 2.111 l
--1.417 0.686 l
-h
-f
-Q
- endstream endobj 51 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 48 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 50 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 49 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 47 0 obj <</I true/K false/S/Transparency/Type/Group>> endobj 33 0 obj <</Intent 52 0 R/Name(Layer 1)/Type/OCG/Usage 53 0 R>> endobj 52 0 obj [/View/Design] endobj 53 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 21.1)/Subtype/Artwork>>>> endobj 38 0 obj <</AIS false/BM/Normal/CA 0.899994/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.899994/op false>> endobj 39 0 obj <</AIS false/BM/Normal/CA 0.350006/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.350006/op false>> endobj 37 0 obj <</LastModified(D:20171116100452-08'00')/Private 54 0 R>> endobj 54 0 obj <</AIMetaData 55 0 R/AIPDFPrivateData1 56 0 R/AIPDFPrivateData2 57 0 R/AIPDFPrivateData3 58 0 R/ContainerVersion 11/CreatorVersion 21/NumBlock 3/RoundtripVersion 21>> endobj 55 0 obj <</Length 1253>>stream
-%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 21.1.0 %%For: (Angel) () %%Title: (mapboxgl-logo.pdf) %%CreationDate: 11/16/17 10:04 AM %%Canvassize: 16383 %%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 326 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 2.5 2.51000020160791 18.5 18.4899997983921 %AI3_TemplateBox: 42.5 10.5 42.5 10.5 %AI3_TileBox: -367.5 -277.5 366.5 298.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 0 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-65 -26 %AI7_GridSettings: 18 8 18 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 56 0 obj <</Length 11231>>stream
-%%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %AI7_Thumbnail: 128 128 8 %%BeginData: 11078 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD37FFFD04A87DA87DA87DA87DA87DA87DA8A8FFA8FD66FFFD04A8 %FD197DA8A8FD5EFFA8A8FD077DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA8FD057DA8A8FD58FFA8A8FD297DA8A8FD51FFA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87D7D7DA8A8FD4DFFA8FD337DA8A8FD48FFA8A87D7D7DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8FD077DA87D7D7DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD45FFA8FD197DA87DA8A8A87DA8A8 %A87DA8FD177DA8A8FD40FFA8A87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FFA8FD11FFA8A87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %7D7DFD3EFFA8FD127DA8A8FD19FFA8FFA8A8FD117DA8FD3BFF7D7D7DA87D %A87DA87DA87DA87DA87DA87DFD23FFA8A87D7D7DA87DA87DA87DA87DA87D %7D7DA8A8FD36FFA8A8FD0F7DA8A8FD27FFA8A8FD0F7DFD34FFA8A87DA87D %A87DA87DA87DA87DA87DA8A8FD2DFFA8A87DA87DA87DA87DA87DA87D7D7D %FD32FFA8FD0E7DFD31FFA8A8FD0D7DA8FD2FFFA87D7DA87DA87DA87DA87D %7D7DA8A8FD35FF7D7D7DA87DA87DA87DA87D7D7DA8FD2DFFFD0D7DA8FD38 %FFA8A8FD0B7DA8FD2BFF7D7D7DA87DA87DA87DA87DA8A8FD3CFFA87DA87D %A87DA87DA87DA87DA8FD29FFFD0C7DA8FD3FFFFD0C7DA8FD26FF7D7D7DA8 %7DA87DA87D7D7DA8FD42FFA87D7DA87DA87DA87DA87DA8FD25FFFD0B7DA8 %FD44FFA8FD0B7DA8FD22FF7DA87DA87DA87DA87DA87DFD47FFA8A87DA87D %A87DA87DA87DA8FD21FFFD0B7DFD49FFA8A8FD097DA8FD1FFF7D7D7DA87D %A87DA87D7D7DFD4CFFA87DA87DA87DA87DA87DA8FD1DFFA8FD0A7DFD4EFF %A8FD097DA8FD1BFFA87D7DA87DA87DA87D7D7DFD50FFA87DA87DA87DA87D %A87DFD1AFFA8FD0A7DFD52FFA8FD097DFD19FFA87DA87DA87DA87D7D7DFD %54FFA87DA87DA87DA87DA87DFD17FFA8FD097DFD55FFA8FD097DA8FD16FF %7DA87DA87DA87DA87DFD57FFA8A87DA87DA87DA87D7DA8FD14FFFD097DA8 %FD2CFFFD09A8FFA8FD21FFA8FD097DFD13FFA87D7DA87DA87DA87DA8FD2A %FFA8A87DA8FD077DA87DA87DA8A8FD1FFFA87D7DA87DA87DA87DA8FD11FF %A8FD097DA8FD27FFA8A8FD137DA8A8FD1DFFFD097DFD11FFA87DA87DA87D %A87DA8A8FD27FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FD1DFF7DA87DA87DA87D7D7DFD0FFFA8FD097DFD25FFA8FD1C7DA8A8 %FD1AFFA8FD087DA8FD0EFF7D7D7DA87DA87DA87DFD25FFA87D7DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DA8FD1AFFA8 %7DA87DA87DA87DA8FD0DFFA8FD087DA8FD24FFFD237DFD19FFA8FD087DA8 %FD0CFFA87DA87DA87DA87DA8FD24FF7D7D7DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD19FF7DA87DA87D %A87D7D7DFD0BFFA8FD087DA8FD23FFFD277DA8FD18FFFD087DA8FD0AFFA8 %7D7DA87DA87DA8A8FD23FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD18FFA87DA87DA8 %7DA87DA8FD09FFA8FD087DFD23FFFD2B7DFD17FFA8FD087DFD09FFA87DA8 %7DA87DA87DA8FD22FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD17FF7DA87D %A87DA87D7DA8FD08FFFD087DA8FD21FFA8FD167DA8A8FD167DFD16FFA8FD %087DFD07FFA87D7DA87DA87DA87DFD21FFA87D7DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87D7DA8FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7DA8FD16FFA87DA87DA87DA87DFD07FFA8FD077DA8FD20FFA8FD %187DFFFFFFFD167DA8FD15FFA8FD087DFD06FF7DA87DA87DA87DA8FD21FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FFFFFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD16FF7DA87DA87DA8 %7DA8FD05FFA8FD087DFD21FFFD177DA8FD05FFFD167DFD16FFA8FD077DA8 %FD04FFA87DA87DA87DA87DA8FD20FF7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7DA8FD05FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7D7DFD15FFA87D7DA87DA87D7DA8FD04FFFD087DA8FD1FFFA8FD %187DFD07FFFD167DA8FD15FFFD077DA8FD04FFA87DA87DA87DA87DFD20FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87D %A87DFFFFFFA8FD077DA8FD20FFFD187DA8FD07FFA8FD167DFD15FFA8FD07 %7DA8FFFFA87D7DA87DA87D7DA8FD1FFF7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87D7DA8FD09FFA87D7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87D7DA8FD15FF7D7D7DA87DA87DA8FFFFA8FD077DFD1FFFA8FD18 %7DFD0BFFFD157DA8FD14FFA8FD087DFFFF7DA87DA87DA87DA8FD1FFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD0DFFA8A87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DFD15FF7DA87DA87DA87DA8FFA8FD %077DA8FD1FFFFD157DA8A8FD0FFFA8A8FD127DA8FD14FFA8FD077DFFFF7D %7D7DA87DA87DFD1FFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8 %FD15FFA8A87DA87DA87DA87DA87DA87DA87DA87DFD15FFA87D7DA87DA87D %7DA8A8FD077DA8FD1EFFA8FD117DA8A8FD17FFA8A8FD0E7DA8FD14FFA8FD %077DA8A87DA87DA87DA87DFD1FFF7DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD1DFFA8A87DA87DA87DA87DA87DA87DA8FD14FFA8A87DA87DA87D7DA8 %FD087DA8FD1DFFA8FD0E7DA8A8FD1FFFA8A8FD0A7DA8FD15FFFD077DA8A8 %7DA87DA87DA87DFD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD1D %FFA8A87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8FD %1EFFFD137DA8A8FD17FFA8A8FD0F7DFD15FFFD077DA8A87DA87DA87DA8A8 %FD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD15FFA8A8 %7DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8 %FD1EFFFD177DA8A8FD0FFFA8A8FD127DA8FD15FFFD087DA87DA87DA87D7D %7DFD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD0DFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD16FFA87D %A87DA87DA8FD087DA8FD1DFFA8FD1B7DFD0BFFFD167DA8FD15FFFD087DA8 %7DA87DA87D7DA8FD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA8A8FD09FFA8A87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DFD16FFA87DA87DA87DA8FD087DA8FD1DFFA8FD1B7DA8FD09FF %FD167DA8FD16FFFD087DA87DA87DA87DA8A8FD1DFF7DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87D7DA8FD16FFA87DA87DA87DA8FD08 %7DA8FD1CFFA8FD1E7DFD07FFFD177DFD17FFFD087DA87DA87DA87DA87DFD %1DFF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA8A8FD05FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %FD17FFA87DA87DA87DA8FD087DA8FD1CFFA8FD1E7DA8FD05FFFD177DA8FD %17FFFD077DA8A87DA87DA87D7D7DFD1CFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD05FF7DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD18FFA87DA87DA8FD0B7DA8FD1BFF %FD217DFFFFFFFD177DA8FD18FFFD077DA8FF7DA87DA87DA87DFD1CFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD18FF %A8A87DA87DA87D7DA8A8FD077DA8FD1BFFFD217DA8FFA8FD167DA8FD18FF %A8FD077DA8FF7DA87DA87DA87DA8FD1BFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD19FFA87D7DA87DA87DA8FFA8FD08 %7DFD1BFFFD397DFD1AFFA8FD077DFFFF7DA87DA87DA87DA8FD1BFFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD1BFF7DA87DA8 %7DA87DA8FFFFA8FD077DA8FD1AFFFD377DFD1BFFA8FD087DFFFFA87D7DA8 %7DA87D7DA8FD1AFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DFD1CFFA87DA87DA87DA87DA8FFFFFFFD077DA8FD1AFFFD357DFD1DFF %FD087DA8FFFFFFA87DA87DA87DA87DFD1AFFA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7D7DFD1EFFA87DA87DA87DA87DFD04FFA8FD077DA8FD %19FFFD337DFD1EFFA8FD077DA8FD05FF7DA87DA87DA87DA8FD19FFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA8A8FD1FFF7DA87DA87DA87D7DA8FD %04FFA8FD087DFD19FFFD2F7DA8A8FD1FFFA8FD087DFD06FFA87D7DA87DA8 %7DA8A8FD18FFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD22FFA87DA87DA8 %7DA87DA8FD07FFFD077DA8FD18FFA8FD2A7DA8A8FD23FFFD087DA8FD07FF %A87DA87DA87DA87DFD19FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DA87DFD25FFA87D7DA87D %A87D7D7DFD08FFFD097DFD17FFA8FD267DA8A8FD26FFA8FD077DA8FD09FF %7DA87DA87DA87DA8A8FD17FF7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD29FF7DA87DA87DA87DA8 %A8FD09FFA8FD077DA8FD16FFA8FD207DA8A8FD2BFFFD097DFD0AFFA87D7D %A87DA87D7D7DFD17FF7DA8FD077DA87D7D7DA87D7D7DA8FD077DA87DA8A8 %FD2FFFA8A87DA87DA87DA87DFD0CFFFD097DFD17FFA8FFA8A87DA87DA87D %A8FD057DA87DA87DFD04A8FFA8FD32FFA8FD087DFD0DFF7DA87DA87DA87D %A8A8FD61FF7DA87DA87DA87D7DA8FD0DFFA8FD077DA8FD60FFFD097DFD0E %FFA87D7DA87DA87DA87DA8FD5EFFA87D7DA87DA87DA87DFD10FFFD097DFD %5DFFA8FD087DA8FD11FF7DA87DA87DA87DA87DFD5CFFA87DA87DA87DA87D %7DA8FD11FFA8FD097DFD5AFFA8FD087DA8FD13FFA87DA87DA87DA87D7DA8 %FD58FFA87DA87DA87DA87D7D7DFD14FFA8FD097DA8FD57FFFD097DA8FD15 %FFA87D7DA87DA87DA87DA8A8FD55FF7DA87DA87DA87DA87DA8FD17FFFD0A %7DA8FD53FFFD097DA8FD19FF7D7D7DA87DA87DA87DA8FD52FF7D7D7DA87D %A87DA87D7DA8FD19FFA8FD097DA8A8FD4FFFFD0A7DA8FD1BFFA87DA87DA8 %7DA87DA87DA8FD4EFF7DA87DA87DA87DA87DA8A8FD1DFFA8FD097DA8FD4C %FFFD0B7DFD1FFFA87DA87DA87DA87DA87DA8FD4AFF7D7D7DA87DA87DA87D %7D7DFD20FFA8FD0B7DA8FD47FFFD0B7DFD23FFA87DA87DA87DA87DA87D7D %A8FD45FF7DA87DA87DA87DA87D7D7DFD24FFA8A8FD0B7DFD42FFA8FD0B7D %FD27FFA87DA87DA87DA87DA87D7D7DFD3FFFA8A87DA87DA87DA87DA87D7D %7DFD28FFA8A8FD0B7DA8A8FD3BFFFD0D7DFD2BFFA87DA87DA87DA87DA87D %A87DA8A8FD39FF7D7D7DA87DA87DA87DA87DA8A8FD2DFFA8FD0D7DFD35FF %A8A8FD0D7DFD2FFFA87DA87DA87DA87DA87DA87D7D7DA8A8FD31FF7D7D7D %A87DA87DA87DA87DA87DA8A8FD32FFFD0F7DA8A8FD2BFFA8A8FD0E7DA8FD %34FFA87D7DA87DA87DA87DA87DA87D7D7DA8A8FD28FFA87DA87DA87DA87D %A87DA87DA87DA87DA8FD37FFA8FD107DA8A8FD21FFA8A8FD117DFD3BFFA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD1BFFA8A87DA87D7D7DA8 %7DA87DA87DA87DA87DA87DA8A8FD3EFFFD157DFD04A8FD0DFFA8FFA8A87D %A8FD137DA8A8FD40FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %7D7DA87DA87DFD09A87DA87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DFD45FFA8FD377DA8A8FD48FFA8A87D7D7DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87D7D7DFD4EFFA8FD2E7DA8A8FD52FFA8A87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FD57FFA87DA8FD217DA8A8FD5EFFA8A87DA8FD077DA87DA87DA8 %7DA87DA8FD077DFD04A8FD64FFA8FFA8A87DA8FD0B7DA87DFD04A8FD34FF %FF %%EndData endstream endobj 57 0 obj <</Filter[/FlateDecode]/Length 16229>>stream
-HWn8;pLQ/;x'a4-1'(PTo:8^[6Ūs8bJZIJPр<SRڣ= z`R
-^Q1"wa^2|r@t*g|^u hxO`|E:\;$'Yƾh"Ob??`F4{x?c[ط!F8
-.drB2p!<,^&PP>qh[J) kB)`PFG{rt֨s6O#1yn# }տ iJCun8ds`HFE<e E&<C#R=yALɲCtK6Qݮ*-߮FЯbt1Z:R\u-]AVN~Oo!\ v}CN"k@
- U;hHi(
-4X;D-\&4Zw\Z=)hLE/]
-k/s<;wH|鴧 ERIIp1{Yrx1
-β2 z#8/2Ew%bMoMo?ɧl,7,!C9StYbIoIJVKq#o‚-4k,a z*ɹɜZc# D,tѲSFaƮn#a ]=uP,>uqlRuUpX?o =܉Ч|=j#Ao
-M?ɯ)鎢5[}Z*OLJ.2MLgjQ
-Nz8"=MK Xg)Ifa" 8>;=w~%f從*~Ttx,WZ%'whcО̞ޓ:K(JK'_D$t`8.T?(1կ)3-
-$ֹqbMDoDb'KoT;}Eyu;Ì\NPbO P_ 2΢_C:'BA#;7B2xo%nG;0d;ep[-[ojW
-{|s]-e]:}-<z`šR
-$+1qKHp"D8+{S7ӔBՉ^D4%TR$ɉd ,)*pu#}/;v.("iU0Oؤ !u{ձkG?<MV/xDG4~zJ]6gų*<:M`-W>@Aa*Duc."qձQ(tsJFROW-t5YPD#xqsݾlk6.ոzW'ݓ@ܢ/w9봫#e:tҜL9e`{']lpIBXƦCqͻ <~6qdok," nq+ >3Jxcqo^FtChc5
-:*sGn:QUWvN'l! F3U. X
-?t}϶#{P0hǎPDq\eh
-y+ȯNB2 m}%)foq ag2iQ`chytT^Xmi!F
-$gPy
-',QM Tx#ǓM1~(^?đ,ȏ Z=ֱLi,JPQg h`H#9Iv$KK6|/]^`?^S ^4wT% V\.r'HBpcUR)% 0 7V(6]*kRfS ­gaR@q̹X<ŪBm +6{ץ<JS-p
-MNnD|
-]'T;"Z\ :tʰ!71Ž *;  I -޼T𪂭0!d3c-:s7?trܨbWMƠ&ܣe*|I$ȡ(dr,ʆH0<+CCvroZD.HAX-xFuo&EKLc1e.V<}
-1aFGl7;زWL1t$a95.fwq'2֓@:QcjeЅiRB}aY
-ngeQV{s{(FXU3 (HK9dkfdn+ÑdQvư/a0e^?D<뷟jC[3N|LR ;1cFꅉЫB.R R?됁PnV_6GWh^>y8At5*:U1C ' SCE]X
-w
-w*$ ),OQتDLjttV/ura* PbgU%B/!u#+qSڵ 1噣1<&1v1婼r &yd|cp2SiJY ˉCOr(UyeCpn9z7o:P79CO *UYB
-cdc&?[SBbMDM`́;j&-<&U&G:ܹ*o`|a
-N^GʥPHI%#z{ugTxvZzFdIƻoǷ/g+6;M'덵՞k|IaƻΎmrx͵{m>^}6j}4|"3ѝ4l7ȨgVjɂ?ˇB6nntft;mZc{o޾ZqցٺuvoT;k?ڇ6[6کaZkV3n[]m94SћcEßwpOSm60K' 6Wki7mwtY]Y~~ۛ7#]7kN-bҏCѵ߭npSWljyts8Wz\Q, JG5Qcg47gίkNL-X6t2"qU69©`cߦl;BM 9 KS*[)mN/LOI/9
-}
->?);9Pq*@}rybPF7uy=E禚ǽsF_d)Y
-N`
- 6n`+MvGTs׬g.VӢB&)Rz-e;F Sl3rU[]'5% 0BXvƆ*1Vb*8A:#JhId#ؘ
-et}2ROSM I46PW! BI⃥@y,Sy#H6Uiy!`[͕_1 T~>M~6Ȍ%"Gad̈́4޿wxpU
-x#3NpU'bfJ>AxjK]UFo&G,ƯaKUV< H V
-ۊ2GʲW&)؃=̽6)PDled[w^M[Q!TIV⁃\sPxA#k=+435Yb9%Qgⴷ0 <|tG?h6mI'nAa bЮ\`rQVBٜɋ@Pǫ28;W_gcF 2 x3x潟V۶(zpwb SQ*?6wj=Cmxzګc#$1p7hL}jΚTp0)3^n!pQp- O&%0Ǻf9NJr9:b9mzbC %sW4u>(HhpXmqܧR7 ;jB'Ո3a`dEPاbP/o 6Y@ZbYoK30>3ҚBXOE%" j`c?g##{_ WX_ $=;c=S MwT)
-[t6WE/B[㝛bWQ*2=>Hf IM8h I*N NxWRN^$7O;",̃F\hS|^6o-N 94"VhHwbNqK\)д"4 (ocg844ٟeoݨ(UA V!/N TA=մ(-a `hm:-{#`|)I;̯y;ճXT}L6|WxPsf9 kQӡ{z)W IN-;^,R}9kn
-|VEO>bWzE~Ҋ
-n(|p |UNwG1
-x'cݾaeF7k Œ ʡWO{K"ov~}Q7D<n5gꫬ‡a1eIaT!i1(0Kj닐)R^~`dN)@6ZPddSWWx;:*ASvɇqqqT-*$
-Cf]L51][bQt=ڕfTd!GR[? ߏ|7_?0=.~?.*Tl(+ /2de l0/Tqm#J(ҫV-0il˼6aB+Vf
-y;7?tM^j"-E =|u`EMK^U5y4LUX<},s_Lq@Bg}]$(x,]sW&!! Ewf@E}NpF eP Jj҆iD8#v [=^ %a,zxH; IզI?XFEBL|9ǁ_$_$ϐ
-ꑸ0̴klinRڞﷶ+_l2.MSOq*>`e{⡅^(06 QFSd{<#1wva " W{M턠]t>|zj $r4 4sCc'C]H08d3nhj
-w[vzVV9[*B~f3W`9+S,k?W q/.8EmmAW
-B`d6$uSdX.$ais*,?' 0tvI6<>-[#%{O$<zq=" !)N,9n$TS-(t(aqE㝟t+ץӇh""ٖT
-mg$i!fb'Cb?.{դ>*RoF!,&B؋3xU%
-ԃ]It^%;r~6݄C)L ܻk?w=g+r;sx,\%"@
-2/Q[gDd#RHwN!IL_mQ"LM'_CuHzHE :[W=ᅛ&Îq0;7N
- k1 Vl&6m4gS~HSAp8jZ>7g;]MTEbLA#B4N+OK[M&!OL2׽/+rv.xIW&MH9Q(;)R'L߽-I?b ZS%Ԫ1M7
-2zFj$#JU J{jlϲ9kxۇlR?`agOjTww |\K6j'% ,l~do8J{ѝS6m_t"-K8x \[NB: Z|}<4N n)X] {2pPw읋!; P\
-rv[B]4ؼ5a,?;Xh5y(Sa wӽ=%B甩O[#Rh0hz*ƘV*?'<h>+0,&m Z-&\.EaWQB豭jFfAL"xhci/
-+Lwu:- ZO
-tX 6:`"tenWxtٛ1fuQ` <Dfr#AMdT1cvޡQAE(yiHw%d|ȫPiSQ
-5ٷ~n*LY_
-D6Kh6'(bOmx 6 a-CSJEʡW@᭞ў mT`9a$KҩE8EӅ<HJ:?HJ3őNAeQS9π*&}-bt:`8Ug!Z] EztA: OrJU
-?SB:)+{\i?#Xa|~ӌT6>Xђ[Ǣ7\-Ÿ́ђWa9CUPS~:;3v꩏@{@.{3WvZ[7[& 4dKҏtCn_;!{G?Wbh늵hf퉺Tu}_žO6x(g.vƂ\op0~Hз+м' ͢B}Խ?C:h>+43١r-V%BQpC%i:D(PisXP$CõF yM4LI6.j2
-y{RQތu#7.'U 4WBo؋>(?khɲjƧLϜC/L-uͧ7tE,C.{$4˷$KAFɝ]LJctRd$ߩ?m/P<>/嬰F@+#rj
-ӻ3'pvWrX\>M#$5+"Jӆ}@GvPllX !+Q-/WPDө\WM~,^[ro6L4Zd>r~ -Cq!|fյ1a. uY:>%vΑ,7{eī4YwE:N7Cy`_GW|9=We5AY2RdC"<O_uW16 dnd#|i0ջ.v.Y=zv1UoOjLؙQ?1*J}cۿfB;?n+1w\ 1I(DJxiӋd+U<=̯֫Iul6e`ZvqW!<|ܖKS-/.zfs#J~D?=j1ij-yH +&"dXzi@ouL;`cgGYYpBָ$x_Dr?Ygm%M)ȺnbU=ܪ76!=D_E+SHƃJF
-IUVp?nfz|dU4P:{
-Ƒá؛Dž&T[Rdt5Zfz}&m^R6:a 6 bdv"5i /yb=G<kǯJ=ZZt
-2 
-.@A!tڈ "FwbC~M5^m<xd{򦖈3QWB9 1}&Nr'Uf8ʇQcM$O>Y'WV\켕ag@0 ] uttIQ'+њ i@eNh໢I[3 @(04hi(F;d`j;>1eG1LG>ȩXy<ȿJ)K"G>Uc9oebA< k/]ͷtf^@VY"d ]4c^ޠ0S32 Z sΉ.r84焖
-L uB1_ 'ɪ8rqDZ.]n\[ A0i!ct =9S;r GZ;Q1g{*87u6Ya4B5k!aax5ha1g԰yE@5U.QU>ILNLh1>T$TQJH~CNt慰M/`j:v,!Yt\Jx<Z)^Y d\?8dd |ksW* V?ͭ)x gj
-̜fUzWҤKΎIٶ4w1C4U!p68X!uGzܔf9y}ӵ81>{ARzkyq9FK.1ʡ"\8efsQ :2t)>9-59` ē#Q6/M"[?KMׯ$k%$Mjuef aHiZi0'SãSN{2&߉ɛfC-$Xz
-~ =y/`0Tvwٱ.;&Sh)'/l)s^؅CGxf`k%K饦
-"s^I|d)^3>2sgk9# sOw Su}*\i4o^nh!IIUv'Ƭ
-)WvOABdʕ4§eFƹ#ޱᎽ5υ'->hLrr~q$h ֡ˆ~L,7+\܋WHv2uU%,íT`46*|w܏I;mVryC1r'\`zyr6,o֤ZfɚeBu,CV1DmBD)&q'e&CRdѦKKK'`Ckp'-UЕA
-y-pZ&ݝߕP"z!G
-/ajHmwIҷX*) R~!0o:]?&,3P;Վ~X@}oF9PM_3NrlvR!ek8tD)P`L$9ԙY|h`/b%l哕h}MD Q+Nا
-9໧ظ&ҭ)A:
-^b~lz|װ9G(c^^!Sa>#~DqK=T6xl-2ޏ]o1ey*
-S!*GiZLuGW_!c=v'e s1r\K4Dž%@_X˥@H*9/ۦT(>p/J\SS{0K&ɱF t8bw߰v^M} .+V_S}q %?<sq}Yn #z%}NJ~"݊%By(h0$(7#`bށ֯e+ !PV/c
- q,KOx_̨J|\'96ȫ H)AUCP@)Ztx@ܗjFgM],˃BwR֨!Y!*VDX&)ʝV7_K8-KEJ,_:|KId~8KQ'<|r!G
-HWBN}<pI*X!R zU nl-9sfJlj:mJlt3,Q8O*GuLOsIv_mȲ~1. =^R$YP%έu 7K|yiM vo`{**~H JR!$
-
-IA]pJ~_8-襓*XT WD`=6WBR4d11CExX_;Tc]μNMj
-|P ~UnRhb 95dW$3lymu2\#d$G: Y%c(+
-(|Mxq:]_2;OZF
-
-zl2CǨaB ]րJY.馛ًlM2j$|.
-m+\ :]б+#nΨ.}h[DInFD7Srú Ydj,ԡvT׾+aͳ'T4 Z
-!X)d屮WdSgļPƶ۩U.[RSΦ ރ#chb1MZCؑa ;ҿ.!Pt/I|dX2yam\w⻁MG+%f
-_ϼ~.gq C0Og g]B 6g q80:s2
-ܕ: w%c'iڦ8A* t00xRapa'[
-vJW\S;.Ӷ۾>qekL0 hJT`kgbPAZe2 ']z 
-Ít|{]5y:o 논huW3{8|wE Iac /m0"it4~!ܪwL11t;E]>Yrb::u 0끷9ɾ(tOohM9d3W
-¨pÙԭf J|0S Ow2y^9<(%v ٴG N߁/>Ώ(?": )I
-T%5r1/`'l/9%  1^tmW6|gg1YӱR;1650ԛ'㈀8W_h(oYŬ]lӻC3 ) r0 dO_efÀe<WN<)P}_c <ɡS!c}YaF5+Exlڻ[NcXPٰH!cm<N(ȊdFVX $2b>E)1[..C #`#*)7t0X"'&_y~-ȕ
-bKfP0gq\)VPP)Ji+/[j$*rͰiGYfJ?a,psFx# c$-7q9Vv:gRCYJ4"
-*ŗS9s@#}9, 4Te>4V_6\=Sijb
-R
-7ĺrjmU{ ;GKpʏd(" ]R̋کv~e,xs -7[P}1Tݟ^)mU&NQm料AgTyHz, ):
-K3 -L8rhQ\ⶑ?CW|:Fs*nsW7ӝмtɉ*2XHaZh\71EgְU@NZǂKCvjZnTJ)h
-7(J36t Cg
-Qr+'H4"ډ(cAomh9֣H>xnP1Wˡ_ϝct9 FqJ</)ЩX 1FmT_ת9[q)&~MfLnw݈Rӧ`11b|77]E 6 F^(+S"nbbO+{Ƹ ͕!&Y8B.w!5 w nĮAgGd#Ex?>ἅgCy)⋄7c=*
-+
-Uy+?dWy\A"!-iiQZkE;TI}f̙sJߪ^/Go
-$y: jK,՟=]>A}! <C-Vh1d fXWМ@`$"aؠ4V4x7V=ʴiJ 0-I]z/d3sJ5&懷&sZW{bv
-MLݡŠPG)|,> 4|>!NZtR09Q9zi &-BBy_Ѹ%=NA~wꝩ7~;>|;keݓ x9^ G2"˙;oyeOn矵ᢙp-EFSBv]aܳJy3d]+3AM5xgs=gK>^
-OFO'fFc
-{
-@m6FP61\
-pop
-Em֨{? T{6H҉;NnHȶ޺
-[MMZHcDPyz͞dȷݘm1'L5ν)`?LPuJP8Pg0^K3*~m#- տhԒܘ~jsm8ކoRրMrG h tу(LƷhQ+Om
-Ld<r
-+tXqgP:SjϺqwk@$ٝ[`7pr*iE
-2wOU
-X<-7p4ݛ'A?M^lvSVz
-N
-6@PknAD4TMlW&R^fBI6Bwa<[]~}
-` b4!#`ɣoAGzun=+N t R$ H[wf4=K&fOy晙=5S[Q
-ET)r(] CoX z]P LMg.D@nO&(ew5]ǧׂv"<3ȖiR\W]!+bBtS-ٴl3H?.c rI,&y柦˸5ufY 
-$[K$ ޖRQ&|#N6 'V%=՚C*09#~{(n/dqf/?8Z&ZR%qp| @T~X=&&Nq 3bاu6Q^DVѢ"dZ09ze@JC=$$qwS0
- P?H+vSO`.>80*$EG+G$Tk֨Ϫ#q Ao+(0Wp%JyJ,R%5ct -=ݥ"g&(UJupp]ї#HDer
-`O:c4ʜO~T|`xlDixBU Qų<I&\(n4:B0XϮ#g$IjgUīn>pƎhN2t<5sܑj~hg[ٚ!*A3agyhZNА,=M] m2ƀe9_% jsR/0ED`6;
-.ԭYM$-pnNQABE 'x;D!l־~*Z5Rc<<ONzy:!Vv4
-
-V|ǪP
-B=Q]T,4C!m-:![=v^ e ;L
-ls`M ;\7ř{r]E"&* ȿULu:t!:y+<}ݭ[SXHԩ
-MLţ++ t>\M|J
-%Hp)ol5/}NɗL3:K*&U-{Y3B Y!`sو
-V%o@O!pXS(ol > W''
->*fJ JϠDr
-P~
-KTۈ;Z8TZo
-W`KXrk6V Lm>1QyqW >O9ía%M^^kζt;U)^W.T`v/p\Jzc)V5B>8Fx^m?S[n?05'RxYh;kkGo|.
-'ĠɃtox,<M)M:.] ]./
-{px2QcX]G gyOQ]'˶%XaJGwu?Gc&/qqP;ju=*b65STׯvgH4
-ǓAշ޳
-eAf0PZ?`Bxأ>)BSuHyo5ɛw.Ͽ|SWce?2 Y_]ߵ9% >EBk|hZmrs6Ũucѻ\Sy8_ﺏߢEZjo7bR4X*F(k~n 4}'"jC.-·5\;Dp6rgvt.^XGZgj+]9gb ~(Y+-c><ז+N0f\rH͝vBq:㕑sw6]=ϑ>R[;$lR#-4YY+&VJMZ`[-m֕ӃpD9.c\pcb.r\24E,mpRyX2r),!X,Ck- A&,Sx
-OWdF"ԏw^Nnp:z٨y7A۠=`Mp
-{d2_y
-+ {F =$*1 iRK1r~0Xl&K K.$YAU샛P>r,fjVSN 棌1ϓά7(MHBK%B
-ASy?T n=Ǧ;_':r:EQ<5 -a
-C(BZkɤ-R vW'mWO?Q~؉O~+ȈN#?
-0000000016 00000 n
-0000000159 00000 n
-0000016706 00000 n
-0000000000 00000 f
-0000063411 00000 n
-0000000000 00000 f
-0000016757 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000063481 00000 n
-0000063512 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000020437 00000 n
-0000063597 00000 n
-0000017158 00000 n
-0000017316 00000 n
-0000020870 00000 n
-0000020624 00000 n
-0000020747 00000 n
-0000018097 00000 n
-0000018739 00000 n
-0000019249 00000 n
-0000019733 00000 n
-0000017381 00000 n
-0000017536 00000 n
-0000017584 00000 n
-0000020375 00000 n
-0000020138 00000 n
-0000020313 00000 n
-0000020251 00000 n
-0000020076 00000 n
-0000020508 00000 n
-0000020539 00000 n
-0000020944 00000 n
-0000021127 00000 n
-0000022431 00000 n
-0000033714 00000 n
-0000050016 00000 n
-0000063622 00000 n
-trailer <</Size 60/Root 1 0 R/Info 59 0 R/ID[<A9574215A3794EB69EDC5F2A9F73D83F><4EB2C399D71C4705888A21443A38AEB3>]>> startxref 63763 %%EOF \ No newline at end of file
diff --git a/platform/macos/sdk/nl.lproj/Localizable.strings b/platform/macos/sdk/nl.lproj/Localizable.strings
deleted file mode 100644
index 8e7b0ae45f..0000000000
--- a/platform/macos/sdk/nl.lproj/Localizable.strings
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Inzoomen";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Uitzoomen";
-
diff --git a/platform/macos/sdk/pl.lproj/Localizable.strings b/platform/macos/sdk/pl.lproj/Localizable.strings
deleted file mode 100644
index d86155cbde..0000000000
--- a/platform/macos/sdk/pl.lproj/Localizable.strings
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Powiększ";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Pomniejsz";
-
diff --git a/platform/macos/sdk/pt-BR.lproj/Localizable.strings b/platform/macos/sdk/pt-BR.lproj/Localizable.strings
deleted file mode 100644
index 72fa43b657..0000000000
--- a/platform/macos/sdk/pt-BR.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Falha ao carregar mapa devido a um erro desconhecido.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Falha ao carregar mapa porque o estilo não pode ser carregado.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Falha ao carregar mapa porque o estilo está corrompido.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Falha ao carregar mapa porque o estilo não pode ser encontrado ou é incompatível.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Aumentar Zoom";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Reduzir Zoom";
-
diff --git a/platform/macos/sdk/pt-PT.lproj/Localizable.strings b/platform/macos/sdk/pt-PT.lproj/Localizable.strings
deleted file mode 100644
index 1385193989..0000000000
--- a/platform/macos/sdk/pt-PT.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Não foi possível carregar o mapa porque ocorreu um erro.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Não foi possível carregar o mapa porque o estilo não foi carregado.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Não foi possível carregar o mapa porque o estilo está corrompido.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Não foi possível carregar o mapa porque o estilo não foi encontrado ou não é compatível.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Apromixar";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Afastar";
-
diff --git a/platform/macos/sdk/ru.lproj/Localizable.strings b/platform/macos/sdk/ru.lproj/Localizable.strings
deleted file mode 100644
index 8554c9ebd1..0000000000
--- a/platform/macos/sdk/ru.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Не удалось загрузить карту из-за неизвестной ошибки.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Не удалось загрузить карту из-за ошибки загрузки стиля.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Не удалось загрузить карту из-за ошибки в стиле.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Не удалось загрузить карту так как стиль не найден или несовместим.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Приблизить";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Отдалить";
-
diff --git a/platform/macos/sdk/sv.lproj/Localizable.strings b/platform/macos/sdk/sv.lproj/Localizable.strings
deleted file mode 100644
index 0612033f3d..0000000000
--- a/platform/macos/sdk/sv.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Misslyckades med att ladda kartan på grund av ett okänt fel.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Misslyckades med att ladda kartan för att kartstilen kunde inte laddas.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Kunde inte ladda kartan för att kartstilen är korrupt.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Kunde inte ladda kartan för att kartstilen kunde inte hittas eller är den inkompatibel.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Zooma In";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Zooma Ut";
-
diff --git a/platform/macos/sdk/uk.lproj/Localizable.strings b/platform/macos/sdk/uk.lproj/Localizable.strings
deleted file mode 100644
index 74ec8ebaee..0000000000
--- a/platform/macos/sdk/uk.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Неможливо завантажити мапу через невідому помилку.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Неможливо завантажити мапу, бо неможливо завантажити стиль.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Неможливо завантажити мапу, через помилки в стилі.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Неможливо завантажити мапу, бо неможливо знайти стиль або він несумісний.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Збільшити";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Зменшити";
-
diff --git a/platform/macos/sdk/vi.lproj/Localizable.strings b/platform/macos/sdk/vi.lproj/Localizable.strings
deleted file mode 100644
index 11256ca5e9..0000000000
--- a/platform/macos/sdk/vi.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì lỗi không rõ.";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì không thể tải bảng kiểu.";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì bảng kiểu bị hỏng.";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "Bản đồ bị thất bại khi tải vì không tìm thấy bảng kiểu hoặc bảng kiểu không tương thích.";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "Phóng to";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "Thu nhỏ";
-
diff --git a/platform/macos/sdk/zh-Hans.lproj/Localizable.strings b/platform/macos/sdk/zh-Hans.lproj/Localizable.strings
deleted file mode 100644
index 40b61a2dba..0000000000
--- a/platform/macos/sdk/zh-Hans.lproj/Localizable.strings
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "放大";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "缩小";
-
diff --git a/platform/macos/sdk/zh-Hant.lproj/Localizable.strings b/platform/macos/sdk/zh-Hant.lproj/Localizable.strings
deleted file mode 100644
index e5cf4b7695..0000000000
--- a/platform/macos/sdk/zh-Hant.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* User-friendly error description */
-"LOAD_MAP_FAILED_DESC" = "發生不知名錯誤,無法載入地圖。";
-
-/* User-friendly error description */
-"LOAD_STYLE_FAILED_DESC" = "載入樣式表時發生錯誤,無法載入地圖。";
-
-/* Accessibility title */
-"MAP_A11Y_TITLE" = "Mapbox";
-
-/* User-friendly error description */
-"PARSE_STYLE_FAILED_DESC" = "樣式表有毀損,無法載入地圖。";
-
-/* User-friendly error description */
-"STYLE_NOT_FOUND_DESC" = "找不到樣式表或樣式表不兼容,無法載入地圖。";
-
-/* Label of Zoom In button */
-"ZOOM_IN_LABEL" = "+";
-
-/* Tooltip of Zoom In button */
-"ZOOM_IN_TOOLTIP" = "放大";
-
-/* Label of Zoom Out button; U+2212 MINUS SIGN */
-"ZOOM_OUT_LABEL" = "−";
-
-/* Tooltip of Zoom Out button */
-"ZOOM_OUT_TOOLTIP" = "縮小";
-
diff --git a/platform/macos/src/MGLAnnotationImage.h b/platform/macos/src/MGLAnnotationImage.h
deleted file mode 100644
index d7336133d1..0000000000
--- a/platform/macos/src/MGLAnnotationImage.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#import <AppKit/AppKit.h>
-
-#import "MGLFoundation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The `MGLAnnotationImage` class is responsible for presenting point-based
- annotations visually on an `MGLMapView` instance. Annotation image objects pair
- `NSImage` objects with annotation-related metadata. They may be recycled later
- and put into a reuse queue that is maintained by the map view.
- */
-MGL_EXPORT
-@interface MGLAnnotationImage : NSObject <NSSecureCoding>
-
-#pragma mark Initializing and Preparing the Image Object
-
-/**
- Initializes and returns a new annotation image object.
-
- @param image The image to display for the annotation.
- @param reuseIdentifier The string that identifies this annotation image in the
- reuse queue.
- @return The initialized annotation image object or `nil` if there was a problem
- initializing the object.
- */
-+ (instancetype)annotationImageWithImage:(NSImage *)image reuseIdentifier:(NSString *)reuseIdentifier;
-
-#pragma mark Getting and Setting Attributes
-
-/** The image to display for the annotation. */
-@property (nonatomic, readonly) NSImage *image;
-
-/**
- The string that identifies this annotation image in the reuse queue.
- (read-only)
-
- You specify the reuse identifier when you create the image object. You use this
- type later to retrieve an annotation image object that was created previously
- but which is currently unused because its annotation is not on-screen.
-
- If you define distinctly different types of annotations (with distinctly
- different annotation images to go with them), you can differentiate between the
- annotation types by specifying different reuse identifiers for each one.
- */
-@property (nonatomic, readonly) NSString *reuseIdentifier;
-
-/**
- A Boolean value indicating whether the annotation is selectable.
-
- The default value of this property is `YES`. If the value of this property is
- `NO`, the annotation image ignores click events and cannot be selected.
- */
-@property (nonatomic, getter=isSelectable) BOOL selectable;
-
-/**
- The cursor that appears above any annotation using this annotation image.
-
- By default, this property is set to `nil`, representing the current cursor.
- */
-@property (nonatomic, nullable) NSCursor *cursor;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/src/MGLAnnotationImage.m b/platform/macos/src/MGLAnnotationImage.m
deleted file mode 100644
index 8d715b427b..0000000000
--- a/platform/macos/src/MGLAnnotationImage.m
+++ /dev/null
@@ -1,63 +0,0 @@
-#import "MGLAnnotationImage_Private.h"
-
-@interface MGLAnnotationImage ()
-
-@property (nonatomic) NSImage *image;
-@property (nonatomic) NSString *reuseIdentifier;
-@property (nonatomic, strong, nullable) NSString *styleIconIdentifier;
-
-@end
-
-@implementation MGLAnnotationImage
-
-+ (instancetype)annotationImageWithImage:(NSImage *)image reuseIdentifier:(NSString *)reuseIdentifier {
- return [[self alloc] initWithImage:image reuseIdentifier:reuseIdentifier];
-}
-
-- (instancetype)initWithImage:(NSImage *)image reuseIdentifier:(NSString *)reuseIdentifier {
- if (self = [super init]) {
- _image = image;
- _reuseIdentifier = [reuseIdentifier copy];
- _selectable = YES;
- }
- return self;
-}
-
-+ (BOOL)supportsSecureCoding {
- return YES;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)decoder {
- if (self = [super init]) {
- _image = [decoder decodeObjectOfClass:[NSImage class] forKey:@"image"];
- _reuseIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"reuseIdentifier"];
- _cursor = [decoder decodeObjectOfClass:[NSCursor class] forKey:@"cursor"];
- _selectable = [decoder decodeBoolForKey:@"selectable"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder {
- [coder encodeObject:_image forKey:@"image"];
- [coder encodeObject:_reuseIdentifier forKey:@"reuseIdentifier"];
- [coder encodeObject:_cursor forKey:@"cursor"];
- [coder encodeBool:_selectable forKey:@"selectable"];
-}
-
-- (BOOL)isEqual:(id)other {
- if (self == other) return YES;
- if (![other isKindOfClass:[MGLAnnotationImage class]]) return NO;
-
- MGLAnnotationImage *otherAnnotationImage = other;
-
- return ((!_reuseIdentifier && !otherAnnotationImage.reuseIdentifier) || [_reuseIdentifier isEqualToString:otherAnnotationImage.reuseIdentifier])
- && _selectable == otherAnnotationImage.selectable
- && ((!_cursor && !otherAnnotationImage.cursor) || [_cursor isEqual:otherAnnotationImage.cursor])
- && (_image == otherAnnotationImage.image || [[_image TIFFRepresentation] isEqualToData:[otherAnnotationImage.image TIFFRepresentation]]);
-}
-
-- (NSUInteger)hash {
- return _reuseIdentifier.hash + @(_selectable).hash + _image.hash;
-}
-
-@end
diff --git a/platform/macos/src/MGLAnnotationImage_Private.h b/platform/macos/src/MGLAnnotationImage_Private.h
deleted file mode 100644
index 428f1db5d9..0000000000
--- a/platform/macos/src/MGLAnnotationImage_Private.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#import "Mapbox.h"
-
-@interface MGLAnnotationImage (Private)
-
-/// Unique identifier of the sprite image used by the style to represent the receiver’s `image`.
-@property (nonatomic, strong, nullable) NSString *styleIconIdentifier;
-
-@end
diff --git a/platform/macos/src/MGLAttributionButton.h b/platform/macos/src/MGLAttributionButton.h
deleted file mode 100644
index 3e0b53a6d0..0000000000
--- a/platform/macos/src/MGLAttributionButton.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLAttributionInfo;
-
-/// Button that looks like a hyperlink and opens a URL.
-MGL_EXPORT
-@interface MGLAttributionButton : NSButton
-
-/// Returns an `MGLAttributionButton` instance with the given info.
-- (instancetype)initWithAttributionInfo:(MGLAttributionInfo *)info;
-
-/// The URL to open and display as a tooltip.
-@property (nonatomic, readonly, nullable) NSURL *URL;
-
-/// Opens the URL.
-- (IBAction)openURL:(nullable id)sender;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/src/MGLAttributionButton.mm b/platform/macos/src/MGLAttributionButton.mm
deleted file mode 100644
index 3df415f60d..0000000000
--- a/platform/macos/src/MGLAttributionButton.mm
+++ /dev/null
@@ -1,55 +0,0 @@
-#import "MGLAttributionButton.h"
-#import "MGLAttributionInfo.h"
-
-#import "NSBundle+MGLAdditions.h"
-#import "NSString+MGLAdditions.h"
-
-@implementation MGLAttributionButton
-
-- (instancetype)initWithAttributionInfo:(MGLAttributionInfo *)info {
- if (self = [super initWithFrame:NSZeroRect]) {
- self.bordered = NO;
- self.bezelStyle = NSRegularSquareBezelStyle;
-
- // Extract any prefix consisting of intellectual property symbols.
- NSScanner *scanner = [NSScanner scannerWithString:info.title.string];
- NSCharacterSet *symbolSet = [NSCharacterSet characterSetWithCharactersInString:@"©℗®℠™ &"];
- NSString *symbol;
- [scanner scanCharactersFromSet:symbolSet intoString:&symbol];
-
- // Remove the underline from the symbol for aesthetic reasons.
- NSMutableAttributedString *title = info.title.mutableCopy;
- [title removeAttribute:NSUnderlineStyleAttributeName range:NSMakeRange(0, symbol.length)];
-
- self.attributedTitle = title;
- [self sizeToFit];
-
- _URL = info.URL;
- if (_URL) {
- self.toolTip = _URL.absoluteString;
- }
-
- self.target = self;
- self.action = @selector(openURL:);
- }
- return self;
-}
-
-- (BOOL)wantsLayer {
- return YES;
-}
-
-- (void)resetCursorRects {
- if (self.URL) {
- // The whole button gets a pointing hand cursor, just like a hyperlink.
- [self addCursorRect:self.bounds cursor:[NSCursor pointingHandCursor]];
- }
-}
-
-- (IBAction)openURL:(__unused id)sender {
- if (self.URL) {
- [[NSWorkspace sharedWorkspace] openURL:self.URL];
- }
-}
-
-@end
diff --git a/platform/macos/src/MGLCompassCell.h b/platform/macos/src/MGLCompassCell.h
deleted file mode 100644
index 5ed70dcb06..0000000000
--- a/platform/macos/src/MGLCompassCell.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-/// Circular slider with an arrow pointing north.
-@interface MGLCompassCell : NSSliderCell
-@end
diff --git a/platform/macos/src/MGLCompassCell.m b/platform/macos/src/MGLCompassCell.m
deleted file mode 100644
index b3a4ad4544..0000000000
--- a/platform/macos/src/MGLCompassCell.m
+++ /dev/null
@@ -1,34 +0,0 @@
-#import "MGLCompassCell.h"
-
-@implementation MGLCompassCell
-
-- (instancetype)init {
- if (self = [super init]) {
- self.sliderType = NSCircularSlider;
- // A tick mark for each cardinal direction.
- self.numberOfTickMarks = 4;
- // This slider goes backwards!
- self.minValue = -360;
- self.maxValue = 0;
- }
- return self;
-}
-
-- (void)drawKnob:(NSRect)knobRect {
- // Draw a red triangle pointing whichever way the slider is facing.
- NSBezierPath *trianglePath = [NSBezierPath bezierPath];
- [trianglePath moveToPoint:NSMakePoint(NSMinX(knobRect), NSMaxY(knobRect))];
- [trianglePath lineToPoint:NSMakePoint(NSMaxX(knobRect), NSMaxY(knobRect))];
- [trianglePath lineToPoint:NSMakePoint(NSMidX(knobRect), NSMinY(knobRect))];
- [trianglePath closePath];
- NSAffineTransform *transform = [NSAffineTransform transform];
- [transform translateXBy:NSMidX(knobRect) yBy:NSMidY(knobRect)];
- [transform scaleBy:0.8];
- [transform rotateByDegrees:self.doubleValue];
- [transform translateXBy:-NSMidX(knobRect) yBy:-NSMidY(knobRect)];
- [trianglePath transformUsingAffineTransform:transform];
- [[NSColor redColor] setFill];
- [trianglePath fill];
-}
-
-@end
diff --git a/platform/macos/src/MGLMapView+IBAdditions.h b/platform/macos/src/MGLMapView+IBAdditions.h
deleted file mode 100644
index 29d914a7d9..0000000000
--- a/platform/macos/src/MGLMapView+IBAdditions.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#import <Foundation/Foundation.h>
-
-#import "MGLMapView.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface MGLMapView (IBAdditions)
-
-#if TARGET_INTERFACE_BUILDER
-
-// Core properties that can be manipulated in the Attributes inspector in
-// Interface Builder. These redeclarations merely add the IBInspectable keyword.
-// They appear here to ensure that they appear above the convenience properties;
-// inspectables declared in MGLMapView.h are always sorted before those in
-// MGLMapView+IBAdditions.h, due to ASCII sort order.
-
-// We want this property to look like a URL bar in the Attributes inspector, but
-// just calling it styleURL would violate Cocoa naming conventions and conflict
-// with the existing NSURL property. Fortunately, IB strips out the two
-// underscores for display.
-
-/** URL of the style currently displayed in the receiver.
-
- The URL may be a full HTTP or HTTPS URL, a Mapbox
- style URL (`mapbox://styles/<user>/<style>`), or a path to a local file
- relative to the application’s resource path. Leave this field blank for the
- default style. */
-@property (nonatomic, nullable) IBInspectable NSString *styleURL__;
-
-// Convenience properties related to the initial viewport. These properties
-// are not meant to be used outside of Interface Builder. latitude and longitude
-// are backed by properties of type CLLocationDegrees, but these declarations
-// must use the type double because Interface Builder is unaware that
-// CLLocationDegrees is a typedef for double.
-
-/** The initial center latitude. */
-@property (nonatomic) IBInspectable double latitude;
-
-/** The initial center longitude. */
-@property (nonatomic) IBInspectable double longitude;
-
-@property (nonatomic) IBInspectable double zoomLevel;
-
-// Renamed properties. Interface Builder derives the display name of each
-// inspectable from the runtime name, but runtime names don’t always make sense
-// in UI.
-
-/** A Boolean value that determines whether the user may zoom the map, changing
- its zoom level. */
-@property (nonatomic) IBInspectable BOOL allowsZooming;
-
-/** A Boolean value that determines whether the user may scroll around the map,
- changing its center coordinate. */
-@property (nonatomic) IBInspectable BOOL allowsScrolling;
-
-/** A Boolean value that determines whether the user may rotate the map,
- changing its direction. */
-@property (nonatomic) IBInspectable BOOL allowsRotating;
-
-/** A Boolean value that determines whether the user may tilt the map, changing
- its pitch. */
-@property (nonatomic) IBInspectable BOOL allowsTilting;
-
-#endif
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/src/MGLMapView+IBAdditions.mm b/platform/macos/src/MGLMapView+IBAdditions.mm
deleted file mode 100644
index 0c65abc031..0000000000
--- a/platform/macos/src/MGLMapView+IBAdditions.mm
+++ /dev/null
@@ -1,120 +0,0 @@
-#import "MGLMapView+IBAdditions.h"
-
-#import "MGLStyle.h"
-
-#import "MGLMapView_Private.h"
-
-@implementation MGLMapView (IBAdditions)
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingStyleURL__ {
- return [NSSet setWithObject:@"styleURL"];
-}
-
-- (nullable NSString *)styleURL__ {
- return self.styleURL.absoluteString;
-}
-
-- (void)setStyleURL__:(nullable NSString *)URLString {
- URLString = [URLString stringByTrimmingCharactersInSet:
- [NSCharacterSet whitespaceAndNewlineCharacterSet]];
- NSURL *url = URLString.length ? [NSURL URLWithString:URLString] : nil;
- if (URLString.length && !url) {
- [NSException raise:MGLInvalidStyleURLException
- format:@"“%@” is not a valid style URL.", URLString];
- }
- self.styleURL = url;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingLatitude {
- return [NSSet setWithObjects:@"centerCoordinate", @"camera", nil];
-}
-
-- (double)latitude {
- return self.centerCoordinate.latitude;
-}
-
-- (void)setLatitude:(double)latitude {
- if (!isnan(self.pendingLongitude)) {
- // With both components present, set the real center coordinate and
- // forget the pending parts.
- self.centerCoordinate = CLLocationCoordinate2DMake(latitude, self.pendingLongitude);
- self.pendingLatitude = NAN;
- self.pendingLongitude = NAN;
- } else {
- // Not enough info to make a valid center coordinate yet. Stash this
- // latitude away until the longitude is set too.
- self.pendingLatitude = latitude;
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingLongitude {
- return [NSSet setWithObjects:@"centerCoordinate", @"camera", nil];
-}
-
-- (double)longitude {
- return self.centerCoordinate.longitude;
-}
-
-- (void)setLongitude:(double)longitude {
- if (!isnan(self.pendingLatitude)) {
- // With both components present, set the real center coordinate and
- // forget the pending parts.
- self.centerCoordinate = CLLocationCoordinate2DMake(self.pendingLatitude, longitude);
- self.pendingLatitude = NAN;
- self.pendingLongitude = NAN;
- } else {
- // Not enough info to make a valid center coordinate yet. Stash this
- // longitude away until the latitude is set too.
- self.pendingLongitude = longitude;
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsZooming {
- return [NSSet setWithObject:@"zoomEnabled"];
-}
-
-- (BOOL)allowsZooming {
- return self.zoomEnabled;
-}
-
-- (void)setAllowsZooming:(BOOL)allowsZooming {
- self.zoomEnabled = allowsZooming;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsScrolling {
- return [NSSet setWithObject:@"scrollEnabled"];
-}
-
-- (BOOL)allowsScrolling {
- return self.scrollEnabled;
-}
-
-- (void)setAllowsScrolling:(BOOL)allowsScrolling {
- self.scrollEnabled = allowsScrolling;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsRotating {
- return [NSSet setWithObject:@"rotateEnabled"];
-}
-
-- (BOOL)allowsRotating {
- return self.rotateEnabled;
-}
-
-- (void)setAllowsRotating:(BOOL)allowsRotating {
- self.rotateEnabled = allowsRotating;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingAllowsTilting {
- return [NSSet setWithObject:@"pitchEnabled"];
-}
-
-- (BOOL)allowsTilting {
- return self.pitchEnabled;
-}
-
-- (void)setAllowsTilting:(BOOL)allowsTilting {
- self.pitchEnabled = allowsTilting;
-}
-
-@end
diff --git a/platform/macos/src/MGLMapView+Impl.h b/platform/macos/src/MGLMapView+Impl.h
deleted file mode 100644
index d33a19dbab..0000000000
--- a/platform/macos/src/MGLMapView+Impl.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#import <mbgl/gfx/renderer_backend.hpp>
-#import <mbgl/map/map_observer.hpp>
-#import <mbgl/util/image.hpp>
-
-@class MGLMapView;
-
-typedef struct _CGLContextObject* CGLContextObj;
-
-class MGLMapViewImpl : public mbgl::MapObserver {
-public:
- static std::unique_ptr<MGLMapViewImpl> Create(MGLMapView*);
-
- MGLMapViewImpl(MGLMapView*);
- virtual ~MGLMapViewImpl() = default;
-
- virtual mbgl::gfx::RendererBackend& getRendererBackend() = 0;
-
- // We need a static image of what was rendered for printing.
- virtual mbgl::PremultipliedImage readStillImage() = 0;
-
- virtual CGLContextObj getCGLContextObj() {
- return nullptr;
- }
-
- // mbgl::MapObserver implementation
- void onCameraWillChange(mbgl::MapObserver::CameraChangeMode) override;
- void onCameraIsChanging() override;
- void onCameraDidChange(mbgl::MapObserver::CameraChangeMode) override;
- void onWillStartLoadingMap() override;
- void onDidFinishLoadingMap() override;
- void onDidFailLoadingMap(mbgl::MapLoadError mapError, const std::string& what) override;
- void onWillStartRenderingFrame() override;
- void onDidFinishRenderingFrame(mbgl::MapObserver::RenderFrameStatus) override;
- void onWillStartRenderingMap() override;
- void onDidFinishRenderingMap(mbgl::MapObserver::RenderMode) override;
- void onDidFinishLoadingStyle() override;
- void onSourceChanged(mbgl::style::Source& source) override;
- void onDidBecomeIdle() override;
- bool onCanRemoveUnusedStyleImage(const std::string& imageIdentifier) override;
-
-protected:
- /// Cocoa map view that this adapter bridges to.
- __weak MGLMapView *mapView = nullptr;
-};
diff --git a/platform/macos/src/MGLMapView+Impl.mm b/platform/macos/src/MGLMapView+Impl.mm
deleted file mode 100644
index c00f858153..0000000000
--- a/platform/macos/src/MGLMapView+Impl.mm
+++ /dev/null
@@ -1,101 +0,0 @@
-#import "MGLMapView+Impl.h"
-#import "MGLMapView+OpenGL.h"
-#import "MGLStyle_Private.h"
-#import "NSBundle+MGLAdditions.h"
-
-#include <mbgl/map/map.hpp>
-#include <mbgl/style/style.hpp>
-
-std::unique_ptr<MGLMapViewImpl> MGLMapViewImpl::Create(MGLMapView* nativeView) {
- return std::make_unique<MGLMapViewOpenGLImpl>(nativeView);
-}
-
-MGLMapViewImpl::MGLMapViewImpl(MGLMapView* nativeView_) : mapView(nativeView_) {
-}
-
-void MGLMapViewImpl::onCameraWillChange(mbgl::MapObserver::CameraChangeMode mode) {
- bool animated = mode == mbgl::MapObserver::CameraChangeMode::Animated;
- [mapView cameraWillChangeAnimated:animated];
-}
-
-void MGLMapViewImpl::onCameraIsChanging() {
- [mapView cameraIsChanging];
-}
-
-void MGLMapViewImpl::onCameraDidChange(mbgl::MapObserver::CameraChangeMode mode) {
- bool animated = mode == mbgl::MapObserver::CameraChangeMode::Animated;
- [mapView cameraDidChangeAnimated:animated];
-}
-
-void MGLMapViewImpl::onWillStartLoadingMap() {
- [mapView mapViewWillStartLoadingMap];
-}
-
-void MGLMapViewImpl::onDidFinishLoadingMap() {
- [mapView mapViewDidFinishLoadingMap];
-}
-
-void MGLMapViewImpl::onDidFailLoadingMap(mbgl::MapLoadError mapError, const std::string& what) {
- NSString *description;
- MGLErrorCode code;
- switch (mapError) {
- case mbgl::MapLoadError::StyleParseError:
- code = MGLErrorCodeParseStyleFailed;
- description = NSLocalizedStringWithDefaultValue(@"PARSE_STYLE_FAILED_DESC", nil, nil, @"The map failed to load because the style is corrupted.", @"User-friendly error description");
- break;
- case mbgl::MapLoadError::StyleLoadError:
- code = MGLErrorCodeLoadStyleFailed;
- description = NSLocalizedStringWithDefaultValue(@"LOAD_STYLE_FAILED_DESC", nil, nil, @"The map failed to load because the style can't be loaded.", @"User-friendly error description");
- break;
- case mbgl::MapLoadError::NotFoundError:
- code = MGLErrorCodeNotFound;
- description = NSLocalizedStringWithDefaultValue(@"STYLE_NOT_FOUND_DESC", nil, nil, @"The map failed to load because the style can’t be found or is incompatible.", @"User-friendly error description");
- break;
- default:
- code = MGLErrorCodeUnknown;
- description = NSLocalizedStringWithDefaultValue(@"LOAD_MAP_FAILED_DESC", nil, nil, @"The map failed to load because an unknown error occurred.", @"User-friendly error description");
- }
- NSDictionary *userInfo = @{
- NSLocalizedDescriptionKey: description,
- NSLocalizedFailureReasonErrorKey: @(what.c_str()),
- };
- NSError *error = [NSError errorWithDomain:MGLErrorDomain code:code userInfo:userInfo];
- [mapView mapViewDidFailLoadingMapWithError:error];
-}
-
-void MGLMapViewImpl::onWillStartRenderingFrame() {
- [mapView mapViewWillStartRenderingFrame];
-}
-
-void MGLMapViewImpl::onDidFinishRenderingFrame(mbgl::MapObserver::RenderFrameStatus status) {
- bool fullyRendered = status.mode == mbgl::MapObserver::RenderMode::Full;
- [mapView mapViewDidFinishRenderingFrameFullyRendered:fullyRendered];
-}
-
-void MGLMapViewImpl::onWillStartRenderingMap() {
- [mapView mapViewWillStartRenderingMap];
-}
-
-void MGLMapViewImpl::onDidFinishRenderingMap(mbgl::MapObserver::RenderMode mode) {
- bool fullyRendered = mode == mbgl::MapObserver::RenderMode::Full;
- [mapView mapViewDidFinishRenderingMapFullyRendered:fullyRendered];
-}
-
-void MGLMapViewImpl::onDidBecomeIdle() {
- [mapView mapViewDidBecomeIdle];
-}
-
-void MGLMapViewImpl::onDidFinishLoadingStyle() {
- [mapView mapViewDidFinishLoadingStyle];
-}
-
-void MGLMapViewImpl::onSourceChanged(mbgl::style::Source& source) {
- NSString *identifier = @(source.getID().c_str());
- MGLSource * nativeSource = [mapView.style sourceWithIdentifier:identifier];
- [mapView sourceDidChange:nativeSource];
-}
-
-bool MGLMapViewImpl::onCanRemoveUnusedStyleImage(const std::string &imageIdentifier) {
- NSString *imageName = [NSString stringWithUTF8String:imageIdentifier.c_str()];
- return [mapView shouldRemoveStyleImage:imageName];
-}
diff --git a/platform/macos/src/MGLMapView+OpenGL.h b/platform/macos/src/MGLMapView+OpenGL.h
deleted file mode 100644
index d4c6a448cd..0000000000
--- a/platform/macos/src/MGLMapView+OpenGL.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#import "MGLMapView+Impl.h"
-#import "MGLMapView_Private.h"
-
-#include <mbgl/gfx/renderable.hpp>
-#include <mbgl/gl/renderer_backend.hpp>
-
-/// Adapter responsible for bridging calls from mbgl to MGLMapView and Cocoa.
-class MGLMapViewOpenGLImpl final : public MGLMapViewImpl,
- public mbgl::gl::RendererBackend,
- public mbgl::gfx::Renderable {
-public:
- MGLMapViewOpenGLImpl(MGLMapView*);
- ~MGLMapViewOpenGLImpl() override = default;
-
-public:
- void restoreFramebufferBinding();
-
- // Implementation of mbgl::gfx::RendererBackend
-public:
- mbgl::gfx::Renderable& getDefaultRenderable() override {
- return *this;
- }
-
-private:
- void activate() override;
- void deactivate() override;
- // End implementation of mbgl::gfx::RendererBackend
-
- // Implementation of mbgl::gl::RendererBackend
-public:
- void updateAssumedState() override;
-
-private:
- mbgl::gl::ProcAddress getExtensionFunctionPointer(const char* name) override;
- // End implementation of mbgl::gl::Rendererbackend
-
- // Implementation of MGLMapViewImpl
-public:
- mbgl::gfx::RendererBackend& getRendererBackend() override {
- return *this;
- }
-
- mbgl::PremultipliedImage readStillImage() override;
- CGLContextObj getCGLContextObj() override;
-};
diff --git a/platform/macos/src/MGLMapView+OpenGL.mm b/platform/macos/src/MGLMapView+OpenGL.mm
deleted file mode 100644
index f6168a4b80..0000000000
--- a/platform/macos/src/MGLMapView+OpenGL.mm
+++ /dev/null
@@ -1,89 +0,0 @@
-#import "MGLMapView+OpenGL.h"
-#import "MGLOpenGLLayer.h"
-
-#include <mbgl/gl/renderable_resource.hpp>
-
-#import <OpenGL/gl.h>
-
-class MGLMapViewOpenGLRenderableResource final : public mbgl::gl::RenderableResource {
-public:
- MGLMapViewOpenGLRenderableResource(MGLMapViewOpenGLImpl& backend_) : backend(backend_) {
- }
-
- void bind() override {
- backend.restoreFramebufferBinding();
- }
-
-private:
- MGLMapViewOpenGLImpl& backend;
-
-public:
- // The current framebuffer of the NSOpenGLLayer we are painting to.
- GLint fbo = 0;
-
- // The reference counted count of activation calls
- NSUInteger activationCount = 0;
-};
-
-MGLMapViewOpenGLImpl::MGLMapViewOpenGLImpl(MGLMapView* nativeView_)
- : MGLMapViewImpl(nativeView_),
- mbgl::gl::RendererBackend(mbgl::gfx::ContextMode::Unique),
- mbgl::gfx::Renderable(mapView.framebufferSize,
- std::make_unique<MGLMapViewOpenGLRenderableResource>(*this)) {
-
- // Install the OpenGL layer. Interface Builder’s synchronous drawing means
- // we can’t display a map, so don’t even bother to have a map layer.
- mapView.layer =
- mapView.isTargetingInterfaceBuilder ? [CALayer layer] : [MGLOpenGLLayer layer];
-}
-
-mbgl::gl::ProcAddress MGLMapViewOpenGLImpl::getExtensionFunctionPointer(const char* name) {
- static CFBundleRef framework = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengl"));
- if (!framework) {
- throw std::runtime_error("Failed to load OpenGL framework.");
- }
-
- return reinterpret_cast<mbgl::gl::ProcAddress>(CFBundleGetFunctionPointerForName(
- framework, (__bridge CFStringRef)[NSString stringWithUTF8String:name]));
-}
-
-void MGLMapViewOpenGLImpl::activate() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- if (resource.activationCount++) {
- return;
- }
-
- MGLOpenGLLayer* layer = (MGLOpenGLLayer*)mapView.layer;
- [layer.openGLContext makeCurrentContext];
-}
-
-void MGLMapViewOpenGLImpl::deactivate() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- if (--resource.activationCount) {
- return;
- }
-
- [NSOpenGLContext clearCurrentContext];
-}
-
-void MGLMapViewOpenGLImpl::updateAssumedState() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- glGetIntegerv(GL_FRAMEBUFFER_BINDING, &resource.fbo);
- assumeFramebufferBinding(resource.fbo);
- assumeViewport(0, 0, mapView.framebufferSize);
-}
-
-void MGLMapViewOpenGLImpl::restoreFramebufferBinding() {
- auto& resource = getResource<MGLMapViewOpenGLRenderableResource>();
- setFramebufferBinding(resource.fbo);
- setViewport(0, 0, mapView.framebufferSize);
-}
-
-mbgl::PremultipliedImage MGLMapViewOpenGLImpl::readStillImage() {
- return readFramebuffer(mapView.framebufferSize);
-}
-
-CGLContextObj MGLMapViewOpenGLImpl::getCGLContextObj() {
- MGLOpenGLLayer* layer = (MGLOpenGLLayer*)mapView.layer;
- return layer.openGLContext.CGLContextObj;
-}
diff --git a/platform/macos/src/MGLMapView.h b/platform/macos/src/MGLMapView.h
deleted file mode 100644
index 374d4eeab7..0000000000
--- a/platform/macos/src/MGLMapView.h
+++ /dev/null
@@ -1,1247 +0,0 @@
-#import <Cocoa/Cocoa.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-#import "MGLGeometry.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLAnnotationImage;
-@class MGLMapCamera;
-@class MGLStyle;
-@class MGLShape;
-
-@protocol MGLAnnotation;
-@protocol MGLMapViewDelegate;
-@protocol MGLOverlay;
-@protocol MGLFeature;
-
-/**
- An interactive, customizable map view with an interface similar to the one
- provided by Apple’s MapKit.
-
- Using `MGLMapView`, you can embed the map inside a view, allow users to
- manipulate it with standard gestures, animate the map between different
- viewpoints, and present information in the form of annotations and overlays.
-
- The map view loads scalable vector tiles that conform to the
- <a href="https://github.com/mapbox/vector-tile-spec">Mapbox Vector Tile Specification</a>.
- It styles them with a style that conforms to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/">Mapbox Style Specification</a>.
- Such styles can be designed in
- <a href="https://www.mapbox.com/studio/">Mapbox Studio</a> and hosted on
- mapbox.com.
-
- A collection of Mapbox-hosted styles is available through the `MGLStyle` class.
- These basic styles use
- <a href="https://www.mapbox.com/developers/vector-tiles/mapbox-streets">Mapbox Streets</a>
- or <a href="https://www.mapbox.com/satellite/">Mapbox Satellite</a> data
- sources, but you can specify a custom style that makes use of your own data.
-
- Mapbox-hosted vector tiles and styles require an API access token, which you
- can obtain from the
- <a href="https://www.mapbox.com/studio/account/tokens/">Mapbox account page</a>.
- Access tokens associate requests to Mapbox’s vector tile and style APIs with
- your Mapbox account. They also deter other developers from using your styles
- without your permission.
-
- Adding your own gesture recognizer to `MGLMapView` will block the corresponding
- gesture recognizer built into `MGLMapView`. To avoid conflicts, define which
- gesture recognizer takes precedence. For example, you can subclass
- `NSClickGestureRecognizer` and override `-[NSGestureRecognizer shouldRequireFailureOfGestureRecognizer:]`,
- so that your subclass will be invoked only if the default `MGLMapView` click
- gesture recognizer fails:
-
- ```swift
- class MapClickGestureRecognizer: NSClickGestureRecognizer {
- override func shouldRequireFailure(of otherGestureRecognizer: NSGestureRecognizer) -> Bool {
- return otherGestureRecognizer is NSClickGestureRecognizer
- }
- }
- ```
-
- @note You are responsible for getting permission to use the map data and for
- ensuring that your use adheres to the relevant terms of use.
- */
-MGL_EXPORT IB_DESIGNABLE
-@interface MGLMapView : NSView
-
-#pragma mark Creating Instances
-
-/**
- Initializes and returns a newly allocated map view with the specified frame and
- the default style.
-
- @param frame The frame for the view, measured in points.
- @return An initialized map view.
- */
-- (instancetype)initWithFrame:(NSRect)frame;
-
-/**
- Initializes and returns a newly allocated map view with the specified frame and
- style URL.
-
- @param frame The frame for the view, measured in points.
- @param styleURL URL of the map style to display. The URL may be a full HTTP or
- HTTPS URL, a Mapbox style URL
- (`mapbox://styles/<user>/<style>`), or a path to a local file relative to
- the application’s resource path. Specify `nil` for the default style.
- @return An initialized map view.
- */
-- (instancetype)initWithFrame:(NSRect)frame styleURL:(nullable NSURL *)styleURL;
-
-#pragma mark Accessing the Delegate
-
-/**
- The receiver’s delegate.
-
- A map view sends messages to its delegate to notify it of changes to its
- contents or the viewpoint. The delegate also provides information about
- annotations displayed on the map, such as the styles to apply to individual
- annotations.
- */
-@property (nonatomic, weak, nullable) IBOutlet id <MGLMapViewDelegate> delegate;
-
-#pragma mark Configuring the Map’s Appearance
-
-/**
- The style currently displayed in the receiver.
-
- Unlike the `styleURL` property, this property is set to an object that allows
- you to manipulate every aspect of the style locally.
-
- If the style is loading, this property is set to `nil` until the style finishes
- loading. If the style has failed to load, this property is set to `nil`.
- Because the style loads asynchronously, you should manipulate it in the
- `-[MGLMapViewDelegate mapView:didFinishLoadingStyle:]` or
- `-[MGLMapViewDelegate mapViewDidFinishLoadingMap:]` method. It is not possible
- to manipulate the style before it has finished loading.
-
- @note The default styles provided by Mapbox contain sources and layers with
- identifiers that will change over time. Applications that use APIs that
- manipulate a style's sources and layers must first set the style URL to an
- explicitly versioned style using a convenience method like
- `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`.
- */
-@property (nonatomic, readonly, nullable) MGLStyle *style;
-
-/**
- URL of the style currently displayed in the receiver.
-
- The URL may be a full HTTP or HTTPS URL, a Mapbox
- style URL (`mapbox://styles/<user>/<style>`), or a path to a local file relative
- to the application’s resource path.
-
- If you set this property to `nil`, the receiver will use the default style and
- this property will automatically be set to that style’s URL.
-
- If you want to modify the current style without replacing it outright, or if
- you want to introspect individual style attributes, use the `style` property.
- */
-@property (nonatomic, null_resettable) NSURL *styleURL;
-
-/**
- Reloads the style.
-
- You do not normally need to call this method. The map view automatically
- responds to changes in network connectivity by reloading the style. You may
- need to call this method if you change the access token after a style has
- loaded but before loading a style associated with a different Mapbox account.
- */
-- (IBAction)reloadStyle:(id)sender;
-
-/**
- A control for zooming in and out, positioned in the lower-right corner.
- */
-@property (nonatomic, readonly) NSSegmentedControl *zoomControls;
-
-/**
- A control indicating the map’s direction and allowing the user to manipulate
- the direction, positioned above the zoom controls in the lower-right corner.
- */
-@property (nonatomic, readonly) NSSlider *compass;
-
-/**
- The Mapbox logo, positioned in the lower-left corner.
-
- @note The Mapbox terms of service, which governs the use of Mapbox-hosted
- vector tiles and styles,
- <a href="https://www.mapbox.com/help/mapbox-logo/">requires</a> most Mapbox
- customers to display the Mapbox logo. If this applies to you, do not hide
- this view or change its contents.
- */
-@property (nonatomic, readonly) NSImageView *logoView;
-
-/**
- A view showing legally required copyright notices, positioned along the bottom
- of the map view, to the left of the Mapbox logo.
-
- @note The Mapbox terms of service, which governs the use of Mapbox-hosted
- vector tiles and styles,
- <a href="https://www.mapbox.com/help/attribution/">requires</a> these
- copyright notices to accompany any map that features Mapbox-designed styles,
- OpenStreetMap data, or other Mapbox data such as satellite or terrain data.
- If that applies to this map view, do not hide this view or remove any
- notices from it.
- */
-@property (nonatomic, readonly) NSView *attributionView;
-
-/**
- A Boolean value indicating whether the map should prefetch tiles.
-
- When this property is set to `YES`, the map view prefetches tiles designed for
- a low zoom level and displays them until receiving more detailed tiles for the
- current zoom level. The prefetched tiles typically contain simplified versions
- of each shape, improving the map view’s perceived performance.
-
- The default value of this property is `YES`.
- */
-@property (nonatomic, assign) BOOL prefetchesTiles;
-
-
-#pragma mark Manipulating the Viewpoint
-
-/**
- The geographic coordinate at the center of the map view.
-
- Changing the value of this property centers the map on the new coordinate
- without changing the current zoom level.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setCenterCoordinate:animated:` method
- instead.
- */
-@property (nonatomic) CLLocationCoordinate2D centerCoordinate;
-
-/**
- Changes the center coordinate of the map and optionally animates the change.
-
- Changing the center coordinate centers the map on the new coordinate without
- changing the current zoom level.
-
- @param coordinate The new center coordinate for the map.
- @param animated Specify `YES` if you want the map view to scroll to the new
- location or `NO` if you want the map to display the new location
- immediately.
- */
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated;
-
-/**
- The zoom level of the receiver.
-
- In addition to affecting the visual size and detail of features on the map, the
- zoom level affects the size of the vector tiles that are loaded. At zoom level
- 0, each tile covers the entire world map; at zoom level 1, it covers ¼ of the
- world; at zoom level 2, <sup>1</sup>⁄<sub>16</sub> of the world, and so on.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setZoomLevel:animated:` method instead.
- */
-@property (nonatomic) double zoomLevel;
-
-/**
- The minimum zoom level at which the map can be shown.
-
- Depending on the map view’s aspect ratio, the map view may be prevented from
- reaching the minimum zoom level, in order to keep the map from repeating within
- the current viewport.
-
- If the value of this property is greater than that of the `maximumZoomLevel`
- property, the behavior is undefined.
-
- The default value of this property is 0.
- */
-@property (nonatomic) IBInspectable double minimumZoomLevel;
-
-/**
- The maximum zoom level the map can be shown at.
-
- If the value of this property is smaller than that of the `minimumZoomLevel`
- property, the behavior is undefined.
-
- The default value of this property is 22. The upper bound for this property
- is 25.5.
- */
-@property (nonatomic) IBInspectable double maximumZoomLevel;
-
-/**
- Changes the zoom level of the map and optionally animates the change.
-
- Changing the zoom level scales the map without changing the current center
- coordinate.
-
- @param zoomLevel The new zoom level for the map.
- @param animated Specify `YES` if you want the map view to animate the change
- to the new zoom level or `NO` if you want the map to display the new zoom
- level immediately.
- */
-- (void)setZoomLevel:(double)zoomLevel animated:(BOOL)animated;
-
-/**
- The heading of the map, measured in degrees clockwise from true north.
-
- The value `0` means that the top edge of the map view corresponds to true
- north. The value `90` means the top of the map is pointing due east. The value
- `180` means the top of the map points due south, and so on.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setDirection:animated:` method instead.
- */
-@property (nonatomic) CLLocationDirection direction;
-
-/**
- Changes the heading of the map and optionally animates the change.
-
- Changing the heading rotates the map without changing the current center
- coordinate or zoom level.
-
- @param direction The heading of the map, measured in degrees clockwise from
- true north.
- @param animated Specify `YES` if you want the map view to animate the change
- to the new heading or `NO` if you want the map to display the new heading
- immediately.
- */
-- (void)setDirection:(CLLocationDirection)direction animated:(BOOL)animated;
-
-/**
- A camera representing the current viewpoint of the map.
- */
-@property (nonatomic, copy) MGLMapCamera *camera;
-
-/**
- Moves the viewpoint to a different location with respect to the map with an
- optional transition animation.
-
- @param camera The new viewpoint.
- @param animated Specify `YES` if you want the map view to animate the change to
- the new viewpoint or `NO` if you want the map to display the new viewpoint
- immediately.
- */
-- (void)setCamera:(MGLMapCamera *)camera animated:(BOOL)animated;
-
-/**
- Moves the viewpoint to a different location with respect to the map with an
- optional transition duration and timing function.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously.
- @param function A timing function used for the animation. Set this parameter to
- `nil` for a transition that matches most system animations. If the duration
- is `0`, this parameter is ignored.
- @param completion The block to execute after the animation finishes.
- */
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion;
-
- /**
- Moves the viewpoint to a different location with respect to the map with an
- optional transition duration and timing function, and optionally some additional
- padding on each side.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously.
- @param function A timing function used for the animation. Set this parameter to
- `nil` for a transition that matches most system animations. If the duration
- is `0`, this parameter is ignored.
- @param edgePadding The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @param completion The block to execute after the animation finishes.
- */
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(NSEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion;
-
-
-/**
- Moves the viewpoint to a different location using a transition animation that
- evokes powered flight and a default duration based on the length of the flight
- path.
-
- The transition animation seamlessly incorporates zooming and panning to help
- the user find his or her bearings even after traversing a great distance.
-
- @param camera The new viewpoint.
- @param completion The block to execute after the animation finishes.
- */
-- (void)flyToCamera:(MGLMapCamera *)camera completionHandler:(nullable void (^)(void))completion;
-
-/**
- Moves the viewpoint to a different location using a transition animation that
- evokes powered flight and an optional transition duration.
-
- The transition animation seamlessly incorporates zooming and panning to help
- the user find his or her bearings even after traversing a great distance.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously. Specify a negative value to use the default duration, which
- is based on the length of the flight path.
- @param completion The block to execute after the animation finishes.
- */
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration completionHandler:(nullable void (^)(void))completion;
-
-/**
- Moves the viewpoint to a different location using a transition animation that
- evokes powered flight and an optional transition duration and peak altitude.
-
- The transition animation seamlessly incorporates zooming and panning to help
- the user find his or her bearings even after traversing a great distance.
-
- @param camera The new viewpoint.
- @param duration The amount of time, measured in seconds, that the transition
- animation should take. Specify `0` to jump to the new viewpoint
- instantaneously. Specify a negative value to use the default duration, which
- is based on the length of the flight path.
- @param peakAltitude The altitude, measured in meters, at the midpoint of the
- animation. The value of this parameter is ignored if it is negative or if
- the animation transition resulting from a similar call to
- `-setCamera:animated:` would have a midpoint at a higher altitude.
- @param completion The block to execute after the animation finishes.
- */
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration peakAltitude:(CLLocationDistance)peakAltitude completionHandler:(nullable void (^)(void))completion;
-
-/**
- The geographic coordinate bounds visible in the receiver’s viewport.
-
- Changing the value of this property updates the receiver immediately. If you
- want to animate the change, use the `-setVisibleCoordinateBounds:animated:`
- method instead.
-
- If a longitude is less than −180 degrees or greater than 180 degrees, the
- visible bounds straddles the antimeridian or international date line. For
- example, if both Tokyo and San Francisco are visible, the visible bounds might
- extend from (35.68476, −220.24257) to (37.78428, −122.41310).
- */
-@property (nonatomic) MGLCoordinateBounds visibleCoordinateBounds;
-
-/**
- Changes the receiver’s viewport to fit the given coordinate bounds, optionally
- animating the change.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- @param bounds The bounds that the viewport will show in its entirety.
- @param animated Specify `YES` to animate the change by smoothly scrolling and
- zooming or `NO` to immediately display the given bounds.
- */
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds animated:(BOOL)animated;
-
-/**
- Changes the receiver’s viewport to fit the given coordinate bounds with some
- additional padding on each side.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- To specify a completion handler to execute after the animation finishes, use
- the `-setVisibleCoordinateBounds:edgePadding:animated:completionHandler:` method.
-
- @param bounds The bounds that the viewport will show in its entirety.
- @param insets The minimum padding (in screen points) that will be visible
- around the given coordinate bounds.
- @param animated Specify `YES` to animate the change by smoothly scrolling and
- zooming or `NO` to immediately display the given bounds.
- */
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated;
-
-/**
- Changes the receiver’s viewport to fit the given coordinate bounds with some
- additional padding on each side, optionally calling a completion handler.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- @param bounds The bounds that the viewport will show in its entirety.
- @param insets The minimum padding (in screen points) that will be visible
- around the given coordinate bounds.
- @param animated Specify `YES` to animate the change by smoothly scrolling and
- zooming or `NO` to immediately display the given bounds.
- @param completion The block executed after the animation finishes.
- */
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-/**
- Sets the visible region so that the map displays the specified annotations.
-
- Calling this method updates the value in the `visibleCoordinateBounds` property
- and potentially other properties to reflect the new map region. A small amount
- of padding is reserved around the edges of the map view. To specify a different
- amount of padding, use the `-showAnnotations:edgePadding:animated:` method.
-
- @param annotations The annotations that you want to be visible in the map.
- @param animated `YES` if you want the map region change to be animated, or `NO`
- if you want the map to display the new region immediately without animations.
- */
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations animated:(BOOL)animated;
-
-/**
- Sets the visible region so that the map displays the specified annotations with
- the specified amount of padding on each side.
-
- Calling this method updates the value in the `visibleCoordinateBounds` property
- and potentially other properties to reflect the new map region.
-
- To specify a completion handler to execute after the animation finishes, use
- the `-showAnnotations:edgePadding:animated:completionHandler:` method.
-
- @param annotations The annotations that you want to be visible in the map.
- @param insets The minimum padding (in screen points) around the edges of the
- map view to keep clear of annotations.
- @param animated `YES` if you want the map region change to be animated, or `NO`
- if you want the map to display the new region immediately without animations.
- */
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated;
-
-/**
- Sets the visible region so that the map displays the specified annotations with
- the specified amount of padding on each side and an optional completion
- handler.
-
- Calling this method updates the value in the `visibleCoordinateBounds` property
- and potentially other properties to reflect the new map region.
-
- @param annotations The annotations that you want to be visible in the map.
- @param insets The minimum padding (in screen points) around the edges of the
- map view to keep clear of annotations.
- @param animated `YES` if you want the map region change to be animated, or `NO`
- if you want the map to display the new region immediately without animations.
- @param completion The block executed after the animation finishes.
- */
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-/**
- Returns the camera that best fits the given coordinate bounds.
-
- @param bounds The coordinate bounds to fit to the receiver’s viewport.
- @return A camera object centered on the same location as the coordinate bounds
- with zoom level as high (close to the ground) as possible while still
- including the entire coordinate bounds. The camera object uses the current
- direction and pitch.
- */
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds;
-
-/**
- Returns the camera that best fits the given coordinate bounds with some
- additional padding on each side.
-
- @param bounds The coordinate bounds to fit to the receiver’s viewport.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the same location as the coordinate bounds
- with zoom level as high (close to the ground) as possible while still
- including the entire coordinate bounds. The camera object uses the current
- direction and pitch.
- */
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets;
-
-/**
- Returns the camera that best fits the given coordinate bounds with some
- additional padding on each side, matching an existing camera as much as
- possible.
-
- @param camera The camera that the return camera should adhere to. All values
- on this camera will be manipulated except for pitch and direction.
- @param bounds The coordinate bounds to fit to the receiver’s viewport.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the same location as the coordinate bounds
- with zoom level as high (close to the ground) as possible while still
- including the entire coordinate bounds. The initial camera's pitch and
- direction will be honored.
- */
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets;
-
-/**
- Returns the camera that best fits the given shape with some additional padding
- on each side, matching an existing camera as much as possible.
-
- @param camera The camera that the return camera should adhere to. All values
- on this camera will be manipulated except for pitch and direction.
- @param shape The shape to fit to the receiver’s viewport.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the shape's center with zoom level as high
- (close to the ground) as possible while still including the entire shape.
- The initial camera's pitch and direction will be honored.
- */
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingShape:(MGLShape *)shape edgePadding:(NSEdgeInsets)insets;
-
-/**
- Returns the camera that best fits the given shape with some additional padding
- on each side while looking in the specified direction.
-
- @param shape The shape to fit to the receiver’s viewport.
- @param direction The direction of the viewport, measured in degrees clockwise
- from true north.
- @param insets The minimum padding (in screen points) that would be visible
- around the returned camera object if it were set as the receiver’s camera.
- @return A camera object centered on the shape's center with zoom level as high
- (close to the ground) as possible while still including the entire shape.
- The camera object uses the current pitch.
- */
-- (MGLMapCamera *)cameraThatFitsShape:(MGLShape *)shape direction:(CLLocationDirection)direction edgePadding:(NSEdgeInsets)insets;
-
-/**
- A Boolean value indicating whether the receiver automatically adjusts its
- content insets.
-
- When the value of this property is `YES`, the map view automatically updates
- its `contentInsets` property to account for any overlapping title bar or
- toolbar. To overlap with the title bar or toolbar, the containing window’s
- style mask must have `NSFullSizeContentViewWindowMask` set, and the title bar
- must not be transparent.
-
- The default value of this property is `YES`.
- */
-@property (nonatomic, assign) BOOL automaticallyAdjustsContentInsets;
-
-/**
- The distance from the edges of the map view’s frame to the edges of the map
- view’s logical viewport.
-
- When the value of this property is equal to `NSEdgeInsetsZero`, viewport
- properties such as `centerCoordinate` assume a viewport that matches the map
- view’s frame. Otherwise, those properties are inset, excluding part of the
- frame from the viewport. For instance, if the only the top edge is inset, the
- map center is effectively shifted downward.
-
- When the value of the `automaticallyAdjustsContentInsets` property is `YES`,
- the value of this property may be overridden at any time.
-
- Changing the value of this property updates the map view immediately. If you
- want to animate the change, use the `-setContentInset:animated:completionHandler:`
- method instead.
- */
-@property (nonatomic, assign) NSEdgeInsets contentInsets;
-
-/**
- Deprecated. Sets the distance from the edges of the map view’s frame to the
- edges of the map view’s logical viewport, with an optional transition animation.
-
- When the value of this property is equal to `NSEdgeInsetsZero`, viewport
- properties such as `centerCoordinate` assume a viewport that matches the map
- view’s frame. Otherwise, those properties are inset, excluding part of the
- frame from the viewport. For instance, if the only the top edge is inset, the
- map center is effectively shifted downward.
-
- When the value of the `automaticallyAdjustsContentInsets` property is `YES`,
- the value of this property may be overridden at any time.
-
- To specify a completion handler to execute after the animation finishes, use
- the `-setContentInsets:animated:completionHandler:` method.
-
- @param contentInsets The new values to inset the content by.
- @param animated Specify `YES` if you want the map view to animate the change to
- the content insets or `NO` if you want the map to inset the content
- immediately.
- */
-- (void)setContentInsets:(NSEdgeInsets)contentInsets animated:(BOOL)animated __attribute__((deprecated("Use `-setContentInsets:animated:completionHandler:` instead.")));
-
-/**
- Sets the distance from the edges of the map view’s frame to the edges of the
- map view’s logical viewport with an optional transition animation and
- completion handler.
-
- When the value of this property is equal to `NSEdgeInsetsZero`, viewport
- properties such as `centerCoordinate` assume a viewport that matches the map
- view’s frame. Otherwise, those properties are inset, excluding part of the
- frame from the viewport. For instance, if the only the top edge is inset, the
- map center is effectively shifted downward.
-
- When the value of the `automaticallyAdjustsContentInsets` property is `YES`,
- the value of this property may be overridden at any time.
-
- @param contentInsets The new values to inset the content by.
- @param animated Specify `YES` if you want the map view to animate the change to
- the content insets or `NO` if you want the map to inset the content
- immediately.
- @param completion The block executed after the animation finishes.
- */
-- (void)setContentInsets:(NSEdgeInsets)contentInsets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion;
-
-#pragma mark Configuring How the User Interacts with the Map
-
-/**
- A Boolean value that determines whether the user may zoom the map in and out,
- changing the zoom level.
-
- When this property is set to `YES`, the default, the user may zoom the map in
- and out by pinching two fingers, by using a scroll wheel on a traditional
- mouse, or by dragging the mouse cursor up and down while holding down the Shift
- key. When the receiver has focus, the user may also zoom by pressing the up and
- down arrow keys while holding down the Option key.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still change the map zoom
- programmatically.
- */
-@property (nonatomic, getter=isZoomEnabled) BOOL zoomEnabled;
-
-/**
- A Boolean value that determines whether the user may scroll around the map,
- changing the center coordinate.
-
- When this property is set to `YES`, the default, the user may scroll the map by
- swiping with two fingers or dragging the mouse cursor. When the receiver has
- focus, the user may also scroll around the map by pressing the arrow keys.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still change the map location
- programmatically.
- */
-@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled;
-
-/**
- A Boolean value that determines whether the user may rotate the map, changing
- the direction.
-
- When this property is set to `YES`, the default, the user may rotate the map by
- moving two fingers in a circular motion or by dragging the mouse cursor left
- and right while holding down the Option key. When the receiver has focus, the
- user may also zoom by pressing the left and right arrow keys while holding down
- the Option key.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still rotate the map programmatically.
- */
-@property (nonatomic, getter=isRotateEnabled) BOOL rotateEnabled;
-
-/**
- A Boolean value that determines whether the user may tilt of the map, changing
- the pitch.
-
- When this property is set to `YES`, the default, the user may rotate the map by
- dragging the mouse cursor up and down while holding down the Option key.
-
- This property controls only user interactions with the map. If you set the
- value of this property to `NO`, you may still change the pitch of the map
- programmatically.
- */
-@property (nonatomic, getter=isPitchEnabled) BOOL pitchEnabled;
-
-#pragma mark Annotating the Map
-
-/**
- The complete list of annotations associated with the receiver. (read-only)
-
- The objects in this array must adopt the `MGLAnnotation` protocol. If no
- annotations are associated with the map view, the value of this property is
- `nil`.
- */
-@property (nonatomic, readonly, nullable) NSArray<id <MGLAnnotation>> *annotations;
-
-/**
- Adds an annotation to the map view.
-
- @note `MGLMultiPolyline`, `MGLMultiPolygon`, and `MGLShapeCollection` objects
- cannot be added to the map view at this time. Nor can `MGLMultiPoint`
- objects that are not instances of `MGLPolyline` or `MGLPolygon`. Any
- multipoint, multipolyline, multipolygon, or shape collection object that is
- specified is silently ignored.
-
- @param annotation The annotation object to add to the receiver. This object
- must conform to the `MGLAnnotation` protocol. The map view retains the
- annotation object.
- */
-- (void)addAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Adds an array of annotations to the map view.
-
- @note `MGLMultiPolyline`, `MGLMultiPolygon`, and `MGLShapeCollection` objects
- cannot be added to the map view at this time. Nor can `MGLMultiPoint`
- objects that are not instances of `MGLPolyline` or `MGLPolygon`. Any
- multipoint, multipolyline, multipolygon, or shape collection objects that
- are specified are silently ignored.
-
- @param annotations An array of annotation objects. Each object in the array
- must conform to the `MGLAnnotation` protocol. The map view retains each
- individual annotation object.
- */
-- (void)addAnnotations:(NSArray<id <MGLAnnotation>> *)annotations;
-
-/**
- The complete list of annotations associated with the receiver that are
- currently visible.
-
- The objects in this array must adopt the `MGLAnnotation` protocol. If no
- annotations are associated with the map view or if no annotations associated
- with the map view are currently visible, the value of this property is `nil`.
- */
-@property (nonatomic, readonly, nullable) NSArray<id <MGLAnnotation>> *visibleAnnotations;
-
-/**
- Removes an annotation from the map view, deselecting it if it is selected.
-
- Removing an annotation object dissociates it from the map view entirely,
- preventing it from being displayed on the map. Thus you would typically call
- this method only when you want to hide or delete a given annotation.
-
- @param annotation The annotation object to remove. This object must conform to
- the `MGLAnnotation` protocol.
- */
-- (void)removeAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Removes an array of annotations from the map view, deselecting any selected
- annotations in the array.
-
- Removing annotation objects dissociates them from the map view entirely,
- preventing them from being displayed on the map. Thus you would typically call
- this method only when you want to hide or delete the given annotations.
-
- @param annotations The array of annotation objects to remove. Objects in the
- array must conform to the `MGLAnnotation` protocol.
- */
-- (void)removeAnnotations:(NSArray<id <MGLAnnotation>> *)annotations;
-
-/**
- Returns a reusable annotation image object associated with its identifier.
-
- For performance reasons, you should generally reuse `MGLAnnotationImage`
- objects for identical-looking annotations in your map views. Dequeueing saves
- time and memory during performance-critical operations such as scrolling.
-
- @param identifier A string identifying the annotation image to be reused. This
- string is the same one you specify when initially returning the annotation
- image object using the `-mapView:imageForAnnotation:` method.
- @return An annotation image object with the given identifier, or `nil` if no
- such object exists in the reuse queue.
- */
-- (nullable MGLAnnotationImage *)dequeueReusableAnnotationImageWithIdentifier:(NSString *)identifier;
-
-/**
- Returns the list of annotations associated with the receiver that intersect with
- the given rectangle.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @return An array of objects that adopt the `MGLAnnotation` protocol or `nil` if
- no annotations associated with the map view are currently visible in the
- rectangle.
- */
-- (nullable NSArray<id <MGLAnnotation>> *)visibleAnnotationsInRect:(CGRect)rect;
-
-#pragma mark Managing Annotation Selections
-
-/**
- The currently selected annotations.
-
- Assigning a new array to this property selects only the first annotation in the
- array.
-
- If the annotation is of type `MGLPointAnnotation` and is offscreen, the map is
- panned so that the annotation and its callout are brought just onscreen. The
- annotation is *not* centered within the viewport.
-
- @note In versions prior to `4.0.0` if the annotation was offscreen it was not
- selected.
- */
-@property (nonatomic, copy) NSArray<id <MGLAnnotation>> *selectedAnnotations;
-
-/**
- Selects an annotation and displays a callout popover for it.
-
- If the annotation is of type `MGLPointAnnotation` and is offscreen, the map is
- panned so that the annotation and its callout are brought just onscreen. The
- annotation is *not* centered within the viewport.
-
- @param annotation The annotation object to select.
- */
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Deselects an annotation and hides its callout popover.
-
- @param annotation The annotation object to deselect.
- */
-- (void)deselectAnnotation:(nullable id <MGLAnnotation>)annotation;
-
-/**
- A common view controller for managing a callout popover’s content view.
-
- Like any instance of `NSPopover`, an annotation callout manages its contents
- with a view controller. The annotation object is the view controller’s
- represented object. This means that you can bind controls in the view
- controller’s content view to KVO-compliant properties of the annotation object,
- such as `title` and `subtitle`.
-
- This property defines a common view controller that is used for every
- annotation’s callout view. If you set this property to `nil`, a default view
- controller will be used that manages a simple title label and subtitle label.
- If you need distinct view controllers for different annotations, the map view’s
- delegate should implement `-mapView:calloutViewControllerForAnnotation:`
- instead.
- */
-@property (nonatomic, strong, null_resettable) IBOutlet NSViewController *calloutViewController;
-
-#pragma mark Finding Annotations
-
-/**
- Returns a point annotation located at the given point.
-
- @param point A point in the view’s coordinate system.
- @return A point annotation whose annotation image coincides with the point. If
- multiple point annotations coincide with the point, the return value is the
- annotation that would be selected if the user clicks at this point.
- */
-- (id <MGLAnnotation>)annotationAtPoint:(NSPoint)point;
-
-#pragma mark Overlaying the Map
-
-/**
- The complete list of overlays associated with the receiver. (read-only)
-
- The objects in this array must adopt the `MGLOverlay` protocol. If no
- overlays are associated with the map view, the value of this property is
- empty array.
- */
-@property (nonatomic, readonly, nonnull) NSArray<id <MGLOverlay>> *overlays;
-
-/**
- Adds a single overlay to the map.
-
- To remove an overlay from a map, use the `-removeOverlay:` method.
-
- @param overlay The overlay object to add. This object must conform to the
- `MGLOverlay` protocol.
- */
-- (void)addOverlay:(id <MGLOverlay>)overlay;
-
-/**
- Adds an array of overlays to the map.
-
- To remove multiple overlays from a map, use the `-removeOverlays:` method.
-
- @param overlays An array of objects, each of which must conform to the
- `MGLOverlay` protocol.
- */
-- (void)addOverlays:(NSArray<id <MGLOverlay>> *)overlays;
-
-/**
- Removes a single overlay from the map.
-
- If the specified overlay is not currently associated with the map view, this
- method does nothing.
-
- @param overlay The overlay object to remove.
- */
-- (void)removeOverlay:(id <MGLOverlay>)overlay;
-
-/**
- Removes an array of overlays from the map.
-
- If a given overlay object is not associated with the map view, it is ignored.
-
- @param overlays An array of objects, each of which conforms to the `MGLOverlay`
- protocol.
- */
-- (void)removeOverlays:(NSArray<id <MGLOverlay>> *)overlays;
-
-#pragma mark Accessing the Underlying Map Data
-
-/**
- Returns an array of rendered map features that intersect with a given point.
-
- This method may return features from any of the map’s style layers. To restrict
- the search to a particular layer or layers, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:` method. For more
- information about searching for map features, see that method’s documentation.
-
- @param point A point expressed in the map view’s coordinate system.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(NSPoint)point NS_SWIFT_NAME(visibleFeatures(at:));
-
-/**
- Returns an array of rendered map features that intersect with a given point,
- restricted to the given style layers.
-
- This method returns all the intersecting features from the specified layers. To
- filter the returned features, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:predicate:` method. For
- more information about searching for map features, see that method’s
- documentation.
-
- @param point A point expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names of
- layers defined in the current style. Only the features contained in these
- layers are included in the returned array.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(NSPoint)point inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers NS_SWIFT_NAME(visibleFeatures(at:styleLayerIdentifiers:));
-
-/**
- Returns an array of rendered map features that intersect with a given point,
- restricted to the given style layers and filtered by the given predicate.
-
- Each object in the returned array represents a feature rendered by the
- current style and provides access to attributes specified by the relevant map
- content sources. The returned array includes features loaded by
- `MGLShapeSource` and `MGLVectorTileSource` objects but does not include
- anything from `MGLRasterTileSource` objects, or from video or canvas sources,
- which are unsupported by this SDK.
-
- The returned features are drawn by a style layer in the current style. For
- example, suppose the current style uses the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets source</a>,
- but none of the specified style layers includes features that have the `maki`
- property set to `bus`. If you pass a point corresponding to the location of a
- bus stop into this method, the bus stop feature does not appear in the
- resulting array. On the other hand, if the style does include bus stops, an
- `MGLFeature` object representing that bus stop is returned and its
- `attributes` dictionary has the `maki` key set to `bus` (along with other
- attributes). The dictionary contains only the attributes provided by the
- tile source; it does not include computed attribute values or rules about how
- the feature is rendered by the current style.
-
- The returned array is sorted by z-order, starting with the topmost rendered
- feature and ending with the bottommost rendered feature. A feature that is
- rendered multiple times due to wrapping across the antimeridian at low zoom
- levels is included only once, subject to the caveat that follows.
-
- Features come from tiled vector data or GeoJSON data that is converted to tiles
- internally, so feature geometries are clipped at tile boundaries and features
- may appear duplicated across tiles. For example, suppose the specified point
- lies along a road that spans the screen. The resulting array includes those
- parts of the road that lie within the map tile that contain the specified
- point, even if the road extends into other tiles.
-
- To find out the layer names in a particular style, view the style in
- <a href="https://www.mapbox.com/studio/">Mapbox Studio</a>.
-
- Only visible features are returned. To obtain features regardless of
- visibility, use the
- `-[MGLVectorTileSource featuresInSourceLayersWithIdentifiers:predicate:]` and
- `-[MGLShapeSource featuresMatchingPredicate:]` methods on the relevant sources.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method
- like `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the
- default style’s layers over time.
-
- @param point A point expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names of
- layers defined in the current style. Only the features contained in these
- layers are included in the returned array.
- @param predicate A predicate to filter the returned features.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(NSPoint)point inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers predicate:(nullable NSPredicate *)predicate NS_SWIFT_NAME(visibleFeatures(at:styleLayerIdentifiers:predicate:));
-
-/**
- Returns an array of rendered map features that intersect with the given
- rectangle.
-
- This method may return features from any of the map’s style layers. To restrict
- the search to a particular layer or layers, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:` method. For more
- information about searching for map features, see that method’s documentation.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(NSRect)rect NS_SWIFT_NAME(visibleFeatures(in:));
-
-/**
- Returns an array of rendered map features that intersect with the given
- rectangle, restricted to the given style layers.
-
- This method returns all the intersecting features from the specified layers. To
- filter the returned features, use the
- `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:predicate:` method. For
- more information about searching for map features, see that method’s
- documentation.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names of
- layers defined in the current style. Only the features contained in these
- layers are included in the returned array.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(NSRect)rect inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers NS_SWIFT_NAME(visibleFeatures(at:styleLayerIdentifiers:));
-
-/**
- Returns an array of rendered map features that intersect with the given
- rectangle, restricted to the given style layers and filtered by the given
- predicate.
-
- Each object in the returned array represents a feature rendered by the
- current style and provides access to attributes specified by the relevant map
- content sources. The returned array includes features loaded by
- `MGLShapeSource` and `MGLVectorTileSource` objects but does not include
- anything from `MGLRasterTileSource` objects, or from video or canvas sources,
- which are unsupported by this SDK.
-
- The returned features are drawn by a style layer in the current style. For
- example, suppose the current style uses the
- <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets source</a>,
- but none of the specified style layers includes features that have the `maki`
- property set to `bus`. If you pass a rectangle containing the location of a bus
- stop into this method, the bus stop feature does not appear in the resulting
- array. On the other hand, if the style does include bus stops, an `MGLFeature`
- object representing that bus stop is returned and its `attributes` dictionary
- has the `maki` key set to `bus` (along with other attributes). The dictionary
- contains only the attributes provided by the tile source; it does not include
- computed attribute values or rules about how the feature is rendered by the
- current style.
-
- The returned array is sorted by z-order, starting with the topmost rendered
- feature and ending with the bottommost rendered feature. A feature that is
- rendered multiple times due to wrapping across the antimeridian at low zoom
- levels is included only once, subject to the caveat that follows.
-
- Features come from tiled vector data or GeoJSON data that is converted to tiles
- internally, so feature geometries are clipped at tile boundaries and features
- may appear duplicated across tiles. For example, suppose the specified
- rectangle intersects with a road that spans the screen. The resulting array
- includes those parts of the road that lie within the map tiles covering the
- specified rectangle, even if the road extends into other tiles. The portion of
- the road within each map tile is included individually.
-
- To find out the layer names in a particular style, view the style in
- <a href="https://www.mapbox.com/studio/">Mapbox Studio</a>.
-
- Only visible features are returned. To obtain features regardless of
- visibility, use the
- `-[MGLVectorTileSource featuresInSourceLayersWithIdentifiers:predicate:]` and
- `-[MGLShapeSource featuresMatchingPredicate:]` methods on the relevant sources.
-
- @note Layer identifiers are not guaranteed to exist across styles or different
- versions of the same style. Applications that use this API must first set
- the style URL to an explicitly versioned style using a convenience method
- like `+[MGLStyle outdoorsStyleURLWithVersion:]`, `MGLMapView`’s “Style URL”
- inspectable in Interface Builder, or a manually constructed `NSURL`. This
- approach also avoids layer identifer name changes that will occur in the
- default style’s layers over time.
-
- @param rect A rectangle expressed in the map view’s coordinate system.
- @param styleLayerIdentifiers A set of strings that correspond to the names of
- layers defined in the current style. Only the features contained in these
- layers are included in the returned array.
- @param predicate A predicate to filter the returned features.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the sources used by the current style.
- */
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(NSRect)rect inStyleLayersWithIdentifiers:(nullable NSSet<NSString *> *)styleLayerIdentifiers predicate:(nullable NSPredicate *)predicate NS_SWIFT_NAME(visibleFeatures(in:styleLayerIdentifiers:predicate:));
-
-#pragma mark Converting Geographic Coordinates
-
-/**
- Converts a geographic coordinate to a point in the given view’s coordinate
- system.
-
- @param coordinate The geographic coordinate to convert.
- @param view The view in whose coordinate system the returned point should be
- expressed. If this parameter is `nil`, the returned point is expressed in
- the window’s coordinate system. If `view` is not `nil`, it must belong to
- the same window as the map view.
- @return The point (in the appropriate view or window coordinate system)
- corresponding to the given geographic coordinate.
- */
-- (NSPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(nullable NSView *)view;
-
-/**
- Converts a point in the given view’s coordinate system to a geographic
- coordinate.
-
- @param point The point to convert.
- @param view The view in whose coordinate system the point is expressed.
- @return The geographic coordinate at the given point.
- */
-- (CLLocationCoordinate2D)convertPoint:(NSPoint)point toCoordinateFromView:(nullable NSView *)view;
-
-/**
- Converts a geographic bounding box to a rectangle in the given view’s
- coordinate system.
-
- To bring both sides of the antimeridian or international date line into view,
- specify some longitudes less than −180 degrees or greater than 180 degrees. For
- example, to show both Tokyo and San Francisco simultaneously, you could set the
- visible bounds to extend from (35.68476, −220.24257) to (37.78428, −122.41310).
-
- @param bounds The geographic bounding box to convert.
- @param view The view in whose coordinate system the returned rectangle should
- be expressed. If this parameter is `nil`, the returned rectangle is
- expressed in the window’s coordinate system. If `view` is not `nil`, it must
- belong to the same window as the map view.
- */
-- (NSRect)convertCoordinateBounds:(MGLCoordinateBounds)bounds toRectToView:(nullable NSView *)view;
-
-/**
- Converts a rectangle in the given view’s coordinate system to a geographic
- bounding box.
-
- If a longitude is less than −180 degrees or greater than 180 degrees, the
- bounding box straddles the antimeridian or international date line.
-
- @param rect The rectangle to convert.
- @param view The view in whose coordinate system the rectangle is expressed.
- @return The geographic bounding box coextensive with the given rectangle.
- */
-- (MGLCoordinateBounds)convertRect:(NSRect)rect toCoordinateBoundsFromView:(nullable NSView *)view;
-
-/**
- Returns the distance spanned by one point in the map view’s coordinate system
- at the given latitude and current zoom level.
-
- The distance between points decreases as the latitude approaches the poles.
- This relationship parallels the relationship between longitudinal coordinates
- at different latitudes.
-
- @param latitude The latitude of the geographic coordinate represented by the
- point.
- @return The distance in meters spanned by a single point.
- */
-- (CLLocationDistance)metersPerPointAtLatitude:(CLLocationDegrees)latitude;
-
-#pragma mark Giving Feedback to Improve the Map
-
-/**
- Opens one or more webpages in the default Web browser in which the user can
- provide feedback about the map data.
-
- You should add a menu item to the Help menu of your application that invokes
- this method. Title it “Improve This Map” or similar. Set its target to the
- first responder and its action to `giveFeedback:`.
-
- This map view searches the current style’s sources for webpages to open.
- Specifically, each source’s tile set has an `attribution` property containing
- HTML code; if an <code>&lt;a></code> tag (link) within that code has an
- <code>class</code> attribute set to <code>mapbox-improve-map</code>, its
- <code>href</code> attribute defines the URL to open. Such links are omitted
- from the attribution view.
- */
-- (IBAction)giveFeedback:(id)sender;
-
-#pragma mark Debugging the Map
-
-/**
- The options that determine which debugging aids are shown on the map.
-
- These options are all disabled by default and should remain disabled in
- released software for performance and aesthetic reasons.
- */
-@property (nonatomic) MGLMapDebugMaskOptions debugMask;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm
deleted file mode 100644
index aec9cea0bc..0000000000
--- a/platform/macos/src/MGLMapView.mm
+++ /dev/null
@@ -1,3081 +0,0 @@
-#import "MGLMapView_Private.h"
-
-#import "MGLAttributionButton.h"
-#import "MGLCompassCell.h"
-#import "MGLStyle.h"
-#import "MGLRendererFrontend.h"
-#import "MGLRendererConfiguration.h"
-
-#import "MGLAnnotationImage_Private.h"
-#import "MGLAttributionInfo_Private.h"
-#import "MGLFeature_Private.h"
-#import "MGLFoundation_Private.h"
-#import "MGLGeometry_Private.h"
-#import "MGLMultiPoint_Private.h"
-#import "MGLOfflineStorage_Private.h"
-#import "MGLStyle_Private.h"
-#import "MGLShape_Private.h"
-
-#import "MGLAccountManager.h"
-#import "MGLMapCamera.h"
-#import "MGLPolygon.h"
-#import "MGLPolyline.h"
-#import "MGLAnnotationImage.h"
-#import "MGLMapViewDelegate.h"
-#import "MGLImageSource.h"
-
-#import <mbgl/map/map.hpp>
-#import <mbgl/map/map_options.hpp>
-#import <mbgl/style/style.hpp>
-#import <mbgl/annotation/annotation.hpp>
-#import <mbgl/map/camera.hpp>
-#import <mbgl/storage/reachability.h>
-#import <mbgl/style/image.hpp>
-#import <mbgl/renderer/renderer.hpp>
-#import <mbgl/storage/network_status.hpp>
-#import <mbgl/storage/resource_options.hpp>
-#import <mbgl/math/wrap.hpp>
-#import <mbgl/util/constants.hpp>
-#import <mbgl/util/chrono.hpp>
-#import <mbgl/util/exception.hpp>
-#import <mbgl/util/run_loop.hpp>
-#import <mbgl/util/string.hpp>
-#import <mbgl/util/projection.hpp>
-
-#import <map>
-#import <unordered_map>
-#import <unordered_set>
-
-#import "MGLMapView+Impl.h"
-#import "NSBundle+MGLAdditions.h"
-#import "NSDate+MGLAdditions.h"
-#import "NSProcessInfo+MGLAdditions.h"
-#import "NSException+MGLAdditions.h"
-#import "NSString+MGLAdditions.h"
-#import "NSURL+MGLAdditions.h"
-#import "NSColor+MGLAdditions.h"
-#import "NSImage+MGLAdditions.h"
-#import "NSPredicate+MGLPrivateAdditions.h"
-#import "MGLLoggingConfiguration_Private.h"
-#import "MGLNetworkIntegrationManager.h"
-
-class MGLAnnotationContext;
-
-/// Distance from the edge of the view to ornament views (logo, attribution, etc.).
-const CGFloat MGLOrnamentPadding = 12;
-
-/// Alpha value of the ornament views (logo, attribution, etc.).
-const CGFloat MGLOrnamentOpacity = 0.9;
-
-/// Default duration for programmatic animations.
-const NSTimeInterval MGLAnimationDuration = 0.3;
-
-/// Distance in points that a single press of the panning keyboard shortcut pans the map by.
-const CGFloat MGLKeyPanningIncrement = 150;
-
-/// Degrees that a single press of the rotation keyboard shortcut rotates the map by.
-const CLLocationDegrees MGLKeyRotationIncrement = 25;
-
-/// Key for the user default that, when true, causes the map view to zoom in and out on scroll wheel events.
-NSString * const MGLScrollWheelZoomsMapViewDefaultKey = @"MGLScrollWheelZoomsMapView";
-
-/// Reuse identifier and file name of the default point annotation image.
-static NSString * const MGLDefaultStyleMarkerSymbolName = @"default_marker";
-
-/// Prefix that denotes a sprite installed by MGLMapView, to avoid collisions
-/// with style-defined sprites.
-static NSString * const MGLAnnotationSpritePrefix = @"com.mapbox.sprites.";
-
-/// Slop area around the hit testing point, allowing for imprecise annotation selection.
-const CGFloat MGLAnnotationImagePaddingForHitTest = 4;
-
-/// Distance from the callout’s anchor point to the annotation it points to.
-const CGFloat MGLAnnotationImagePaddingForCallout = 4;
-
-/// Padding to edge of view that an offscreen annotation must have when being brought onscreen (by being selected)
-const NSEdgeInsets MGLMapViewOffscreenAnnotationPadding = NSEdgeInsetsMake(-30.0f, -30.0f, -30.0f, -30.0f);
-
-/// Unique identifier representing a single annotation in mbgl.
-typedef uint64_t MGLAnnotationTag;
-
-/// An indication that the requested annotation was not found or is nonexistent.
-enum { MGLAnnotationTagNotFound = UINT64_MAX };
-
-/// Mapping from an annotation tag to metadata about that annotation, including
-/// the annotation itself.
-typedef std::unordered_map<MGLAnnotationTag, MGLAnnotationContext> MGLAnnotationTagContextMap;
-
-/// Mapping from an annotation object to an annotation tag.
-typedef std::map<id<MGLAnnotation>, MGLAnnotationTag> MGLAnnotationObjectTagMap;
-
-/// Returns an NSImage for the default marker image.
-NSImage *MGLDefaultMarkerImage() {
- NSString *path = [[NSBundle mgl_frameworkBundle] pathForResource:MGLDefaultStyleMarkerSymbolName
- ofType:@"pdf"];
- return [[NSImage alloc] initWithContentsOfFile:path];
-}
-
-/// Converts a media timing function into a unit bezier object usable in mbgl.
-mbgl::util::UnitBezier MGLUnitBezierForMediaTimingFunction(CAMediaTimingFunction *function) {
- if (!function) {
- function = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
- }
- float p1[2], p2[2];
- [function getControlPointAtIndex:0 values:p1];
- [function getControlPointAtIndex:1 values:p2];
- return { p1[0], p1[1], p2[0], p2[1] };
-}
-
-/// Lightweight container for metadata about an annotation, including the annotation itself.
-class MGLAnnotationContext {
-public:
- id <MGLAnnotation> annotation;
- /// The annotation’s image’s reuse identifier.
- NSString *imageReuseIdentifier;
-};
-
-@interface MGLMapView () <NSPopoverDelegate, MGLMultiPointDelegate, NSGestureRecognizerDelegate>
-
-@property (nonatomic, readwrite) NSSegmentedControl *zoomControls;
-@property (nonatomic, readwrite) NSSlider *compass;
-@property (nonatomic, readwrite) NSImageView *logoView;
-@property (nonatomic, readwrite) NSView *attributionView;
-
-@property (nonatomic, readwrite) MGLStyle *style;
-
-/// Mapping from reusable identifiers to annotation images.
-@property (nonatomic) NSMutableDictionary<NSString *, MGLAnnotationImage *> *annotationImagesByIdentifier;
-/// Currently shown popover representing the selected annotation.
-@property (nonatomic) NSPopover *calloutForSelectedAnnotation;
-
-@property (nonatomic, readwrite, getter=isDormant) BOOL dormant;
-
-@end
-
-@implementation MGLMapView {
- /// Cross-platform map view controller.
- mbgl::Map *_mbglMap;
- std::unique_ptr<MGLMapViewImpl> _mbglView;
- std::unique_ptr<MGLRenderFrontend> _rendererFrontend;
-
- NSPanGestureRecognizer *_panGestureRecognizer;
- NSMagnificationGestureRecognizer *_magnificationGestureRecognizer;
- NSRotationGestureRecognizer *_rotationGestureRecognizer;
- NSClickGestureRecognizer *_singleClickRecognizer;
- double _zoomAtBeginningOfGesture;
- CLLocationDirection _directionAtBeginningOfGesture;
- CGFloat _pitchAtBeginningOfGesture;
- BOOL _didHideCursorDuringGesture;
-
- MGLAnnotationTagContextMap _annotationContextsByAnnotationTag;
- MGLAnnotationObjectTagMap _annotationTagsByAnnotation;
- MGLAnnotationTag _selectedAnnotationTag;
- MGLAnnotationTag _lastSelectedAnnotationTag;
- /// Size of the rectangle formed by unioning the maximum slop area around every annotation image.
- NSSize _unionedAnnotationImageSize;
- std::vector<MGLAnnotationTag> _annotationsNearbyLastClick;
- /// True if any annotations that have tooltips have been installed.
- BOOL _wantsToolTipRects;
- /// True if any annotation images that have custom cursors have been installed.
- BOOL _wantsCursorRects;
- /// True if a willChange notification has been issued for shape annotation layers and a didChange notification is pending.
- BOOL _isChangingAnnotationLayers;
-
- // Cached checks for delegate method implementations that may be called from
- // MGLMultiPointDelegate methods.
-
- BOOL _delegateHasAlphasForShapeAnnotations;
- BOOL _delegateHasStrokeColorsForShapeAnnotations;
- BOOL _delegateHasFillColorsForShapeAnnotations;
- BOOL _delegateHasLineWidthsForShapeAnnotations;
-
- /// True if the current process is the Interface Builder designable
- /// renderer. When drawing the designable, the map is paused, so any call to
- /// it may hang the process.
- BOOL _isTargetingInterfaceBuilder;
- CLLocationDegrees _pendingLatitude;
- CLLocationDegrees _pendingLongitude;
-
- /// True if the view is currently printing itself.
- BOOL _isPrinting;
-
- /// reachability instance
- MGLReachability *_reachability;
-}
-
-#pragma mark Lifecycle
-
-+ (void)initialize {
- if (self == [MGLMapView class]) {
- [[NSUserDefaults standardUserDefaults] registerDefaults:@{
- MGLScrollWheelZoomsMapViewDefaultKey: @NO,
- }];
- }
-}
-
-- (instancetype)initWithFrame:(NSRect)frameRect {
- if (self = [super initWithFrame:frameRect]) {
- MGLLogInfo(@"Starting %@ initialization.", NSStringFromClass([self class]));
- MGLLogDebug(@"Initializing frame: %@", NSStringFromRect(frameRect));
- [self commonInit];
- self.styleURL = nil;
- MGLLogInfo(@"Finalizing %@ initialization.", NSStringFromClass([self class]));
- }
- return self;
-}
-
-- (instancetype)initWithFrame:(NSRect)frame styleURL:(nullable NSURL *)styleURL {
- if (self = [super initWithFrame:frame]) {
- MGLLogInfo(@"Starting %@ initialization.", NSStringFromClass([self class]));
- MGLLogDebug(@"Initializing frame: %@ styleURL: %@", NSStringFromRect(frame), styleURL);
- [self commonInit];
- self.styleURL = styleURL;
- MGLLogInfo(@"Finalizing %@ initialization.", NSStringFromClass([self class]));
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(nonnull NSCoder *)decoder {
- if (self = [super initWithCoder:decoder]) {
- MGLLogInfo(@"Starting %@ initialization.", NSStringFromClass([self class]));
- [self commonInit];
- MGLLogInfo(@"Finalizing %@ initialization.", NSStringFromClass([self class]));
- }
- return self;
-}
-
-- (void)awakeFromNib {
- [super awakeFromNib];
-
- // If the Style URL inspectable was not set, make sure to go through
- // -setStyleURL: to load the default style.
- if (_mbglMap->getStyle().getURL().empty()) {
- self.styleURL = nil;
- }
-}
-
-+ (NSArray *)restorableStateKeyPaths {
- return @[@"camera", @"debugMask"];
-}
-
-- (void)commonInit {
- MGLNativeNetworkManager.sharedManager.delegate = MGLNetworkIntegrationManager.sharedManager;
- _isTargetingInterfaceBuilder = NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent;
-
- // Set up cross-platform controllers and resources.
- _mbglView = MGLMapViewImpl::Create(self);
-
- // Delete the pre-offline ambient cache at
- // ~/Library/Caches/com.mapbox.MapboxGL/cache.db.
- NSURL *cachesDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory
- inDomain:NSUserDomainMask
- appropriateForURL:nil
- create:NO
- error:nil];
- cachesDirectoryURL = [cachesDirectoryURL URLByAppendingPathComponent:@"com.mapbox.MapboxGL"];
- NSURL *legacyCacheURL = [cachesDirectoryURL URLByAppendingPathComponent:@"cache.db"];
- [[NSFileManager defaultManager] removeItemAtURL:legacyCacheURL error:NULL];
-
- MGLRendererConfiguration *config = [MGLRendererConfiguration currentConfiguration];
-
- auto renderer = std::make_unique<mbgl::Renderer>(_mbglView->getRendererBackend(), config.scaleFactor, config.localFontFamilyName);
- BOOL enableCrossSourceCollisions = !config.perSourceCollisions;
- _rendererFrontend = std::make_unique<MGLRenderFrontend>(std::move(renderer), self, _mbglView->getRendererBackend(), true);
-
- mbgl::MapOptions mapOptions;
- mapOptions.withMapMode(mbgl::MapMode::Continuous)
- .withSize(self.size)
- .withPixelRatio(config.scaleFactor)
- .withConstrainMode(mbgl::ConstrainMode::None)
- .withViewportMode(mbgl::ViewportMode::Default)
- .withCrossSourceCollisions(enableCrossSourceCollisions);
-
- mbgl::ResourceOptions resourceOptions;
- resourceOptions.withCachePath([[MGLOfflineStorage sharedOfflineStorage] mbglCachePath])
- .withAssetPath([NSBundle mainBundle].resourceURL.path.UTF8String);
-
- _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, mapOptions, resourceOptions);
-
- // Notify map object when network reachability status changes.
- _reachability = [MGLReachability reachabilityForInternetConnection];
- _reachability.reachableBlock = ^(MGLReachability *) {
- mbgl::NetworkStatus::Reachable();
- };
- [_reachability startNotifier];
-
- // Install ornaments and gesture recognizers.
- [self installZoomControls];
- [self installCompass];
- [self installLogoView];
- [self installAttributionView];
- [self installGestureRecognizers];
-
- // Set up annotation management and selection state.
- _annotationImagesByIdentifier = [NSMutableDictionary dictionary];
- _annotationContextsByAnnotationTag = {};
- _annotationTagsByAnnotation = {};
- _selectedAnnotationTag = MGLAnnotationTagNotFound;
- _lastSelectedAnnotationTag = MGLAnnotationTagNotFound;
- _annotationsNearbyLastClick = {};
-
- // Jump to Null Island initially.
- self.automaticallyAdjustsContentInsets = YES;
- mbgl::CameraOptions options;
- options.center = mbgl::LatLng(0, 0);
- options.padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
- options.zoom = *_mbglMap->getBounds().minZoom;
- _mbglMap->jumpTo(options);
- _pendingLatitude = NAN;
- _pendingLongitude = NAN;
-}
-
-- (mbgl::Size)size {
- // check for minimum texture size supported by OpenGL ES 2.0
- //
- CGSize size = CGSizeMake(MAX(self.bounds.size.width, 64), MAX(self.bounds.size.height, 64));
- return { static_cast<uint32_t>(size.width),
- static_cast<uint32_t>(size.height) };
-}
-
-- (mbgl::Size)framebufferSize {
- NSRect bounds = [self convertRectToBacking:self.bounds];
- return { static_cast<uint32_t>(bounds.size.width), static_cast<uint32_t>(bounds.size.height) };
-}
-
-/// Adds zoom controls to the lower-right corner.
-- (void)installZoomControls {
- _zoomControls = [[NSSegmentedControl alloc] initWithFrame:NSZeroRect];
- _zoomControls.wantsLayer = YES;
- _zoomControls.layer.opacity = MGLOrnamentOpacity;
- [(NSSegmentedCell *)_zoomControls.cell setTrackingMode:NSSegmentSwitchTrackingMomentary];
- _zoomControls.continuous = YES;
- _zoomControls.segmentCount = 2;
- [_zoomControls setLabel:NSLocalizedStringWithDefaultValue(@"ZOOM_OUT_LABEL", nil, nil, @"−", @"Label of Zoom Out button; U+2212 MINUS SIGN") forSegment:0];
- [(NSSegmentedCell *)_zoomControls.cell setTag:0 forSegment:0];
- [(NSSegmentedCell *)_zoomControls.cell setToolTip:NSLocalizedStringWithDefaultValue(@"ZOOM_OUT_TOOLTIP", nil, nil, @"Zoom Out", @"Tooltip of Zoom Out button") forSegment:0];
- [_zoomControls setLabel:NSLocalizedStringWithDefaultValue(@"ZOOM_IN_LABEL", nil, nil, @"+", @"Label of Zoom In button") forSegment:1];
- [(NSSegmentedCell *)_zoomControls.cell setTag:1 forSegment:1];
- [(NSSegmentedCell *)_zoomControls.cell setToolTip:NSLocalizedStringWithDefaultValue(@"ZOOM_IN_TOOLTIP", nil, nil, @"Zoom In", @"Tooltip of Zoom In button") forSegment:1];
- _zoomControls.target = self;
- _zoomControls.action = @selector(zoomInOrOut:);
- _zoomControls.controlSize = NSRegularControlSize;
- [_zoomControls sizeToFit];
- _zoomControls.translatesAutoresizingMaskIntoConstraints = NO;
- [self addSubview:_zoomControls];
-}
-
-/// Adds a rudimentary compass control to the lower-right corner.
-- (void)installCompass {
- _compass = [[NSSlider alloc] initWithFrame:NSZeroRect];
- _compass.wantsLayer = YES;
- _compass.layer.opacity = MGLOrnamentOpacity;
- _compass.cell = [[MGLCompassCell alloc] init];
- _compass.continuous = YES;
- _compass.target = self;
- _compass.action = @selector(rotate:);
- [_compass sizeToFit];
- _compass.translatesAutoresizingMaskIntoConstraints = NO;
- [self addSubview:_compass];
-}
-
-/// Adds a Mapbox logo to the lower-left corner.
-- (void)installLogoView {
- _logoView = [[NSImageView alloc] initWithFrame:NSZeroRect];
- _logoView.wantsLayer = YES;
- NSImage *logoImage = [[NSImage alloc] initWithContentsOfFile:
- [[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox" ofType:@"pdf"]];
- // Account for the image’s built-in padding when aligning other controls to the logo.
- logoImage.alignmentRect = NSOffsetRect(logoImage.alignmentRect, 0, 3);
- _logoView.image = logoImage;
- _logoView.translatesAutoresizingMaskIntoConstraints = NO;
- _logoView.accessibilityTitle = NSLocalizedStringWithDefaultValue(@"MAP_A11Y_TITLE", nil, nil, @"Mapbox", @"Accessibility title");
- [self addSubview:_logoView];
-}
-
-/// Adds legally required map attribution to the lower-left corner.
-- (void)installAttributionView {
- [_attributionView removeFromSuperview];
- _attributionView = [[NSView alloc] initWithFrame:NSZeroRect];
- _attributionView.wantsLayer = YES;
-
- // Make the background and foreground translucent to be unobtrusive.
- _attributionView.layer.opacity = 0.6;
-
- // Blur the background to prevent text underneath the view from running into
- // the text in the view, rendering it illegible.
- CIFilter *attributionBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
- [attributionBlurFilter setDefaults];
-
- // Brighten the background. This is similar to applying a translucent white
- // background on the view, but the effect is a bit more subtle and works
- // well with the blur above.
- CIFilter *attributionColorFilter = [CIFilter filterWithName:@"CIColorControls"];
- [attributionColorFilter setDefaults];
- [attributionColorFilter setValue:@(0.1) forKey:kCIInputBrightnessKey];
-
- // Apply the background effects and a standard button corner radius.
- _attributionView.backgroundFilters = @[attributionColorFilter, attributionBlurFilter];
- _attributionView.layer.cornerRadius = 4;
-
- _attributionView.translatesAutoresizingMaskIntoConstraints = NO;
- [self addSubview:_attributionView];
- [self updateAttributionView];
-}
-
-/// Adds gesture recognizers for manipulating the viewport and selecting annotations.
-- (void)installGestureRecognizers {
- _scrollEnabled = YES;
- _zoomEnabled = YES;
- _rotateEnabled = YES;
- _pitchEnabled = YES;
-
- _panGestureRecognizer = [[NSPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
- _panGestureRecognizer.delaysKeyEvents = YES;
- [self addGestureRecognizer:_panGestureRecognizer];
-
- _singleClickRecognizer = [[NSClickGestureRecognizer alloc] initWithTarget:self action:@selector(handleClickGesture:)];
- _singleClickRecognizer.delaysPrimaryMouseButtonEvents = NO;
- _singleClickRecognizer.delegate = self;
- [self addGestureRecognizer:_singleClickRecognizer];
-
- NSClickGestureRecognizer *rightClickGestureRecognizer = [[NSClickGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightClickGesture:)];
- rightClickGestureRecognizer.buttonMask = 0x2;
- [self addGestureRecognizer:rightClickGestureRecognizer];
-
- NSClickGestureRecognizer *doubleClickGestureRecognizer = [[NSClickGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleClickGesture:)];
- doubleClickGestureRecognizer.numberOfClicksRequired = 2;
- doubleClickGestureRecognizer.delaysPrimaryMouseButtonEvents = NO;
- [self addGestureRecognizer:doubleClickGestureRecognizer];
-
- _magnificationGestureRecognizer = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(handleMagnificationGesture:)];
- [self addGestureRecognizer:_magnificationGestureRecognizer];
-
- _rotationGestureRecognizer = [[NSRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationGesture:)];
- [self addGestureRecognizer:_rotationGestureRecognizer];
-}
-
-/// Updates the attribution view to reflect the sources used. For now, this is
-/// hard-coded to the standard Mapbox and OpenStreetMap attribution.
-- (void)updateAttributionView {
- NSView *attributionView = self.attributionView;
- for (NSView *button in attributionView.subviews) {
- [button removeConstraints:button.constraints];
- }
- attributionView.subviews = @[];
- [attributionView removeConstraints:attributionView.constraints];
-
- // Make the whole string mini by default.
- // Force links to be black, because the default blue is distracting.
- CGFloat miniSize = [NSFont systemFontSizeForControlSize:NSMiniControlSize];
- NSArray *attributionInfos = [self.style attributionInfosWithFontSize:miniSize linkColor:[NSColor blackColor]];
- for (MGLAttributionInfo *info in attributionInfos) {
- // Feedback links are added to the Help menu.
- if (info.feedbackLink) {
- continue;
- }
-
- // For each attribution, add a borderless button that responds to clicks
- // and feels like a hyperlink.
- NSButton *button = [[MGLAttributionButton alloc] initWithAttributionInfo:info];
- button.controlSize = NSMiniControlSize;
- button.translatesAutoresizingMaskIntoConstraints = NO;
-
- // Set the new button flush with the buttom of the container and to the
- // right of the previous button, with standard spacing. If there is no
- // previous button, align to the container instead.
- NSView *previousView = attributionView.subviews.lastObject;
- [attributionView addSubview:button];
- [attributionView addConstraint:
- [NSLayoutConstraint constraintWithItem:button
- attribute:NSLayoutAttributeBottom
- relatedBy:NSLayoutRelationEqual
- toItem:attributionView
- attribute:NSLayoutAttributeBottom
- multiplier:1
- constant:0]];
- [attributionView addConstraint:
- [NSLayoutConstraint constraintWithItem:button
- attribute:NSLayoutAttributeLeading
- relatedBy:NSLayoutRelationEqual
- toItem:previousView ? previousView : attributionView
- attribute:previousView ? NSLayoutAttributeTrailing : NSLayoutAttributeLeading
- multiplier:1
- constant:8]];
- [attributionView addConstraint:
- [NSLayoutConstraint constraintWithItem:button
- attribute:NSLayoutAttributeTop
- relatedBy:NSLayoutRelationEqual
- toItem:attributionView
- attribute:NSLayoutAttributeTop
- multiplier:1
- constant:0]];
- }
-
- if (attributionInfos.count) {
- [attributionView addConstraint:
- [NSLayoutConstraint constraintWithItem:attributionView
- attribute:NSLayoutAttributeTrailing
- relatedBy:NSLayoutRelationEqual
- toItem:attributionView.subviews.lastObject
- attribute:NSLayoutAttributeTrailing
- multiplier:1
- constant:8]];
- }
-}
-
-- (void)dealloc {
-
- [_reachability stopNotifier];
-
-
- [self.window removeObserver:self forKeyPath:@"contentLayoutRect"];
- [self.window removeObserver:self forKeyPath:@"titlebarAppearsTransparent"];
-
- // Close any annotation callout immediately.
- [self.calloutForSelectedAnnotation close];
- self.calloutForSelectedAnnotation = nil;
-
- // Removing the annotations unregisters any outstanding KVO observers.
- [self removeAnnotations:self.annotations];
-
- if (_mbglMap) {
- delete _mbglMap;
- _mbglMap = nullptr;
- }
- _mbglView.reset();
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(__unused NSDictionary *)change context:(void *)context {
- if ([keyPath isEqualToString:@"contentLayoutRect"] ||
- [keyPath isEqualToString:@"titlebarAppearsTransparent"]) {
- [self adjustContentInsets];
- } else if ([keyPath isEqualToString:@"coordinate"] &&
- [object conformsToProtocol:@protocol(MGLAnnotation)] &&
- ![object isKindOfClass:[MGLMultiPoint class]]) {
- id <MGLAnnotation> annotation = object;
- MGLAnnotationTag annotationTag = (MGLAnnotationTag)(NSUInteger)context;
- // We can get here because a subclass registered itself as an observer
- // of the coordinate key path of a non-multipoint annotation but failed
- // to handle the change. This check deters us from treating the
- // subclass’s context as an annotation tag. If the context happens to
- // match a valid annotation tag, the annotation will be unnecessarily
- // but safely updated.
- if (annotation == [self annotationWithTag:annotationTag]) {
- const mbgl::Point<double> point = MGLPointFromLocationCoordinate2D(annotation.coordinate);
- MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
- _mbglMap->updateAnnotation(annotationTag, mbgl::SymbolAnnotation { point, annotationImage.styleIconIdentifier.UTF8String ?: "" });
- [self updateAnnotationCallouts];
- }
- } else if ([keyPath isEqualToString:@"coordinates"] &&
- [object isKindOfClass:[MGLMultiPoint class]]) {
- MGLMultiPoint *annotation = object;
- MGLAnnotationTag annotationTag = (MGLAnnotationTag)(NSUInteger)context;
- // We can get here because a subclass registered itself as an observer
- // of the coordinates key path of a multipoint annotation but failed
- // to handle the change. This check deters us from treating the
- // subclass’s context as an annotation tag. If the context happens to
- // match a valid annotation tag, the annotation will be unnecessarily
- // but safely updated.
- if (annotation == [self annotationWithTag:annotationTag]) {
- _mbglMap->updateAnnotation(annotationTag, [annotation annotationObjectWithDelegate:self]);
- [self updateAnnotationCallouts];
- }
- }
-}
-
-+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key {
- return [key isEqualToString:@"annotations"] ? YES : [super automaticallyNotifiesObserversForKey:key];
-}
-
-- (void)setDelegate:(id<MGLMapViewDelegate>)delegate {
- _delegate = delegate;
-
- // Cache checks for delegate method implementations that may be called in a
- // hot loop, namely the annotation style methods.
- _delegateHasAlphasForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:alphaForShapeAnnotation:)];
- _delegateHasStrokeColorsForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:strokeColorForShapeAnnotation:)];
- _delegateHasFillColorsForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:fillColorForPolygonAnnotation:)];
- _delegateHasLineWidthsForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:lineWidthForPolylineAnnotation:)];
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wundeclared-selector"
- if ([self.delegate respondsToSelector:@selector(mapView:regionWillChangeAnimated:)]) {
- NSLog(@"-mapView:regionWillChangeAnimated: is not supported by the macOS SDK, but %@ implements it anyways. "
- @"Please implement -[%@ mapView:cameraWillChangeAnimated:] instead.",
- NSStringFromClass([delegate class]), NSStringFromClass([delegate class]));
- }
- if ([self.delegate respondsToSelector:@selector(mapViewRegionIsChanging:)]) {
- NSLog(@"-mapViewRegionIsChanging: is not supported by the macOS SDK, but %@ implements it anyways. "
- @"Please implement -[%@ mapViewCameraIsChanging:] instead.",
- NSStringFromClass([delegate class]), NSStringFromClass([delegate class]));
- }
- if ([self.delegate respondsToSelector:@selector(mapView:regionDidChangeAnimated:)]) {
- NSLog(@"-mapView:regionDidChangeAnimated: is not supported by the macOS SDK, but %@ implements it anyways. "
- @"Please implement -[%@ mapView:cameraDidChangeAnimated:] instead.",
- NSStringFromClass([delegate class]), NSStringFromClass([delegate class]));
- }
-#pragma clang diagnostic pop
-}
-
-#pragma mark Style
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingStyle {
- return [NSSet setWithObject:@"styleURL"];
-}
-
-- (nonnull NSURL *)styleURL {
- NSString *styleURLString = @(_mbglMap->getStyle().getURL().c_str()).mgl_stringOrNilIfEmpty;
- return styleURLString ? [NSURL URLWithString:styleURLString] : [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion];
-}
-
-- (void)setStyleURL:(nullable NSURL *)styleURL {
- if (_isTargetingInterfaceBuilder) {
- return;
- }
-
- // Default to Streets.
- if (!styleURL) {
- styleURL = [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion];
- }
- MGLLogDebug(@"Setting styleURL: %@", styleURL);
- // An access token is required to load any default style, including Streets.
- if (![MGLAccountManager accessToken] && [styleURL.scheme isEqualToString:@"mapbox"]) {
- NSLog(@"Cannot set the style URL to %@ because no access token has been specified.", styleURL);
- return;
- }
-
- styleURL = styleURL.mgl_URLByStandardizingScheme;
- self.style = nil;
- _mbglMap->getStyle().loadURL(styleURL.absoluteString.UTF8String);
-}
-
-- (IBAction)reloadStyle:(__unused id)sender {
- MGLLogInfo(@"Reloading style.");
- NSURL *styleURL = self.styleURL;
- _mbglMap->getStyle().loadURL("");
- self.styleURL = styleURL;
-}
-
-- (void)setPrefetchesTiles:(BOOL)prefetchesTiles
-{
- _mbglMap->setPrefetchZoomDelta(prefetchesTiles ? mbgl::util::DEFAULT_PREFETCH_ZOOM_DELTA : 0);
-}
-
-- (mbgl::Map *)mbglMap {
- return _mbglMap;
-}
-
-- (mbgl::Renderer *)renderer {
- return _rendererFrontend->getRenderer();
-}
-
-#pragma mark View hierarchy and drawing
-
-- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
- [self deselectAnnotation:self.selectedAnnotation];
- if (!self.dormant && !newWindow) {
- self.dormant = YES;
- }
-
- [self.window removeObserver:self forKeyPath:@"contentLayoutRect"];
- [self.window removeObserver:self forKeyPath:@"titlebarAppearsTransparent"];
-}
-
-- (void)viewDidMoveToWindow {
- NSWindow *window = self.window;
- if (self.dormant && window) {
- self.dormant = NO;
- }
-
- if (window && _mbglMap->getMapOptions().constrainMode() == mbgl::ConstrainMode::None) {
- _mbglMap->setConstrainMode(mbgl::ConstrainMode::HeightOnly);
- }
-
- [window addObserver:self
- forKeyPath:@"contentLayoutRect"
- options:NSKeyValueObservingOptionInitial
- context:NULL];
- [window addObserver:self
- forKeyPath:@"titlebarAppearsTransparent"
- options:NSKeyValueObservingOptionInitial
- context:NULL];
-}
-
-- (BOOL)wantsLayer {
- return YES;
-}
-
-- (BOOL)wantsBestResolutionOpenGLSurface {
- // Use an OpenGL layer, except when drawing the designable, which is just
- // ordinary Cocoa.
- return !_isTargetingInterfaceBuilder;
-}
-
-- (CGLContextObj)context {
- return _mbglView->getCGLContextObj();
-}
-
-- (void)setFrame:(NSRect)frame {
- super.frame = frame;
- if (!_isTargetingInterfaceBuilder) {
- _mbglMap->setSize(self.size);
- }
-}
-
-- (void)updateConstraints {
- // Place the zoom controls at the lower-right corner of the view.
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:self
- attribute:NSLayoutAttributeBottom
- relatedBy:NSLayoutRelationEqual
- toItem:_zoomControls
- attribute:NSLayoutAttributeBottom
- multiplier:1
- constant:MGLOrnamentPadding]];
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:self
- attribute:NSLayoutAttributeTrailing
- relatedBy:NSLayoutRelationEqual
- toItem:_zoomControls
- attribute:NSLayoutAttributeTrailing
- multiplier:1
- constant:MGLOrnamentPadding]];
-
- // Center the compass above the zoom controls, assuming that the compass is
- // narrower than the zoom controls.
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:_compass
- attribute:NSLayoutAttributeCenterX
- relatedBy:NSLayoutRelationEqual
- toItem:_zoomControls
- attribute:NSLayoutAttributeCenterX
- multiplier:1
- constant:0]];
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:_zoomControls
- attribute:NSLayoutAttributeTop
- relatedBy:NSLayoutRelationEqual
- toItem:_compass
- attribute:NSLayoutAttributeBottom
- multiplier:1
- constant:8]];
-
- // Place the logo view in the lower-left corner of the view, accounting for
- // the logo’s alignment rect.
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:self
- attribute:NSLayoutAttributeBottom
- relatedBy:NSLayoutRelationEqual
- toItem:_logoView
- attribute:NSLayoutAttributeBottom
- multiplier:1
- constant:MGLOrnamentPadding - _logoView.image.alignmentRect.origin.y]];
- [self addConstraint:
- [NSLayoutConstraint constraintWithItem:_logoView
- attribute:NSLayoutAttributeLeading
- relatedBy:NSLayoutRelationEqual
- toItem:self
- attribute:NSLayoutAttributeLeading
- multiplier:1
- constant:MGLOrnamentPadding - _logoView.image.alignmentRect.origin.x]];
-
- // Place the attribution view to the right of the logo view and size it to
- // fit the buttons inside.
- [self addConstraint:[NSLayoutConstraint constraintWithItem:_logoView
- attribute:NSLayoutAttributeBaseline
- relatedBy:NSLayoutRelationEqual
- toItem:_attributionView
- attribute:NSLayoutAttributeBaseline
- multiplier:1
- constant:_logoView.image.alignmentRect.origin.y]];
- [self addConstraint:[NSLayoutConstraint constraintWithItem:_attributionView
- attribute:NSLayoutAttributeLeading
- relatedBy:NSLayoutRelationEqual
- toItem:_logoView
- attribute:NSLayoutAttributeTrailing
- multiplier:1
- constant:8]];
-
- [super updateConstraints];
-}
-
-- (void)renderSync {
- if (!self.dormant && _rendererFrontend) {
- _rendererFrontend->render();
-
- if (_isPrinting) {
- _isPrinting = NO;
- NSImage *image = [[NSImage alloc] initWithMGLPremultipliedImage:_mbglView->readStillImage()];
- [self performSelector:@selector(printWithImage:) withObject:image afterDelay:0];
- }
-
-// [self updateUserLocationAnnotationView];
- }
-}
-
-- (BOOL)isTargetingInterfaceBuilder {
- return _isTargetingInterfaceBuilder;
-}
-
-- (void)setNeedsRerender {
- MGLAssertIsMainThread();
-
- [self.layer setNeedsDisplay];
-}
-
-- (void)cameraWillChangeAnimated:(BOOL)animated {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapView:cameraWillChangeAnimated:)]) {
- [self.delegate mapView:self cameraWillChangeAnimated:animated];
- }
-}
-
-- (void)cameraIsChanging {
- if (!_mbglMap) {
- return;
- }
-
- // Update a minimum of UI that needs to stay attached to the map
- // while animating.
- [self updateCompass];
- [self updateAnnotationCallouts];
-
- if ([self.delegate respondsToSelector:@selector(mapViewCameraIsChanging:)]) {
- [self.delegate mapViewCameraIsChanging:self];
- }
-}
-
-- (void)cameraDidChangeAnimated:(BOOL)animated {
- if (!_mbglMap) {
- return;
- }
-
- // Update all UI at the end of an animation or atomic change to the
- // viewport. More expensive updates can happen here, but care should
- // still be taken to minimize the work done here because scroll
- // gesture recognition and momentum scrolling is performed as a
- // series of atomic changes, not an animation.
- [self updateZoomControls];
- [self updateCompass];
- [self updateAnnotationCallouts];
- [self updateAnnotationTrackingAreas];
-
- if ([self.delegate respondsToSelector:@selector(mapView:cameraDidChangeAnimated:)]) {
- [self.delegate mapView:self cameraDidChangeAnimated:animated];
- }
-}
-
-- (void)mapViewWillStartLoadingMap {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewWillStartLoadingMap:)]) {
- [self.delegate mapViewWillStartLoadingMap:self];
- }
-}
-
-- (void)mapViewDidFinishLoadingMap {
- if (!_mbglMap) {
- return;
- }
-
- [self.style willChangeValueForKey:@"sources"];
- [self.style didChangeValueForKey:@"sources"];
- [self.style willChangeValueForKey:@"layers"];
- [self.style didChangeValueForKey:@"layers"];
- if ([self.delegate respondsToSelector:@selector(mapViewDidFinishLoadingMap:)]) {
- [self.delegate mapViewDidFinishLoadingMap:self];
- }
-}
-
-- (void)mapViewDidFailLoadingMapWithError:(NSError *)error {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidFailLoadingMap:withError:)]) {
- [self.delegate mapViewDidFailLoadingMap:self withError:error];
- }
-}
-
-- (void)mapViewWillStartRenderingFrame {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewWillStartRenderingFrame:)]) {
- [self.delegate mapViewWillStartRenderingFrame:self];
- }
-}
-
-- (void)mapViewDidFinishRenderingFrameFullyRendered:(BOOL)fullyRendered {
- if (!_mbglMap) {
- return;
- }
-
- if (_isChangingAnnotationLayers) {
- _isChangingAnnotationLayers = NO;
- [self.style didChangeValueForKey:@"layers"];
- }
- if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingFrame:fullyRendered:)]) {
- [self.delegate mapViewDidFinishRenderingFrame:self fullyRendered:fullyRendered];
- }
-}
-
-- (void)mapViewWillStartRenderingMap {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewWillStartRenderingMap:)]) {
- [self.delegate mapViewWillStartRenderingMap:self];
- }
-}
-
-- (void)mapViewDidFinishRenderingMapFullyRendered:(BOOL)fullyRendered {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingMap:fullyRendered:)]) {
- [self.delegate mapViewDidFinishRenderingMap:self fullyRendered:fullyRendered];
- }
-}
-
-- (void)mapViewDidBecomeIdle {
- if (!_mbglMap) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mapViewDidBecomeIdle:)]) {
- [self.delegate mapViewDidBecomeIdle:self];
- }
-}
-
-- (void)mapViewDidFinishLoadingStyle {
- if (!_mbglMap) {
- return;
- }
-
- self.style = [[MGLStyle alloc] initWithRawStyle:&_mbglMap->getStyle() mapView:self];
- if ([self.delegate respondsToSelector:@selector(mapView:didFinishLoadingStyle:)])
- {
- [self.delegate mapView:self didFinishLoadingStyle:self.style];
- }
-}
-
-- (void)sourceDidChange:(MGLSource *)source {
- if (!_mbglMap) {
- return;
- }
- // Attribution only applies to tiled sources
- if ([source isKindOfClass:[MGLTileSource class]]) {
- [self installAttributionView];
- }
- self.needsUpdateConstraints = YES;
- self.needsDisplay = YES;
-}
-
-- (BOOL)shouldRemoveStyleImage:(NSString *)imageName {
- if ([self.delegate respondsToSelector:@selector(mapView:shouldRemoveStyleImage:)]) {
- return [self.delegate mapView:self shouldRemoveStyleImage:imageName];
- }
-
- return YES;
-}
-
-#pragma mark Printing
-
-- (void)print:(__unused id)sender {
- _isPrinting = YES;
- [self setNeedsRerender];
-}
-
-- (void)printWithImage:(NSImage *)image {
- NSImageView *imageView = [[NSImageView alloc] initWithFrame:self.bounds];
- imageView.image = image;
-
- NSPrintOperation *op = [NSPrintOperation printOperationWithView:imageView];
- [op runOperation];
-}
-
-#pragma mark Viewport
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCenterCoordinate {
- return [NSSet setWithObjects:@"latitude", @"longitude", @"camera", nil];
-}
-
-- (CLLocationCoordinate2D)centerCoordinate {
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
- return MGLLocationCoordinate2DFromLatLng(*_mbglMap->getCameraOptions(padding).center);
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate {
- MGLLogDebug(@"Setting centerCoordinate: %@", MGLStringFromCLLocationCoordinate2D(centerCoordinate));
- [self setCenterCoordinate:centerCoordinate animated:NO];
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate animated:(BOOL)animated {
- [self setCenterCoordinate:centerCoordinate animated:animated completionHandler:nil];
-}
-
-- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion {
- MGLLogDebug(@"Setting centerCoordinate: %@ animated: %@", MGLStringFromCLLocationCoordinate2D(centerCoordinate), MGLStringFromBOOL(animated));
- mbgl::AnimationOptions animationOptions = MGLDurationFromTimeInterval(animated ? MGLAnimationDuration : 0);
- animationOptions.transitionFinishFn = ^() {
- [self didChangeValueForKey:@"centerCoordinate"];
- if (completion) {
- dispatch_async(dispatch_get_main_queue(), ^{
- completion();
- });
- }
- };
-
- [self willChangeValueForKey:@"centerCoordinate"];
- _mbglMap->easeTo(mbgl::CameraOptions()
- .withCenter(MGLLatLngFromLocationCoordinate2D(centerCoordinate))
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets)),
- animationOptions);
-}
-
-- (void)offsetCenterCoordinateBy:(NSPoint)delta animated:(BOOL)animated {
- [self willChangeValueForKey:@"centerCoordinate"];
- _mbglMap->cancelTransitions();
- MGLMapCamera *oldCamera = self.camera;
- _mbglMap->moveBy({ delta.x, delta.y },
- MGLDurationFromTimeInterval(animated ? MGLAnimationDuration : 0));
- if ([self.delegate respondsToSelector:@selector(mapView:shouldChangeFromCamera:toCamera:)]
- && ![self.delegate mapView:self shouldChangeFromCamera:oldCamera toCamera:self.camera]) {
- self.camera = oldCamera;
- }
- [self didChangeValueForKey:@"centerCoordinate"];
-}
-
-- (CLLocationDegrees)pendingLatitude {
- return _pendingLatitude;
-}
-
-- (void)setPendingLatitude:(CLLocationDegrees)pendingLatitude {
- _pendingLatitude = pendingLatitude;
-}
-
-- (CLLocationDegrees)pendingLongitude {
- return _pendingLongitude;
-}
-
-- (void)setPendingLongitude:(CLLocationDegrees)pendingLongitude {
- _pendingLongitude = pendingLongitude;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingZoomLevel {
- return [NSSet setWithObject:@"camera"];
-}
-
-- (double)zoomLevel {
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
- return *_mbglMap->getCameraOptions(padding).zoom;
-}
-
-- (void)setZoomLevel:(double)zoomLevel {
- MGLLogDebug(@"Setting zoomLevel: %f", zoomLevel);
- [self setZoomLevel:zoomLevel animated:NO];
-}
-
-- (void)setZoomLevel:(double)zoomLevel animated:(BOOL)animated {
- MGLLogDebug(@"Setting zoomLevel: %f animated: %@", zoomLevel, MGLStringFromBOOL(animated));
- [self willChangeValueForKey:@"zoomLevel"];
- _mbglMap->easeTo(mbgl::CameraOptions()
- .withZoom(zoomLevel)
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets)),
- MGLDurationFromTimeInterval(animated ? MGLAnimationDuration : 0));
- [self didChangeValueForKey:@"zoomLevel"];
-}
-
-- (void)setZoomLevel:(double)zoomLevel atPoint:(NSPoint)point animated:(BOOL)animated {
- [self willChangeValueForKey:@"centerCoordinate"];
- [self willChangeValueForKey:@"zoomLevel"];
- MGLMapCamera *oldCamera = self.camera;
- mbgl::ScreenCoordinate center(point.x, self.bounds.size.height - point.y);
- _mbglMap->easeTo(mbgl::CameraOptions()
- .withZoom(zoomLevel)
- .withAnchor(center),
- MGLDurationFromTimeInterval(animated ? MGLAnimationDuration : 0));
- if ([self.delegate respondsToSelector:@selector(mapView:shouldChangeFromCamera:toCamera:)]
- && ![self.delegate mapView:self shouldChangeFromCamera:oldCamera toCamera:self.camera]) {
- self.camera = oldCamera;
- }
- [self didChangeValueForKey:@"zoomLevel"];
- [self didChangeValueForKey:@"centerCoordinate"];
-}
-
-- (void)setMinimumZoomLevel:(double)minimumZoomLevel
-{
- MGLLogDebug(@"Setting minimumZoomLevel: %f", minimumZoomLevel);
- _mbglMap->setBounds(mbgl::BoundOptions().withMinZoom(minimumZoomLevel));
-}
-
-- (void)setMaximumZoomLevel:(double)maximumZoomLevel
-{
- MGLLogDebug(@"Setting maximumZoomLevel: %f", maximumZoomLevel);
- _mbglMap->setBounds(mbgl::BoundOptions().withMaxZoom(maximumZoomLevel));
-}
-
-- (double)maximumZoomLevel {
- return *_mbglMap->getBounds().maxZoom;
-}
-
-- (double)minimumZoomLevel {
- return *_mbglMap->getBounds().minZoom;
-}
-
-/// Respond to a click on the zoom control.
-- (IBAction)zoomInOrOut:(NSSegmentedControl *)sender {
- switch (sender.selectedSegment) {
- case 0:
- // Zoom out.
- [self moveToEndOfParagraph:sender];
- break;
- case 1:
- // Zoom in.
- [self moveToBeginningOfParagraph:sender];
- break;
- default:
- break;
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingDirection {
- return [NSSet setWithObject:@"camera"];
-}
-
-- (CLLocationDirection)direction {
- return mbgl::util::wrap(*_mbglMap->getCameraOptions().bearing, 0., 360.);
-}
-
-- (void)setDirection:(CLLocationDirection)direction {
- MGLLogDebug(@"Setting direction: %f", direction);
- [self setDirection:direction animated:NO];
-}
-
-- (void)setDirection:(CLLocationDirection)direction animated:(BOOL)animated {
- MGLLogDebug(@"Setting direction: %f animated: %@", direction, MGLStringFromBOOL(animated));
- [self willChangeValueForKey:@"direction"];
- _mbglMap->easeTo(mbgl::CameraOptions()
- .withBearing(direction)
- .withPadding(MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets)),
- MGLDurationFromTimeInterval(animated ? MGLAnimationDuration : 0));
- [self didChangeValueForKey:@"direction"];
-}
-
-- (void)offsetDirectionBy:(CLLocationDegrees)delta animated:(BOOL)animated {
- [self setDirection:*_mbglMap->getCameraOptions().bearing + delta animated:animated];
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCamera {
- return [NSSet setWithObjects:@"latitude", @"longitude", @"centerCoordinate", @"zoomLevel", @"direction", nil];
-}
-
-- (MGLMapCamera *)camera {
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
- return [self cameraForCameraOptions:_mbglMap->getCameraOptions(padding)];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera {
- MGLLogDebug(@"Setting camera: %@", camera);
- [self setCamera:camera animated:NO];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera animated:(BOOL)animated {
- MGLLogDebug(@"Setting camera: %@ animated: %@", camera, MGLStringFromBOOL(animated));
- [self setCamera:camera withDuration:animated ? MGLAnimationDuration : 0 animationTimingFunction:nil completionHandler:NULL];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion {
- MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@", camera, duration, function);
- [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:NSEdgeInsetsZero completionHandler:completion];
-}
-
-- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(NSEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion {
- edgePadding = MGLEdgeInsetsInsetEdgeInset(edgePadding, self.contentInsets);
- mbgl::AnimationOptions animationOptions;
- if (duration > 0) {
- animationOptions.duration.emplace(MGLDurationFromTimeInterval(duration));
- animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
- }
- if (completion) {
- animationOptions.transitionFinishFn = [completion]() {
- // Must run asynchronously after the transition is completely over.
- // Otherwise, a call to -setCamera: within the completion handler
- // would reenter the completion handler’s caller.
- dispatch_async(dispatch_get_main_queue(), ^{
- completion();
- });
- };
- }
-
- if ([self.camera isEqualToMapCamera:camera]) {
- if (completion) {
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- completion();
- });
- }
- return;
- }
-
- [self willChangeValueForKey:@"camera"];
- _mbglMap->cancelTransitions();
- mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera edgePadding:edgePadding];
- _mbglMap->easeTo(cameraOptions, animationOptions);
- [self didChangeValueForKey:@"camera"];
-}
-
-- (void)flyToCamera:(MGLMapCamera *)camera completionHandler:(nullable void (^)(void))completion {
- MGLLogDebug(@"Setting flyToCamera: %@ completionHandler: %@", camera, completion);
- [self flyToCamera:camera withDuration:-1 completionHandler:completion];
-}
-
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration completionHandler:(nullable void (^)(void))completion {
- MGLLogDebug(@"Setting flyToCamera: %@ withDuration: %f completionHandler: %@", camera, duration, completion);
- [self flyToCamera:camera withDuration:duration peakAltitude:-1 completionHandler:completion];
-}
-
-- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration peakAltitude:(CLLocationDistance)peakAltitude completionHandler:(nullable void (^)(void))completion {
- MGLLogDebug(@"Setting flyToCamera: %@ withDuration: %f peakAltitude: %f completionHandler: %@", camera, duration, peakAltitude, completion);
- mbgl::AnimationOptions animationOptions;
- if (duration >= 0) {
- animationOptions.duration = MGLDurationFromTimeInterval(duration);
- }
- if (peakAltitude >= 0) {
- CLLocationDegrees peakLatitude = (self.centerCoordinate.latitude + camera.centerCoordinate.latitude) / 2;
- CLLocationDegrees peakPitch = (self.camera.pitch + camera.pitch) / 2;
- animationOptions.minZoom = MGLZoomLevelForAltitude(peakAltitude, peakPitch,
- peakLatitude, self.frame.size);
- }
- if (completion) {
- animationOptions.transitionFinishFn = [completion]() {
- // Must run asynchronously after the transition is completely over.
- // Otherwise, a call to -setCamera: within the completion handler
- // would reenter the completion handler’s caller.
- dispatch_async(dispatch_get_main_queue(), ^{
- completion();
- });
- };
- }
-
- if ([self.camera isEqualToMapCamera:camera]) {
- if (completion) {
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- completion();
- });
- }
- return;
- }
-
- [self willChangeValueForKey:@"camera"];
- _mbglMap->cancelTransitions();
- mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera edgePadding:self.contentInsets];
- _mbglMap->flyTo(cameraOptions, animationOptions);
- [self didChangeValueForKey:@"camera"];
-}
-
-/// Returns a CameraOptions object that specifies parameters for animating to
-/// the given camera.
-- (mbgl::CameraOptions)cameraOptionsObjectForAnimatingToCamera:(MGLMapCamera *)camera edgePadding:(NSEdgeInsets) edgePadding {
- mbgl::CameraOptions options;
- options.center = MGLLatLngFromLocationCoordinate2D(camera.centerCoordinate);
- options.padding = MGLEdgeInsetsFromNSEdgeInsets(edgePadding);
- options.zoom = MGLZoomLevelForAltitude(camera.altitude, camera.pitch,
- camera.centerCoordinate.latitude,
- self.frame.size);
- if (camera.heading >= 0) {
- options.bearing = camera.heading;
- }
- if (camera.pitch >= 0) {
- options.pitch = camera.pitch;
- }
- return options;
-}
-
-+ (NSSet *)keyPathsForValuesAffectingVisibleCoordinateBounds {
- return [NSSet setWithObjects:@"centerCoordinate", @"zoomLevel", @"direction", @"bounds", nil];
-}
-
-- (MGLCoordinateBounds)visibleCoordinateBounds {
- return [self convertRect:self.bounds toCoordinateBoundsFromView:self];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds {
- MGLLogDebug(@"Setting visibleCoordinateBounds: %@", MGLStringFromCoordinateBounds(bounds));
- [self setVisibleCoordinateBounds:bounds animated:NO];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds animated:(BOOL)animated {
- MGLLogDebug(@"Setting visibleCoordinateBounds: %@ animated: %@", MGLStringFromCoordinateBounds(bounds), MGLStringFromBOOL(animated));
- [self setVisibleCoordinateBounds:bounds edgePadding:NSEdgeInsetsZero animated:animated];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated {
- [self setVisibleCoordinateBounds:bounds edgePadding:insets animated:animated completionHandler:nil];
-}
-
-- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion {
- _mbglMap->cancelTransitions();
-
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
- mbgl::CameraOptions cameraOptions = _mbglMap->cameraForLatLngBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), padding);
- mbgl::AnimationOptions animationOptions;
- if (animated) {
- animationOptions.duration = MGLDurationFromTimeInterval(MGLAnimationDuration);
- }
-
- MGLMapCamera *camera = [self cameraForCameraOptions:cameraOptions];
- if ([self.camera isEqualToMapCamera:camera]) {
- completion();
- return;
- }
-
- [self willChangeValueForKey:@"visibleCoordinateBounds"];
- animationOptions.transitionFinishFn = ^() {
- [self didChangeValueForKey:@"visibleCoordinateBounds"];
- if (completion) {
- dispatch_async(dispatch_get_main_queue(), ^{
- completion();
- });
- }
- };
- _mbglMap->easeTo(cameraOptions, animationOptions);
-}
-
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds {
- return [self cameraThatFitsCoordinateBounds:bounds edgePadding:NSEdgeInsetsZero];
-}
-
-- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets {
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
- mbgl::CameraOptions cameraOptions = _mbglMap->cameraForLatLngBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), padding);
- return [self cameraForCameraOptions:cameraOptions];
-}
-
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(NSEdgeInsets)insets
-{
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
-
- MGLMapCamera *currentCamera = self.camera;
- CGFloat pitch = camera.pitch < 0 ? currentCamera.pitch : camera.pitch;
- CLLocationDirection direction = camera.heading < 0 ? currentCamera.heading : camera.heading;
-
- mbgl::CameraOptions cameraOptions = _mbglMap->cameraForLatLngBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), padding, direction, pitch);
- return [self cameraForCameraOptions:cameraOptions];
-}
-
-- (MGLMapCamera *)camera:(MGLMapCamera *)camera fittingShape:(MGLShape *)shape edgePadding:(NSEdgeInsets)insets {
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
-
- MGLMapCamera *currentCamera = self.camera;
- CGFloat pitch = camera.pitch < 0 ? currentCamera.pitch : camera.pitch;
- CLLocationDirection direction = camera.heading < 0 ? currentCamera.heading : camera.heading;
-
- mbgl::CameraOptions cameraOptions = _mbglMap->cameraForGeometry([shape geometryObject], padding, direction, pitch);
-
- return [self cameraForCameraOptions: cameraOptions];
-}
-
-- (MGLMapCamera *)cameraThatFitsShape:(MGLShape *)shape direction:(CLLocationDirection)direction edgePadding:(NSEdgeInsets)insets {
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
- padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets);
-
- mbgl::CameraOptions cameraOptions = _mbglMap->cameraForGeometry([shape geometryObject], padding, direction);
-
- return [self cameraForCameraOptions:cameraOptions];
-}
-
-- (MGLMapCamera *)cameraForCameraOptions:(const mbgl::CameraOptions &)cameraOptions {
- mbgl::CameraOptions mapCamera = _mbglMap->getCameraOptions();
- CLLocationCoordinate2D centerCoordinate = MGLLocationCoordinate2DFromLatLng(cameraOptions.center ? *cameraOptions.center : *mapCamera.center);
- double zoomLevel = cameraOptions.zoom ? *cameraOptions.zoom : self.zoomLevel;
- CLLocationDirection direction = cameraOptions.bearing ? mbgl::util::wrap(*cameraOptions.bearing, 0., 360.) : self.direction;
- CGFloat pitch = cameraOptions.pitch ? *cameraOptions.pitch : *mapCamera.pitch;
- CLLocationDistance altitude = MGLAltitudeForZoomLevel(zoomLevel, pitch,
- centerCoordinate.latitude,
- self.frame.size);
- return [MGLMapCamera cameraLookingAtCenterCoordinate:centerCoordinate
- altitude:altitude
- pitch:pitch
- heading:direction];
-}
-
-- (void)setAutomaticallyAdjustsContentInsets:(BOOL)automaticallyAdjustsContentInsets {
- _automaticallyAdjustsContentInsets = automaticallyAdjustsContentInsets;
- [self adjustContentInsets];
-}
-
-/// Updates `contentInsets` to reflect the current window geometry.
-- (void)adjustContentInsets {
- if (!_automaticallyAdjustsContentInsets) {
- return;
- }
-
- NSEdgeInsets contentInsets = self.contentInsets;
- if ((self.window.styleMask & NSFullSizeContentViewWindowMask)
- && !self.window.titlebarAppearsTransparent) {
- NSRect contentLayoutRect = [self convertRect:self.window.contentLayoutRect fromView:nil];
- if (NSMaxX(contentLayoutRect) > 0 && NSMaxY(contentLayoutRect) > 0) {
- contentInsets = NSEdgeInsetsMake(NSHeight(self.bounds) - NSMaxY(contentLayoutRect),
- MAX(NSMinX(contentLayoutRect), 0),
- MAX(NSMinY(contentLayoutRect), 0),
- NSWidth(self.bounds) - NSMaxX(contentLayoutRect));
- }
- } else {
- contentInsets = NSEdgeInsetsZero;
- }
-
- self.contentInsets = contentInsets;
-}
-
-- (void)setContentInsets:(NSEdgeInsets)contentInsets {
- [self setContentInsets:contentInsets animated:NO completionHandler:nil];
-}
-
-- (void)setContentInsets:(NSEdgeInsets)contentInsets animated:(BOOL)animated {
- [self setContentInsets:contentInsets animated:animated completionHandler:nil];
-}
-
-- (void)setContentInsets:(NSEdgeInsets)contentInsets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion {
- if (NSEdgeInsetsEqual(contentInsets, self.contentInsets)) {
- if (completion) {
- completion();
- }
- return;
- }
- MGLLogDebug(@"Setting contentInset: %@ animated:", MGLStringFromNSEdgeInsets(contentInsets), MGLStringFromBOOL(animated));
- // After adjusting the content insets, move the center coordinate from the
- // old frame of reference to the new one represented by the newly set
- // content insets.
- CLLocationCoordinate2D oldCenter = self.centerCoordinate;
- _contentInsets = contentInsets;
- [self setCenterCoordinate:oldCenter animated:animated completionHandler:completion];
-}
-
-#pragma mark Mouse events and gestures
-
-- (BOOL)acceptsFirstResponder {
- return YES;
-}
-
-/// Drag to pan, plus drag to zoom, rotate, and tilt when a modifier key is held
-/// down.
-- (void)handlePanGesture:(NSPanGestureRecognizer *)gestureRecognizer {
- NSPoint delta = [gestureRecognizer translationInView:self];
- NSPoint endPoint = [gestureRecognizer locationInView:self];
- NSPoint startPoint = NSMakePoint(endPoint.x - delta.x, endPoint.y - delta.y);
-
- NSEventModifierFlags flags = [NSApp currentEvent].modifierFlags;
- if (gestureRecognizer.state == NSGestureRecognizerStateBegan) {
- [self.window invalidateCursorRectsForView:self];
- _mbglMap->setGestureInProgress(true);
-
- if (![self isPanningWithGesture]) {
- // Hide the cursor except when panning.
- CGDisplayHideCursor(kCGDirectMainDisplay);
- _didHideCursorDuringGesture = YES;
- }
- } else if (gestureRecognizer.state == NSGestureRecognizerStateEnded
- || gestureRecognizer.state == NSGestureRecognizerStateCancelled) {
- _mbglMap->setGestureInProgress(false);
- [self.window invalidateCursorRectsForView:self];
-
- if (_didHideCursorDuringGesture) {
- _didHideCursorDuringGesture = NO;
- // Move the cursor back to the start point and show it again, creating
- // the illusion that it has stayed in place during the entire gesture.
- CGPoint cursorPoint = [self convertPoint:startPoint toView:nil];
- cursorPoint = [self.window convertRectToScreen:{ cursorPoint, NSZeroSize }].origin;
- cursorPoint.y = self.window.screen.frame.size.height - cursorPoint.y;
- CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, cursorPoint);
- CGDisplayShowCursor(kCGDirectMainDisplay);
- }
- }
-
- if (flags & NSShiftKeyMask) {
- // Shift-drag to zoom.
- if (!self.zoomEnabled) {
- return;
- }
-
- _mbglMap->cancelTransitions();
-
- if (gestureRecognizer.state == NSGestureRecognizerStateBegan) {
- _zoomAtBeginningOfGesture = [self zoomLevel];
- } else if (gestureRecognizer.state == NSGestureRecognizerStateChanged) {
- CGFloat newZoomLevel = _zoomAtBeginningOfGesture - delta.y / 75;
- [self setZoomLevel:newZoomLevel atPoint:startPoint animated:NO];
- }
- } else if (flags & NSAlternateKeyMask) {
- // Option-drag to rotate and/or tilt.
- _mbglMap->cancelTransitions();
-
- if (gestureRecognizer.state == NSGestureRecognizerStateBegan) {
- _directionAtBeginningOfGesture = self.direction;
- _pitchAtBeginningOfGesture = *_mbglMap->getCameraOptions().pitch;
- } else if (gestureRecognizer.state == NSGestureRecognizerStateChanged) {
- MGLMapCamera *oldCamera = self.camera;
- BOOL didChangeCamera = NO;
- mbgl::ScreenCoordinate center(startPoint.x, self.bounds.size.height - startPoint.y);
- if (self.rotateEnabled) {
- CLLocationDirection newDirection = _directionAtBeginningOfGesture - delta.x / 10;
- [self willChangeValueForKey:@"direction"];
- _mbglMap->jumpTo(mbgl::CameraOptions().withBearing(newDirection).withAnchor(center));
- didChangeCamera = YES;
- [self didChangeValueForKey:@"direction"];
- }
- if (self.pitchEnabled) {
- _mbglMap->jumpTo(mbgl::CameraOptions().withPitch(_pitchAtBeginningOfGesture + delta.y / 5).withAnchor(center));
- didChangeCamera = YES;
- }
-
- if (didChangeCamera
- && [self.delegate respondsToSelector:@selector(mapView:shouldChangeFromCamera:toCamera:)]
- && ![self.delegate mapView:self shouldChangeFromCamera:oldCamera toCamera:self.camera]) {
- self.camera = oldCamera;
- }
- }
- } else if (self.scrollEnabled) {
- // Otherwise, drag to pan.
- _mbglMap->cancelTransitions();
-
- if (gestureRecognizer.state == NSGestureRecognizerStateChanged) {
- delta.y *= -1;
- [self offsetCenterCoordinateBy:delta animated:NO];
- [gestureRecognizer setTranslation:NSZeroPoint inView:nil];
- }
- }
-}
-
-/// Returns whether the user is panning using a gesture.
-- (BOOL)isPanningWithGesture {
- NSGestureRecognizerState state = _panGestureRecognizer.state;
- NSEventModifierFlags flags = [NSApp currentEvent].modifierFlags;
- return ((state == NSGestureRecognizerStateBegan || state == NSGestureRecognizerStateChanged)
- && !(flags & NSShiftKeyMask || flags & NSAlternateKeyMask));
-}
-
-/// Pinch to zoom.
-- (void)handleMagnificationGesture:(NSMagnificationGestureRecognizer *)gestureRecognizer {
- if (!self.zoomEnabled) {
- return;
- }
-
- _mbglMap->cancelTransitions();
-
- if (gestureRecognizer.state == NSGestureRecognizerStateBegan) {
- _mbglMap->setGestureInProgress(true);
- _zoomAtBeginningOfGesture = [self zoomLevel];
- } else if (gestureRecognizer.state == NSGestureRecognizerStateChanged) {
- NSPoint zoomInPoint = [gestureRecognizer locationInView:self];
- mbgl::ScreenCoordinate center(zoomInPoint.x, self.bounds.size.height - zoomInPoint.y);
- if (gestureRecognizer.magnification > -1) {
- [self willChangeValueForKey:@"zoomLevel"];
- [self willChangeValueForKey:@"centerCoordinate"];
- MGLMapCamera *oldCamera = self.camera;
- _mbglMap->jumpTo(mbgl::CameraOptions()
- .withZoom(_zoomAtBeginningOfGesture + log2(1 + gestureRecognizer.magnification))
- .withAnchor(center));
- if ([self.delegate respondsToSelector:@selector(mapView:shouldChangeFromCamera:toCamera:)]
- && ![self.delegate mapView:self shouldChangeFromCamera:oldCamera toCamera:self.camera]) {
- self.camera = oldCamera;
- }
- [self didChangeValueForKey:@"centerCoordinate"];
- [self didChangeValueForKey:@"zoomLevel"];
- }
- } else if (gestureRecognizer.state == NSGestureRecognizerStateEnded
- || gestureRecognizer.state == NSGestureRecognizerStateCancelled) {
- _mbglMap->setGestureInProgress(false);
- }
-}
-
-/// Click or tap to select an annotation.
-- (void)handleClickGesture:(NSClickGestureRecognizer *)gestureRecognizer {
- if (gestureRecognizer.state != NSGestureRecognizerStateEnded
- || [self subviewContainingGesture:gestureRecognizer]) {
- return;
- }
-
- NSPoint gesturePoint = [gestureRecognizer locationInView:self];
- MGLAnnotationTag hitAnnotationTag = [self annotationTagAtPoint:gesturePoint persistingResults:YES];
- if (hitAnnotationTag != MGLAnnotationTagNotFound) {
- if (hitAnnotationTag != _selectedAnnotationTag) {
- id <MGLAnnotation> annotation = [self annotationWithTag:hitAnnotationTag];
- NSAssert(annotation, @"Cannot select nonexistent annotation with tag %llu", hitAnnotationTag);
- [self selectAnnotation:annotation atPoint:gesturePoint];
- }
- } else {
- [self deselectAnnotation:self.selectedAnnotation];
- }
-}
-
-/// Right-click to show the context menu.
-- (void)handleRightClickGesture:(NSClickGestureRecognizer *)gestureRecognizer {
- NSMenu *menu = [self menuForEvent:[NSApp currentEvent]];
- if (menu) {
- [NSMenu popUpContextMenu:menu withEvent:[NSApp currentEvent] forView:self];
- }
-}
-
-/// Double-click or double-tap to zoom in.
-- (void)handleDoubleClickGesture:(NSClickGestureRecognizer *)gestureRecognizer {
- if (!self.zoomEnabled || gestureRecognizer.state != NSGestureRecognizerStateEnded
- || [self subviewContainingGesture:gestureRecognizer]) {
- return;
- }
-
- _mbglMap->cancelTransitions();
-
- NSPoint gesturePoint = [gestureRecognizer locationInView:self];
- [self setZoomLevel:round(self.zoomLevel) + 1 atPoint:gesturePoint animated:YES];
-}
-
-- (void)smartMagnifyWithEvent:(NSEvent *)event {
- if (!self.zoomEnabled) {
- return;
- }
-
- _mbglMap->cancelTransitions();
-
- // Tap with two fingers (“right-click”) to zoom out on mice but not trackpads.
- NSPoint gesturePoint = [self convertPoint:event.locationInWindow fromView:nil];
- [self setZoomLevel:round(self.zoomLevel) - 1 atPoint:gesturePoint animated:YES];
-}
-
-/// Rotate fingers to rotate.
-- (void)handleRotationGesture:(NSRotationGestureRecognizer *)gestureRecognizer {
- if (!self.rotateEnabled) {
- return;
- }
-
- _mbglMap->cancelTransitions();
-
- if (gestureRecognizer.state == NSGestureRecognizerStateBegan) {
- _mbglMap->setGestureInProgress(true);
- _directionAtBeginningOfGesture = self.direction;
- } else if (gestureRecognizer.state == NSGestureRecognizerStateChanged) {
- MGLMapCamera *oldCamera = self.camera;
-
- NSPoint rotationPoint = [gestureRecognizer locationInView:self];
- mbgl::ScreenCoordinate anchor(rotationPoint.x, self.bounds.size.height - rotationPoint.y);
- _mbglMap->jumpTo(mbgl::CameraOptions()
- .withBearing(_directionAtBeginningOfGesture + gestureRecognizer.rotationInDegrees)
- .withAnchor(anchor));
-
- if ([self.delegate respondsToSelector:@selector(mapView:shouldChangeFromCamera:toCamera:)]
- && ![self.delegate mapView:self shouldChangeFromCamera:oldCamera toCamera:self.camera]) {
- self.camera = oldCamera;
- }
- } else if (gestureRecognizer.state == NSGestureRecognizerStateEnded
- || gestureRecognizer.state == NSGestureRecognizerStateCancelled) {
- _mbglMap->setGestureInProgress(false);
- }
-}
-
-- (BOOL)wantsScrollEventsForSwipeTrackingOnAxis:(__unused NSEventGestureAxis)axis {
- // Track both horizontal and vertical swipes in -scrollWheel:.
- return YES;
-}
-
-- (void)scrollWheel:(NSEvent *)event {
- // https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/#10_7Dragging
- BOOL isScrollWheel = event.phase == NSEventPhaseNone && event.momentumPhase == NSEventPhaseNone && !event.hasPreciseScrollingDeltas;
- if (isScrollWheel || [[NSUserDefaults standardUserDefaults] boolForKey:MGLScrollWheelZoomsMapViewDefaultKey]) {
- // A traditional, vertical scroll wheel zooms instead of panning.
- if (self.zoomEnabled) {
- const double delta =
- event.scrollingDeltaY / ([event hasPreciseScrollingDeltas] ? 100 : 10);
- if (delta != 0) {
- double scale = 2.0 / (1.0 + std::exp(-std::abs(delta)));
-
- // Zooming out.
- if (delta < 0) {
- scale = 1.0 / scale;
- }
-
- NSPoint gesturePoint = [self convertPoint:event.locationInWindow fromView:nil];
- [self setZoomLevel:self.zoomLevel + log2(scale) atPoint:gesturePoint animated:NO];
- }
- }
- } else if (self.scrollEnabled
- && _magnificationGestureRecognizer.state == NSGestureRecognizerStatePossible
- && _rotationGestureRecognizer.state == NSGestureRecognizerStatePossible) {
- // Scroll to pan.
- _mbglMap->cancelTransitions();
-
- CGFloat x = event.scrollingDeltaX;
- CGFloat y = event.scrollingDeltaY;
- if (x || y) {
- [self offsetCenterCoordinateBy:NSMakePoint(x, y) animated:NO];
- }
-
- // Drift pan.
- if (event.momentumPhase != NSEventPhaseNone) {
- [self offsetCenterCoordinateBy:NSMakePoint(x, y) animated:NO];
- }
- }
-}
-
-/// Returns the subview that the gesture is located in.
-- (NSView *)subviewContainingGesture:(NSGestureRecognizer *)gestureRecognizer {
- if (NSPointInRect([gestureRecognizer locationInView:self.compass], self.compass.bounds)) {
- return self.compass;
- }
- if (NSPointInRect([gestureRecognizer locationInView:self.zoomControls], self.zoomControls.bounds)) {
- return self.zoomControls;
- }
- if (NSPointInRect([gestureRecognizer locationInView:self.attributionView], self.attributionView.bounds)) {
- return self.attributionView;
- }
- return nil;
-}
-
-#pragma mark NSGestureRecognizerDelegate methods
-- (BOOL)gestureRecognizer:(NSGestureRecognizer *)gestureRecognizer shouldAttemptToRecognizeWithEvent:(NSEvent *)event {
- if (gestureRecognizer == _singleClickRecognizer) {
- if (!self.selectedAnnotation) {
- NSPoint gesturePoint = [self convertPoint:[event locationInWindow] fromView:nil];
- MGLAnnotationTag hitAnnotationTag = [self annotationTagAtPoint:gesturePoint persistingResults:NO];
- if (hitAnnotationTag == MGLAnnotationTagNotFound) {
- return NO;
- }
- }
- }
- return YES;
-}
-
-#pragma mark Keyboard events
-
-- (void)keyDown:(NSEvent *)event {
- // This is the recommended way to handle arrow key presses, causing
- // methods like -moveUp: and -moveToBeginningOfParagraph: to be called
- // for various standard keybindings.
- [self interpretKeyEvents:@[event]];
-}
-
-// The following action methods are declared in NSResponder.h.
-
-- (void)insertTab:(id)sender {
- if (self.window.firstResponder == self) {
- [self.window selectNextKeyView:self];
- }
-}
-
-- (void)insertBacktab:(id)sender {
- if (self.window.firstResponder == self) {
- [self.window selectPreviousKeyView:self];
- }
-}
-
-- (void)insertText:(NSString *)insertString {
- switch (insertString.length == 1 ? [insertString characterAtIndex:0] : 0) {
- case '-':
- [self moveToEndOfParagraph:nil];
- break;
-
- case '+':
- case '=':
- [self moveToBeginningOfParagraph:nil];
- break;
-
- default:
- [super insertText:insertString];
- break;
- }
-}
-
-- (IBAction)moveUp:(__unused id)sender {
- [self offsetCenterCoordinateBy:NSMakePoint(0, MGLKeyPanningIncrement) animated:YES];
-}
-
-- (IBAction)moveDown:(__unused id)sender {
- [self offsetCenterCoordinateBy:NSMakePoint(0, -MGLKeyPanningIncrement) animated:YES];
-}
-
-- (IBAction)moveLeft:(__unused id)sender {
- [self offsetCenterCoordinateBy:NSMakePoint(MGLKeyPanningIncrement, 0) animated:YES];
-}
-
-- (IBAction)moveRight:(__unused id)sender {
- [self offsetCenterCoordinateBy:NSMakePoint(-MGLKeyPanningIncrement, 0) animated:YES];
-}
-
-- (IBAction)moveToBeginningOfParagraph:(__unused id)sender {
- if (self.zoomEnabled) {
- [self setZoomLevel:round(self.zoomLevel) + 1 animated:YES];
- }
-}
-
-- (IBAction)moveToEndOfParagraph:(__unused id)sender {
- if (self.zoomEnabled) {
- [self setZoomLevel:round(self.zoomLevel) - 1 animated:YES];
- }
-}
-
-- (IBAction)moveWordLeft:(__unused id)sender {
- if (self.rotateEnabled) {
- [self offsetDirectionBy:MGLKeyRotationIncrement animated:YES];
- }
-}
-
-- (IBAction)moveWordRight:(__unused id)sender {
- if (self.rotateEnabled) {
- [self offsetDirectionBy:-MGLKeyRotationIncrement animated:YES];
- }
-}
-
-- (void)setZoomEnabled:(BOOL)zoomEnabled {
- _zoomEnabled = zoomEnabled;
- _zoomControls.enabled = zoomEnabled;
- _zoomControls.hidden = !zoomEnabled;
-}
-
-- (void)setRotateEnabled:(BOOL)rotateEnabled {
- _rotateEnabled = rotateEnabled;
- _compass.enabled = rotateEnabled;
- _compass.hidden = !rotateEnabled;
-}
-
-#pragma mark Ornaments
-
-/// Updates the zoom controls’ enabled state based on the current zoom level.
-- (void)updateZoomControls {
- [_zoomControls setEnabled:self.zoomLevel > self.minimumZoomLevel forSegment:0];
- [_zoomControls setEnabled:self.zoomLevel < self.maximumZoomLevel forSegment:1];
-}
-
-/// Updates the compass to point in the same direction as the map.
-- (void)updateCompass {
- // The circular slider control goes counterclockwise, whereas our map
- // measures its direction clockwise.
- _compass.doubleValue = -self.direction;
-}
-
-- (IBAction)rotate:(NSSlider *)sender {
- [self setDirection:-sender.doubleValue animated:YES];
-}
-
-- (IBAction)giveFeedback:(id)sender {
- MGLMapCamera *camera = self.camera;
- double zoomLevel = self.zoomLevel;
- NSMutableArray *urls = [NSMutableArray array];
- for (MGLAttributionInfo *info in [self.style attributionInfosWithFontSize:0 linkColor:nil]) {
- NSURL *url = [info feedbackURLForStyleURL:self.styleURL
- atCenterCoordinate:camera.centerCoordinate
- zoomLevel:zoomLevel
- direction:camera.heading
- pitch:camera.pitch];
- if (url) {
- [urls addObject:url];
- }
- }
- [[NSWorkspace sharedWorkspace] openURLs:urls
- withAppBundleIdentifier:nil
- options:0
- additionalEventParamDescriptor:nil
- launchIdentifiers:nil];
-}
-
-#pragma mark Annotations
-
-- (nullable NSArray<id <MGLAnnotation>> *)annotations {
- if (_annotationContextsByAnnotationTag.empty()) {
- return nil;
- }
-
- // Map all the annotation tags to the annotations themselves.
- std::vector<id <MGLAnnotation>> annotations;
- std::transform(_annotationContextsByAnnotationTag.begin(),
- _annotationContextsByAnnotationTag.end(),
- std::back_inserter(annotations),
- ^ id <MGLAnnotation> (const std::pair<MGLAnnotationTag, MGLAnnotationContext> &pair) {
- return pair.second.annotation;
- });
- return [NSArray arrayWithObjects:&annotations[0] count:annotations.size()];
-}
-
-- (nullable NSArray<id <MGLAnnotation>> *)visibleAnnotations
-{
- return [self visibleAnnotationsInRect:self.bounds];
-}
-
-- (nullable NSArray<id <MGLAnnotation>> *)visibleAnnotationsInRect:(CGRect)rect
-{
- if (_annotationContextsByAnnotationTag.empty())
- {
- return nil;
- }
-
- std::vector<MGLAnnotationTag> annotationTags = [self annotationTagsInRect:rect];
- std::vector<MGLAnnotationTag> shapeAnnotationTags = [self shapeAnnotationTagsInRect:rect];
-
- if (shapeAnnotationTags.size()) {
- annotationTags.insert(annotationTags.end(), shapeAnnotationTags.begin(), shapeAnnotationTags.end());
- }
-
- if (annotationTags.size())
- {
- NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:annotationTags.size()];
-
- for (auto const& annotationTag: annotationTags)
- {
- if (!_annotationContextsByAnnotationTag.count(annotationTag) ||
- annotationTag == MGLAnnotationTagNotFound)
- {
- continue;
- }
-
- MGLAnnotationContext annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
- NSAssert(annotationContext.annotation, @"Missing annotation for tag %llu.", annotationTag);
- if (annotationContext.annotation)
- {
- [annotations addObject:annotationContext.annotation];
- }
- }
-
- return [annotations copy];
- }
-
- return nil;
-}
-
-/// Returns the annotation assigned the given tag. Cheap.
-- (id <MGLAnnotation>)annotationWithTag:(MGLAnnotationTag)tag {
- if ( ! _annotationContextsByAnnotationTag.count(tag) ||
- tag == MGLAnnotationTagNotFound) {
- return nil;
- }
-
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(tag);
- return annotationContext.annotation;
-}
-
-/// Returns the annotation tag assigned to the given annotation.
-- (MGLAnnotationTag)annotationTagForAnnotation:(id <MGLAnnotation>)annotation {
- if (!annotation || _annotationTagsByAnnotation.count(annotation) == 0) {
- return MGLAnnotationTagNotFound;
- }
-
- return _annotationTagsByAnnotation.at(annotation);
-}
-
-- (void)addAnnotation:(id <MGLAnnotation>)annotation {
- if (annotation) {
- [self addAnnotations:@[annotation]];
- }
-}
-
-- (void)addAnnotations:(NSArray<id <MGLAnnotation>> *)annotations {
- if (!annotations) {
- return;
- }
-
- [self willChangeValueForKey:@"annotations"];
-
- BOOL delegateHasImagesForAnnotations = [self.delegate respondsToSelector:@selector(mapView:imageForAnnotation:)];
-
- for (id <MGLAnnotation> annotation in annotations) {
- NSAssert([annotation conformsToProtocol:@protocol(MGLAnnotation)], @"Annotation does not conform to MGLAnnotation");
-
- // adding the same annotation object twice is a no-op
- if (_annotationTagsByAnnotation.count(annotation) != 0) {
- continue;
- }
-
- if ([annotation isKindOfClass:[MGLMultiPoint class]]) {
- // The multipoint knows how to style itself (with the map view’s help).
- MGLMultiPoint *multiPoint = (MGLMultiPoint *)annotation;
- if (!multiPoint.pointCount) {
- continue;
- }
-
- _isChangingAnnotationLayers = YES;
- MGLAnnotationTag annotationTag = _mbglMap->addAnnotation([multiPoint annotationObjectWithDelegate:self]);
- MGLAnnotationContext context;
- context.annotation = annotation;
- _annotationContextsByAnnotationTag[annotationTag] = context;
- _annotationTagsByAnnotation[annotation] = annotationTag;
-
- [(NSObject *)annotation addObserver:self forKeyPath:@"coordinates" options:0 context:(void *)(NSUInteger)annotationTag];
- } else if (![annotation isKindOfClass:[MGLMultiPolyline class]]
- && ![annotation isKindOfClass:[MGLMultiPolygon class]]
- && ![annotation isKindOfClass:[MGLShapeCollection class]]
- && ![annotation isKindOfClass:[MGLPointCollection class]]) {
- MGLAnnotationImage *annotationImage = nil;
- if (delegateHasImagesForAnnotations) {
- annotationImage = [self.delegate mapView:self imageForAnnotation:annotation];
- }
- if (!annotationImage) {
- annotationImage = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName];
- }
- if (!annotationImage) {
- annotationImage = self.defaultAnnotationImage;
- }
-
- NSString *symbolName = annotationImage.styleIconIdentifier;
- if (!symbolName) {
- symbolName = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
- annotationImage.styleIconIdentifier = symbolName;
- }
-
- if (!self.annotationImagesByIdentifier[annotationImage.reuseIdentifier]) {
- self.annotationImagesByIdentifier[annotationImage.reuseIdentifier] = annotationImage;
- [self installAnnotationImage:annotationImage];
- }
-
- MGLAnnotationTag annotationTag = _mbglMap->addAnnotation(mbgl::SymbolAnnotation {
- MGLPointFromLocationCoordinate2D(annotation.coordinate),
- symbolName.UTF8String ?: ""
- });
-
- MGLAnnotationContext context;
- context.annotation = annotation;
- context.imageReuseIdentifier = annotationImage.reuseIdentifier;
- _annotationContextsByAnnotationTag[annotationTag] = context;
- _annotationTagsByAnnotation[annotation] = annotationTag;
-
- if ([annotation isKindOfClass:[NSObject class]]) {
- NSAssert(![annotation isKindOfClass:[MGLMultiPoint class]], @"Point annotation should not be MGLMultiPoint.");
- [(NSObject *)annotation addObserver:self forKeyPath:@"coordinate" options:0 context:(void *)(NSUInteger)annotationTag];
- }
-
- // Opt into potentially expensive tooltip tracking areas.
- if ([annotation respondsToSelector:@selector(toolTip)] && annotation.toolTip.length) {
- _wantsToolTipRects = YES;
- }
- }
- }
-
- [self didChangeValueForKey:@"annotations"];
- if (_isChangingAnnotationLayers) {
- [self.style willChangeValueForKey:@"layers"];
- }
-
- [self updateAnnotationTrackingAreas];
-}
-
-/// Initializes and returns a default annotation image that depicts a round pin
-/// rising from the center, with a shadow slightly below center. The alignment
-/// rect therefore excludes the bottom half.
-- (MGLAnnotationImage *)defaultAnnotationImage {
- NSImage *image = MGLDefaultMarkerImage();
- NSRect alignmentRect = image.alignmentRect;
- alignmentRect.origin.y = NSMidY(alignmentRect);
- alignmentRect.size.height /= 2;
- image.alignmentRect = alignmentRect;
- return [MGLAnnotationImage annotationImageWithImage:image
- reuseIdentifier:MGLDefaultStyleMarkerSymbolName];
-}
-
-/// Sends the raw pixel data of the annotation image’s image to mbgl and
-/// calculates state needed for hit testing later.
-- (void)installAnnotationImage:(MGLAnnotationImage *)annotationImage {
- NSString *iconIdentifier = annotationImage.styleIconIdentifier;
- self.annotationImagesByIdentifier[annotationImage.reuseIdentifier] = annotationImage;
-
- NSImage *image = annotationImage.image;
- NSSize size = image.size;
- if (size.width == 0 || size.height == 0 || !image.valid) {
- // Can’t create an empty sprite. An image that hasn’t loaded is also useless.
- return;
- }
-
- _mbglMap->addAnnotationImage([annotationImage.image mgl_styleImageWithIdentifier:iconIdentifier]);
-
- // Create a slop area with a “radius” equal to the annotation image’s entire
- // size, allowing the eventual click to be on any point within this image.
- // Union this slop area with any existing slop areas.
- _unionedAnnotationImageSize = NSMakeSize(MAX(_unionedAnnotationImageSize.width, size.width),
- MAX(_unionedAnnotationImageSize.height, size.height));
-
- // Opt into potentially expensive cursor tracking areas.
- if (annotationImage.cursor) {
- _wantsCursorRects = YES;
- }
-}
-
-- (void)removeAnnotation:(id <MGLAnnotation>)annotation {
- if (annotation) {
- [self removeAnnotations:@[annotation]];
- }
-}
-
-- (void)removeAnnotations:(NSArray<id <MGLAnnotation>> *)annotations {
- if (!annotations) {
- return;
- }
-
- [self willChangeValueForKey:@"annotations"];
-
- for (id <MGLAnnotation> annotation in annotations) {
- NSAssert([annotation conformsToProtocol:@protocol(MGLAnnotation)], @"Annotation does not conform to MGLAnnotation");
-
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- NSAssert(annotationTag != MGLAnnotationTagNotFound, @"No ID for annotation %@", annotation);
-
- if (annotationTag == _selectedAnnotationTag) {
- [self deselectAnnotation:annotation];
- }
- if (annotationTag == _lastSelectedAnnotationTag) {
- _lastSelectedAnnotationTag = MGLAnnotationTagNotFound;
- }
-
- _annotationContextsByAnnotationTag.erase(annotationTag);
- _annotationTagsByAnnotation.erase(annotation);
-
- if ([annotation isKindOfClass:[NSObject class]] &&
- ![annotation isKindOfClass:[MGLMultiPoint class]]) {
- [(NSObject *)annotation removeObserver:self forKeyPath:@"coordinate" context:(void *)(NSUInteger)annotationTag];
- } else if ([annotation isKindOfClass:[MGLMultiPoint class]]) {
- [(NSObject *)annotation removeObserver:self forKeyPath:@"coordinates" context:(void *)(NSUInteger)annotationTag];
- }
-
- _isChangingAnnotationLayers = YES;
- _mbglMap->removeAnnotation(annotationTag);
- }
-
- [self didChangeValueForKey:@"annotations"];
- if (_isChangingAnnotationLayers) {
- [self.style willChangeValueForKey:@"layers"];
- }
-
- [self updateAnnotationTrackingAreas];
-}
-
-- (nullable MGLAnnotationImage *)dequeueReusableAnnotationImageWithIdentifier:(NSString *)identifier {
- return self.annotationImagesByIdentifier[identifier];
-}
-
-- (id <MGLAnnotation>)annotationAtPoint:(NSPoint)point {
- return [self annotationWithTag:[self annotationTagAtPoint:point persistingResults:NO]];
-}
-
-/**
- Returns the tag of the annotation at the given point in the view.
-
- This is more involved than it sounds: if multiple point annotations overlap
- near the point, this method cycles through them so that each of them is
- accessible to the user at some point.
-
- @param persist True to remember the cycleable set of annotations, so that a
- different annotation is returned the next time this method is called
- with the same point. Setting this parameter to false is useful for
- asking “what if?”
- */
-- (MGLAnnotationTag)annotationTagAtPoint:(NSPoint)point persistingResults:(BOOL)persist {
- // Look for any annotation near the click. An annotation is “near” if the
- // distance between its center and the click is less than the maximum height
- // or width of an installed annotation image.
- NSRect queryRect = NSInsetRect({ point, NSZeroSize },
- -_unionedAnnotationImageSize.width / 2,
- -_unionedAnnotationImageSize.height / 2);
- queryRect = NSInsetRect(queryRect, -MGLAnnotationImagePaddingForHitTest,
- -MGLAnnotationImagePaddingForHitTest);
- std::vector<MGLAnnotationTag> nearbyAnnotations = [self annotationTagsInRect:queryRect];
- std::vector<MGLAnnotationTag> nearbyShapeAnnotations = [self shapeAnnotationTagsInRect:queryRect];
-
- if (nearbyShapeAnnotations.size()) {
- nearbyAnnotations.insert(nearbyAnnotations.end(), nearbyShapeAnnotations.begin(), nearbyShapeAnnotations.end());
- }
-
- if (nearbyAnnotations.size()) {
- // Assume that the user is fat-fingering an annotation.
- NSRect hitRect = NSInsetRect({ point, NSZeroSize },
- -MGLAnnotationImagePaddingForHitTest,
- -MGLAnnotationImagePaddingForHitTest);
-
- // Filter out any annotation whose image is unselectable or for which
- // hit testing fails.
- auto end = std::remove_if(nearbyAnnotations.begin(), nearbyAnnotations.end(), [&](const MGLAnnotationTag annotationTag) {
- id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
- NSAssert(annotation, @"Unknown annotation found nearby click");
- if (!annotation) {
- return true;
- }
-
- if ([annotation isKindOfClass:[MGLMultiPoint class]])
- {
- if ([self.delegate respondsToSelector:@selector(mapView:shapeAnnotationIsEnabled:)]) {
- return !!(![self.delegate mapView:self shapeAnnotationIsEnabled:(MGLMultiPoint *)annotation]);
- } else {
- return false;
- }
- }
-
- MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
- if (!annotationImage.selectable) {
- return true;
- }
-
- // Filter out the annotation if the fattened finger didn’t land on a
- // translucent or opaque pixel in the image.
- NSRect annotationRect = [self frameOfImage:annotationImage.image
- centeredAtCoordinate:annotation.coordinate];
- return !!![annotationImage.image hitTestRect:hitRect withImageDestinationRect:annotationRect
- context:nil hints:nil flipped:NO];
- });
- nearbyAnnotations.resize(std::distance(nearbyAnnotations.begin(), end));
- }
-
- MGLAnnotationTag hitAnnotationTag = MGLAnnotationTagNotFound;
- if (nearbyAnnotations.size()) {
- // The first selection in the cycle should be the one nearest to the
- // tap. Also the annotation tags need to be stable in order to compare them with
- // the remembered tags _annotationsNearbyLastClick.
- CLLocationCoordinate2D currentCoordinate = [self convertPoint:point toCoordinateFromView:self];
- std::sort(nearbyAnnotations.begin(), nearbyAnnotations.end(), [&](const MGLAnnotationTag tagA, const MGLAnnotationTag tagB) {
- CLLocationCoordinate2D coordinateA = [[self annotationWithTag:tagA] coordinate];
- CLLocationCoordinate2D coordinateB = [[self annotationWithTag:tagB] coordinate];
- CLLocationDegrees deltaA = hypot(coordinateA.latitude - currentCoordinate.latitude,
- coordinateA.longitude - currentCoordinate.longitude);
- CLLocationDegrees deltaB = hypot(coordinateB.latitude - currentCoordinate.latitude,
- coordinateB.longitude - currentCoordinate.longitude);
- return deltaA < deltaB;
- });
-
- if (nearbyAnnotations == _annotationsNearbyLastClick) {
- // The last time we persisted a set of annotations, we had the same
- // set of annotations as we do now. Cycle through them.
- if (_lastSelectedAnnotationTag == MGLAnnotationTagNotFound
- || _lastSelectedAnnotationTag == nearbyAnnotations.back()) {
- // Either no annotation is selected or the last annotation in
- // the set was selected. Wrap around to the first annotation in
- // the set.
- hitAnnotationTag = nearbyAnnotations.front();
- } else {
- auto result = std::find(nearbyAnnotations.begin(),
- nearbyAnnotations.end(),
- _lastSelectedAnnotationTag);
- if (result == nearbyAnnotations.end()) {
- // An annotation from this set hasn’t been selected before.
- // Select the first (nearest) one.
- hitAnnotationTag = nearbyAnnotations.front();
- } else {
- // Step to the next annotation in the set.
- auto distance = std::distance(nearbyAnnotations.begin(), result);
- hitAnnotationTag = nearbyAnnotations[distance + 1];
- }
- }
- } else {
- // Remember the nearby annotations for the next time this method is
- // called.
- if (persist) {
- _annotationsNearbyLastClick = nearbyAnnotations;
- }
-
- // Choose the first nearby annotation.
- if (nearbyAnnotations.size()) {
- hitAnnotationTag = nearbyAnnotations.front();
- }
- }
- }
-
- return hitAnnotationTag;
-}
-
-/// Returns the tags of the annotations coincident with the given rectangle.
-- (std::vector<MGLAnnotationTag>)annotationTagsInRect:(NSRect)rect {
- // Cocoa origin is at the lower-left corner.
- return self.renderer->queryPointAnnotations({
- { NSMinX(rect), NSHeight(self.bounds) - NSMaxY(rect) },
- { NSMaxX(rect), NSHeight(self.bounds) - NSMinY(rect) },
- });
-}
-
-- (std::vector<MGLAnnotationTag>)shapeAnnotationTagsInRect:(NSRect)rect {
- // Cocoa origin is at the lower-left corner.
- return _rendererFrontend->getRenderer()->queryShapeAnnotations({
- { NSMinX(rect), NSHeight(self.bounds) - NSMaxY(rect) },
- { NSMaxX(rect), NSHeight(self.bounds) - NSMinY(rect) },
- });
-}
-
-- (id <MGLAnnotation>)selectedAnnotation {
- if ( ! _annotationContextsByAnnotationTag.count(_selectedAnnotationTag) ||
- _selectedAnnotationTag == MGLAnnotationTagNotFound) {
- return nil;
- }
-
- MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(_selectedAnnotationTag);
- return annotationContext.annotation;
-}
-
-- (void)setSelectedAnnotation:(id <MGLAnnotation>)annotation {
- MGLLogDebug(@"Selecting annotation: %@", annotation);
- [self willChangeValueForKey:@"selectedAnnotations"];
- _selectedAnnotationTag = [self annotationTagForAnnotation:annotation];
- if (_selectedAnnotationTag != MGLAnnotationTagNotFound) {
- _lastSelectedAnnotationTag = _selectedAnnotationTag;
- }
- [self didChangeValueForKey:@"selectedAnnotations"];
-}
-
-- (NSArray<id <MGLAnnotation>> *)selectedAnnotations {
- id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
- return selectedAnnotation ? @[selectedAnnotation] : @[];
-}
-
-- (void)setSelectedAnnotations:(NSArray<id <MGLAnnotation>> *)selectedAnnotations {
- MGLLogDebug(@"Selecting: %lu annotations", selectedAnnotations.count);
- if (!selectedAnnotations.count) {
- return;
- }
-
- id <MGLAnnotation> firstAnnotation = selectedAnnotations[0];
- NSAssert([firstAnnotation conformsToProtocol:@protocol(MGLAnnotation)], @"Annotation does not conform to MGLAnnotation");
- if ([firstAnnotation isKindOfClass:[MGLMultiPoint class]]) {
- return;
- }
-
- [self selectAnnotation:firstAnnotation];
-}
-
-- (BOOL)isMovingAnnotationIntoViewSupportedForAnnotation:(id<MGLAnnotation>)annotation animated:(BOOL)animated {
- // Consider delegating
- return [annotation isKindOfClass:[MGLPointAnnotation class]];
-}
-
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation
-{
- MGLLogDebug(@"Selecting annotation: %@", annotation);
- [self selectAnnotation:annotation atPoint:NSZeroPoint];
-}
-
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation atPoint:(NSPoint)gesturePoint
-{
- MGLLogDebug(@"Selecting annotation: %@ atPoint: %@", annotation, NSStringFromPoint(gesturePoint));
- [self selectAnnotation:annotation atPoint:gesturePoint moveIntoView:YES animateSelection:YES];
-}
-
-- (void)selectAnnotation:(id <MGLAnnotation>)annotation atPoint:(NSPoint)gesturePoint moveIntoView:(BOOL)moveIntoView animateSelection:(BOOL)animateSelection
-{
- MGLLogDebug(@"Selecting annotation: %@ atPoint: %@ moveIntoView: %@ animateSelection: %@", annotation, NSStringFromPoint(gesturePoint), MGLStringFromBOOL(moveIntoView), MGLStringFromBOOL(animateSelection));
- id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
- if (annotation == selectedAnnotation) {
- return;
- }
-
- // Deselect the annotation before reselecting it.
- [self deselectAnnotation:selectedAnnotation];
-
- // Add the annotation to the map if it hasn’t been added yet.
- MGLAnnotationTag annotationTag = [self annotationTagForAnnotation:annotation];
- if (annotationTag == MGLAnnotationTagNotFound) {
- [self addAnnotation:annotation];
- }
-
- if (moveIntoView) {
- moveIntoView = [self isMovingAnnotationIntoViewSupportedForAnnotation:annotation animated:animateSelection];
- }
-
- // The annotation's anchor will bounce to the current click.
- NSRect positioningRect = [self positioningRectForCalloutForAnnotationWithTag:annotationTag];
-
- // Check for invalid (zero) positioning rect
- if (NSEqualRects(positioningRect, NSZeroRect)) {
- CLLocationCoordinate2D origin = annotation.coordinate;
- positioningRect.origin = [self convertCoordinate:origin toPointToView:self];
- }
-
- BOOL shouldShowCallout = ([annotation respondsToSelector:@selector(title)]
- && annotation.title
- && !self.calloutForSelectedAnnotation.shown
- && [self.delegate respondsToSelector:@selector(mapView:annotationCanShowCallout:)]
- && [self.delegate mapView:self annotationCanShowCallout:annotation]);
-
- if (NSIsEmptyRect(NSIntersectionRect(positioningRect, self.bounds))) {
- if (!moveIntoView && !NSEqualPoints(gesturePoint, NSZeroPoint)) {
- positioningRect = CGRectMake(gesturePoint.x, gesturePoint.y, positioningRect.size.width, positioningRect.size.height);
- }
- }
- // Onscreen or partially on-screen
- else if (!shouldShowCallout) {
- moveIntoView = NO;
- }
-
- self.selectedAnnotation = annotation;
-
- // For the callout to be shown, the annotation must have a title, its
- // callout must not already be shown, and the annotation must be able to
- // show a callout according to the delegate.
- if (shouldShowCallout) {
- NSPopover *callout = [self calloutForAnnotation:annotation];
-
- // Hang the callout off the right edge of the annotation image’s
- // alignment rect, or off the left edge in a right-to-left UI.
- callout.delegate = self;
- self.calloutForSelectedAnnotation = callout;
-
- NSRectEdge edge = (self.userInterfaceLayoutDirection == NSUserInterfaceLayoutDirectionRightToLeft
- ? NSMinXEdge
- : NSMaxXEdge);
-
- // The following will do nothing if the positioning rect is not on-screen. See
- // `-[MGLMapView updateAnnotationCallouts]` for presenting the callout when the selected
- // annotation comes back on-screen.
- [callout showRelativeToRect:positioningRect ofView:self preferredEdge:edge];
- }
-
- if (moveIntoView)
- {
- moveIntoView = NO;
-
- NSRect (^edgeInsetsInsetRect)(NSRect, NSEdgeInsets) = ^(NSRect rect, NSEdgeInsets insets) {
- return NSMakeRect(rect.origin.x + insets.left,
- rect.origin.y + insets.bottom,
- rect.size.width - insets.left - insets.right,
- rect.size.height - insets.top - insets.bottom);
- };
-
- // Add padding around the positioning rect (in essence an inset from the edge of the viewport
- NSRect expandedPositioningRect = positioningRect;
-
- if (shouldShowCallout) {
- // If we have a callout, expand this rect to include a buffer
- expandedPositioningRect = edgeInsetsInsetRect(positioningRect, MGLMapViewOffscreenAnnotationPadding);
- }
-
- // Used for callout positioning, and moving offscreen annotations onscreen.
- CGRect constrainedRect = edgeInsetsInsetRect(self.bounds, self.contentInsets);
- CGRect bounds = constrainedRect;
-
- // Any one of these cases should trigger a move onscreen
- CGFloat minX = CGRectGetMinX(expandedPositioningRect);
-
- if (minX < CGRectGetMinX(bounds)) {
- constrainedRect.origin.x = minX;
- moveIntoView = YES;
- }
- else {
- CGFloat maxX = CGRectGetMaxX(expandedPositioningRect);
-
- if (maxX > CGRectGetMaxX(bounds)) {
- constrainedRect.origin.x = maxX - CGRectGetWidth(constrainedRect);
- moveIntoView = YES;
- }
- }
-
- CGFloat minY = CGRectGetMinY(expandedPositioningRect);
-
- if (minY < CGRectGetMinY(bounds)) {
- constrainedRect.origin.y = minY;
- moveIntoView = YES;
- }
- else {
- CGFloat maxY = CGRectGetMaxY(expandedPositioningRect);
-
- if (maxY > CGRectGetMaxY(bounds)) {
- constrainedRect.origin.y = maxY - CGRectGetHeight(constrainedRect);
- moveIntoView = YES;
- }
- }
-
- if (moveIntoView)
- {
- CGPoint center = CGPointMake(CGRectGetMidX(constrainedRect), CGRectGetMidY(constrainedRect));
- CLLocationCoordinate2D centerCoord = [self convertPoint:center toCoordinateFromView:self];
- [self setCenterCoordinate:centerCoord animated:animateSelection];
- }
- }
-}
-
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations animated:(BOOL)animated {
- MGLLogDebug(@"Showing: %lu annotations animated: %@", annotations.count, MGLStringFromBOOL(animated));
- CGFloat maximumPadding = 100;
- CGFloat yPadding = (NSHeight(self.bounds) / 5 <= maximumPadding) ? (NSHeight(self.bounds) / 5) : maximumPadding;
- CGFloat xPadding = (NSWidth(self.bounds) / 5 <= maximumPadding) ? (NSWidth(self.bounds) / 5) : maximumPadding;
-
- NSEdgeInsets edgeInsets = NSEdgeInsetsMake(yPadding, xPadding, yPadding, xPadding);
-
- [self showAnnotations:annotations edgePadding:edgeInsets animated:animated];
-}
-
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated {
- [self showAnnotations:annotations edgePadding:insets animated:animated completionHandler:nil];
-}
-
-- (void)showAnnotations:(NSArray<id <MGLAnnotation>> *)annotations edgePadding:(NSEdgeInsets)insets animated:(BOOL)animated completionHandler:(nullable void (^)(void))completion {
- if (!annotations.count) {
- if (completion) {
- completion();
- }
- return;
- }
-
- mbgl::LatLngBounds bounds = mbgl::LatLngBounds::empty();
-
- for (id <MGLAnnotation> annotation in annotations) {
- if ([annotation conformsToProtocol:@protocol(MGLOverlay)]) {
- bounds.extend(MGLLatLngBoundsFromCoordinateBounds(((id <MGLOverlay>)annotation).overlayBounds));
- } else {
- bounds.extend(MGLLatLngFromLocationCoordinate2D(annotation.coordinate));
- }
- }
-
- [self setVisibleCoordinateBounds:MGLCoordinateBoundsFromLatLngBounds(bounds)
- edgePadding:insets
- animated:animated
- completionHandler:completion];
-}
-
-/// Returns a popover detailing the annotation.
-- (NSPopover *)calloutForAnnotation:(id <MGLAnnotation>)annotation {
- NSPopover *callout = [[NSPopover alloc] init];
- callout.behavior = NSPopoverBehaviorTransient;
-
- NSViewController *viewController;
- if ([self.delegate respondsToSelector:@selector(mapView:calloutViewControllerForAnnotation:)]) {
- NSViewController *viewControllerFromDelegate = [self.delegate mapView:self
- calloutViewControllerForAnnotation:annotation];
- if (viewControllerFromDelegate) {
- viewController = viewControllerFromDelegate;
- }
- }
- if (!viewController) {
- viewController = self.calloutViewController;
- }
- NSAssert(viewController, @"Unable to load MGLAnnotationCallout view controller");
- // The popover’s view controller can bind to KVO-compliant key paths of the
- // annotation.
- viewController.representedObject = annotation;
- callout.contentViewController = viewController;
-
- return callout;
-}
-
-- (NSViewController *)calloutViewController {
- // Lazily load a default view controller.
- if (!_calloutViewController) {
- _calloutViewController = [[NSViewController alloc] initWithNibName:@"MGLAnnotationCallout"
- bundle:[NSBundle mgl_frameworkBundle]];
- }
- return _calloutViewController;
-}
-
-/// Returns the rectangle that represents the annotation image of the annotation
-/// with the given tag. This rectangle is fitted to the image’s alignment rect
-/// and is appropriate for positioning a popover.
-- (NSRect)positioningRectForCalloutForAnnotationWithTag:(MGLAnnotationTag)annotationTag {
- id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
- if (!annotation) {
- return NSZeroRect;
- }
- if ([annotation isKindOfClass:[MGLMultiPoint class]]) {
- CLLocationCoordinate2D origin = annotation.coordinate;
- CGPoint originPoint = [self convertCoordinate:origin toPointToView:self];
- return CGRectMake(originPoint.x, originPoint.y, MGLAnnotationImagePaddingForHitTest, MGLAnnotationImagePaddingForHitTest);
-
- }
-
- NSImage *image = [self imageOfAnnotationWithTag:annotationTag].image;
- if (!image) {
- image = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName].image;
- }
- if (!image) {
- return NSZeroRect;
- }
-
- NSRect positioningRect = [self frameOfImage:image centeredAtCoordinate:annotation.coordinate];
- positioningRect = NSOffsetRect(image.alignmentRect, positioningRect.origin.x, positioningRect.origin.y);
- return NSInsetRect(positioningRect, -MGLAnnotationImagePaddingForCallout,
- -MGLAnnotationImagePaddingForCallout);
-}
-
-/// Returns the rectangle relative to the viewport that represents the given
-/// image centered at the given coordinate.
-- (NSRect)frameOfImage:(NSImage *)image centeredAtCoordinate:(CLLocationCoordinate2D)coordinate {
- NSPoint calloutAnchorPoint = [self convertCoordinate:coordinate toPointToView:self];
- return NSInsetRect({ calloutAnchorPoint, NSZeroSize }, -image.size.width / 2, -image.size.height / 2);
-}
-
-/// Returns the annotation image assigned to the annotation with the given tag.
-- (MGLAnnotationImage *)imageOfAnnotationWithTag:(MGLAnnotationTag)annotationTag {
- if (annotationTag == MGLAnnotationTagNotFound
- || _annotationContextsByAnnotationTag.count(annotationTag) == 0) {
- return nil;
- }
-
- NSString *customSymbol = _annotationContextsByAnnotationTag.at(annotationTag).imageReuseIdentifier;
- NSString *symbolName = customSymbol.length ? customSymbol : MGLDefaultStyleMarkerSymbolName;
-
- return [self dequeueReusableAnnotationImageWithIdentifier:symbolName];
-}
-
-- (void)deselectAnnotation:(id <MGLAnnotation>)annotation {
- if (!annotation || self.selectedAnnotation != annotation) {
- return;
- }
-
- // Close the callout popover gracefully.
- NSPopover *callout = self.calloutForSelectedAnnotation;
- [callout performClose:self];
-
- self.selectedAnnotation = nil;
-}
-
-/// Move the annotation callout to point to the selected annotation at its
-/// current position.
-- (void)updateAnnotationCallouts {
- NSPopover *callout = self.calloutForSelectedAnnotation;
- if (callout) {
- NSRect rect = [self positioningRectForCalloutForAnnotationWithTag:_selectedAnnotationTag];
-
- NSAssert(!NSEqualRects(rect, NSZeroRect), @"Positioning rect should be non-zero");
-
- if (!NSIsEmptyRect(NSIntersectionRect(rect, self.bounds))) {
-
- // It's possible that the current callout hasn't been presented (since the original
- // positioningRect was offscreen). We can check that the callout has a valid window
- // This results in the callout being presented just as the annotation comes on screen
- // which matches MapKit, but (currently) not iOS.
- if (!callout.contentViewController.view.window) {
- NSRectEdge edge = (self.userInterfaceLayoutDirection == NSUserInterfaceLayoutDirectionRightToLeft
- ? NSMinXEdge
- : NSMaxXEdge);
- // Re-present the callout
- [callout showRelativeToRect:rect ofView:self preferredEdge:edge];
- }
- else {
- callout.positioningRect = rect;
- }
- }
- }
-}
-
-#pragma mark MGLMultiPointDelegate methods
-
-- (double)alphaForShapeAnnotation:(MGLShape *)annotation {
- if (_delegateHasAlphasForShapeAnnotations) {
- return [self.delegate mapView:self alphaForShapeAnnotation:annotation];
- }
- return 1.0;
-}
-
-- (mbgl::Color)strokeColorForShapeAnnotation:(MGLShape *)annotation {
- NSColor *color = (_delegateHasStrokeColorsForShapeAnnotations
- ? [self.delegate mapView:self strokeColorForShapeAnnotation:annotation]
- : [NSColor selectedMenuItemColor]);
- return color.mgl_color;
-}
-
-- (mbgl::Color)fillColorForPolygonAnnotation:(MGLPolygon *)annotation {
- NSColor *color = (_delegateHasFillColorsForShapeAnnotations
- ? [self.delegate mapView:self fillColorForPolygonAnnotation:annotation]
- : [NSColor selectedMenuItemColor]);
- return color.mgl_color;
-}
-
-- (CGFloat)lineWidthForPolylineAnnotation:(MGLPolyline *)annotation {
- if (_delegateHasLineWidthsForShapeAnnotations) {
- return [self.delegate mapView:self lineWidthForPolylineAnnotation:(MGLPolyline *)annotation];
- }
- return 3.0;
-}
-
-#pragma mark MGLPopoverDelegate methods
-
-- (void)popoverDidShow:(__unused NSNotification *)notification {
- id <MGLAnnotation> annotation = self.selectedAnnotation;
- if (annotation && [self.delegate respondsToSelector:@selector(mapView:didSelectAnnotation:)]) {
- [self.delegate mapView:self didSelectAnnotation:annotation];
- }
-}
-
-- (void)popoverDidClose:(__unused NSNotification *)notification {
- // Deselect the closed popover, in case the popover was closed due to user
- // action.
- id <MGLAnnotation> annotation = self.calloutForSelectedAnnotation.contentViewController.representedObject;
- self.calloutForSelectedAnnotation = nil;
- self.selectedAnnotation = nil;
-
- if ([self.delegate respondsToSelector:@selector(mapView:didDeselectAnnotation:)]) {
- [self.delegate mapView:self didDeselectAnnotation:annotation];
- }
-}
-
-#pragma mark Overlays
-
-- (nonnull NSArray<id <MGLOverlay>> *)overlays
-{
- if (self.annotations == nil) { return @[]; }
-
- NSMutableArray<id <MGLOverlay>> *mutableOverlays = [NSMutableArray array];
-
- [self.annotations enumerateObjectsUsingBlock:^(id<MGLAnnotation> _Nonnull annotation, NSUInteger idx, BOOL * _Nonnull stop) {
- if ([annotation conformsToProtocol:@protocol(MGLOverlay)])
- {
- [mutableOverlays addObject:(id<MGLOverlay>)annotation];
- }
- }];
-
- return [NSArray arrayWithArray:mutableOverlays];
-}
-
-- (void)addOverlay:(id <MGLOverlay>)overlay {
- MGLLogDebug(@"Adding overlay: %@", overlay);
- [self addOverlays:@[overlay]];
-}
-
-- (void)addOverlays:(NSArray<id <MGLOverlay>> *)overlays
-{
- MGLLogDebug(@"Adding: %lu overlays", overlays.count);
-#if DEBUG
- for (id <MGLOverlay> overlay in overlays) {
- NSAssert([overlay conformsToProtocol:@protocol(MGLOverlay)], @"Overlay does not conform to MGLOverlay");
- }
-#endif
- [self addAnnotations:overlays];
-}
-
-- (void)removeOverlay:(id <MGLOverlay>)overlay {
- MGLLogDebug(@"Removing overlay: %@", overlay);
- [self removeOverlays:@[overlay]];
-}
-
-- (void)removeOverlays:(NSArray<id <MGLOverlay>> *)overlays {
- MGLLogDebug(@"Removing: %lu overlays", overlays.count);
-#if DEBUG
- for (id <MGLOverlay> overlay in overlays) {
- NSAssert([overlay conformsToProtocol:@protocol(MGLOverlay)], @"Overlay does not conform to MGLOverlay");
- }
-#endif
- [self removeAnnotations:overlays];
-}
-
-#pragma mark Tooltips and cursors
-
-- (void)updateAnnotationTrackingAreas {
- if (_wantsToolTipRects) {
- [self removeAllToolTips];
- std::vector<MGLAnnotationTag> annotationTags = [self annotationTagsInRect:self.bounds];
- for (MGLAnnotationTag annotationTag : annotationTags) {
- MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
- id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
- if ([annotation respondsToSelector:@selector(toolTip)] && annotation.toolTip.length) {
- // Add a tooltip tracking area over the annotation image’s
- // frame, accounting for the image’s alignment rect.
- NSImage *image = annotationImage.image;
- NSRect annotationRect = [self frameOfImage:image
- centeredAtCoordinate:annotation.coordinate];
- annotationRect = NSOffsetRect(image.alignmentRect, annotationRect.origin.x, annotationRect.origin.y);
- if (!NSIsEmptyRect(annotationRect)) {
- [self addToolTipRect:annotationRect owner:self userData:(void *)(NSUInteger)annotationTag];
- }
- }
- // Opt into potentially expensive cursor tracking areas.
- if (annotationImage.cursor) {
- _wantsCursorRects = YES;
- }
- }
- }
-
- // Blow away any cursor tracking areas and rebuild them. That’s the
- // potentially expensive part.
- if (_wantsCursorRects) {
- [self.window invalidateCursorRectsForView:self];
- }
-}
-
-- (NSString *)view:(__unused NSView *)view stringForToolTip:(__unused NSToolTipTag)tag point:(__unused NSPoint)point userData:(void *)data {
- NSAssert((NSUInteger)data < MGLAnnotationTagNotFound, @"Invalid annotation tag in tooltip rect user data.");
- MGLAnnotationTag annotationTag = (MGLAnnotationTag)MIN((NSUInteger)data, MGLAnnotationTagNotFound);
- id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
- return annotation.toolTip;
-}
-
-- (void)resetCursorRects {
- // Drag to pan has a grabbing hand cursor.
- if ([self isPanningWithGesture]) {
- [self addCursorRect:self.bounds cursor:[NSCursor closedHandCursor]];
- return;
- }
-
- // The rest of this method can be expensive, so bail if no annotations have
- // ever had custom cursors.
- if (!_wantsCursorRects) {
- return;
- }
-
- std::vector<MGLAnnotationTag> annotationTags = [self annotationTagsInRect:self.bounds];
- for (MGLAnnotationTag annotationTag : annotationTags) {
- id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
- MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
- if (annotationImage.cursor) {
- // Add a cursor tracking area over the annotation image, respecting
- // the image’s alignment rect.
- NSImage *image = annotationImage.image;
- NSRect annotationRect = [self frameOfImage:image
- centeredAtCoordinate:annotation.coordinate];
- annotationRect = NSOffsetRect(image.alignmentRect, annotationRect.origin.x, annotationRect.origin.y);
- [self addCursorRect:annotationRect cursor:annotationImage.cursor];
- }
- }
-}
-
-#pragma mark Data
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(NSPoint)point {
- MGLLogDebug(@"Querying visibleFeaturesAtPoint: %@", NSStringFromPoint(point));
- return [self visibleFeaturesAtPoint:point inStyleLayersWithIdentifiers:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(CGPoint)point inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers {
- MGLLogDebug(@"Querying visibleFeaturesAtPoint: %@ inStyleLayersWithIdentifiers: %@", NSStringFromPoint(point), styleLayerIdentifiers);
- return [self visibleFeaturesAtPoint:point inStyleLayersWithIdentifiers:styleLayerIdentifiers predicate:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesAtPoint:(NSPoint)point inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers predicate:(NSPredicate *)predicate {
- MGLLogDebug(@"Querying visibleFeaturesAtPoint: %@ inStyleLayersWithIdentifiers: %@ predicate: %@", NSStringFromPoint(point), styleLayerIdentifiers, predicate);
- // Cocoa origin is at the lower-left corner.
- mbgl::ScreenCoordinate screenCoordinate = { point.x, NSHeight(self.bounds) - point.y };
-
- mbgl::optional<std::vector<std::string>> optionalLayerIDs;
- if (styleLayerIdentifiers) {
- __block std::vector<std::string> layerIDs;
- layerIDs.reserve(styleLayerIdentifiers.count);
- [styleLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop) {
- layerIDs.push_back(identifier.UTF8String);
- }];
- optionalLayerIDs = layerIDs;
- }
-
- mbgl::optional<mbgl::style::Filter> optionalFilter;
- if (predicate) {
- optionalFilter = predicate.mgl_filter;
- }
-
- std::vector<mbgl::Feature> features = _rendererFrontend->getRenderer()->queryRenderedFeatures(screenCoordinate, { optionalLayerIDs, optionalFilter });
- return MGLFeaturesFromMBGLFeatures(features);
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(NSRect)rect {
- MGLLogDebug(@"Querying visibleFeaturesInRect: %@", NSStringFromRect(rect));
- return [self visibleFeaturesInRect:rect inStyleLayersWithIdentifiers:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(CGRect)rect inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers {
- MGLLogDebug(@"Querying visibleFeaturesInRect: %@ inStyleLayersWithIdentifiers: %@", NSStringFromRect(rect), styleLayerIdentifiers);
- return [self visibleFeaturesInRect:rect inStyleLayersWithIdentifiers:styleLayerIdentifiers predicate:nil];
-}
-
-- (NSArray<id <MGLFeature>> *)visibleFeaturesInRect:(NSRect)rect inStyleLayersWithIdentifiers:(NSSet<NSString *> *)styleLayerIdentifiers predicate:(NSPredicate *)predicate {
- MGLLogDebug(@"Querying visibleFeaturesInRect: %@ inStyleLayersWithIdentifiers: %@ predicate: %@", NSStringFromRect(rect), styleLayerIdentifiers, predicate);
- // Cocoa origin is at the lower-left corner.
- mbgl::ScreenBox screenBox = {
- { NSMinX(rect), NSHeight(self.bounds) - NSMaxY(rect) },
- { NSMaxX(rect), NSHeight(self.bounds) - NSMinY(rect) },
- };
-
- mbgl::optional<std::vector<std::string>> optionalLayerIDs;
- if (styleLayerIdentifiers) {
- __block std::vector<std::string> layerIDs;
- layerIDs.reserve(styleLayerIdentifiers.count);
- [styleLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop) {
- layerIDs.push_back(identifier.UTF8String);
- }];
- optionalLayerIDs = layerIDs;
- }
-
- mbgl::optional<mbgl::style::Filter> optionalFilter;
- if (predicate) {
- optionalFilter = predicate.mgl_filter;
- }
-
- std::vector<mbgl::Feature> features = _rendererFrontend->getRenderer()->queryRenderedFeatures(screenBox, { optionalLayerIDs, optionalFilter });
- return MGLFeaturesFromMBGLFeatures(features);
-}
-
-#pragma mark User interface validation
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
- if (menuItem.action == @selector(giveFeedback:)) {
- return YES;
- }
- return NO;
-}
-
-#pragma mark Interface Builder methods
-
-- (void)prepareForInterfaceBuilder {
- [super prepareForInterfaceBuilder];
-
- // Color the background a glorious Mapbox teal.
- self.layer.borderColor = [NSColor colorWithRed:59/255.
- green:178/255.
- blue:208/255.
- alpha:0.8].CGColor;
- self.layer.borderWidth = 2;
- self.layer.backgroundColor = [NSColor colorWithRed:59/255.
- green:178/255.
- blue:208/255.
- alpha:0.6].CGColor;
-
- // Place a playful marker right smack dab in the middle.
- self.layer.contents = MGLDefaultMarkerImage();
- self.layer.contentsGravity = kCAGravityCenter;
- self.layer.contentsScale = [NSScreen mainScreen].backingScaleFactor;
-}
-
-#pragma mark Geometric methods
-
-- (NSPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(nullable NSView *)view {
- if (!CLLocationCoordinate2DIsValid(coordinate)) {
- return NSMakePoint(NAN, NAN);
- }
- return [self convertLatLng:MGLLatLngFromLocationCoordinate2D(coordinate) toPointToView:view];
-}
-
-/// Converts a geographic coordinate to a point in the view’s coordinate system.
-- (NSPoint)convertLatLng:(mbgl::LatLng)latLng toPointToView:(nullable NSView *)view {
- mbgl::ScreenCoordinate pixel = _mbglMap->pixelForLatLng(latLng);
- // Cocoa origin is at the lower-left corner.
- pixel.y = NSHeight(self.bounds) - pixel.y;
- return [self convertPoint:NSMakePoint(pixel.x, pixel.y) toView:view];
-}
-
-- (CLLocationCoordinate2D)convertPoint:(NSPoint)point toCoordinateFromView:(nullable NSView *)view {
- return MGLLocationCoordinate2DFromLatLng([self convertPoint:point toLatLngFromView:view]);
-}
-
-/// Converts a point in the view’s coordinate system to a geographic coordinate.
-- (mbgl::LatLng)convertPoint:(NSPoint)point toLatLngFromView:(nullable NSView *)view {
- NSPoint convertedPoint = [self convertPoint:point fromView:view];
- return _mbglMap->latLngForPixel({
- convertedPoint.x,
- // mbgl origin is at the top-left corner.
- NSHeight(self.bounds) - convertedPoint.y,
- }).wrapped();
-}
-
-- (NSRect)convertCoordinateBounds:(MGLCoordinateBounds)bounds toRectToView:(nullable NSView *)view {
- return [self convertLatLngBounds:MGLLatLngBoundsFromCoordinateBounds(bounds) toRectToView:view];
-}
-
-/// Converts a geographic bounding box to a rectangle in the view’s coordinate
-/// system.
-- (NSRect)convertLatLngBounds:(mbgl::LatLngBounds)bounds toRectToView:(nullable NSView *)view {
- auto northwest = bounds.northwest();
- auto northeast = bounds.northeast();
- auto southwest = bounds.southwest();
- auto southeast = bounds.southeast();
-
- auto center = [self convertPoint:{ NSMidX(view.bounds), NSMidY(view.bounds) } toLatLngFromView:view];
-
- // Extend bounds to account for the antimeridian
- northwest.unwrapForShortestPath(center);
- northeast.unwrapForShortestPath(center);
- southwest.unwrapForShortestPath(center);
- southeast.unwrapForShortestPath(center);
-
- auto correctedLatLngBounds = mbgl::LatLngBounds::empty();
- correctedLatLngBounds.extend(northwest);
- correctedLatLngBounds.extend(northeast);
- correctedLatLngBounds.extend(southwest);
- correctedLatLngBounds.extend(southeast);
-
- NSRect rect = { [self convertLatLng:correctedLatLngBounds.southwest() toPointToView:view], CGSizeZero };
- rect = MGLExtendRect(rect, [self convertLatLng:correctedLatLngBounds.northeast() toPointToView:view]);
- return rect;
-}
-
-- (MGLCoordinateBounds)convertRect:(NSRect)rect toCoordinateBoundsFromView:(nullable NSView *)view {
- return MGLCoordinateBoundsFromLatLngBounds([self convertRect:rect toLatLngBoundsFromView:view]);
-}
-
-/// Converts a rectangle in the given view’s coordinate system to a geographic
-/// bounding box.
-- (mbgl::LatLngBounds)convertRect:(NSRect)rect toLatLngBoundsFromView:(nullable NSView *)view {
- auto bounds = mbgl::LatLngBounds::empty();
- auto bottomLeft = [self convertPoint:{ NSMinX(rect), NSMinY(rect) } toLatLngFromView:view];
- auto bottomRight = [self convertPoint:{ NSMaxX(rect), NSMinY(rect) } toLatLngFromView:view];
- auto topRight = [self convertPoint:{ NSMaxX(rect), NSMaxY(rect) } toLatLngFromView:view];
- auto topLeft = [self convertPoint:{ NSMinX(rect), NSMaxY(rect) } toLatLngFromView:view];
-
- // If the bounds straddles the antimeridian, unwrap it so that one side
- // extends beyond ±180° longitude.
- auto center = [self convertPoint:{ NSMidX(rect), NSMidY(rect) } toLatLngFromView:view];
- bottomLeft.unwrapForShortestPath(center);
- bottomRight.unwrapForShortestPath(center);
- topRight.unwrapForShortestPath(center);
- topLeft.unwrapForShortestPath(center);
-
- bounds.extend(bottomLeft);
- bounds.extend(bottomRight);
- bounds.extend(topRight);
- bounds.extend(topLeft);
-
- return bounds;
-}
-
-- (CLLocationDistance)metersPerPointAtLatitude:(CLLocationDegrees)latitude {
- return mbgl::Projection::getMetersPerPixelAtLatitude(latitude, self.zoomLevel);
-}
-
-#pragma mark Debugging
-
-- (MGLMapDebugMaskOptions)debugMask {
- mbgl::MapDebugOptions options = _mbglMap->getDebug();
- MGLMapDebugMaskOptions mask = 0;
- if (options & mbgl::MapDebugOptions::TileBorders) {
- mask |= MGLMapDebugTileBoundariesMask;
- }
- if (options & mbgl::MapDebugOptions::ParseStatus) {
- mask |= MGLMapDebugTileInfoMask;
- }
- if (options & mbgl::MapDebugOptions::Timestamps) {
- mask |= MGLMapDebugTimestampsMask;
- }
- if (options & mbgl::MapDebugOptions::Collision) {
- mask |= MGLMapDebugCollisionBoxesMask;
- }
- if (options & mbgl::MapDebugOptions::Overdraw) {
- mask |= MGLMapDebugOverdrawVisualizationMask;
- }
- if (options & mbgl::MapDebugOptions::StencilClip) {
- mask |= MGLMapDebugStencilBufferMask;
- }
- if (options & mbgl::MapDebugOptions::DepthBuffer) {
- mask |= MGLMapDebugDepthBufferMask;
- }
- return mask;
-}
-
-- (void)setDebugMask:(MGLMapDebugMaskOptions)debugMask {
- mbgl::MapDebugOptions options = mbgl::MapDebugOptions::NoDebug;
- if (debugMask & MGLMapDebugTileBoundariesMask) {
- options |= mbgl::MapDebugOptions::TileBorders;
- }
- if (debugMask & MGLMapDebugTileInfoMask) {
- options |= mbgl::MapDebugOptions::ParseStatus;
- }
- if (debugMask & MGLMapDebugTimestampsMask) {
- options |= mbgl::MapDebugOptions::Timestamps;
- }
- if (debugMask & MGLMapDebugCollisionBoxesMask) {
- options |= mbgl::MapDebugOptions::Collision;
- }
- if (debugMask & MGLMapDebugOverdrawVisualizationMask) {
- options |= mbgl::MapDebugOptions::Overdraw;
- }
- if (debugMask & MGLMapDebugStencilBufferMask) {
- options |= mbgl::MapDebugOptions::StencilClip;
- }
- if (debugMask & MGLMapDebugDepthBufferMask) {
- options |= mbgl::MapDebugOptions::DepthBuffer;
- }
- _mbglMap->setDebug(options);
-}
-
-@end
diff --git a/platform/macos/src/MGLMapViewDelegate.h b/platform/macos/src/MGLMapViewDelegate.h
deleted file mode 100644
index 098164cd75..0000000000
--- a/platform/macos/src/MGLMapViewDelegate.h
+++ /dev/null
@@ -1,352 +0,0 @@
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLMapView;
-@class MGLAnnotationImage;
-@class MGLPolygon;
-@class MGLPolyline;
-@class MGLShape;
-
-/**
- The `MGLMapViewDelegate` protocol defines a set of optional methods that you
- can use to receive messages from an `MGLMapView` instance. Because many map
- operations require the `MGLMapView` class to load data asynchronously, the map
- view calls these methods to notify your application when specific operations
- complete. The map view also uses these methods to request information about
- annotations displayed on the map, such as the styles and interaction modes to
- apply to individual annotations.
- */
-@protocol MGLMapViewDelegate <NSObject>
-
-@optional
-
-#pragma mark Responding to Map Viewpoint Changes
-
-/**
- Tells the delegate that the viewpoint depicted by the map view is about to
- change.
-
- This method is called whenever the currently displayed map camera will start
- changing for any reason.
-
- @param mapView The map view whose viewpoint will change.
- @param animated Whether the change will cause an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView cameraWillChangeAnimated:(BOOL)animated;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view is changing.
-
- This method is called as the currently displayed map camera changes as part of
- an animation, whether due to a user gesture or due to a call to a method such
- as `-[MGLMapView setCamera:animated:]`. This method can be called before
- `-mapViewDidFinishLoadingMap:` is called.
-
- During the animation, this method may be called many times to report updates
- to the viewpoint. Therefore, your implementation of this method should be as
- lightweight as possible to avoid affecting performance.
-
- @param mapView The map view whose viewpoint is changing.
- */
-- (void)mapViewCameraIsChanging:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view has finished
- changing.
-
- This method is called whenever the currently displayed map camera has finished
- changing, after any calls to `-mapViewRegionIsChanging:` due to animation.
- This method can be called before `-mapViewDidFinishLoadingMap:` is
- called.
-
- @param mapView The map view whose viewpoint has changed.
- @param animated Whether the change caused an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView cameraDidChangeAnimated:(BOOL)animated;
-
-/**
- Asks the delegate whether the map view should be allowed to change from the
- existing camera to the new camera in response to a user gesture.
-
- This method is called as soon as the user gesture is recognized. It is not
- called in response to a programmatic camera change, such as by setting the
- `centerCoordinate` property or calling `-flyToCamera:completionHandler:`.
-
- This method is called many times during gesturing, so you should avoid performing
- complex or performance-intensive tasks in your implementation.
-
- @param mapView The map view that the user is manipulating.
- @param oldCamera The camera representing the viewpoint at the moment the
- gesture is recognized. If this method returns `NO`, the map view’s camera
- continues to be this camera.
- @param newCamera The expected camera after the gesture completes. If this
- method returns `YES`, this camera becomes the map view’s camera.
- @return A Boolean value indicating whether the map view should stay at
- `oldCamera` or change to `newCamera`.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldChangeFromCamera:(MGLMapCamera *)oldCamera toCamera:(MGLMapCamera *)newCamera;
-
-#pragma mark Loading the Map
-
-/**
- Tells the delegate that the map view will begin to load.
-
- This method is called whenever the map view starts loading, including when a
- new style has been set and the map must reload.
-
- @param mapView The map view that is starting to load.
- */
-- (void)mapViewWillStartLoadingMap:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has finished loading.
-
- This method is called whenever the map view finishes loading, either after the
- initial load or after a style change has forced a reload.
-
- @param mapView The map view that has finished loading.
- */
-- (void)mapViewDidFinishLoadingMap:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view was unable to load data needed for
- displaying the map.
-
- This method may be called for a variety of reasons, including a network
- connection failure or a failure to fetch the style from the server. You can use
- the given error message to notify the user that map data is unavailable.
-
- @param mapView The map view that is unable to load the data.
- @param error The reason the data could not be loaded.
- */
-- (void)mapViewDidFailLoadingMap:(MGLMapView *)mapView withError:(NSError *)error;
-
-- (void)mapViewWillStartRenderingMap:(MGLMapView *)mapView;
-- (void)mapViewDidFinishRenderingMap:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-/**
- Tells the delegate that the map view is about to redraw.
-
- This method is called any time the map view needs to redraw due to a change in
- the viewpoint or style property transition. This method may be called very
- frequently, even moreso than `-mapViewRegionIsChanging:`. Therefore, your
- implementation of this method should be as lightweight as possible to avoid
- affecting performance.
-
- @param mapView The map view that is about to redraw.
- */
-- (void)mapViewWillStartRenderingFrame:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has just redrawn.
-
- This method is called any time the map view needs to redraw due to a change in
- the viewpoint or style property transition. This method may be called very
- frequently, even moreso than `-mapViewRegionIsChanging:`. Therefore, your
- implementation of this method should be as lightweight as possible to avoid
- affecting performance.
-
- @param mapView The map view that has just redrawn.
- */
-- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-/**
- Tells the delegate that the map view is entering an idle state, and no more
- drawing will be necessary until new data is loaded or there is some interaction
- with the map.
-
- - No camera transitions are in progress
- - All currently requested tiles have loaded
- - All fade/transition animations have completed
-
- @param mapView The map view that has just entered the idle state.
- */
-- (void)mapViewDidBecomeIdle:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map has just finished loading a style.
-
- This method is called during the initialization of the map view and after any
- subsequent loading of a new style. This method is called between the
- `-mapViewWillStartRenderingMap:` and `-mapViewDidFinishRenderingMap:` delegate
- methods. Changes to sources or layers of the current style do not cause this
- method to be called.
-
- This method is the earliest opportunity to modify the layout or appearance of
- the current style before the map view is displayed to the user.
-
- @param mapView The map view that has just loaded a style.
- @param style The style that was loaded.
- */
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style;
-
-- (nullable NSImage *)mapView:(MGLMapView *)mapView didFailToLoadImage:(NSString *)imageName;
-
-/**
- Asks the delegate whether the map view should evict cached images.
-
- This method is called in two scenarios: when the cumulative size of unused images
- exceeds the cache size or when the last tile that includes the image is removed from
- memory.
-
- @param mapView The map view that is evicting the image.
- @param imageName The image name that is going to be removed.
- @return A Boolean value indicating whether the map view should evict
- the cached image.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldRemoveStyleImage:(NSString *)imageName;
-
-#pragma mark Managing the Appearance of Annotations
-
-/**
- Returns an annotation image object to mark the given point annotation object on
- the map.
-
- @param mapView The map view that requested the annotation image.
- @param annotation The object representing the annotation that is about to be
- displayed.
- @return The image object to display for the given annotation or `nil` if you
- want to display the default marker image.
- */
-- (nullable MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the alpha value to use when rendering a shape annotation.
-
- A value of 0.0 results in a completely transparent shape. A value of 1.0, the
- default, results in a completely opaque shape.
-
- This method sets the opacity of an entire shape, inclusive of its stroke and
- fill. To independently set the values for stroke or fill, specify an alpha
- component in the color returned by `-mapView:strokeColorForShapeAnnotation:` or
- `-mapView:fillColorForPolygonAnnotation:`.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return An alpha value between 0 and 1.0.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the color to use when rendering the outline of a shape annotation.
-
- The default stroke color is the selected menu item color. If a pattern color is
- specified, the result is undefined.
-
- Opacity may be set by specifying an alpha component. The default alpha value is
- `1.0` and results in a completely opaque stroke.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return A color to use for the shape outline.
- */
-- (NSColor *)mapView:(MGLMapView *)mapView strokeColorForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the color to use when rendering the fill of a polygon annotation.
-
- The default fill color is the selected menu item color. If a pattern color is
- specified, the result is undefined.
-
- Opacity may be set by specifying an alpha component. The default alpha value is
- `1.0` and results in a completely opaque shape.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return The polygon’s interior fill color.
- */
-- (NSColor *)mapView:(MGLMapView *)mapView fillColorForPolygonAnnotation:(MGLPolygon *)annotation;
-
-/**
- Returns the line width in points to use when rendering the outline of a
- polyline annotation.
-
- By default, the polyline is outlined with a line 3.0 points wide.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return A line width for the polyline, measured in points.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView lineWidthForPolylineAnnotation:(MGLPolyline *)annotation;
-
-#pragma mark Selecting Annotations
-
-/**
- Returns a Boolean value indicating whether the shape annotation can be selected.
-
- If the return value is `YES`, the user can select the annotation by clicking
- on it. If the delegate does not implement this method, the default value is `YES`.
-
- @param mapView The map view that has selected the annotation.
- @param annotation The object representing the shape annotation.
- @return A Boolean value indicating whether the annotation can be selected.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shapeAnnotationIsEnabled:(MGLShape *)annotation;
-
-/**
- Tells the delegate that one of its annotations has been selected.
-
- You can use this method to track changes to the selection state of annotations.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was selected.
- */
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one of its annotations has been deselected.
-
- You can use this method to track changes in the selection state of annotations.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was deselected.
- */
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation;
-
-#pragma mark Managing Callout Popovers
-
-/**
- Returns a Boolean value indicating whether the annotation is able to display
- extra information in a callout popover.
-
- This method is called after an annotation is selected, before any callout is
- displayed for the annotation.
-
- If the return value is `YES`, a callout popover is shown when the user clicks
- on an annotation, selecting it. The default callout displays the annotation’s
- title and subtitle. You can customize the popover’s contents by implementing
- the `-mapView:calloutViewControllerForAnnotation:` method.
-
- If the return value is `NO`, or if this method is absent from the delegate, or
- if the annotation lacks a title, the annotation will not show a callout even
- when selected.
-
- @param mapView The map view that has selected the annotation.
- @param annotation The object representing the annotation.
- @return A Boolean value indicating whether the annotation should show a
- callout.
- */
-- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation;
-
-/**
- Returns a view controller to manage the callout popover’s content view.
-
- Like any instance of `NSPopover`, an annotation callout manages its contents
- with a view controller. The annotation object is the view controller’s
- represented object. This means that you can bind controls in the view
- controller’s content view to KVO-compliant properties of the annotation object,
- such as `title` and `subtitle`.
-
- If each annotation should have an identical callout, you can set the
- `MGLMapView.calloutViewController` property instead.
-
- @param mapView The map view that is requesting a callout view controller.
- @param annotation The object representing the annotation.
- @return A view controller for the given annotation.
- */
-- (nullable NSViewController *)mapView:(MGLMapView *)mapView calloutViewControllerForAnnotation:(id <MGLAnnotation>)annotation;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/src/MGLMapView_Private.h b/platform/macos/src/MGLMapView_Private.h
deleted file mode 100644
index 3d9b36c30a..0000000000
--- a/platform/macos/src/MGLMapView_Private.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#import "MGLMapView.h"
-
-#include <mbgl/util/size.hpp>
-
-namespace mbgl {
- class Map;
- class Renderer;
-}
-
-@class MGLSource;
-
-@interface MGLMapView (Private)
-
-/// True if the view or application is in a state where it is not expected to be
-/// actively drawing.
-@property (nonatomic, readonly, getter=isDormant) BOOL dormant;
-
-// These properties exist because initially, both the latitude and longitude are
-// NaN. You have to set both the latitude and longitude simultaneously. If you
-// set the latitude but reuse the current longitude, and the current longitude
-// happens to be NaN, there will be no change because the resulting coordinate
-// pair is invalid.
-
-/// Center latitude set independently of the center longitude in an inspectable.
-@property (nonatomic) CLLocationDegrees pendingLatitude;
-/// Center longitude set independently of the center latitude in an inspectable.
-@property (nonatomic) CLLocationDegrees pendingLongitude;
-
-/// The map view’s OpenGL rendering context, if it is backed by an OpenGL based view.
-@property (readonly, nonatomic, nullable) CGLContextObj context;
-
-- (mbgl::Size)framebufferSize;
-
-/// Map observers
-- (void)cameraWillChangeAnimated:(BOOL)animated;
-- (void)cameraIsChanging;
-- (void)cameraDidChangeAnimated:(BOOL)animated;
-- (void)mapViewWillStartLoadingMap;
-- (void)mapViewDidFinishLoadingMap;
-- (void)mapViewDidFailLoadingMapWithError:(nonnull NSError *)error;
-- (void)mapViewWillStartRenderingFrame;
-- (void)mapViewDidFinishRenderingFrameFullyRendered:(BOOL)fullyRendered;
-- (void)mapViewWillStartRenderingMap;
-- (void)mapViewDidFinishRenderingMapFullyRendered:(BOOL)fullyRendered;
-- (void)mapViewDidBecomeIdle;
-- (void)mapViewDidFinishLoadingStyle;
-- (void)sourceDidChange:(nonnull MGLSource *)source;
-- (BOOL)shouldRemoveStyleImage:(nonnull NSString *)imageName;
-
-/// Asynchronously render a frame of the map.
-- (void)setNeedsRerender;
-
-/// Synchronously render a frame of the map.
-- (void)renderSync;
-
-- (BOOL)isTargetingInterfaceBuilder;
-
-- (nonnull mbgl::Map *)mbglMap;
-
-- (nonnull mbgl::Renderer *)renderer;
-
-@end
diff --git a/platform/macos/src/MGLOpenGLLayer.h b/platform/macos/src/MGLOpenGLLayer.h
deleted file mode 100644
index 832664f397..0000000000
--- a/platform/macos/src/MGLOpenGLLayer.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// A subclass of NSOpenGLLayer that creates the environment mbgl needs to
-/// render good-looking maps.
-@interface MGLOpenGLLayer : NSOpenGLLayer
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/src/MGLOpenGLLayer.mm b/platform/macos/src/MGLOpenGLLayer.mm
deleted file mode 100644
index fde2b52404..0000000000
--- a/platform/macos/src/MGLOpenGLLayer.mm
+++ /dev/null
@@ -1,58 +0,0 @@
-#import "MGLOpenGLLayer.h"
-
-#import "MGLMapView_Private.h"
-
-@implementation MGLOpenGLLayer {
- NSOpenGLContext *_context;
-}
-
-- (MGLMapView *)mapView {
- return (MGLMapView *)super.view;
-}
-
-// - (BOOL)isAsynchronous {
-// return YES;
-// }
-
-- (BOOL)needsDisplayOnBoundsChange {
- return YES;
-}
-
-- (CGRect)frame {
- return self.view.bounds;
-}
-
-- (NSOpenGLContext *)openGLContextForPixelFormat:(NSOpenGLPixelFormat *)pixelFormat {
- if (!_context) {
- _context = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
- }
- return _context;
-}
-
-- (NSOpenGLPixelFormat *)openGLPixelFormatForDisplayMask:(uint32_t)mask {
- NSOpenGLPixelFormatAttribute pfas[] = {
- NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersionLegacy,
- NSOpenGLPFAAccelerated,
- NSOpenGLPFAClosestPolicy,
- NSOpenGLPFAAccumSize, 32,
- NSOpenGLPFAColorSize, 24,
- NSOpenGLPFAAlphaSize, 8,
- NSOpenGLPFADepthSize, 16,
- NSOpenGLPFAStencilSize, 8,
- NSOpenGLPFAScreenMask, mask,
- NSOpenGLPFAAllowOfflineRenderers, // Allows using the integrated GPU
- 0
- };
- return [[NSOpenGLPixelFormat alloc] initWithAttributes:pfas];
-}
-
-- (BOOL)canDrawInOpenGLContext:(__unused NSOpenGLContext *)context pixelFormat:(__unused NSOpenGLPixelFormat *)pixelFormat forLayerTime:(__unused CFTimeInterval)t displayTime:(__unused const CVTimeStamp *)ts {
- return !self.mapView.dormant;
-}
-
-- (void)drawInOpenGLContext:(NSOpenGLContext *)context pixelFormat:(NSOpenGLPixelFormat *)pixelFormat forLayerTime:(CFTimeInterval)t displayTime:(const CVTimeStamp *)ts {
- [self.mapView renderSync];
- [super drawInOpenGLContext:context pixelFormat:pixelFormat forLayerTime:t displayTime:ts];
-}
-
-@end
diff --git a/platform/macos/src/Mapbox.h b/platform/macos/src/Mapbox.h
deleted file mode 100644
index 6728992d6b..0000000000
--- a/platform/macos/src/Mapbox.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-#import "MGLFoundation.h"
-
-/// Project version number for Mapbox.
-FOUNDATION_EXPORT MGL_EXPORT double MapboxVersionNumber;
-
-/// Project version string for Mapbox.
-FOUNDATION_EXPORT MGL_EXPORT const unsigned char MapboxVersionString[];
-
-#import "MGLAccountManager.h"
-#import "MGLAnnotation.h"
-#import "MGLAnnotationImage.h"
-#import "MGLClockDirectionFormatter.h"
-#import "MGLCluster.h"
-#import "MGLCompassDirectionFormatter.h"
-#import "MGLCoordinateFormatter.h"
-#import "MGLDistanceFormatter.h"
-#import "MGLFeature.h"
-#import "MGLGeometry.h"
-#import "MGLLight.h"
-#import "MGLMapCamera.h"
-#import "MGLMapView.h"
-#import "MGLMapView+IBAdditions.h"
-#import "MGLMapViewDelegate.h"
-#import "MGLMultiPoint.h"
-#import "MGLOfflinePack.h"
-#import "MGLOfflineRegion.h"
-#import "MGLOfflineStorage.h"
-#import "MGLOverlay.h"
-#import "MGLPointAnnotation.h"
-#import "MGLPointCollection.h"
-#import "MGLPolygon.h"
-#import "MGLPolyline.h"
-#import "MGLShape.h"
-#import "MGLShapeCollection.h"
-#import "MGLStyle.h"
-#import "MGLStyleLayer.h"
-#import "MGLForegroundStyleLayer.h"
-#import "MGLVectorStyleLayer.h"
-#import "MGLFillStyleLayer.h"
-#import "MGLFillExtrusionStyleLayer.h"
-#import "MGLLineStyleLayer.h"
-#import "MGLSymbolStyleLayer.h"
-#import "MGLRasterStyleLayer.h"
-#import "MGLCircleStyleLayer.h"
-#import "MGLBackgroundStyleLayer.h"
-#import "MGLHeatmapStyleLayer.h"
-#import "MGLHillshadeStyleLayer.h"
-#import "MGLOpenGLStyleLayer.h"
-#import "MGLSource.h"
-#import "MGLTileSource.h"
-#import "MGLVectorTileSource.h"
-#import "MGLShapeSource.h"
-#import "MGLComputedShapeSource.h"
-#import "MGLRasterTileSource.h"
-#import "MGLRasterDEMSource.h"
-#import "MGLImageSource.h"
-#import "MGLTilePyramidOfflineRegion.h"
-#import "MGLShapeOfflineRegion.h"
-#import "MGLTypes.h"
-#import "NSValue+MGLAdditions.h"
-#import "MGLStyleValue.h"
-#import "MGLAttributionInfo.h"
-#import "MGLMapSnapshotter.h"
-#import "NSExpression+MGLAdditions.h"
-#import "NSPredicate+MGLAdditions.h"
-#import "MGLLoggingConfiguration.h"
-#import "MGLNetworkConfiguration.h"
-#import "MGLAttributedExpression.h"
-#import "MGLSDKMetricsManager.h"
diff --git a/platform/macos/src/NSColor+MGLAdditions.h b/platform/macos/src/NSColor+MGLAdditions.h
deleted file mode 100644
index a3c5aba63f..0000000000
--- a/platform/macos/src/NSColor+MGLAdditions.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-#include <mbgl/util/color.hpp>
-#include <mbgl/style/property_value.hpp>
-
-@interface NSColor (MGLAdditions)
-
-/**
- Converts the color into an mbgl::Color in sRGB space.
- */
-- (mbgl::Color)mgl_color;
-
-/**
- Instantiates `NSColor` from an `mbgl::Color`
- */
-+ (NSColor *)mgl_colorWithColor:(mbgl::Color)color;
-
-- (mbgl::style::PropertyValue<mbgl::Color>)mgl_colorPropertyValue;
-
-@end
-
-@interface NSExpression (MGLColorAdditions)
-
-+ (NSExpression *)mgl_expressionForRGBComponents:(NSArray<NSExpression *> *)components;
-+ (NSExpression *)mgl_expressionForRGBAComponents:(NSArray<NSExpression *> *)components;
-+ (NSColor *)mgl_colorWithRGBComponents:(NSArray<NSExpression *> *)componentExpressions;
-
-@end
diff --git a/platform/macos/src/NSColor+MGLAdditions.mm b/platform/macos/src/NSColor+MGLAdditions.mm
deleted file mode 100644
index 6df3d750ce..0000000000
--- a/platform/macos/src/NSColor+MGLAdditions.mm
+++ /dev/null
@@ -1,124 +0,0 @@
-#import "NSColor+MGLAdditions.h"
-
-@implementation NSColor (MGLAdditions)
-
-- (mbgl::Color)mgl_color {
- CGFloat r, g, b, a;
-
- // The Mapbox Style Specification does not specify a color space, but it is
- // assumed to be sRGB for consistency with CSS.
- NSColor *srgbColor = self;
- if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) {
- srgbColor = [srgbColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
- } else {
- srgbColor = [srgbColor colorUsingColorSpace:[NSColorSpace sRGBColorSpace]];
- }
- [srgbColor getRed:&r green:&g blue:&b alpha:&a];
-
- // NSColor provides non-premultiplied color components, so we have to premultiply each
- // color component with the alpha value to transform it into a valid
- // mbgl::Color which expects premultiplied color components.
- return { static_cast<float>(r*a), static_cast<float>(g*a), static_cast<float>(b*a), static_cast<float>(a) };
-}
-
-+ (NSColor *)mgl_colorWithColor:(mbgl::Color)color {
- // If there is no alpha value, return original color values.
- if (color.a == 0.0f) {
- // macOS 10.12 Sierra and below uses calibrated RGB by default.
- if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) {
- return [NSColor colorWithCalibratedRed:color.r green:color.g blue:color.b alpha:color.a];
- } else {
- return [NSColor colorWithRed:color.r green:color.g blue:color.b alpha:color.a];
- }
- }
-
- // mbgl::Color provides premultiplied color components, so we have to convert color
- // components to non-premultiplied values to return a valid NSColor object.
- float red = static_cast<float>((color.r / color.a));
- float green = static_cast<float>((color.g / color.a));
- float blue = static_cast<float>((color.b / color.a));
-
- // macOS 10.12 Sierra and below uses calibrated RGB by default.
- if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) {
- return [NSColor colorWithCalibratedRed:red green:green blue:blue alpha:color.a];
- } else {
- return [NSColor colorWithRed:red green:green blue:blue alpha:color.a];
- }
-}
-
-- (mbgl::style::PropertyValue<mbgl::Color>)mgl_colorPropertyValue {
- mbgl::Color color = self.mgl_color;
- return {{ color.r, color.g, color.b, color.a }};
-}
-
-@end
-
-@implementation NSExpression (MGLColorAdditions)
-
-+ (NSExpression *)mgl_expressionForRGBComponents:(NSArray<NSExpression *> *)components {
- if (NSColor *color = [self mgl_colorWithRGBComponents:components]) {
- return [NSExpression expressionForConstantValue:color];
- }
-
- NSExpression *color = [NSExpression expressionForConstantValue:[NSColor class]];
- NSExpression *alpha = [NSExpression expressionForConstantValue:@1.0];
- return [NSExpression expressionForFunction:color
- selectorName:@"colorWithRed:green:blue:alpha:"
- arguments:[components arrayByAddingObject:alpha]];
-}
-
-+ (NSExpression *)mgl_expressionForRGBAComponents:(NSArray<NSExpression *> *)components {
- if (NSColor *color = [self mgl_colorWithRGBComponents:components]) {
- return [NSExpression expressionForConstantValue:color];
- }
-
- NSExpression *color = [NSExpression expressionForConstantValue:[NSColor class]];
- return [NSExpression expressionForFunction:color
- selectorName:@"colorWithRed:green:blue:alpha:"
- arguments:components];
-}
-
-/**
- Returns a color object corresponding to the given component expressions.
- */
-+ (NSColor *)mgl_colorWithRGBComponents:(NSArray<NSExpression *> *)componentExpressions {
- // Map the component expressions to constant components. If any component is
- // a non-constant expression, the components cannot be converted into a
- // constant color value.
- std::vector<CGFloat> components;
- for (NSExpression *componentExpression in componentExpressions) {
- if (componentExpression.expressionType != NSConstantValueExpressionType) {
- return nil;
- }
-
- NSNumber *component = (NSNumber *)componentExpression.constantValue;
- if (![component isKindOfClass:[NSNumber class]]) {
- return nil;
- }
-
- components.push_back(component.doubleValue / 255.0);
- }
-
- if (components.size() < 4) {
- components.push_back(1.0);
- } else {
- // Alpha
- components.back() *= 255.0;
- }
-
-
- // macOS 10.12 Sierra and below uses calibrated RGB by default.
- if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) {
- return [NSColor colorWithCalibratedRed:components[0]
- green:components[1]
- blue:components[2]
- alpha:components[3]];
- }
- // The Mapbox Style Specification does not specify a color space, but it is
- // assumed to be sRGB for consistency with CSS.
- return [NSColor colorWithColorSpace:[NSColorSpace sRGBColorSpace]
- components:&components[0]
- count:components.size()];
-}
-
-@end
diff --git a/platform/macos/src/NSImage+MGLAdditions.h b/platform/macos/src/NSImage+MGLAdditions.h
deleted file mode 100644
index c08fc57bea..0000000000
--- a/platform/macos/src/NSImage+MGLAdditions.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-#include <mbgl/style/image.hpp>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface NSImage (MGLAdditions)
-
-- (nullable instancetype)initWithMGLPremultipliedImage:(mbgl::PremultipliedImage&&)image;
-
-- (nullable instancetype)initWithMGLStyleImage:(const mbgl::style::Image *)image;
-
-- (std::unique_ptr<mbgl::style::Image>)mgl_styleImageWithIdentifier:(NSString *)identifier;
-
-- (mbgl::PremultipliedImage) mgl_premultipliedImage;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/src/NSImage+MGLAdditions.mm b/platform/macos/src/NSImage+MGLAdditions.mm
deleted file mode 100644
index 2666dfe790..0000000000
--- a/platform/macos/src/NSImage+MGLAdditions.mm
+++ /dev/null
@@ -1,49 +0,0 @@
-#import "NSImage+MGLAdditions.h"
-
-#include <mbgl/util/image+MGLAdditions.hpp>
-
-@implementation NSImage (MGLAdditions)
-
-- (nullable instancetype)initWithMGLPremultipliedImage:(mbgl::PremultipliedImage&&)src {
- CGImageRef image = CGImageCreateWithMGLPremultipliedImage(std::move(src));
- if (!image) {
- return nil;
- }
-
- self = [self initWithCGImage:image size:NSZeroSize];
- CGImageRelease(image);
- return self;
-}
-
-- (nullable instancetype)initWithMGLStyleImage:(const mbgl::style::Image *)styleImage {
- CGImageRef image = CGImageCreateWithMGLPremultipliedImage(styleImage->getImage().clone());
- if (!image) {
- return nil;
- }
-
- NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithCGImage:image];
- CGImageRelease(image);
- CGFloat w = styleImage->getImage().size.width / styleImage->getPixelRatio();
- CGFloat h = styleImage->getImage().size.height / styleImage->getPixelRatio();
- if (self = [self initWithSize:NSMakeSize(w, h)]) {
- [self addRepresentation:rep];
- [self setTemplate:styleImage->isSdf()];
- }
- return self;
-}
-
-- (std::unique_ptr<mbgl::style::Image>)mgl_styleImageWithIdentifier:(NSString *)identifier {
- mbgl::PremultipliedImage cPremultipliedImage = self.mgl_premultipliedImage;
- auto imageWidth = cPremultipliedImage.size.width;
- return std::make_unique<mbgl::style::Image>([identifier UTF8String],
- std::move(cPremultipliedImage),
- (float)(imageWidth / self.size.width),
- [self isTemplate]);
-}
-
-- (mbgl::PremultipliedImage)mgl_premultipliedImage {
- CGImageRef ref = [self CGImageForProposedRect:nullptr context:nullptr hints:nullptr];
- return MGLPremultipliedImageFromCGImage(ref);
-}
-
-@end
diff --git a/platform/macos/src/NSProcessInfo+MGLAdditions.h b/platform/macos/src/NSProcessInfo+MGLAdditions.h
deleted file mode 100644
index 1dc1439d53..0000000000
--- a/platform/macos/src/NSProcessInfo+MGLAdditions.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface NSProcessInfo (MGLAdditions)
-
-/**
- Returns YES if the current process is Interface Builder’s helper process for
- rendering designables.
- */
-- (BOOL)mgl_isInterfaceBuilderDesignablesAgent;
-
-@end
diff --git a/platform/macos/src/NSProcessInfo+MGLAdditions.m b/platform/macos/src/NSProcessInfo+MGLAdditions.m
deleted file mode 100644
index 0c287c030b..0000000000
--- a/platform/macos/src/NSProcessInfo+MGLAdditions.m
+++ /dev/null
@@ -1,10 +0,0 @@
-#import "NSProcessInfo+MGLAdditions.h"
-
-@implementation NSProcessInfo (MGLAdditions)
-
-- (BOOL)mgl_isInterfaceBuilderDesignablesAgent {
- NSString *processName = self.processName;
- return [processName hasPrefix:@"IBAgent"] || [processName hasPrefix:@"IBDesignablesAgent"];
-}
-
-@end
diff --git a/platform/macos/test/Info.plist b/platform/macos/test/Info.plist
deleted file mode 100644
index ba72822e87..0000000000
--- a/platform/macos/test/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/platform/macos/test/MGLAnnotationTests.m b/platform/macos/test/MGLAnnotationTests.m
deleted file mode 100644
index 9657ae0a44..0000000000
--- a/platform/macos/test/MGLAnnotationTests.m
+++ /dev/null
@@ -1,52 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-@interface MGLAnnotationTests : XCTestCase <MGLMapViewDelegate>
-@property (nonatomic) MGLMapView *mapView;
-@property (nonatomic) BOOL centerCoordinateDidChange;
-@end
-
-@implementation MGLAnnotationTests
-
-- (void)setUp
-{
- [super setUp];
- _mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 256, 256)];
- _mapView.delegate = self;
-}
-
-- (void)testSelectingOnscreenAnnotationThatHasNotBeenAdded {
- // See https://github.com/mapbox/mapbox-gl-native/issues/11476
-
- // This bug occurs under the following conditions:
- //
- // - There are content insets (e.g. navigation bar) for the compare against
- // NSZeroRect
-
- self.mapView.contentInsets = NSEdgeInsetsMake(10.0, 10.0, 10.0, 10.0);
-
- // Create annotation
- MGLPointFeature *point = [[MGLPointFeature alloc] init];
- point.title = NSStringFromSelector(_cmd);
- point.coordinate = CLLocationCoordinate2DMake(0.0, 0.0);
-
- MGLCoordinateBounds coordinateBounds = [self.mapView convertRect:self.mapView.bounds toCoordinateBoundsFromView:self.mapView];
- XCTAssert(MGLCoordinateInCoordinateBounds(point.coordinate, coordinateBounds), @"The test point should be within the visible map view");
-
- [self.mapView addObserver:self forKeyPath:@"centerCoordinate" options:NSKeyValueObservingOptionNew context:_cmd];
- XCTAssertFalse(self.centerCoordinateDidChange, @"Center coordinate should not have changed at this point");
-
- // Select on screen annotation (DO NOT ADD FIRST).
- [self.mapView selectAnnotation:point];
-
- XCTAssertFalse(self.centerCoordinateDidChange, @"Center coordinate should not have changed after selecting a visible annotation");
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
- if ((context == @selector(testSelectingOnscreenAnnotationThatHasNotBeenAdded)) &&
- (object == self.mapView)) {
- self.centerCoordinateDidChange = YES;
- }
-}
-
-@end
diff --git a/platform/macos/test/MGLAttributionButtonTests.m b/platform/macos/test/MGLAttributionButtonTests.m
deleted file mode 100644
index b41de95317..0000000000
--- a/platform/macos/test/MGLAttributionButtonTests.m
+++ /dev/null
@@ -1,31 +0,0 @@
-#import <Mapbox/Mapbox.h>
-#import <XCTest/XCTest.h>
-
-#import "MGLAttributionButton.h"
-#import "MGLAttributionInfo.h"
-
-@interface MGLAttributionButtonTests : XCTestCase
-
-@end
-
-@implementation MGLAttributionButtonTests
-
-- (void)testPlainSymbol {
- NSAttributedString *title = [[NSAttributedString alloc] initWithString:@"® & ™ Mapbox" attributes:@{
- NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle),
- }];
- MGLAttributionInfo *info = [[MGLAttributionInfo alloc] initWithTitle:title URL:nil];
- MGLAttributionButton *button = [[MGLAttributionButton alloc] initWithAttributionInfo:info];
-
- NSRange symbolUnderlineRange;
- NSNumber *symbolUnderline = [button.attributedTitle attribute:NSUnderlineStyleAttributeName atIndex:0 effectiveRange:&symbolUnderlineRange];
- XCTAssertNil(symbolUnderline);
- XCTAssertEqual(symbolUnderlineRange.length, 6);
-
- NSRange wordUnderlineRange;
- NSNumber *wordUnderline = [button.attributedTitle attribute:NSUnderlineStyleAttributeName atIndex:6 effectiveRange:&wordUnderlineRange];
- XCTAssertEqualObjects(wordUnderline, @(NSUnderlineStyleSingle));
- XCTAssertEqual(wordUnderlineRange.length, 6);
-}
-
-@end
diff --git a/platform/macos/test/MGLMapViewDelegateIntegrationTests.swift b/platform/macos/test/MGLMapViewDelegateIntegrationTests.swift
deleted file mode 100644
index 90a777e379..0000000000
--- a/platform/macos/test/MGLMapViewDelegateIntegrationTests.swift
+++ /dev/null
@@ -1,63 +0,0 @@
-import XCTest
-import Mapbox
-
-class MGLMapViewDelegateIntegrationTests: XCTestCase {
-
- func testCoverage() {
- MGLSDKTestHelpers.checkTestsContainAllMethods(testClass: MGLMapViewDelegateIntegrationTests.self, in: MGLMapViewDelegate.self)
- }
-
-}
-
-extension MGLMapViewDelegateIntegrationTests: MGLMapViewDelegate {
-
- func mapView(_ mapView: MGLMapView, shouldChangeFrom oldCamera: MGLMapCamera, to newCamera: MGLMapCamera) -> Bool { return false }
-
- func mapView(_ mapView: MGLMapView, lineWidthForPolylineAnnotation annotation: MGLPolyline) -> CGFloat { return 0 }
-
- func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool { return false }
-
- func mapView(_ mapView: MGLMapView, imageFor annotation: MGLAnnotation) -> MGLAnnotationImage? { return nil }
-
- func mapView(_ mapView: MGLMapView, alphaForShapeAnnotation annotation: MGLShape) -> CGFloat { return 0 }
-
- func mapViewDidFinishRenderingFrame(_ mapView: MGLMapView, fullyRendered: Bool) {}
-
- func mapViewDidFinishRenderingMap(_ mapView: MGLMapView, fullyRendered: Bool) {}
-
- func mapViewDidBecomeIdle(_ mapView: MGLMapView) {}
-
- func mapViewDidFailLoadingMap(_ mapView: MGLMapView, withError error: Error) {}
-
- func mapView(_ mapView: MGLMapView, didFailToLoadImage imageName: String) -> NSImage? { return nil }
-
- func mapView(_ mapView: MGLMapView, shapeAnnotationIsEnabled annotation: MGLShape) -> Bool { return false }
-
- func mapView(_ mapView: MGLMapView, didDeselect annotation: MGLAnnotation) {}
-
- func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {}
-
- func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {}
-
- func mapViewWillStartRenderingFrame(_ mapView: MGLMapView) {}
-
- func mapViewWillStartRenderingMap(_ mapView: MGLMapView) {}
-
- func mapViewWillStartLoadingMap(_ mapView: MGLMapView) {}
-
- func mapViewDidFinishLoadingMap(_ mapView: MGLMapView) {}
-
- func mapViewCameraIsChanging(_ mapView: MGLMapView) {}
-
- func mapView(_ mapView: MGLMapView, cameraDidChangeAnimated animated: Bool) {}
-
- func mapView(_ mapView: MGLMapView, cameraWillChangeAnimated animated: Bool) {}
-
- func mapView(_ mapView: MGLMapView, strokeColorForShapeAnnotation annotation: MGLShape) -> NSColor { return .black }
-
- func mapView(_ mapView: MGLMapView, fillColorForPolygonAnnotation annotation: MGLPolygon) -> NSColor { return .black }
-
- func mapView(_ mapView: MGLMapView, calloutViewControllerFor annotation: MGLAnnotation) -> NSViewController? { return nil }
-
- func mapView(_ mapView: MGLMapView, shouldRemoveStyleImage imageName: String) -> Bool { return false }
-}